diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md index d9594d2..a5f8e15 100644 --- a/.claude/CLAUDE.md +++ b/.claude/CLAUDE.md @@ -52,7 +52,7 @@ - Agent tree (AgentTree.svelte) uses SVG with recursive layout. Tree data built by `agent-tree.ts` utility from agent messages. - ctx integration opens `~/.claude-context/context.db` as SQLITE_OPEN_READ_ONLY — never writes. CtxDb uses Option for graceful absence if DB doesn't exist. - SSH sessions spawn TerminalPane with shell=/usr/bin/ssh and args array. No SSH library needed — PTY handles it natively. -- Theme system: 11 themes (4 Catppuccin + 7 editor: VSCode Dark+, Atom One Dark, Monokai, Dracula, Nord, Solarized Dark, GitHub Dark). All map to same 26 --ctp-* CSS custom properties — zero component changes needed. ThemeId replaces CatppuccinFlavor. getCurrentTheme()/setTheme() are primary API (deprecated wrappers exist). THEME_LIST has ThemeMeta with group metadata for optgroup UI. Open terminals hot-swap via onThemeChange() callback registry in theme.svelte.ts. +- Theme system: 17 themes in 3 groups — 4 Catppuccin + 7 Editor (VSCode Dark+, Atom One Dark, Monokai, Dracula, Nord, Solarized Dark, GitHub Dark) + 6 Deep Dark (Tokyo Night, Gruvbox Dark, Ayu Dark, Poimandres, Vesper, Midnight). All map to same 26 --ctp-* CSS custom properties — zero component changes needed. ThemeId replaces CatppuccinFlavor. getCurrentTheme()/setTheme() are primary API (deprecated wrappers exist). THEME_LIST has ThemeMeta with group metadata for optgroup UI. Open terminals hot-swap via onThemeChange() callback registry in theme.svelte.ts. - Detached pane mode: App.svelte checks URL param `?detached=1` and renders a single pane without sidebar/grid chrome. Used for pop-out windows. - Shiki syntax highlighting uses lazy singleton pattern (avoid repeated WASM init). 13 languages preloaded. Used in MarkdownPane and AgentPane text messages. - Cargo workspace at v2/ level: members = [src-tauri, bterminal-core, bterminal-relay]. Cargo.lock is at workspace root (v2/), not in src-tauri/. diff --git a/CHANGELOG.md b/CHANGELOG.md index 1982b41..233514b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Added -- Multi-theme system: 7 new editor themes (VSCode Dark+, Atom One Dark, Monokai, Dracula, Nord, Solarized Dark, GitHub Dark) alongside 4 Catppuccin flavors — total 11 themes across 2 groups +- Deep Dark theme group: 6 new themes (Tokyo Night, Gruvbox Dark, Ayu Dark, Poimandres, Vesper, Midnight) — total 17 themes across 3 groups (Catppuccin, Editor, Deep Dark). Midnight is pure OLED black (#000000), Ayu Dark near-black (#0b0e14), Vesper warm dark (#101010) +- Multi-theme system: 7 new editor themes (VSCode Dark+, Atom One Dark, Monokai, Dracula, Nord, Solarized Dark, GitHub Dark) alongside 4 Catppuccin flavors - `ThemeId` union type, `ThemePalette` (26-color interface), `ThemeMeta` (id/label/group/isDark), `THEME_LIST` registry with group metadata, `ALL_THEME_IDS` for validation - Theme store `getCurrentTheme()`/`setTheme()` as primary API; deprecated `getCurrentFlavor()`/`setFlavor()` wrappers for backwards compat - SettingsTab theme selector with `` grouping (Catppuccin, Editor groups) @@ -34,7 +35,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Early error reporting when Claude CLI is not found — sidecar emits `agent_error` immediately instead of cryptic SDK failure ### Changed -- Theme system generalized from Catppuccin-only to multi-theme: all 11 themes map to same `--ctp-*` CSS custom properties (26 vars) — zero component-level changes needed +- Theme system generalized from Catppuccin-only to multi-theme: all 17 themes map to same `--ctp-*` CSS custom properties (26 vars) — zero component-level changes needed - `CatppuccinFlavor` type deprecated in favor of `ThemeId`; `CatppuccinPalette` deprecated in favor of `ThemePalette`; `FLAVOR_LABELS` and `ALL_FLAVORS` deprecated in favor of `THEME_LIST` and `ALL_THEME_IDS` ### Fixed diff --git a/CLAUDE.md b/CLAUDE.md index 0dae4a5..62b5942 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -64,8 +64,8 @@ Terminal emulator with SSH and Claude Code session management. v1 (GTK3+VTE Pyth | `v2/src/lib/utils/detach.ts` | Detached pane mode (pop-out windows via URL params) | | `v2/src/lib/utils/updater.ts` | Tauri auto-updater utility | | `v2/src/lib/stores/notifications.svelte.ts` | Toast notification store (notify, dismiss) | -| `v2/src/lib/stores/theme.svelte.ts` | Theme store (11 themes: 4 Catppuccin + 7 editor themes) | -| `v2/src/lib/styles/themes.ts` | Theme palette definitions, ThemeId/ThemePalette/ThemeMeta types, THEME_LIST | +| `v2/src/lib/stores/theme.svelte.ts` | Theme store (17 themes: 4 Catppuccin + 7 Editor + 6 Deep Dark) | +| `v2/src/lib/styles/themes.ts` | Theme palette definitions (17 themes), ThemeId/ThemePalette/ThemeMeta types, THEME_LIST | | `v2/src/lib/components/Agent/AgentTree.svelte` | SVG agent tree visualization | | `v2/src/lib/components/Context/ContextPane.svelte` | ctx database viewer (projects, entries, search) | | `v2/src/lib/components/StatusBar/StatusBar.svelte` | Global status bar (group name, project count, agent count, cost) | @@ -132,7 +132,7 @@ cd v2/src-tauri && cargo test # Cargo tests (backend) ## Conventions -- 11 themes: 4 Catppuccin (Mocha default) + 7 editor themes (VSCode Dark+, Atom One Dark, Monokai, Dracula, Nord, Solarized Dark, GitHub Dark) +- 17 themes in 3 groups: 4 Catppuccin (Mocha default) + 7 Editor + 6 Deep Dark (Tokyo Night, Gruvbox Dark, Ayu Dark, Poimandres, Vesper, Midnight) - Session configs stored as JSON - Single-file Python app (v1) — will change to multi-file Rust+Svelte (v2) - Polish language in some code comments (v1 legacy) diff --git a/README.md b/README.md index 9825fea..a0ca1e5 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Terminal with session panel (MobaXterm-style), built with GTK 3 + VTE. Catppuccin Mocha theme. -> **v2 complete, v3 all phases complete.** v2: Multi-session Claude agent dashboard using Tauri 2.x + Svelte 5. v3: Multi-project mission control dashboard (All Phases 1-10 complete) -- project groups with per-project Claude sessions, session continuity (persist/restore agent messages), team agents panel, terminal tabs, workspace tabs (Sessions/Docs/Context/Settings), command palette with group switching. Features: **project groups** (up to 5 projects per group, horizontal layout, adaptive viewport count), **per-project Claude sessions** with session continuity, **team agents panel** (compact subagent cards), **terminal tabs** (shell/SSH/agent per project), agent panes with structured output, tree visualization with subtree cost and session resume, **subagent/agent-teams support**, **multi-machine support** (bterminal-relay WebSocket server + RemoteManager), **Claude profile/account switching** (switcher-claude integration), **skill discovery and autocomplete** (type `/` in agent prompt), SSH session management, ctx context database viewer, SQLite session persistence with layout restore, live markdown file viewer with Shiki syntax highlighting, 11 themes (4 Catppuccin + 7 editor themes: VSCode Dark+, Atom One Dark, Monokai, Dracula, Nord, Solarized Dark, GitHub Dark), .deb + AppImage packaging, GitHub Actions CI, 138 vitest + 36 cargo tests. Branch `v2-mission-control`. See [docs/v3-task_plan.md](docs/v3-task_plan.md) for v3 architecture. +> **v2 complete, v3 all phases complete.** v2: Multi-session Claude agent dashboard using Tauri 2.x + Svelte 5. v3: Multi-project mission control dashboard (All Phases 1-10 complete) -- project groups with per-project Claude sessions, session continuity (persist/restore agent messages), team agents panel, terminal tabs, workspace tabs (Sessions/Docs/Context/Settings), command palette with group switching. Features: **project groups** (up to 5 projects per group, horizontal layout, adaptive viewport count), **per-project Claude sessions** with session continuity, **team agents panel** (compact subagent cards), **terminal tabs** (shell/SSH/agent per project), agent panes with structured output, tree visualization with subtree cost and session resume, **subagent/agent-teams support**, **multi-machine support** (bterminal-relay WebSocket server + RemoteManager), **Claude profile/account switching** (switcher-claude integration), **skill discovery and autocomplete** (type `/` in agent prompt), SSH session management, ctx context database viewer, SQLite session persistence with layout restore, live markdown file viewer with Shiki syntax highlighting, 17 themes in 3 groups (4 Catppuccin + 7 Editor + 6 Deep Dark: Tokyo Night, Gruvbox Dark, Ayu Dark, Poimandres, Vesper, Midnight), .deb + AppImage packaging, GitHub Actions CI, 138 vitest + 36 cargo tests. Branch `v2-mission-control`. See [docs/v3-task_plan.md](docs/v3-task_plan.md) for v3 architecture. ![BTerminal](screenshot.png) diff --git a/TODO.md b/TODO.md index 63ee77c..757b50b 100644 --- a/TODO.md +++ b/TODO.md @@ -10,6 +10,7 @@ ## Completed +- [x] **Deep Dark theme group** -- 6 new themes (Tokyo Night, Gruvbox Dark, Ayu Dark, Poimandres, Vesper, Midnight). Total: 17 themes in 3 groups. | Done: 2026-03-07 - [x] **Multi-theme system** -- 7 editor themes (VSCode Dark+, Atom One Dark, Monokai, Dracula, Nord, Solarized Dark, GitHub Dark) + 4 Catppuccin. ThemeId/ThemePalette/ThemeMeta types, THEME_LIST, optgroup selector. | Done: 2026-03-07 - [x] **v3 Phases 6-10 Complete** -- Session continuity (persist/restore agent messages), workspace teardown on group switch, dead v2 component removal (~1,836 lines), StatusBar rewrite, subagent routing fix. | Done: 2026-03-07 - [x] **v3 Mission Control MVP (Phases 1-5)** -- Data model + groups.rs + workspace store + 12 Workspace components + App.svelte rewrite + ClaudeSession + TerminalTabs + TeamAgentsPanel. 138 vitest + 36 cargo tests. | Done: 2026-03-07 diff --git a/docs/progress.md b/docs/progress.md index 0425844..f8c7757 100644 --- a/docs/progress.md +++ b/docs/progress.md @@ -255,6 +255,15 @@ #### Verification - All 138 vitest + 35 cargo tests pass +### Session: 2026-03-07 (continued) — Deep Dark Theme Group + +#### 6 New Deep Dark Themes +- [x] Added Tokyo Night, Gruvbox Dark, Ayu Dark, Poimandres, Vesper, Midnight to themes.ts +- [x] Extended ThemeId from 11 to 17 values, THEME_LIST from 11 to 17 entries +- [x] New "Deep Dark" theme group (3rd group alongside Catppuccin and Editor) +- [x] Midnight is pure OLED black (#000000), Ayu Dark near-black (#0b0e14), Vesper warm dark (#101010) +- [x] All 6 themes map to same 26 --ctp-* CSS vars — zero component changes needed + ### Next Steps - [ ] Real-world relay testing (2 machines) - [ ] TLS/certificate pinning for relay connections diff --git a/docs/v3-progress.md b/docs/v3-progress.md index 63c7af2..e58c32b 100644 --- a/docs/v3-progress.md +++ b/docs/v3-progress.md @@ -128,3 +128,21 @@ All editor themes map to the same `--ctp-*` CSS custom property names (26 vars). #### Verification - All 138 vitest + 35 cargo tests pass + +### Session: 2026-03-07 — Deep Dark Theme Group (6 Themes) + +#### New Theme Group: Deep Dark +- [x] Added 6 new "Deep Dark" themes to `v2/src/lib/styles/themes.ts`: + - Tokyo Night (base: #1a1b26) + - Gruvbox Dark (base: #1d2021) + - Ayu Dark (base: #0b0e14, near-black) + - Poimandres (base: #1b1e28) + - Vesper (base: #101010, warm dark) + - Midnight (base: #000000, pure OLED black) +- [x] Extended `ThemeId` union type from 11 to 17 values +- [x] Added `THEME_LIST` entries with `group: 'Deep Dark'` +- [x] Added all 6 palette definitions (26 colors each) mapped to --ctp-* slots +- [x] Total themes: 17 across 3 groups (Catppuccin 4, Editor 7, Deep Dark 6) + +#### Verification +- No test changes needed — theme palettes are data-only, no logic changes diff --git a/docs/v3-task_plan.md b/docs/v3-task_plan.md index b8612e8..d5ecb94 100644 --- a/docs/v3-task_plan.md +++ b/docs/v3-task_plan.md @@ -388,7 +388,7 @@ No sidecar changes needed for v3.0. | Keyboard shortcut layers: App > Workspace > Terminal | Prevents conflicts. Terminal captures raw keys only when focused. App layer uses Ctrl+K/G. | 2026-03-07 | | AgentPane splits into ClaudeSession + TeamAgentsPanel | Team agents shown inline in right panel, not as separate panes. Saves xterm/pane slots. | 2026-03-07 | | Unmount/remount on group switch | Serialize xterm scrollbacks, destroy, remount new group. <100ms perceived. Frees ~80MB. | 2026-03-07 | -| All themes map to --ctp-* CSS vars | 7 editor themes (VSCode Dark+, Atom One Dark, Monokai, Dracula, Nord, Solarized Dark, GitHub Dark) added alongside 4 Catppuccin. All map to same 26 --ctp-* CSS custom properties — zero component changes needed. | 2026-03-07 | +| All themes map to --ctp-* CSS vars | 17 themes in 3 groups: 4 Catppuccin + 7 Editor (VSCode Dark+, Atom One Dark, Monokai, Dracula, Nord, Solarized Dark, GitHub Dark) + 6 Deep Dark (Tokyo Night, Gruvbox Dark, Ayu Dark, Poimandres, Vesper, Midnight). All map to same 26 --ctp-* CSS custom properties — zero component changes needed. | 2026-03-07 | ## Errors Encountered