docs: update meta files for settings drawer conversion session
This commit is contained in:
parent
3776a3ba65
commit
4424a90f89
7 changed files with 37 additions and 11 deletions
|
|
@ -65,7 +65,7 @@
|
|||
- v3 workspace store (`workspace.svelte.ts`) replaces layout store for v3. Groups loaded from `~/.config/bterminal/groups.json` via `groups-bridge.ts`. State: groups, activeGroupId, activeTab, focusedProjectId. Derived: activeGroup, activeProjects.
|
||||
- v3 groups backend (`groups.rs`): load_groups(), save_groups(), default_groups(). Tauri commands: groups_load, groups_save.
|
||||
- v3 SQLite additions: agent_messages table (per-project message persistence), project_agent_state table (sdkSessionId, cost, status per project), sessions.project_id column.
|
||||
- v3 App.svelte fully rewritten: no sidebar, no TilingGrid. Renders GlobalTabBar + tab content (Sessions/Docs/Context/Settings) + StatusBar.
|
||||
- v3 App.svelte fully rewritten: no sidebar, no TilingGrid. Renders GlobalTabBar (3 tabs + gear icon) + tab content (Sessions/Docs/Context) + settings drawer (right-side overlay, 32em, semi-transparent backdrop, Escape/click-outside to close) + StatusBar. Settings is NOT a tab — it's a collapsible side drawer toggled by gear icon in GlobalTabBar or Ctrl+,.
|
||||
- v3 component tree: App -> GlobalTabBar + ProjectGrid -> ProjectBox -> (ProjectHeader + ClaudeSession + TeamAgentsPanel + TerminalTabs). See `docs/v3-task_plan.md` for full tree.
|
||||
- Svelte 5 event syntax: use `onclick` not `on:click`. Svelte 5 requires lowercase event handler attributes (no colon syntax).
|
||||
|
||||
|
|
|
|||
10
CHANGELOG.md
10
CHANGELOG.md
|
|
@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
|
||||
## [Unreleased]
|
||||
|
||||
### Changed
|
||||
- Settings converted from full-page tab to collapsible side drawer: right-side overlay (32em width, semi-transparent backdrop), close via Escape/click-outside/close button
|
||||
- GlobalTabBar reduced from 4 tabs (Sessions/Docs/Context/Settings) to 3 tabs + gear icon toggle for settings drawer; gear icon highlights blue when active
|
||||
- `WorkspaceTab` type reduced from `'sessions' | 'docs' | 'context' | 'settings'` to `'sessions' | 'docs' | 'context'`
|
||||
- Keyboard shortcuts: Alt+1..3 for tabs (was Alt+1..4), Ctrl+, toggles settings drawer (was setActiveTab('settings')), Escape closes drawer
|
||||
- SettingsTab styling adjusted for drawer context: reduced padding (12px 16px), removed max-width, flex:1 for scrollable content
|
||||
- App.svelte wraps tab content + settings drawer in `.content-area` container with relative positioning for drawer overlay
|
||||
|
||||
### Added
|
||||
- SettingsTab split font controls: separate UI font (sans-serif options: System Sans-Serif, Inter, Roboto, Open Sans, Lato, Noto Sans, Source Sans 3, IBM Plex Sans, Ubuntu) and Terminal font (monospace options: JetBrains Mono, Fira Code, Cascadia Code, Source Code Pro, IBM Plex Mono, Hack, Inconsolata, Ubuntu Mono, monospace), each with custom themed dropdown + size stepper (8-24px), font previews in own typeface
|
||||
- `--term-font-family` and `--term-font-size` CSS custom properties in catppuccin.css (defaults: JetBrains Mono fallback chain, 13px)
|
||||
|
|
@ -18,7 +26,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
- SettingsTab global settings section: theme selector, UI font dropdown (sans-serif options), Terminal font dropdown (monospace options), each with size stepper (8-24px), default shell input, default CWD input — all custom themed dropdowns (no native `<select>`), all persisted via settings-bridge
|
||||
- Typography CSS custom properties (`--ui-font-family`, `--ui-font-size`, `--term-font-family`, `--term-font-size`) in catppuccin.css with defaults; consumed by app.css body rule
|
||||
- `initTheme()` now restores 4 saved font settings (ui_font_family, ui_font_size, term_font_family, term_font_size) from SQLite on startup alongside theme restoration
|
||||
- v3 Mission Control (All Phases 1-10 complete): multi-project dashboard with project groups, per-project Claude sessions, team agents panel, terminal tabs, workspace tabs (Sessions/Docs/Context/Settings)
|
||||
- v3 Mission Control (All Phases 1-10 complete): multi-project dashboard with project groups, per-project Claude sessions, team agents panel, terminal tabs, 3 workspace tabs (Sessions/Docs/Context) + settings drawer
|
||||
- v3 session continuity (P6): `persistSessionForProject()` saves agent state + messages to SQLite on session complete; `registerSessionProject()` maps session to project; `ClaudeSession.restoreMessagesFromRecords()` restores cached messages on mount
|
||||
- v3 workspace teardown (P7): `clearAllAgentSessions()` clears agent sessions on group switch; terminal tabs reset via `switchGroup()`
|
||||
- v3 data model: `groups.rs` (Rust structs + load/save `~/.config/bterminal/groups.json`), `groups.ts` (TypeScript interfaces), `groups-bridge.ts` (IPC adapter), `--group` CLI argument
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
## Project Overview
|
||||
|
||||
Terminal emulator with SSH and Claude Code session management. v1 (GTK3+VTE Python) is production-stable. v2 redesign (Tauri 2.x + Svelte 5 + Claude Agent SDK) Phases 1-7 + multi-machine (A-D) + profiles/skills complete. Packaging: .deb + AppImage via GitHub Actions CI. v3 Mission Control (All Phases 1-10 Complete): multi-project dashboard with project groups, per-project Claude sessions with session continuity, team agents panel, terminal tabs, workspace tabs, dead v2 component cleanup.
|
||||
Terminal emulator with SSH and Claude Code session management. v1 (GTK3+VTE Python) is production-stable. v2 redesign (Tauri 2.x + Svelte 5 + Claude Agent SDK) Phases 1-7 + multi-machine (A-D) + profiles/skills complete. Packaging: .deb + AppImage via GitHub Actions CI. v3 Mission Control (All Phases 1-10 Complete): multi-project dashboard with project groups, per-project Claude sessions with session continuity, team agents panel, terminal tabs, 3 workspace tabs + settings drawer, dead v2 component cleanup.
|
||||
|
||||
- **Repository:** github.com/DexterFromLab/BTerminal
|
||||
- **License:** MIT
|
||||
|
|
|
|||
|
|
@ -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, 17 themes in 3 groups (4 Catppuccin + 7 Editor + 6 Deep Dark: Tokyo Night, Gruvbox Dark, Ayu Dark, Poimandres, Vesper, Midnight), **global font controls** (separate UI font [sans-serif] + terminal font [monospace] with live preview), .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, 3 workspace tabs (Sessions/Docs/Context) + settings drawer, 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), **global font controls** (separate UI font [sans-serif] + terminal font [monospace] with live preview), .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.
|
||||
|
||||

|
||||
|
||||
|
|
|
|||
1
TODO.md
1
TODO.md
|
|
@ -10,6 +10,7 @@
|
|||
|
||||
## Completed
|
||||
|
||||
- [x] **Settings drawer conversion** -- Converted Settings from full-page tab to collapsible side drawer (right side, 32em width, semi-transparent backdrop). GlobalTabBar now 3 tabs + gear icon toggle. WorkspaceTab type: 'sessions' | 'docs' | 'context'. Alt+1..3 for tabs, Ctrl+, toggles drawer, Escape closes. | Done: 2026-03-07
|
||||
- [x] **SettingsTab global settings redesign** -- Split font into UI font (sans-serif options) + Terminal font (monospace options), each with custom dropdown + size stepper. Single-column layout with Appearance/Defaults subsections. All custom themed dropdowns (no native select). New CSS vars: --term-font-family, --term-font-size. Setting keys: ui_font_family, ui_font_size, term_font_family, term_font_size. | Done: 2026-03-07
|
||||
- [x] **Global font controls** -- Font family select (9 monospace fonts) + font size +/- stepper (8-24px) in SettingsTab. Live preview via CSS vars, persisted to SQLite. initTheme() restores on startup. | Done: 2026-03-07
|
||||
- [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
|
||||
|
|
|
|||
|
|
@ -199,6 +199,22 @@ All editor themes map to the same `--ctp-*` CSS custom property names (26 vars).
|
|||
#### Verification
|
||||
- No test changes needed — UI/CSS-only changes, no logic changes
|
||||
|
||||
### Session: 2026-03-07 — Settings Drawer Conversion
|
||||
|
||||
#### Settings Tab to Drawer
|
||||
- [x] Converted Settings from a full-page tab to a collapsible side drawer
|
||||
- [x] GlobalTabBar now has 3 tabs (Sessions/Docs/Context) + gear icon toggle for settings drawer
|
||||
- [x] App.svelte renders SettingsTab in an `<aside>` drawer (right side, 32em width, semi-transparent backdrop)
|
||||
- [x] Drawer close: Escape key, click-outside (backdrop), close button (X icon)
|
||||
- [x] Gear icon in GlobalTabBar highlights blue when drawer is open (active state)
|
||||
- [x] GlobalTabBar accepts props: `settingsOpen`, `ontoggleSettings`
|
||||
- [x] Removed 'settings' from WorkspaceTab union type (now 'sessions' | 'docs' | 'context')
|
||||
- [x] Alt+1..3 for tabs (was Alt+1..4), Ctrl+, toggles drawer (was setActiveTab('settings'))
|
||||
- [x] SettingsTab padding reduced (12px 16px), max-width removed, flex:1 for drawer context
|
||||
|
||||
#### Verification
|
||||
- All 138 vitest tests pass
|
||||
|
||||
### Session: 2026-03-07 — SettingsTab Global Settings Redesign
|
||||
|
||||
#### Font Settings Split (UI Font + Terminal Font)
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ BTerminal v3: Project orchestration dashboard (projects in a workspace)
|
|||
4. Per-project settings: Claude subscription, working dir, icon (nerd font), name, identifier, description, enabled
|
||||
5. Project group = workspace on screen
|
||||
6. Each project box: Claude session (default, resume previous) + team agents (right) + terminal tabs (below)
|
||||
7. **4 workspace tabs**: Sessions | Docs | Context | Settings
|
||||
7. **3 workspace tabs + settings drawer**: Sessions | Docs | Context tabs, settings as collapsible side drawer (gear icon toggle)
|
||||
8. App launchable with `--group <name>` CLI arg
|
||||
9. JSON config file defines all groups (`~/.config/bterminal/groups.json`)
|
||||
10. Session continuity: resume previous + restore history visually
|
||||
|
|
@ -158,7 +158,7 @@ CREATE TABLE IF NOT EXISTS project_agent_state (
|
|||
```
|
||||
App.svelte [REWRITTEN]
|
||||
├── CommandPalette.svelte [NEW]
|
||||
├── GlobalTabBar.svelte [NEW] Sessions | Docs | Context | Settings
|
||||
├── GlobalTabBar.svelte [NEW] Sessions | Docs | Context + gear icon
|
||||
├── [Tab: Sessions]
|
||||
│ └── ProjectGrid.svelte [NEW] Horizontal flex + scroll-snap
|
||||
│ └── ProjectBox.svelte [NEW] Per-project container
|
||||
|
|
@ -175,7 +175,7 @@ App.svelte [REWRITTEN]
|
|||
│ └── MarkdownPane.svelte [SURVIVES]
|
||||
├── [Tab: Context]
|
||||
│ └── ContextPane.svelte [SURVIVES, extracted from pane]
|
||||
├── [Tab: Settings]
|
||||
├── [Drawer: Settings] Collapsible side drawer (right, 32em)
|
||||
│ └── SettingsTab.svelte [NEW]
|
||||
│ ├── ProjectSettingsEditor.svelte [NEW]
|
||||
│ └── GlobalSettings.svelte [NEW]
|
||||
|
|
@ -291,12 +291,13 @@ No sidecar changes needed for v3.0.
|
|||
| Ctrl+K | Command palette | App |
|
||||
| Ctrl+G | Switch group (palette filtered) | App |
|
||||
| Ctrl+1..5 | Focus project by index | App |
|
||||
| Alt+1..4 | Switch workspace tab | App |
|
||||
| Alt+1..3 | Switch workspace tab | App |
|
||||
| Ctrl+N | New terminal in focused project | Workspace |
|
||||
| Ctrl+Shift+N | New agent query | Workspace |
|
||||
| Ctrl+Tab | Next terminal tab | Project |
|
||||
| Ctrl+W | Close terminal tab | Project |
|
||||
| Ctrl+, | Settings tab | App |
|
||||
| Ctrl+, | Toggle settings drawer | App |
|
||||
| Escape | Close settings drawer | App |
|
||||
| Ctrl+Shift+C/V | Copy/paste in terminal | Terminal |
|
||||
|
||||
---
|
||||
|
|
@ -318,7 +319,7 @@ No sidecar changes needed for v3.0.
|
|||
### Phase 2: Project Box Shell [status: complete]
|
||||
**Milestone: Project boxes render horizontally with headers, workspace tabs switch**
|
||||
|
||||
- [x] Create GlobalTabBar.svelte (Sessions | Docs | Context | Settings)
|
||||
- [x] Create GlobalTabBar.svelte (Sessions | Docs | Context + gear icon)
|
||||
- [x] Create ProjectGrid.svelte (flex + scroll-snap container)
|
||||
- [x] Create ProjectBox.svelte (CSS grid: header | session-area | terminal-area)
|
||||
- [x] Create ProjectHeader.svelte (icon + name + status dot + accent color)
|
||||
|
|
@ -382,7 +383,7 @@ No sidecar changes needed for v3.0.
|
|||
| xterm budget: 4 active, unlimited suspended | WebKit2GTK OOM at ~5 instances. Serialize scrollback to text buffer, destroy xterm, recreate on focus. PTY stays alive. | 2026-03-07 |
|
||||
| Flexbox + scroll-snap over CSS Grid | Allows horizontal scroll on narrow screens. Scroll-snap gives clean project-to-project scrolling. | 2026-03-07 |
|
||||
| Team panel: inline >2560px, overlay <2560px | Adapts to available space. Collapsed when no subagents running. | 2026-03-07 |
|
||||
| 4 workspace tabs (Sessions/Docs/Context/Settings) | ctx viewer as separate tab per user requirement. Docs auto-discovered from projects. | 2026-03-07 |
|
||||
| 3 workspace tabs + settings drawer | Sessions/Docs/Context as tabs, Settings as collapsible side drawer (32em, gear icon toggle, Escape/click-outside to close). Keeps tab bar clean, settings always accessible without losing tab context. | 2026-03-07 |
|
||||
| Project accent colors from Catppuccin palette | Visual distinction: blue/green/mauve/peach/pink per slot 1-5. Applied to border + header tint. | 2026-03-07 |
|
||||
| Remote machines deferred to v3.1 | Elevate to project level (project.remote_machine_id) but don't implement in MVP. | 2026-03-07 |
|
||||
| Keyboard shortcut layers: App > Workspace > Terminal | Prevents conflicts. Terminal captures raw keys only when focused. App layer uses Ctrl+K/G. | 2026-03-07 |
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue