fix(electrobun): address all 20 Codex review findings

CRITICAL:
- PTY leak: Terminal.svelte now calls pty.close on destroy, not just unsubscribe
- Agent session cleanup: clearSession() removes done/error sessions, backend
  deletes after 60s grace period

HIGH:
- Clone branch passthrough: user's branch name flows through callback
- Circular imports: extracted rpc.ts singleton, broke main.ts ↔ App.svelte cycle
- Settings wired to runtime: Terminal reads cursor/scrollback from settings
- Security disclaimer: added "prototype — not system keyring" notice
- ThemeEditor: fixed basePalette → initialPalette reference

MEDIUM:
- Clone race: UUID suffix instead of count-based index
- Silent failures: structured error returns from PTY handlers
- WebKitGTK mount: only current + previous group mounted
- Debug listeners: gated behind DEBUG, cleanup on destroy
- NDJSON residual buffer parsed on process exit
- Codex adapter: deduplicated tool_call/tool_result
- extraEnv: rejects CLAUDE*/CODEX*/OLLAMA* keys
- settings-db: runMigrations() with version tracking
- active_group: persisted via settings.set

LOW:
- Removed dead demo code, unused variables
- color-mix() fallbacks added
This commit is contained in:
Hibryda 2026-03-22 01:20:23 +01:00
parent ef0183de7f
commit 29a3370e79
18 changed files with 331 additions and 114 deletions

View file

@ -110,12 +110,30 @@ export class SettingsDb {
this.db.exec(SCHEMA);
this.db.exec(SEED_GROUPS);
// Seed schema_version row if missing
const version = this.db
// Run version-tracked migrations
this.runMigrations();
}
/** Run version-tracked schema migrations. */
private runMigrations(): void {
const CURRENT_VERSION = 1;
const row = this.db
.query<{ version: number }, []>("SELECT version FROM schema_version LIMIT 1")
.get();
if (!version) {
this.db.exec("INSERT INTO schema_version (version) VALUES (1)");
const currentVersion = row?.version ?? 0;
if (currentVersion < 1) {
// Version 1 is the initial schema — already created above via SCHEMA.
// Future migrations go here as version checks:
// if (currentVersion < 2) { this.db.exec("ALTER TABLE ..."); }
// if (currentVersion < 3) { this.db.exec("ALTER TABLE ..."); }
}
if (!row) {
this.db.exec(`INSERT INTO schema_version (version) VALUES (${CURRENT_VERSION})`);
} else if (currentVersion < CURRENT_VERSION) {
this.db.exec(`UPDATE schema_version SET version = ${CURRENT_VERSION}`);
}
}