Skip to content

Releases: doctly/switchboard

Introducing Grid View

20 Mar 20:24

Choose a tag to compare

What's Changed

Features

  • Session Grid Overview — Toggle a bird's-eye grid view of all open sessions from the sidebar, grouped by project with live terminal previews, status indicator dots (running/stopped/busy), and last-activity timestamps. Click a card to focus, double-click to expand back to single-terminal view. Grid preference persists across restarts.
screenshot

Other Features

  • Refactored terminal lifecycle — Consolidated duplicated terminal creation logic into shared helpers (createTerminalEntry, destroySession, showSession, fitAndScroll) for cleaner code and consistent behavior across session launch, resume, and grid view.

0.0.15

20 Mar 07:24

Choose a tag to compare

What's Changed

Features

  • Markdown preview renderer for plan and memory editors with dark-themed styling (PR #12)
  • Persist markdown preview mode in localStorage so the toggle is sticky across sessions
  • Configurable shell profiles for terminal sessions — discover available shells and select preferred shell in settings (PR #13)
  • Drag-and-drop file path insertion for terminal sessions

Performance

  • Remove terminal warmup PTY spawn on startup

0.0.14

19 Mar 07:43

Choose a tag to compare

What's Changed

Features

  • Agent Files tab — Redesigned Memory tab renamed to "Agent Files" with project-grouped layout, expand/collapse sections, and CodeMirror editor with save/copy buttons
  • GEMINI.md scanning — Agent Files now scans GEMINI.md files alongside CLAUDE.md from ~/.claude/, project root, and project/.claude/ directories
  • Check for updates — Added a check for updates button with version display in global settings
  • Per-tab search placeholders — Each sidebar tab now shows contextual search placeholder text

UI/UX

  • Sidebar visual refresh — Card-styled project groups with cleaner visual hierarchy and hover-reveal action buttons
  • SVG icon overhaul — Replaced all sidebar tab labels with SVG icons (Claude asterisk, notebook, brain, bar chart); updated action button icons (archive, fork, messages, resort, add project, calendar)
  • Settings gear relocation — Moved global settings gear icon to the tab bar, right-aligned
  • Shared icons module — Added icons.js for reusable SVG icons across the app
  • Launch popover — Replaced favicon.ico with inline Claude asterisk SVG

Improvements

  • OSC-driven busy state — Made OSC 0 idle the authoritative busy signal, removing the client-side idle timer fallback
  • Terminal session cleanup — Limited terminal entries to stop-only actions and suppressed focus report escape sequences
  • Project action buttons — Always visible at 50% opacity for better discoverability

Docs

  • Added IDE emulation and status notifications screenshots to README
  • Updated release command category examples

0.0.13

18 Mar 20:29

Choose a tag to compare

What's Changed

Stats & Monitoring

  • Add live stats refresh with rate limit usage display

Windows

  • Fix PTY spawn failure on Windows by adding cross-platform shell resolution
  • Strip WT_SESSION env so Claude Code emits OSC 9;4 progress on Windows Terminal
  • Use resolveShell()/shellArgs() in refresh-stats handler

Terminal

  • Treat OSC 9;4 levels 1 (running) and 2 (error) as busy, not just 3 (indeterminate)
  • Fix morphdom skipping rename inputs and focus restoration for active inputs
  • Add TERM_PROGRAM_VERSION to PTY env

0.0.12

18 Mar 09:00

Choose a tag to compare

What's Changed

Session Activity

  • Rework session activity indicators with unified state machine (cli-busy, has-unread, response-ready)
  • Detect busy state from OSC 0 braille spinner and OSC 9;4 progress sequences
  • Add new visual indicators: spinning dot (busy), cyan dot (response-ready), orange ripple (needs-attention)
  • Terminal output with noise filtering provides fallback activity signal with 5s silence timeout
  • response-ready state is terminal until user clicks the session

Performance

  • Batch DB writes in refreshFolder to reduce SQLite lock duration
  • Add SQLite busy_timeout pragma so concurrent readers wait instead of failing on lock

UI

  • Fix terminal area gap by removing redundant 22px bottom inset
  • Reduce noisy debug logging (suppress OSC 8, empty detect cycles)

Bug Fixes

  • Fix IDE Emulator being enabled via config modal even when turned off globally

0.0.11

16 Mar 23:45

Choose a tag to compare

What's Changed

IDE Emulation

  • Default IDE emulation to off by DEFAULT in global settings; OSC 8 file links still work regardless
  • Add close_tab MCP tool so accepting/rejecting diffs in the CLI terminal automatically closes the corresponding side panel tab
  • Refine diff styling: replace underlines with background highlights for word-level changes
  • Add inline (unified) vs side-by-side diff toggle with localStorage persistence
  • Replace per-session "Auto Open Files" toggle with static "IDE Emulation" indicator with status dot
  • Restructure MCP indicator to use file-panel state as single source of truth, fixing timing issues
  • Add settings notice clarifying IDE Emulation changes take effect on new sessions
  • Float accept/reject buttons as hover overlay instead of fixed bar
  • Collapse unchanged regions in unified diff view
  • Fix merge view font size to match other CodeMirror instances (12.5px)
  • Fix file panel resize handle visibility
  • Remove max panel width cap, persist width in localStorage
  • Disable word wrap in file panel CodeMirror viewers

Search

  • Fix search to include session custom names in FTS index
  • Renaming a session now updates the search index immediately

Stability

  • Close SQLite database on quit (will-quit event) to release WAL/SHM lock files
  • Add spacing between settings checkbox and description

0.0.10

16 Mar 16:37

Choose a tag to compare

What's Changed

Build

  • Fix packaged app crash caused by missing folder-index-state.js in electron-builder files list

0.0.9

16 Mar 15:57

Choose a tag to compare

What's Changed

Features

  • MCP Bridge IDE Emulation: Switchboard now acts as an IDE for Claude CLI sessions, intercepting file opens and diffs into a collapsible side panel with CodeMirror-powered syntax highlighting and merge/diff views
  • File/Diff Side Panel: Accept or reject Claude's proposed file changes directly in Switchboard — no VS Code or Cursor required
  • OSC 8 File Link Interception: Clickable file:// hyperlinks in terminal output open in the side panel instead of externally
  • IDE Emulation Global Setting: Disable MCP emulation entirely in Global Settings so Claude CLI connects to your own IDE instead
  • Auto Open Files Toggle: Per-session checkbox to control whether diffs and file opens appear in the side panel or are silently accepted
  • Persistent Panel Width: Side panel remembers its resized width across sessions and app restarts

Performance Improvements

  • Remove redundant backgroundRefresh() folder re-scanning that ran on every sidebar project load
  • Fix terminal scroll race condition using xterm buffer API instead of DOM scroll events
  • Fix stale session cache refresh

Bug Fixes

  • Fix slug group collapse not working for sessions with running PTYs
  • Fix worker crash permanently locking out the session list when scan-projects worker exits abnormally
  • Fix orphaned PTY processes accumulating on macOS when closing the window
  • Fix FTS5 search index growing without bound due to orphaned rows on INSERT OR REPLACE
  • Fix session stuck as "Running" after PTY exits during fork/plan-accept transitions

0.0.8

13 Mar 22:55

Choose a tag to compare

What's Changed

Terminal

  • Fix scroll position lost when scrolled up during active output — terminal no longer fights the user by jumping to bottom
  • Fix scrollbar shrinking and becoming unusable when resizing or switching tabs while scrolled up
  • Preserve scroll position across tab switches and window resizes

0.0.7

13 Mar 20:18

Choose a tag to compare

What's Changed

Redesigned sidebar filtering & sorting

  • Replaced the inconsistent rendering system with a single entry point (refreshSidebar) — all 15+ direct render calls now go through one pipeline
  • Removed sort debouncing that was suppressing legitimate re-sorts when toggling filters
  • Introduced sortedOrder as single source of truth for both project group order and item order — no more random jumping when background mtime changes
  • User-initiated actions (filters, search, star toggle) do a full re-sort; background refreshes preserve existing order with new items appearing at top
  • Search is now a filter integrated into the normal pipeline instead of a separate mode
  • Added a re-sort button to the sidebar toolbar to manually trigger a fresh sort
  • Fixed progress state classes being stripped on re-render

Keyboard fixes

  • Fixed Shift+Enter reliability with two-layer key binding approach
  • Removed Cmd+T shortcut and dead terminal-passthrough code