docs: update all docs for Phase 5 completion with SSH, ctx, themes, detached mode
- phases.md: Phase 5 status -> complete, added SSH/ctx/themes/detached/shiki/updater items, updated file structure - progress.md: added Phase 5 continued session log, updated next steps - task_plan.md: added 6 new decisions (ctx read-only, SSH via PTY, themes, detached, shiki), status Rev 3 - CLAUDE.md: added new key paths (ctx.rs, adapters, utils, stores, components), updated deps - .claude/CLAUDE.md: updated phase status, added new technical constraints - README.md: updated v2 feature summary - TODO.md: resolved completed items, added new active items - CHANGELOG.md: added SSH, ctx, themes, detached, shiki, updater entries
This commit is contained in:
parent
4db7ccff60
commit
1d028c67f7
8 changed files with 97 additions and 37 deletions
|
|
@ -22,44 +22,56 @@ bterminal-v2/
|
|||
pty.rs # PTY management (portable-pty, not plugin)
|
||||
sidecar.rs # Node.js sidecar lifecycle (spawn, restart, health)
|
||||
watcher.rs # File watcher for markdown viewer
|
||||
session.rs # Session persistence (SQLite via rusqlite)
|
||||
session.rs # Session + SSH session persistence (SQLite via rusqlite)
|
||||
ctx.rs # Read-only ctx context DB access
|
||||
Cargo.toml
|
||||
src/
|
||||
App.svelte # Root layout
|
||||
App.svelte # Root layout + detached pane mode
|
||||
lib/
|
||||
components/
|
||||
Layout/
|
||||
TilingGrid.svelte # Dynamic tiling manager
|
||||
PaneContainer.svelte # Individual pane wrapper
|
||||
PaneHeader.svelte # Pane title bar with controls
|
||||
Terminal/
|
||||
TerminalPane.svelte # xterm.js terminal pane
|
||||
TerminalPane.svelte # xterm.js terminal pane (theme-aware)
|
||||
Agent/
|
||||
AgentPane.svelte # SDK agent structured output
|
||||
AgentTree.svelte # Subagent tree visualization (SVG)
|
||||
Markdown/
|
||||
MarkdownPane.svelte # Live markdown file viewer
|
||||
MarkdownPane.svelte # Live markdown file viewer (shiki highlighting)
|
||||
Context/
|
||||
ContextPane.svelte # ctx database viewer (projects, entries, search)
|
||||
SSH/
|
||||
SshDialog.svelte # SSH session create/edit modal
|
||||
SshSessionList.svelte # SSH session list in sidebar
|
||||
Sidebar/
|
||||
SessionList.svelte # Session browser
|
||||
SessionList.svelte # Session browser + SSH list
|
||||
StatusBar/
|
||||
StatusBar.svelte # Global status bar (pane counts, cost)
|
||||
Notifications/
|
||||
ToastContainer.svelte # Toast notification display
|
||||
Settings/
|
||||
SettingsDialog.svelte # Settings modal dialog
|
||||
SettingsDialog.svelte # Settings modal (shell, cwd, max panes, theme)
|
||||
stores/
|
||||
sessions.svelte.ts # Session state ($state runes)
|
||||
agents.svelte.ts # Active agent tracking
|
||||
layout.svelte.ts # Pane layout state
|
||||
notifications.svelte.ts # Toast notification state
|
||||
theme.svelte.ts # Catppuccin theme flavor state
|
||||
adapters/
|
||||
sdk-messages.ts # SDK message abstraction layer
|
||||
pty-bridge.ts # PTY IPC wrapper
|
||||
settings-bridge.ts # Settings IPC wrapper
|
||||
ctx-bridge.ts # ctx database IPC wrapper
|
||||
ssh-bridge.ts # SSH session IPC wrapper
|
||||
utils/
|
||||
agent-tree.ts # Agent tree builder (hierarchy from messages)
|
||||
highlight.ts # Shiki syntax highlighter (lazy singleton)
|
||||
detach.ts # Detached pane mode (pop-out windows)
|
||||
updater.ts # Tauri auto-updater utility
|
||||
styles/
|
||||
catppuccin.css # Theme CSS variables
|
||||
catppuccin.css # Theme CSS variables (Mocha defaults)
|
||||
themes.ts # All 4 Catppuccin flavor definitions
|
||||
app.css
|
||||
sidecar/
|
||||
agent-runner.ts # Node.js sidecar entry point
|
||||
|
|
@ -163,7 +175,7 @@ bterminal-v2/
|
|||
### Markdown Viewer
|
||||
- [x] File watcher (notify crate v6) -> Tauri events -> frontend
|
||||
- [x] Markdown rendering (marked.js)
|
||||
- [ ] Syntax highlighting (Shiki) — deferred, adds significant bundle size
|
||||
- [x] Syntax highlighting (Shiki) — added in Phase 5 (highlight.ts, 13 preloaded languages)
|
||||
- [x] Open from sidebar (file picker button "M")
|
||||
- [x] Catppuccin-themed markdown styles (h1-h3, code, pre, tables, blockquotes)
|
||||
- [x] Live reload on file change
|
||||
|
|
@ -172,7 +184,7 @@ bterminal-v2/
|
|||
|
||||
---
|
||||
|
||||
## Phase 5: Agent Tree + Polish [status: partial] — Post-MVP
|
||||
## Phase 5: Agent Tree + Polish [status: complete] — Post-MVP
|
||||
|
||||
- [x] Agent tree visualization (SVG, compact horizontal layout) — AgentTree.svelte + agent-tree.ts utility
|
||||
- [ ] Click tree node -> focus agent pane (onNodeClick prop exists, not wired)
|
||||
|
|
@ -181,9 +193,13 @@ bterminal-v2/
|
|||
- [x] Notification system (toast: success/error/warning/info, auto-dismiss 4s, max 5) — notifications.svelte.ts + ToastContainer.svelte
|
||||
- [x] Agent dispatcher toast integration (agent complete, error, sidecar crash notifications)
|
||||
- [x] Global keyboard shortcuts — Ctrl+W close focused pane, Ctrl+, open settings
|
||||
- [x] Settings dialog (default shell, cwd, max panes) — SettingsDialog.svelte + settings-bridge.ts
|
||||
- [x] Settings dialog (default shell, cwd, max panes, theme flavor) — SettingsDialog.svelte + settings-bridge.ts
|
||||
- [x] Settings backend — settings table in SQLite (session.rs), Tauri commands settings_get/set/list (lib.rs)
|
||||
- [ ] ctx integration (port from v1)
|
||||
- [x] ctx integration — read-only access to ~/.claude-context/context.db (ctx.rs, ctx-bridge.ts, ContextPane.svelte)
|
||||
- [x] SSH session management — CRUD in SQLite (SshSession struct, SshDialog.svelte, SshSessionList.svelte, ssh-bridge.ts)
|
||||
- [x] Catppuccin theme flavors — Latte/Frappe/Macchiato/Mocha selectable (themes.ts, theme.svelte.ts)
|
||||
- [x] Detached pane mode — pop-out terminal/agent into standalone windows (detach.ts, App.svelte)
|
||||
- [x] Syntax highlighting — Shiki integration for markdown + agent messages (highlight.ts, shiki dep)
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -203,7 +219,8 @@ bterminal-v2/
|
|||
- Caches Rust and npm dependencies
|
||||
- Builds .deb + AppImage, uploads as GitHub Release artifacts
|
||||
- [x] Build verified: .deb (4.3 MB), AppImage (103 MB)
|
||||
- [ ] Auto-update mechanism (Tauri updater) — deferred, needs signing key + update server
|
||||
- [x] Auto-updater plugin integrated (tauri-plugin-updater Rust + @tauri-apps/plugin-updater npm + updater.ts)
|
||||
- [ ] Auto-update signing key + update server setup (needed for full auto-update flow)
|
||||
|
||||
### System Requirements
|
||||
- Node.js 20+ (for Agent SDK sidecar)
|
||||
|
|
|
|||
|
|
@ -97,13 +97,13 @@ Architecture decision: Uses `claude` CLI with `--output-format stream-json` inst
|
|||
- [x] Sidebar "M" button opens file picker for .md/.markdown/.txt files
|
||||
- [x] TilingGrid routes markdown pane type to MarkdownPane component
|
||||
|
||||
### Phase 5: Agent Tree + Polish (2026-03-06, in progress)
|
||||
### Phase 5: Agent Tree + Polish (2026-03-06, complete)
|
||||
- [x] Agent tree visualization (SVG): AgentTree.svelte component with horizontal tree layout, bezier edges, status-colored nodes; agent-tree.ts utility (buildAgentTree, countTreeNodes, subtreeCost)
|
||||
- [x] Agent tree toggle in AgentPane: collapsible tree view shown when tool_call messages exist
|
||||
- [x] Global status bar: StatusBar.svelte showing terminal/agent pane counts, active agents with pulse animation, total tokens and cost
|
||||
- [x] Notification system: notifications.svelte.ts store (notify, dismissNotification, max 5 toasts, 4s auto-dismiss) + ToastContainer.svelte (slide-in animation, color-coded by type)
|
||||
- [x] Agent dispatcher notifications: toast on agent_stopped (success), agent_error (error), sidecar crash (error), cost result (success with cost/turns)
|
||||
- [x] Settings dialog: SettingsDialog.svelte modal (default shell, cwd, max panes) with settings-bridge.ts adapter
|
||||
- [x] Settings dialog: SettingsDialog.svelte modal (default shell, cwd, max panes, theme flavor) with settings-bridge.ts adapter
|
||||
- [x] Settings backend: settings table (key/value) in session.rs, Tauri commands settings_get/set/list in lib.rs
|
||||
- [x] Keyboard shortcuts: Ctrl+W close focused pane, Ctrl+, open settings dialog
|
||||
- [x] CSS grid update: app.css grid-template-rows '1fr' -> '1fr auto' for status bar row
|
||||
|
|
@ -123,8 +123,20 @@ Architecture decision: Uses `claude` CLI with `--output-format stream-json` inst
|
|||
- [x] Build verified: .deb (4.3 MB), AppImage (103 MB) both built successfully
|
||||
- [ ] Tauri auto-update plugin deferred (needs signing key + update server)
|
||||
|
||||
### Phase 5 continued: SSH, ctx, themes, detached mode, auto-updater (2026-03-06)
|
||||
- [x] ctx integration: Rust ctx.rs (read-only CtxDb with SQLITE_OPEN_READ_ONLY), 5 Tauri commands (ctx_list_projects, ctx_get_context, ctx_get_shared, ctx_get_summaries, ctx_search), ctx-bridge.ts adapter, ContextPane.svelte (project selector, tabs for entries/summaries/search)
|
||||
- [x] SSH session management: SshSession struct + ssh_sessions table in session.rs, 3 Tauri commands (ssh_session_list/save/delete), ssh-bridge.ts adapter, SshDialog.svelte (create/edit modal with validation), SshSessionList.svelte (grouped by folder, color dots)
|
||||
- [x] TilingGrid SSH routing: SSH pane type routes to TerminalPane with shell=/usr/bin/ssh and constructed args array
|
||||
- [x] Catppuccin theme flavors: themes.ts with all 4 palettes (Latte/Frappe/Macchiato/Mocha), theme.svelte.ts reactive store, SettingsDialog flavor dropdown, TerminalPane uses getXtermTheme(), persistence via SQLite settings
|
||||
- [x] Detached pane mode: detach.ts utility (isDetachedMode, getDetachedConfig from URL params), App.svelte renders single pane in full-viewport without chrome when ?detached=1
|
||||
- [x] Syntax highlighting: highlight.ts with Shiki lazy singleton (13 preloaded languages, catppuccin-mocha theme), integrated into MarkdownPane and AgentPane text messages
|
||||
- [x] Tauri auto-updater plugin: tauri-plugin-updater (Rust) + @tauri-apps/plugin-updater (npm) + updater.ts frontend utility
|
||||
- [x] AgentPane markdown rendering: text messages now rendered as markdown with Shiki highlighting
|
||||
- [x] New npm dependencies: shiki, @tauri-apps/plugin-updater
|
||||
- [x] New Rust dependency: tauri-plugin-updater
|
||||
|
||||
### Next Steps
|
||||
- [ ] Markdown rendering in agent text messages
|
||||
- [ ] Testing: vitest for sdk-messages adapter, cargo test for sidecar
|
||||
- [ ] Phase 5 remaining: click tree node -> focus pane, subtree cost display, ctx integration
|
||||
- [ ] Tauri auto-update plugin (signing key + update server)
|
||||
- [ ] Phase 5 remaining: click tree node -> focus pane, subtree cost display
|
||||
- [ ] Auto-update signing key + update server setup
|
||||
- [ ] Session resume (SDK resumeSessionId)
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
## Goal
|
||||
Redesign BTerminal from a GTK3 terminal emulator into a **multi-session Claude agent dashboard** optimized for 32:9 ultrawide (5120x1440). Simultaneous visibility of all active sessions, agent tree visualization, inline markdown rendering, maximum information density.
|
||||
|
||||
## Status: All 6 Phases Complete (MVP + post-MVP, packaging done — Rev 2)
|
||||
## Status: All 6 Phases Complete + extras (MVP + post-MVP, packaging, SSH, ctx, themes — Rev 3)
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -128,6 +128,11 @@ See [phases.md](phases.md) for the full phased implementation plan (Phases 1-6).
|
|||
| SQLite settings table for app config | Key-value `settings` table in session.rs for persisting user preferences (shell, cwd, max panes). Simple and extensible without schema migrations. | 2026-03-06 |
|
||||
| Toast notifications over persistent log | Ephemeral toasts (4s auto-dismiss, max 5) for agent events rather than a persistent notification log. Keeps UI clean; persistent logs can be added later if needed. | 2026-03-06 |
|
||||
| Build-from-source installer over pre-built binaries | install-v2.sh checks deps and builds locally. Pre-built binaries via GitHub Actions CI (.deb + AppImage on v* tags). Auto-update deferred until signing key infrastructure is set up. | 2026-03-06 |
|
||||
| ctx read-only access from Rust | Open ~/.claude-context/context.db with SQLITE_OPEN_READ_ONLY. Never write — ctx CLI owns the schema. Separate CtxDb struct in ctx.rs with Option<Connection> for graceful absence. | 2026-03-06 |
|
||||
| SSH via PTY shell args | SSH sessions spawn TerminalPane with shell=/usr/bin/ssh and args=[-p, port, [-i, keyfile], user@host]. No special SSH library — PTY handles it natively. | 2026-03-06 |
|
||||
| Catppuccin 4 flavors at runtime | CSS variables overridden at runtime for non-Mocha flavors. Existing terminals don't hot-swap (limitation accepted); new terminals pick up the active theme. | 2026-03-06 |
|
||||
| Detached pane via URL params | Pop-out windows use ?detached=1&type=terminal URL params. App.svelte conditionally renders single pane without sidebar/grid chrome. Simple, no IPC needed. | 2026-03-06 |
|
||||
| Shiki over highlight.js | Shiki provides VS Code-grade syntax highlighting with Catppuccin theme. Lazy singleton pattern avoids repeated WASM init. 13 languages preloaded. | 2026-03-06 |
|
||||
|
||||
## Open Questions
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue