Releases: doctly/switchboard
Releases · doctly/switchboard
Release list
0.0.30
What's Changed
Bug Fixes
- Merge project groups in the sidebar when two
~/.claude/projects/<folder>/directories resolve to the same project path (older runs encoded dots/spaces/@ as dashes; newer runs preserve them literally). Fixes duplicate sidebar groups and duplicate DOM nodes that morphdom couldn't reconcile on re-render. - Pick up
ai-title/aiTitleentries from session files so AI-generated session titles display in the sidebar instead of falling back to the raw first prompt. User-setcustomTitlestill takes precedence. (#42, fixes #33)
Performance Improvements
- Canonicalize merged project folder ids using
encodeProjectPath(projectPath)so the group id is deterministic regardless of scan order. - Cache empty-folder → projectPath lookups in
cache_meta(one DB query) instead of callingderiveProjectPathper folder per render. Unseen folders fall back toderiveProjectPathand backfill the cache for subsequent renders.
0.0.29
What's Changed
Bug Fixes
- Match Claude CLI's project-folder encoding to prevent duplicate, undismissable project entries in the sidebar. The folder-name regex now mirrors the CLI's algorithm exactly (replaces every non-alphanumeric character, applies the 200-char cap with hash suffix on overflow), fixing paths with spaces, dots, backslashes, colons, etc. Also covers Windows drive paths. Fixes #38.
- Fix session-cache phantom-project bug: only insert a project entry after the archive filter passes, so folders whose sessions are all archived no longer appear as empty undismissable projects.
Performance Improvements
- Disable terminal cursor blink to reduce idle CPU usage. 5 idle terminals previously caused ~28% CPU from constant WebGL repaint cycles; idle terminals now drop to near-zero (#36).
Special thanks to the contributors.
0.0.28
What's Changed
This is a republish of v0.0.27 — no app-code changes. v0.0.27's release was missing the macOS and Windows artifacts due to a race in the CI publish pipeline, which broke auto-updates for mac/win clients (404 on latest-mac.yml).
For full app changes since v0.0.26, see the v0.0.27 release notes (WebGL terminal renderer, emoji rendering fix, WebGL fallback logging).
CI / Build
- Split build and publish into separate jobs to fix a multi-platform race. All 4 matrix jobs were running
electron-builder --publish alwaysin parallel, each creating its own draft release for the tag — only one "won" and the others' assets were stranded in duplicate drafts. The matrix now builds with--publish neverand uploads artifacts; a single follow-up job downloads everything and creates one draft release with all assets (mac x64+arm64, win, linux x64+arm64) and alllatest*.ymlmetadata files.
0.0.27
What's Changed
Performance Improvements
- Use @xterm/addon-webgl for terminal rendering — offloads rendering to the GPU as texture-atlas draws, dropping combined renderer+GPU CPU by ~50-70% on idle terminals and meaningfully more under streaming output. Falls back to the DOM renderer if WebGL is unavailable, and disposes the addon on WebGL context loss.
Bug Fixes
- Fix emoji/wide-character rendering with @xterm/addon-unicode-graphemes — replaces xterm.js's Unicode 6.1 width tables (which treat emoji as single-width and shift the rest of the line) with UAX #29 grapheme clustering for correct cell-width calculation.
Observability
- Log WebGL addon load failures instead of swallowing them silently, so DOM-renderer fallback is diagnosable in the field. Behavior is unchanged — xterm.js still falls back to the default renderer.
0.0.25
What's Changed
Features
- Scheduled task support — Create, run, and schedule recurring Claude Code agents directly from the sidebar. Includes a schedule creator flow with system prompt seeding and a run-now button on schedule files.
- Worktree sidebar nesting — Worktree projects are nested under their parent with a branch icon for cleaner organization.
Bug Fixes
- Fix worktree duplicate projects appearing when paths were incorrectly resolved to parent
- Fix const→let bug that broke global settings save
- Merge existing settings on global save to prevent losing hiddenProjects
- Add v2 migration to re-index session cache with corrected worktree paths
UI Improvements
- JSONL viewer: tool results render inline, smaller tool name fonts, grep commands in styled code blocks, brighter vertical alignment lines
- Make JSONL viewer link color more visible on dark backgrounds
- Add save feedback on settings button
- Rename "Remove Project" to "Hide Project"
0.0.24
What's Changed
Features
- Redesigned JSONL message viewer with cleaner layout, markdown rendering, tool use/result pairing, inline diffs, image previews, and computer-use screenshot display
- Redesigned settings UI with card layout, toggle switches, and polished typography
- Add title-only search toggle and case-insensitive full-text search
- Add DB migration system for automatic schema upgrades
- Add resume-with-config to relaunch sessions with custom CLI options
- Add cyan shimmer animation on busy session titles
- Scroll JSONL message viewer to bottom on load
- Visual "Saved" feedback on settings save button
Bug Fixes
- Fix crash when using Fish or Nushell as the configured shell
- Fix worktree sessions appearing as separate projects (regex now matches .claude/worktrees/ pattern)
- Fix project grouping to merge worktree folders by resolved project path
- Fix global settings save silently failing (const reassignment bug)
- Fix settings save overwriting hidden projects and other internal state (now merges instead of replacing)
- Fix settings viewer not appearing over JSONL viewer
- Fix markdown preview mode not persisting across files
- Fix session names showing raw command text instead of first user message
- Fix spacebar key-repeat not working reliably in terminal (PR #26)
- Rename "Remove Project" to "Hide Project" for clarity
Internal
- Major codebase refactor: split app.js (3,900 → 1,100 lines) and main.js (2,100 → 1,400 lines) into focused modules
- Deduplicated session parsing logic into shared read-session-file.js
0.0.23
What's Changed
Features
- Add keyboard shortcuts for grid toggle (Cmd/Ctrl+Shift+G) and session navigation (Cmd+Shift+[/], Cmd+Arrow) with 2D grid navigation (#21)
- Add xterm search bar with floating UI (Cmd/Ctrl+F in terminal)
- Add unified ViewerPanel component for plan, memory, and file viewers with toolbar, file watching, and auto-reload
- Add CodeMirror keybindings: find (Cmd+F), go-to-line (Cmd+G), save (Cmd+S)
- Grid view cards now scroll into view when focused from sidebar
- Grid view card order now matches sidebar order
Bug Fixes
- Strip HTML/XML tags from session display names for readability
- Fix grid toggle shortcut conflict with go-to-line (changed from Cmd+G to Cmd+Shift+G)
- Fix stale CodeMirror search/goto-line bar references on tab destroy and content reload
Cleanup
- Clean up claude-auth: remove debug logging, testAuth endpoint, and electron-log dependency
- Unify CSS with shared viewer-toolbar, toolbar button, and icon button classes
- Remove stale notification logging
v0.0.22 - Shortcuts/Find/Goto Line
What's Changed
Features
- Add keyboard shortcuts for grid toggle (Cmd/Ctrl+G) and session navigation (Cmd+Shift+[/], Cmd+Arrow) with 2D grid navigation (#21)
- Add xterm search bar with floating UI (Cmd/Ctrl+F in terminal)
- Add unified ViewerPanel component for plan, memory, and file viewers with toolbar, file watching, and auto-reload
- Add CodeMirror keybindings: find (Cmd+F), go-to-line (Cmd+G), save (Cmd+S)
- Grid view cards now scroll into view when focused from sidebar
- Grid view card order now matches sidebar order
Bug Fixes
- Strip HTML/XML tags from session display names for readability
Cleanup
- Clean up claude-auth: remove debug logging, testAuth endpoint, and electron-log dependency
- Unify CSS with shared viewer-toolbar, toolbar button, and icon button classes
- Remove stale notification logging
0.0.21
What's Changed
Bug Fixes
- Fix project discovery for .jsonl files where
cwdis not on the first line — now scans all lines instead of only the first, fixing projects that start withfile-history-snapshotentries - Fix usage stats: robust reset time parsing (handles seconds, milliseconds, and ISO strings), refactor bucket mapping with shared helper, update anthropic-beta header to
oauth-2025-04-20 - Fix grid layout: cards now fill available width and respond to dynamic sidebar/window changes using ResizeObserver + MutationObserver
Features
- Add sidebar collapse/expand toggle — collapse button in sidebar tabs shrinks sidebar to a narrow column with an expand button
- Add
test-authIPC endpoint for validating OAuth tokens via/api/oauth/profile
Code Quality
- Extract
deriveProjectPathinto sharedderive-project-path.jsmodule, eliminating duplication between main process and scan-projects worker
0.0.20
What's Changed
Features
- Implement rate limits display from API in the stats tab
- Add cancel button to global and project settings pages
- Settings now close on save, returning to previous view
Bug Fixes
- Fix Busy→Idle detection when session title changes (e.g. during plan execution)
- Fix saving scroll position
- Fix archive button centering
- Fix macOS crash (EXC_BREAKPOINT / NSRangeException) triggered by display reconfiguration
UI Improvements
- Increase contrast of muted UI colors across sidebar, terminal header, session list, stats, and settings
- Increase pin icon and session dot contrast
- Make gear icon bigger, remove border from gear and archive buttons
Build & CI Fixes
- Split Linux CI into per-arch jobs to prevent native module mismatch (#18)
- Fix electron-builder arch flags (use --x64/--arm64 instead of --arch)
- Remove explicit arch from Linux targets, let electron-builder use host arch
- Move codemirror packages to devDependencies to speed up electron-builder bundling
Dependencies
- Upgrade Electron 33→41, electron-builder 25→26, better-sqlite3 11→12
- Remove unused express dependency
Internal
- Add electron-log to claude-auth for consistent logging
- Add error state handling in usage UI