Commit graph

35 commits

Author SHA1 Message Date
Hibryda
173c55cb2b docs: update all docs for Phase 6 packaging completion 2026-03-06 14:23:16 +01:00
Hibryda
67875a1f70 feat(v2): add packaging, installer, and CI release workflow (Phase 6)
Build-from-source installer (install-v2.sh) with dependency checks for
Node.js 20+, Rust 1.77+, and system libraries. Tauri bundle config for
.deb and AppImage targets. GitHub Actions workflow builds and uploads
release artifacts on version tags. Icons regenerated as RGBA PNGs.
2026-03-06 14:23:09 +01:00
Hibryda
643eb15697 chore: update README, TODO, and CHANGELOG for Phase 5 progress 2026-03-06 13:46:44 +01:00
Hibryda
d7a1dca40d docs: update all docs for Phase 5 agent tree, status bar, notifications, settings 2026-03-06 13:46:37 +01:00
Hibryda
be24d07c65 feat(v2): add agent tree, status bar, notifications, settings dialog (Phase 5)
Agent tree visualization (SVG) with horizontal layout and bezier edges.
Global status bar with pane counts, active agents pulse, token/cost totals.
Toast notification system with auto-dismiss and agent dispatcher integration.
Settings dialog with SQLite persistence for shell, cwd, and max panes.
Keyboard shortcuts: Ctrl+W close pane, Ctrl+, open settings.
2026-03-06 13:46:21 +01:00
Hibryda
cd1271adf0 docs: update all docs for Phase 4 completion and MVP status
- phases.md: Phase 3 polish + Phase 4 items checked off as complete
- progress.md: Phase 4 session details added
- task_plan.md: status updated to "MVP COMPLETE"
- README.md: v2 status updated to "MVP complete (Phase 4 done)"
- TODO.md: Phase 3/4 moved to Completed, new post-MVP items added
- CHANGELOG.md: Phase 4 entries added under [Unreleased]
- .claude/CLAUDE.md: workflow status and constraints updated
2026-03-06 12:20:10 +01:00
Hibryda
bdb87978a9 feat(v2): implement session persistence, file watcher, and markdown viewer
Phase 4 complete (MVP ship):
- SessionDb (rusqlite, WAL mode): sessions + layout_state tables, CRUD
- FileWatcherManager (notify v6): watch files, emit Tauri change events
- MarkdownPane: marked.js rendering with Catppuccin styles, live reload
- Layout store wired to persistence (addPane/removePane/setPreset persist)
- restoreFromDb() on startup restores panes in layout order
- Sidebar "M" button opens file picker for markdown files
- New adapters: session-bridge.ts, file-bridge.ts
- Deps: rusqlite (bundled), dirs 5, notify 6, marked
2026-03-06 12:19:56 +01:00
Hibryda
5ca035d438 feat(v2): add sidecar crash detection, restart UI, and auto-scroll lock
Phase 3 polish: dispatcher listens for sidecar-exited events and marks
running sessions as error. AgentPane shows "Restart Sidecar" button on
error. Auto-scroll disables when user scrolls >50px from bottom with
"Scroll to bottom" button. Added agent_restart Tauri command.
2026-03-06 12:19:35 +01:00
Hibryda
da6d7272ee docs: update docs for .svelte.ts rune store fix and Phase 3 status
- progress.md: add bug fix section for rune file extension issue
- phases.md: update store file names to .svelte.ts in file structure
- task_plan.md: add error entry and .svelte.ts decision to decisions log
- .claude/CLAUDE.md: add .svelte.ts constraint, update Phase 3 status
- CHANGELOG.md: add Fixed entries for rune store rename
2026-03-06 01:11:58 +01:00
Hibryda
af1516ed2b fix(v2): rename rune stores to .svelte.ts to fix rune_outside_svelte error
Svelte 5 $state/$derived runes only work in .svelte and .svelte.ts
files. The stores had plain .ts extensions, causing a blank screen with
"rune_outside_svelte" runtime error. Renamed all three store files and
updated import paths across 5 consuming files.
2026-03-06 01:11:51 +01:00
Hibryda
c24e540080 docs: reflect Phase 3 agent SDK integration progress
Update phases.md with Phase 3 checklist (in_progress), add session
progress log entry, record claude CLI architecture decision in
task_plan.md, update README/TODO/CHANGELOG with Phase 3 additions,
and sync .claude/CLAUDE.md with current constraints.
2026-03-06 01:02:13 +01:00
Hibryda
314c6d77aa feat(v2): add agent pane with SDK message adapter and dispatcher
Implement full agent session frontend: SDK message adapter parsing
stream-json into 9 typed message types, agent bridge for Tauri IPC,
dispatcher routing sidecar events to store, agent session store with
cost tracking, and AgentPane component with prompt input, message
rendering (text, thinking, tool calls, results, cost), and stop
button. Add Ctrl+Shift+N shortcut and sidebar agent button.
2026-03-06 01:01:56 +01:00
Hibryda
f928501075 feat(v2): implement agent-runner sidecar with claude CLI subprocess
Replace Agent SDK stub with working implementation that spawns
claude CLI with --output-format stream-json, manages multiple
sessions via Map<sessionId, ChildProcess>, and forwards NDJSON
events to Rust backend. Supports query, stop, and graceful shutdown.
2026-03-06 01:01:43 +01:00
Hibryda
f0ec44f6a6 feat(v2): add SidecarManager and agent Tauri commands
Implement Rust SidecarManager that spawns Node.js sidecar process,
communicates via stdio NDJSON, and manages agent session lifecycle.
Add agent_query, agent_stop, agent_ready Tauri commands. Sidecar
auto-starts on app launch.
2026-03-06 01:01:35 +01:00
Hibryda
54b0d44bc1 docs: reflect Phase 2 completion across all project documentation
Update progress log with Phase 2 deliverables, mark Phase 2 complete
in TODO/CHANGELOG/README, fix stale Solid.js reference in findings,
update task_plan status to BUILDING, add v2 key paths to CLAUDE.md.
2026-03-05 23:50:16 +01:00
Hibryda
05ad0db092 docs: mark Phase 2 terminal pane + layout as complete 2026-03-05 23:43:00 +01:00
Hibryda
bfd4021909 feat(v2): add tiling layout, sidebar controls, and keyboard shortcuts
- TilingGrid: dynamic CSS Grid with auto-preset based on pane count
- Layout presets: 1-col, 2-col, 3-col, 2x2, master-stack
- PaneContainer: close button, status indicator, focus highlight
- SessionList: new terminal button, layout preset selector, pane list
- Layout store: pane CRUD, focus management, grid template generation
- Keyboard: Ctrl+N new terminal, Ctrl+1-4 focus pane by index
2026-03-05 23:42:41 +01:00
Hibryda
bb0e9283fc feat(v2): add xterm.js terminal pane with Canvas addon
- Install @xterm/xterm, @xterm/addon-canvas, @xterm/addon-fit, @tauri-apps/api
- TerminalPane: xterm.js with Catppuccin Mocha theme, auto-fit, resize observer
- PTY bridge: Tauri invoke wrappers + event listeners for data/exit
- Bidirectional streaming: keyboard input -> PTY write, PTY output -> xterm write
- 100ms debounced resize propagation to PTY backend
2026-03-05 23:42:31 +01:00
Hibryda
f15e60be60 feat(v2): add PTY backend with portable-pty
- Implement PtyManager: spawn, write, resize, kill operations
- Wire Tauri commands: pty_spawn, pty_write, pty_resize, pty_kill
- Reader thread streams PTY output via Tauri events (pty-data-{id})
- Process exit detection emits pty-exit-{id} event
- Add portable-pty 0.8 and uuid 1.0 dependencies
2026-03-05 23:42:20 +01:00
Hibryda
406683799b docs: reflect Phase 1 completion in README, TODO, and CHANGELOG
Move Phase 1 to completed in TODO.md, update README.md v2 status,
and add scaffolding entries to CHANGELOG.md.
2026-03-05 23:32:19 +01:00
Hibryda
9bd15b359b docs: update progress log and documentation index
Add Phase 1 completion details to progress.md and document index
table to docs/README.md linking all planning documents.
2026-03-05 23:32:11 +01:00
Hibryda
bb93bd1c9a chore(v2): add Cargo.lock and VS Code extensions config
Include Cargo.lock for reproducible Rust builds and recommended
Svelte extension for VS Code.
2026-03-05 23:32:00 +01:00
Hibryda
89a98adb61 docs: mark Phase 1 scaffolding as complete 2026-03-05 23:26:40 +01:00
Hibryda
758d626fab feat(v2): scaffold Tauri 2.x + Svelte 5 project (Phase 1)
- Tauri 2.10 + Svelte 5.45 + TypeScript + Vite 7
- Catppuccin Mocha theme with CSS variables and semantic aliases
- CSS Grid layout: sidebar (260px) + workspace, responsive breakpoints
  for ultrawide (3440px+) and narrow (<1200px)
- Component structure: Layout/, Terminal/, Agent/, Markdown/, Sidebar/
- Svelte 5 stores with $state runes: sessions, agents, layout
- SDK message adapter (abstracts Agent SDK wire format)
- PTY bridge (Tauri IPC wrapper, stubbed for Phase 2)
- Node.js sidecar entry point (stdio NDJSON, stubbed for Phase 3)
- Rust modules: pty, sidecar, watcher, session (stubbed)
- Vite dev server on port 9700
- Build verified: binary + .deb + .rpm + AppImage all produced
2026-03-05 23:26:27 +01:00
Hibryda
5996615e68 docs: add documentation index scaffold
- Create docs/README.md with YAML frontmatter and index placeholder
- Add Documentation (SOURCE OF TRUTH) section to root CLAUDE.md
2026-03-05 23:14:43 +01:00
Hibryda
7d4e5a33c9 chore: add VS Code workspace config with Peacock color
- launch.json: Python debugpy for bterminal.py
- tasks.json: run and install tasks
- settings.json: Peacock green workspace color, Python type checking
2026-03-05 23:14:39 +01:00
Hibryda
b659a6a6bd chore: add 17 operational rules and rule index
- Create .claude/rules/ with all 17 standard rule files (01-security through 17-document-imports)
- Add Operational Rules section with Rule Index to .claude/CLAUDE.md
2026-03-05 23:14:34 +01:00
Hibryda
afc5a7f895 chore: add project meta files and Claude behavioral guide
Add TODO.md, CHANGELOG.md, .claude/CLAUDE.md behavioral guide.
Update README.md with v2 planning notice and docs links.
Fix .gitignore to scope CLAUDE.md exclusion to root only.
2026-03-05 22:49:20 +01:00
Hibryda
2723fbf4be docs: add v2 architecture planning and research findings
Architecture decision: Tauri 2.x + Svelte 5 + Claude Agent SDK (Node.js sidecar).
Includes research on Agent SDK streaming, xterm.js performance, WebKit2GTK
limitations, and adversarial review corrections (two-tier observation, Svelte 5
over Solid.js, SDK abstraction layer). Six implementation phases defined,
MVP = Phases 1-4.
2026-03-05 22:49:00 +01:00
DexterFromLab
70f8030ae4 Update screenshot with current UI showing Claude Code session
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 13:26:53 +01:00
DexterFromLab
416da1a79c Add bterminal icon to installer and desktop entry
The SVG icon was installed locally but missing from the repo.
Installer now copies it to ~/.local/share/icons/ and desktop
entry uses the correct icon name.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 13:25:03 +01:00
DexterFromLab
20fc27fbdf Migrate to Gtk.Application for proper app lifecycle and custom icon
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 13:12:30 +01:00
DexterFromLab
a8b8548346 Add ctx project management to Claude Code session dialog
- Project dir field with Browse button in ClaudeCodeDialog
- Auto-fill session name and ctx prompt when selecting directory
- Auto-initialize ctx project and generate CLAUDE.md on session save
- CtxEditDialog for managing ctx entries (add/edit/delete key-value pairs)
- Edit ctx accessible from dialog button and right-click context menu
- Claude Code sessions now spawn in project directory instead of HOME

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 12:49:10 +01:00
DexterFromLab
4268ead6a4 Add ctx context manager, installer, and auto-detect Claude path
- ctx: SQLite-based cross-session context manager for Claude Code
- install.sh: automated installer (deps, files, symlinks, DB, .desktop)
- bterminal.py: replace hardcoded CLAUDE_PATH with auto-detection
- README.md: rewrite in English, document ctx and installation
- .gitignore: add CLAUDE.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 11:54:24 +01:00
DexterFromLab
edc13e2d27 Initial commit: BTerminal — GTK3 terminal with SSH & Claude Code session management
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 18:34:36 +01:00