docs: update all docs for polish session — copy/paste, theme hot-swap, tests, drag-resize
- progress.md: add session log for copy/paste, theme hot-swap, tree enhancements, session resume, drag-resize, testing, CI, Deno PoC - phases.md: mark completed items (copy/paste, drag-resize, tree click, subtree cost, session resume, CI signing) - task_plan.md: update theme decision (hot-swap works), add new decisions - CLAUDE.md: add test paths, test commands, vitest dep - .claude/CLAUDE.md: fix stale deferred items and theme limitation - README.md: update feature summary - TODO.md: move 7 completed items, update active list - CHANGELOG.md: add session entries under [Unreleased]
This commit is contained in:
parent
c15fe7d912
commit
f349f3bb14
9 changed files with 154 additions and 33 deletions
|
|
@ -109,7 +109,7 @@ bterminal-v2/
|
|||
|
||||
- [x] CSS Grid layout with sidebar + main area + optional right panel
|
||||
- [x] Responsive breakpoints (ultrawide / standard / narrow)
|
||||
- [ ] Pane resize via drag handles (deferred — current presets sufficient for MVP)
|
||||
- [x] Pane resize via drag handles (splitter overlays in TilingGrid with mouse drag, min/max 10%/90%)
|
||||
- [x] Layout presets: 1-col, 2-col, 3-col, 2x2, master+stack
|
||||
- [ ] Save/restore layout to SQLite (Phase 4)
|
||||
- [x] Keyboard: Ctrl+1-4 focus pane, Ctrl+N new terminal
|
||||
|
|
@ -119,7 +119,7 @@ bterminal-v2/
|
|||
- [x] Catppuccin Mocha theme for xterm.js
|
||||
- [x] PTY spawn from Rust (portable-pty), stream to frontend via Tauri events
|
||||
- [x] Terminal resize -> PTY resize (100ms debounce)
|
||||
- [ ] Copy/paste (Ctrl+Shift+C/V) — deferred
|
||||
- [x] Copy/paste (Ctrl+Shift+C/V) — via attachCustomKeyEventHandler
|
||||
- [x] SSH session: spawn `ssh` command in PTY (via shell args)
|
||||
- [x] Local shell: spawn user's $SHELL
|
||||
- [x] Claude Code CLI: spawn `claude` in PTY (via shell args)
|
||||
|
|
@ -154,7 +154,7 @@ bterminal-v2/
|
|||
- [x] Agent status indicator (starting/running/done/error)
|
||||
- [x] Start/stop agent from UI (prompt form + stop button)
|
||||
- [x] Auto-scroll with scroll-lock on user scroll-up
|
||||
- [ ] Session resume (SDK `resume: sessionId`)
|
||||
- [x] Session resume (follow-up prompt in AgentPane, resume_session_id passed to SDK)
|
||||
- [x] Keyboard: Ctrl+Shift+N new agent
|
||||
- [x] Sidebar: agent session button
|
||||
|
||||
|
|
@ -187,8 +187,12 @@ bterminal-v2/
|
|||
## 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)
|
||||
- [ ] Aggregate cost per subtree (subtreeCost util exists, not displayed in UI)
|
||||
- [x] Click tree node -> scroll to message (handleTreeNodeClick in AgentPane, scrollIntoView smooth)
|
||||
- [x] Aggregate cost per subtree (subtreeCost displayed in yellow below each tree node label)
|
||||
- [x] Terminal copy/paste (Ctrl+Shift+C/V via attachCustomKeyEventHandler)
|
||||
- [x] Terminal theme hot-swap (onThemeChange callback registry in theme.svelte.ts, TerminalPane subscribes)
|
||||
- [x] Pane drag-resize handles (splitter overlays in TilingGrid with mouse drag)
|
||||
- [x] Session resume (follow-up prompt, resume_session_id to SDK)
|
||||
- [x] Global status bar (terminal/agent counts, active agents pulse, token/cost totals) — StatusBar.svelte
|
||||
- [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)
|
||||
|
|
@ -220,7 +224,9 @@ bterminal-v2/
|
|||
- Builds .deb + AppImage, uploads as GitHub Release artifacts
|
||||
- [x] Build verified: .deb (4.3 MB), AppImage (103 MB)
|
||||
- [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)
|
||||
- [x] Auto-update latest.json generation in CI (version, platform URL, signature from .sig file)
|
||||
- [x] release.yml: TAURI_SIGNING_PRIVATE_KEY env vars passed to build step
|
||||
- [ ] Auto-update signing key generation + TAURI_SIGNING_PRIVATE_KEY secret in GitHub repo
|
||||
|
||||
### System Requirements
|
||||
- Node.js 20+ (for Agent SDK sidecar)
|
||||
|
|
|
|||
|
|
@ -135,8 +135,51 @@ Architecture decision: Uses `claude` CLI with `--output-format stream-json` inst
|
|||
- [x] New npm dependencies: shiki, @tauri-apps/plugin-updater
|
||||
- [x] New Rust dependency: tauri-plugin-updater
|
||||
|
||||
### Session: 2026-03-06 (continued) — Polish, Testing, Extras
|
||||
|
||||
#### Terminal Copy/Paste + Theme Hot-Swap
|
||||
- [x] Copy/paste in TerminalPane via Ctrl+Shift+C/V (attachCustomKeyEventHandler: C copies selection, V reads clipboard and writes to PTY)
|
||||
- [x] Theme hot-swap: onThemeChange() callback registry in theme.svelte.ts, TerminalPane subscribes and updates term.options.theme on flavor change
|
||||
- [x] All open terminals now update immediately when theme flavor changes
|
||||
|
||||
#### Agent Tree Enhancements
|
||||
- [x] Click tree node -> scroll to corresponding message (handleTreeNodeClick in AgentPane, scrollIntoView with smooth behavior)
|
||||
- [x] Subtree cost display: yellow cost text below each tree node label (subtreeCost from agent-tree.ts, NODE_H increased from 32 to 40)
|
||||
- [x] Each message div has id="msg-{msg.id}" for scroll targeting
|
||||
|
||||
#### Session Resume
|
||||
- [x] Follow-up prompt input appears after session completes or errors (if sdkSessionId exists)
|
||||
- [x] startQuery(text, resume=true) passes resume_session_id to SDK via agent_query
|
||||
- [x] Styled .follow-up input + button in done-bar and error-bar sections
|
||||
|
||||
#### Pane Drag-Resize Handles
|
||||
- [x] Splitter overlays in TilingGrid (positioned with fixed CSS, outside grid to avoid layout interference)
|
||||
- [x] Column splitters: vertical bars between grid columns with mousemove drag
|
||||
- [x] Row splitters: horizontal bars between grid rows with mousemove drag
|
||||
- [x] customColumns/customRows $state override preset grid-template; reset on preset change
|
||||
- [x] Supports 2-col, 3-col, and 2-row layouts with min 10% / max 90% ratio clamping
|
||||
- [x] .dragging class disables user-select during drag; splitter hover shows accent color at 40% opacity
|
||||
|
||||
#### Auto-Update Workflow Enhancement
|
||||
- [x] release.yml: TAURI_SIGNING_PRIVATE_KEY + PASSWORD env vars passed to build step
|
||||
- [x] Generates latest.json for auto-updater (version, pub_date, platform URL, signature from .sig file)
|
||||
- [x] Uploads latest.json alongside .deb and .AppImage as release artifacts
|
||||
|
||||
#### Deno Sidecar Evaluation
|
||||
- [x] Created agent-runner-deno.ts proof-of-concept (Deno.Command for claude CLI, TextLineStream for NDJSON)
|
||||
- [x] Same NDJSON protocol as Node.js version; compiles to single binary with deno compile
|
||||
- [ ] Not yet integrated with Rust SidecarManager; needs real-world testing
|
||||
|
||||
#### Testing Infrastructure
|
||||
- [x] Vitest added: vitest ^4.0.18 dev dependency, vite.config.ts test config, npm run test script
|
||||
- [x] sdk-messages.test.ts: tests for adaptSDKMessage() — init, text, thinking, tool_use, tool_result, cost, unknown types
|
||||
- [x] agent-tree.test.ts: tests for buildAgentTree(), countTreeNodes(), subtreeCost()
|
||||
- [x] Cargo: tempfile 3 dev dependency added
|
||||
- [x] session.rs tests: SessionDb CRUD (sessions, SSH sessions, settings, layout), uses tempfile::tempdir()
|
||||
- [x] ctx.rs tests: CtxDb error handling with missing database (conn=None)
|
||||
|
||||
### Next Steps
|
||||
- [ ] Testing: vitest for sdk-messages adapter, cargo test for sidecar
|
||||
- [ ] Phase 5 remaining: click tree node -> focus pane, subtree cost display
|
||||
- [ ] Auto-update signing key + update server setup
|
||||
- [ ] Session resume (SDK resumeSessionId)
|
||||
- [ ] Auto-update signing key generation + TAURI_SIGNING_PRIVATE_KEY secret in GitHub repo
|
||||
- [ ] Deno sidecar: test with real claude CLI, benchmark vs Node.js, integrate with sidecar.rs
|
||||
- [ ] E2E testing with Playwright
|
||||
- [ ] Session groups/folders in sidebar
|
||||
|
|
|
|||
|
|
@ -130,9 +130,12 @@ See [phases.md](phases.md) for the full phased implementation plan (Phases 1-6).
|
|||
| 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 |
|
||||
| Catppuccin 4 flavors at runtime | CSS variables overridden at runtime. onThemeChange() callback registry in theme.svelte.ts allows open terminals to hot-swap themes. | 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 |
|
||||
| Vitest for frontend tests | Vitest over Jest — zero-config with Vite, same transform pipeline, faster. Test config in vite.config.ts. | 2026-03-06 |
|
||||
| Deno sidecar evaluation | Proof-of-concept agent-runner-deno.ts created. Deno compiles to single binary (better packaging). Same NDJSON protocol. Not yet integrated. | 2026-03-06 |
|
||||
| Splitter overlays for pane resize | Fixed-position divs outside CSS Grid (avoids layout interference). Mouse drag updates customColumns/customRows state. Resets on preset change. | 2026-03-06 |
|
||||
|
||||
## Open Questions
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue