1.3.0 (2026-03-01)
- check for updates on startup and show notification icon (a5d0a2b)
- show alert dialog when creating worktree in non-git or empty repo (d15c3b4)
1.2.4 (2026-03-01)
- show version number in window title bar (a3229fa)
- wire remote + button to create tabs and worktree tabs (539ddc3)
- forward worktree progress events to remote WS clients (2d175f5)
- prevent garbled display and wrong dimensions on remote mobile client (cb3b8e8)
- spawn cloudflared binary directly instead of using npm package wrapper (e55d431)
- position new-tab dropdown with fixed positioning in remote web client (71f33b4)
- set dark background color to prevent white flash on startup (159927d)
1.2.3 (2026-03-01)
- add two-finger swipe scrollback for mobile remote access (34c1d6c)
- auto-retry cloudflared quick tunnel on transient UUID failures (7b27408)
- disable tunnel Activate button with spinner while activating (d51e4fd)
- use random port for remote tunnel to allow multiple instances (92fa6a3)
1.2.2 (2026-03-01)
- add missing API stubs to ws-bridge for remote mobile client (cd8968e)
- install cloudflared to writable userData path with download progress (af329ed)
- surface tunnel errors in UI with retry instead of stuck connecting (6f5c4b8)
1.2.1 (2026-03-01)
- set executableName only on Linux to avoid breaking Squirrel (e70d4b9)
1.2.0 (2026-03-01)
- display hook execution status in StatusBar with auto-dismiss (445c3a1)
- add executableName for Linux deb/rpm packaging (4a4cfc9)
- emit worktree:created and tab:created hooks from tab:createWithWorktree (0084df1)
- emit worktree:removed hook when closing tab with removeWorktree (63f3c49)
- open terminal links in default browser via shell.openExternal (3ed1bee)
- shell tabs spawn next to active tab and receive focus (a61f5ec)
- document repository hooks system and StatusBar hook feedback (5711814)
- overhaul README for discoverability and add LICENSE (dcff073)
- add action buttons and open status to worktree manager (7622d52)
- add animated installer splash with progress bar (0a9a96e)
- add App shell with keyboard shortcuts and styles (93ccde9)
- add buildWindowTitle utility for dynamic window title (8b73179)
- add custom app icon for window, taskbar, and installer (02cefee)
- add delete button to remove directories from startup history (9f1825e)
- add HamburgerMenu component with dropdown (703b929)
- add hook installer that writes .claude/settings.local.json (c586556)
- add hook scripts for Claude Code status communication (c77c491)
- add installer config, hooks copy, and CLI auto-start (5716369)
- add IPC bridge and tab restoration on session start (931c4c1)
- add logging and error handling to session persistence (513c3b0)
- add named pipe IPC server for hook communication (2cd3786)
- add preload API and all renderer components (cdccf0e)
- add PTY manager for spawning Claude processes (6078d72)
- add right-click paste when no text is selected (b06f15a)
- add session persistence data layer for tab restore (6053410)
- add session persistence to main process (ad0170f)
- add settings store for recent dirs and permission mode (64ecc48)
- add shared types for tabs, IPC messages, and permissions (58f1477)
- add shell tab backend support (PowerShell/WSL) (4cf2457)
- add shell tab frontend - chevron dropdown, new-tab menu, shortcuts (776da6e)
- add Squirrel event handling with CLI shim and PATH management (f50592f)
- add tab manager for tab lifecycle and state (731d95b)
- add TabIndicator component with Lucide icons (f904050)
- add window:setTitle IPC channel and preload API (5145d6c)
- add worktree loading animation with progress streaming (a376222)
- add worktree manager for creating/removing git worktrees (00c2313)
- add worktree:listDetails and worktree:remove IPC channels (937b7f9)
- add WorktreeManager.listDetails() for worktree status (ce01767)
- add WorktreeManagerDialog component (3789d7e)
- auto-show new tab dialog on first startup (b2b0e91)
- bundle ws native deps and parallelize session tab restoration (73b4ce5)
- capture session_id from stdin in on-session-start hook (f144d91)
- clean up naming flag files on tab close (4f7f136)
- Ctrl+T instant new tab, Ctrl+W worktree tab with name prompt (2d32f9f)
- double-click directory to start session + startup dialog docs (a18e518)
- dynamically update window title with tab status counts (2e03b17)
- extract hook-router module from index.ts (e741b8a)
- extract ipc-handlers module from index.ts (da6887c)
- extract shared claude-cli helper (closes #7) (7865006)
- extract tab-namer module from index.ts (881ae8f)
- generate tab names with Claude Haiku in background (9606516)
- hooks: add cross-spawn and tree-kill dependencies (4caa96e)
- hooks: add HookManagerDialog UI component with styles (a055cf3)
- hooks: add IPC handlers for hook config CRUD and status events (77858c8)
- hooks: add shared types for hook config (f1a9ac9)
- hooks: implement HookConfigStore for loading/saving hooks.json (5fd5a6e)
- hooks: implement HookEngine for command execution (d3e7902)
- hooks: integrate HookEngine with worktree, tab, and session lifecycle (aa644c9)
- hooks: wire HookManagerDialog into hamburger menu and App (899c7b3)
- move cloud icon to left of hamburger menu (490f8c1)
- persist sessions on every state change, not just quit (627a98a)
- right-click copies selected text to clipboard in terminal (8247891)
- scaffold Electron Forge project with React, xterm.js, node-pty (150cc1e)
- send tab:generate-name on first prompt only (f81858d)
- show current git branch in window title (c044907)
- simplify title status and add status counts to footer (c955a03)
- support Ctrl+Enter for multi-line input (180ca08)
- use 6-char alphanumeric code and auto-reconnect for remote access (7bf8eb5)
- use TabIndicator in Tab and StatusBar components (97c27d2)
- WebGL renderer with PTY data loss fix (#2) (b63fef2)
- wire hamburger menu and worktree manager into app (853deca)
- wire up main process with IPC handlers, PTY, and hooks (a4950f8)
- add cancelled guards in saved-tabs restoration loop (f5a8f34), closes #18
- add error handler to IPC server sockets to prevent crashes (55df7c1), closes #16
- add error handling to WorktreeManagerDialog (#54) (481a21a)
- add icon for new tab status and fix status bar icon visibility (3650e97)
- add missing tree-kill dependency and cross-spawn types (ab2836b)
- add workspaceDir guard in tab:create handler (c67c249), closes #2
- add worktree name validation to NewTabDialog (7c8f297), closes #20
- address code review - remove unused import, add tests, add comment (7ae2cc8)
- allow Alt-F4 to close app and confirm when tabs are working (782a342)
- bundle electron-store instead of externalizing it (5fb5714)
- bundle ws/qrcode and copy cloudflared for packaged app (d584564)
- change close-tab shortcut from Ctrl+W to Ctrl+F4 (3595472)
- clean up orphaned PTY processes on unmount during restore (#57) (0cc4185)
- close active connections in HookIpcServer.stop() (#52) (0214bae)
- close gitHeadWatcher on app shutdown (#51) (dd8532e)
- debounce tab close to prevent /clear from removing tabs (b4d4bc0)
- differentiate ENOENT from unexpected errors in getSessions logging (94581e7)
- disable asar and manually copy native modules for production builds (16c44ac)
- dismiss worktree dialog only after async ops complete (#55) (37a98ec)
- don't persist new sessions with no user interaction (b6c70f9)
- eliminate 1-2s delay when closing tabs on Windows (de35fa4)
- eliminate stale tabsRef race in onTabRemoved callback (67c70f5), closes #4
- filter undefined values from env before passing to node-pty (8c4890f), closes #19
- focus terminal immediately after tab switch (634483a)
- guard hook execFileSync calls to prevent Claude Code crashes (c0c5d79), closes #1
- guard tab:close to prevent double tab:removed emission (3f34da8), closes #17
- hooks: address review feedback - branch tracking, shell tab hooks, close guard, remove cast (6b67b9d)
- improve tab and status bar color scheme for better contrast (5aff36e), closes #37373d
- improve terminal rendering and keyboard shortcut passthrough (f60b767)
- kill process tree on generateTabName timeout on Windows (f7a9be7), closes #3
- make StartupDialog recent-dirs list keyboard-accessible (863cd07), closes #21
- make WorktreeManager.list() private (d4d0c33), closes #10
- merge duplicate did-finish-load handlers, defer IPC server construction (2609a7f), closes #25 #26
- move session storage to per-directory and add debug logging (74c1699)
- only register onMessage when IPC server starts successfully (#56) (0dc890b)
- open URLs in default browser instead of Electron (0f47467)
- pass -w flag to Claude when spawning worktree tabs (51e8069)
- pass correct branch name in worktree:created hook (43b13c4)
- pass Ctrl+P and Ctrl+L through xterm key filter (4fc8aea)
- pass worktree path (not name) to createTab and validate input (a0d40f8)
- persist all claude tabs regardless of status (78a5bd2)
- persist sessions on user-initiated tab rename (caec392)
- preserve tab names across app reload (440ac18)
- prevent PATH corruption from setx 1024-char truncation (#50) (c5a7ffc)
- prevent resumed idle sessions from being dropped on next persist (6ccf306)
- prevent second app instance spawning on tab close (2c4eba5)
- prevent session persistence from wiping saved tabs on reload/quit (d3a4a96)
- prevent shell injection in worktree-manager (#49) (ae1839c)
- prevent Squirrel version numbers from polluting recent dirs history (b870460)
- prevent tab-naming Claude calls from polluting /resume history (3b77b5d)
- proper JSON escaping in pipe-send and cross-platform temp dir (df3987a)
- remove 5s worktree polling timer that caused periodic slowdowns (e660d9a)
- remove dead .selected-dir CSS class (2ebba77), closes #14
- remove dead PtyManager.getPty() method (ededeeb), closes #11
- remove debug log file leak from on-session-start hook (1a5a697), closes #15
- remove default application menu (89e54fc)
- remove redundant getCliStartDir call from StartupDialog (60b8e70), closes #13
- remove single-instance lock to allow multiple app windows (09e960b)
- remove unused @electron-forge/plugin-auto-unpack-natives dependency (caa03a0), closes #22
- remove WebGL addon and debug logging from terminal (1f5f414)
- replace electron-store with plain JSON store and switch to pnpm (a065478)
- replace global CustomEvent with props for tab rename (#24) (6f83316)
- reset tab name to default on /clear (bc415fb)
- resolve TypeScript errors and build configuration (f1ff13f)
- restore dropped comments documenting bug-fix rationale (2adb7fb)
- rewrite hooks for Windows compatibility (4ee609f)
- right-align cloud icon together with hamburger menu (1837390)
- set window icon and improve icon visibility on dark backgrounds (b675f11)
- spawn claude through cmd.exe on Windows for node-pty compatibility (799de91)
- standardize on node: prefix for built-in imports (#6) (9b834b0)
- startup dialog browse adds dir to history and Enter submits (78ef62b)
- startup dialog not showing and clean up layout (6fc5ab9)
- stop DevTools from auto-opening on startup (60cf3c4)
- sync tests with current window-title and pty-manager implementations (be5ff45)
- update TabIndicator test for new/shell statuses (540f204)
- upgrade @typescript-eslint from v5 to v8 (#23) (b47fa94)
- upgrade TypeScript to 5.x, enable strict mode, fix moduleResolution (5d153a9)
- use distinct icons for PS vs WSL tabs, update status bar shortcuts (f4adddd)
- use JSON.stringify for executeJavaScript tab ID escaping (#58) (7f7186c)
- use lucide-lab penguin icon for WSL tabs (85c619c)
- use per-process disk cache dir to avoid lock conflicts (bc7f34d)
- use per-process IPC pipe name to support multiple instances (f7adb2a)
- use pnpm in make script for CI consistency (307dd0c)
- use SessionStart source field to detect /clear instead of sessionId check (6dc8337)
- wrap remaining handlers in useCallback for consistency (#9) (92f0e6d)
- write naming flag only after successful pipe send (080f2a4), closes #5
- add will-change hints to tab indicator animations (59f62ec)
- cap PTY flow control buffer at 5MB per tab (9e7767d)
- convert sync I/O to async across main process (5dfd597)
- debounce persistSessions() with 200ms delay (c6bc1b2)
- extract useClickOutside hook, deduplicate 4 event listeners (f907ac7)
- memoize Tab component and stabilize TabBar handlers (ae6ccf4)
- memoize Terminal and StatusBar components (ee81fed)
- optimize packaged app size (143 MB → 126 MB installer) (a6bcb2d)
- stabilize keyboard handler with useRef for tabs/activeTabId (1a33519)
- rewrite index.ts as lifecycle glue wiring extracted modules (b508ffa)
- use @lucide/lab penguin icon instead of inline SVG (9bafe13)
- use shared getClaudeCommand in pty-manager (0563616)
- add AGENTS.md and project documentation (3219455)
- add design for index.ts refactoring (#7, #42, #43) (6518402)
- add feature architecture docs and documentation index in AGENTS.md (272eca3)
- add hamburger menu + worktree manager design (5bd2b43)
- add hamburger menu + worktree manager implementation plan (f0b08c2)
- add implementation plan for index.ts refactoring (710fbef)
- add project README (833b6a2)
- add repository hooks implementation plan (091b681)
- add repository hooks system design (c4b6ffa)
- add screenshot to README (1a5ff19)
- add tab indicator icons design (674971f)
- add tab indicator icons implementation plan (39ba45b)
- add versioning and releases design document (01319b5)
- add versioning and releases implementation plan (7641c5c)
- add Windows shell tabs design (415a82a)
- add Windows shell tabs implementation plan (83d44ab)
- update documentation to match current codebase (42ea28c)
- update README with current features and reorganize sections (8d0c5b3)