Hibryda
a020f59cb4
feat(electrobun): groups, cloning, shortcuts, custom window — all 5 features
...
Groups Sidebar:
- SQLite groups table (4 seeded: Development, Testing, DevOps, Research)
- Left icon rail with emoji group icons, Ctrl+1-4 switching
- Active group highlighted, projects filtered by group
Project Cloning:
- Clone button on project cards (fork icon)
- git worktree add via Bun.spawn (array form, no shell strings)
- 3-clone limit, branch name validation, pending-status pattern
- Clone cards: WT badge + branch name + accent top border
- Chain link SVG icons between linked clones in grid
Keyboard Shortcuts:
- keybinding-store.svelte.ts: 16 defaults across 4 categories
- Two-scope: document capture + terminal focus guard
- KeyboardSettings.svelte: search, click-to-capture, conflict detection
- Per-binding reset + Reset All
Custom Window:
- titleBarStyle: "hidden" — no native title bar
- Vertical "AGOR" text in left sidebar (writing-mode: vertical-rl)
- Floating window controls badge (minimize/maximize/close)
- Draggable region via -webkit-app-region: drag
- Window frame persisted to SQLite (debounced 500ms)
Window is resizable by default (Electrobun BrowserWindow).
2026-03-20 06:24:24 +01:00
Hibryda
5032021915
feat(electrobun): wire EVERYTHING — all settings persist, theme editor, marketplace
...
All settings wired to SQLite persistence:
- AgentSettings: shell, CWD, permissions, providers (JSON blob)
- SecuritySettings: branch policies (JSON array)
- ProjectSettings: per-project via setProject RPC
- OrchestrationSettings: wake, anchors, notifications
- AdvancedSettings: logging, OTLP, plugins, import/export JSON
Theme Editor:
- 26 color pickers (14 Accents + 12 Neutrals)
- Live CSS var preview as you pick colors
- Save custom theme to SQLite, cancel reverts
- Import/export theme as JSON
- Custom themes in dropdown with delete button
Extensions Marketplace:
- 8-plugin demo catalog (Browse/Installed tabs)
- Search/filter by name or tag
- Install/uninstall with SQLite persistence
- Plugin cards with emoji icons, tags, version
Terminal font hot-swap:
- fontStore.onTermFontChange() → xterm.js options update + fitAddon.fit()
- Resize notification to PTY daemon after font change
All 7 settings categories functional. Every control persists and takes effect.
2026-03-20 05:45:10 +01:00
Hibryda
6002a379e4
feat(electrobun): wire persistence — SQLite, 17 themes, font system
...
Persistence:
- bun:sqlite at ~/.config/agor/settings.db (WAL mode, 500ms busy_timeout)
- 4 tables: schema_version, settings, projects, custom_themes
- 5 RPC handlers: settings.get/set/getAll, projects get/set
Theme system (LIVE switching):
- All 17 themes ported from Tauri (4 Catppuccin + 7 Editor + 6 Deep Dark)
- applyCssVars() sets 26 --ctp-* vars on document.documentElement
- Parallel xterm ITheme mapping per theme
- theme-store.svelte.ts: Svelte 5 rune store, persists to SQLite
Font system:
- font-store.svelte.ts: UI/terminal font family + size
- Live CSS var application (--ui-font-family/size, --term-font-family/size)
- onTermFontChange() callback registry for terminal instances
- Persists all 4 font settings to SQLite
AppearanceSettings wired: 17-theme grouped dropdown, font steppers
Init on startup: restores saved theme + fonts from SQLite
2026-03-20 05:29:03 +01:00
Hibryda
0b9e8b305a
feat(electrobun): port all Tauri features — full settings, popup menus, provider capabilities
...
New components (8):
- provider-capabilities.ts: per-provider feature flags (claude/codex/ollama)
- settings/AppearanceSettings.svelte: theme, fonts, cursor, scrollback
- settings/AgentSettings.svelte: shell, CWD, permissions, providers
- settings/SecuritySettings.svelte: keyring, secrets, branch policies
- settings/ProjectSettings.svelte: per-project provider/model/worktree/sandbox
- settings/OrchestrationSettings.svelte: wake strategy, notifications, anchors
- settings/AdvancedSettings.svelte: logging, OTLP, plugins, import/export
Updated:
- ChatInput: radial context indicator (78% demo, color-coded arc),
4 popup menus (upload/context/web/slash), provider-gated icons
- SettingsDrawer: 6-category sidebar shell
- AgentPane: passes provider + contextPct to ChatInput
2026-03-20 04:50:57 +01:00
Hibryda
54d6f0b94a
fix(electrobun): remove message gap for gapless timeline lines, add user bubble margin
2026-03-20 04:40:00 +01:00
Hibryda
9a1195a964
feat(electrobun): diamonds, footer icons, gapless timeline
...
- Timeline dots → diamonds (rotated 45deg squares)
- Timeline lines: split into up/down segments, no gaps
- First message: no line up. Last: no line down.
- Footer icons: upload file, add context, browse web, slash commands
- Context state indicator (clock icon)
- Send button: paper plane icon (was arrow-up)
- Model label moved right (before divider)
2026-03-20 04:33:44 +01:00
Hibryda
8248d465df
feat(electrobun): redesign AgentPane to match Claude Code VSCode extension
...
Based on official Claude Code v2.1.79 webview CSS analysis:
- Timeline pattern: 7px dots + 1px vertical line, 30px content indent
- User messages: left-aligned inline blocks (not right-aligned bubbles)
- Tool calls: flat bordered grid boxes with 60px mask-fade clipping
- Floating input: absolute bottom:16px, crust bg, 8px radius, shadow
- ChatInput.svelte extracted: auto-resize textarea, peach send button
(26×26, 5px radius), focus ring with color-mix peach 12%
- Footer strip: model name + attach button + divider + send button
- Status strip: compact top bar with dot + status + model + cost
- 150px gradient fade at message area bottom
- fadeIn 0.3s animation on new messages
2026-03-20 04:26:31 +01:00
Hibryda
12d96bcb84
fix(electrobun): terminal flex-grows to fill space (was fixed 12rem)
2026-03-20 03:41:28 +01:00
Hibryda
05b3093945
fix(electrobun): remove double subscribe — CreateSession already auto-subscribes
2026-03-20 03:37:21 +01:00
Hibryda
0f7024ec8f
fix(electrobun): copy pty-client locally, fix import path for Bun bundler
2026-03-20 03:23:52 +01:00
Hibryda
4676fc2c94
feat(electrobun): wire PTY daemon into terminal tabs via Electrobun RPC
...
- Bun process connects to agor-ptyd via PtyClient (5 retries, exponential backoff)
- RPC bridge: 5 request handlers (create/write/resize/unsubscribe/close)
- Daemon output forwarded to WebView as pty.output messages (base64 passthrough)
- Terminal.svelte: real PTY sessions via RPC instead of echo mode
- Shared RPC schema at src/shared/pty-rpc-schema.ts
- Fixed pty-client.ts protocol: base64 string for data (was number array)
- TerminalTabs passes sessionId to Terminal component
2026-03-20 03:20:13 +01:00
Hibryda
e8132b7dc6
fix(electrobun): rewrite terminal collapse — blur fix, tab bar as bottom divider
2026-03-20 02:41:07 +01:00
Hibryda
9edece0dc7
fix(electrobun): terminal collapse — tab bar as divider, messages fill freed space
2026-03-20 02:36:11 +01:00
Hibryda
3d1cd0028f
fix(electrobun): tab bar at bottom, collapse slides down naturally
2026-03-20 02:29:49 +01:00
Hibryda
cb4fe5bd4a
fix(electrobun): collapse animation + z-index fix, gitignore .tribunal/
2026-03-20 02:25:50 +01:00
Hibryda
bdd4477aec
fix(electrobun): terminal collapse animation + tab bar z-index above canvas
2026-03-20 02:14:10 +01:00
Hibryda
4ae558af17
feat(electrobun): fixes + 7 new features (terminal input, file browser, memory, toasts)
...
Fixes:
- Terminal accepts keyboard input (echo mode with prompt)
- Terminal drawer collapses properly (display:none preserves xterm state)
Features:
- 6 project tabs: Model | Docs | Context | Files | SSH | Memory
- FileBrowser.svelte: recursive tree with expand/collapse + file preview
- MemoryTab.svelte: memory cards with trust badges (human/agent/auto)
- Subagent tree in AgentPane (demo: search-agent, test-runner)
- Drag resize handle between agent pane and terminal
- Theme dropdown in Settings (4 Catppuccin flavors)
- ToastContainer.svelte: auto-dismiss notifications
2026-03-20 02:07:18 +01:00
Hibryda
b11a856b72
feat(electrobun): full UI — terminal tabs, agent pane, settings, palette
...
Extracted into 6 components:
- ProjectCard.svelte: header with badges, tab bar, content area
- AgentPane.svelte: collapsible tool calls, status strip, prompt input
- TerminalTabs.svelte: add/close shell tabs, active highlighting
- SettingsDrawer.svelte: theme, fonts, providers
- CommandPalette.svelte: Ctrl+K search overlay
- Terminal.svelte: xterm.js with Canvas + Image addons
Status bar: running/idle/stalled counts, attention queue, session
duration, notification bell, Ctrl+K hint. All ARIA labeled.
2026-03-20 01:55:24 +01:00
Hibryda
931bc1b94c
test(electrobun): 6-terminal stress test to verify Canvas context limit
2026-03-20 01:42:59 +01:00
Hibryda
f97ea95373
feat(electrobun): add xterm.js terminal with image addon (Sixel/iTerm2)
...
- Terminal.svelte component with @xterm/xterm + Canvas + Fit + Image addons
- Catppuccin Mocha terminal theme matching main app
- Sixel, iTerm2 inline image protocol support via xterm-addon-image
- ResizeObserver for responsive terminal sizing
- Demo cargo test output in terminal section below agent messages
2026-03-20 01:40:24 +01:00
Hibryda
b79fbf688e
perf(electrobun): JS blink replaces CSS animation, 1.13% CPU (was 6.5%)
...
JS setInterval(500ms) toggles .blink-off class instead of CSS @keyframes.
WebKitGTK handles discrete class toggle efficiently (single repaint per toggle).
0.7% idle + 0.43% blink overhead = 1.13% total.
Comparison:
- CSS @keyframes: 6.5% (continuous compositor animation)
- JS class toggle: 1.13% (2 repaints/sec)
- No animation: 0.7% (baseline)
- Tauri (CSS): ~0% (browser compositor optimized)
- GPUI (custom Element): 2.17%
2026-03-20 01:35:33 +01:00
Hibryda
6b4a2494b3
perf: disable CSS pulse animation, measure 0.7% idle baseline (Electrobun)
2026-03-20 01:30:52 +01:00
Hibryda
cfc135ffaf
feat: Electrobun Svelte+WGPU prototype (Dawn GPU confirmed on Linux)
...
- Svelte 5 frontend with Catppuccin Mocha theme, 2 project cards
- Electrobun v1.16.0 with bundleWGPU: true (Dawn on Linux x64)
- WebKitGTK webview + WGPU surface coexistence confirmed
- CPU: 6.5% idle (CSS animation + WebKitGTK overhead)
- Port 9760 for dev server (project convention)
2026-03-20 01:25:41 +01:00
Hibryda
1f20fc460e
feat: add Electrobun WGPU prototype (Dawn GPU on Linux confirmed)
2026-03-20 01:18:19 +01:00