feat(electrobun): wire EVERYTHING — all settings persist, theme editor, marketplace

All settings wired to SQLite persistence:
- AgentSettings: shell, CWD, permissions, providers (JSON blob)
- SecuritySettings: branch policies (JSON array)
- ProjectSettings: per-project via setProject RPC
- OrchestrationSettings: wake, anchors, notifications
- AdvancedSettings: logging, OTLP, plugins, import/export JSON

Theme Editor:
- 26 color pickers (14 Accents + 12 Neutrals)
- Live CSS var preview as you pick colors
- Save custom theme to SQLite, cancel reverts
- Import/export theme as JSON
- Custom themes in dropdown with delete button

Extensions Marketplace:
- 8-plugin demo catalog (Browse/Installed tabs)
- Search/filter by name or tag
- Install/uninstall with SQLite persistence
- Plugin cards with emoji icons, tags, version

Terminal font hot-swap:
- fontStore.onTermFontChange() → xterm.js options update + fitAddon.fit()
- Resize notification to PTY daemon after font change

All 7 settings categories functional. Every control persists and takes effect.
This commit is contained in:
Hibryda 2026-03-20 05:45:10 +01:00
parent 6002a379e4
commit 5032021915
20 changed files with 1005 additions and 271 deletions

View file

@ -71,6 +71,24 @@ export type PtyRPCRequests = {
params: { id: string; config: string };
response: { ok: boolean };
};
// ── Custom Themes RPC ──────────────────────────────────────────────────────
/** Return all user-saved custom themes. */
"themes.getCustom": {
params: Record<string, never>;
response: { themes: Array<{ id: string; name: string; palette: Record<string, string> }> };
};
/** Save (upsert) a custom theme by id. */
"themes.saveCustom": {
params: { id: string; name: string; palette: Record<string, string> };
response: { ok: boolean };
};
/** Delete a custom theme by id. */
"themes.deleteCustom": {
params: { id: string };
response: { ok: boolean };
};
};
// ── Messages (Bun → WebView, fire-and-forget) ────────────────────────────────