Commit Graph
10019 Commits
Author SHA1 Message Date
Neil f7185e036c fix: remove stale worktree layout cleanup 2026-04-12 22:40:11 -07:00
Neil 466ff56f68 1.1.23-rc.0 v1.1.23-rc.0 2026-04-12 22:32:52 -07:00
1038295960 fix: clean up editor/terminal state when removing a worktree (#532)
removeWorktree already cleaned up openFiles, terminal layouts, browser
tabs, and several worktree-keyed maps, but four state properties leaked
indefinitely after a worktree was deleted:

- editorDrafts — unsaved draft content keyed by file ID
- markdownViewMode — rich/source toggle keyed by file ID
- expandedDirs — file explorer expansion state keyed by worktree ID
- activeTabIdByWorktree — remembered terminal tab keyed by worktree ID

Over a long session with many worktree create/delete cycles these
accumulated entries consume memory and can never be reclaimed because the
corresponding file and worktree IDs no longer exist in openFiles or
worktreesByRepo.

The fix collects the file IDs of the removed worktree's open files and
deletes their editorDrafts and markdownViewMode entries, then removes the
worktree's expandedDirs and activeTabIdByWorktree entries. A shallow copy
is only created when there are actually entries to remove, preserving the
no-op identity check that existing tests rely on.

Co-authored-by: Test User <test@example.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-12 22:31:48 -07:00
RamziandClaude Opus 4.6 f7e89c6c8b fix: dispose PTY event listeners before kill to prevent SIGABRT crash (#534)
* fix: dispose PTY event listeners before kill to prevent SIGABRT crash

node-pty's onData/onExit callbacks register native NAPI ThreadSafeFunction
objects. When a PTY process is killed without deregistering these callbacks,
the stale ThreadSafeFunction references survive into the Node environment
cleanup phase (node::FreeEnvironment). NAPI then attempts to invoke CallJS
on the destroyed environment, causing Napi::Error::ThrowAsJavaScriptException
to throw a C++ exception that terminates the process with SIGABRT.

Store the IDisposable handles returned by proc.onData() and proc.onExit(),
and dispose them in clearPtyState() before the process is killed. This
covers all teardown paths: explicit pty:kill IPC, runtime controller kill,
page-reload orphan cleanup, and app-quit killAllPty.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: use T[] array syntax instead of Array<T> to satisfy oxlint

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 22:31:31 -07:00
Jinjing fa41047197 fix: stop worktree cards from overlapping in sidebar (#573)
* wip

* fix: replace fragile worktree card height estimation with constant

The virtualizer's estimateSize tried to predict exact pixel heights from
Tailwind class constants, which drifted from actual rendered sizes and
caused overlapping cards. Replace with a generous constant (120px) —
measureElement/ResizeObserver already corrects to real heights, so the
estimate just needs to overshoot. Delete the now-dead estimate module.
2026-04-12 22:29:24 -07:00
Jinjing 0e7d17870f Revert "feat: add quick-delete worktree shortcut" (#572) 2026-04-12 22:19:59 -07:00
Neil 91c88fad6b fix: suppress unread signals during PTY replay (#569) 2026-04-12 21:49:34 -07:00
Jinjing f9e803082c feat: implement on-demand update notification nudge (#570)
* wip

* feat: implement on-demand update notification nudge

* fix: address CI lint failures
2026-04-12 21:30:15 -07:00
Brennan Benson 8ef3139529 fix: improve settings page visual separation (#561) 2026-04-12 21:15:50 -07:00
Neil 735697dc1d Add VS Code-style search details toggle (#567) 2026-04-12 21:12:57 -07:00
Jinjing e130feedaa feat: enable drag-and-drop for committed file entries (#566) 2026-04-12 21:07:27 -07:00
Neil 2926413ba2 Refine sidebar worktree list spacing (#565) 2026-04-12 20:59:43 -07:00
Jinjing 23b3f283bc feat: support front-matter in rich editor and preview (#564)
Strip YAML/TOML front-matter before handing content to the rich editor
and display it as a read-only banner. In preview mode, render front-matter
as a styled block above the markdown output. Remove the frontmatter entry
from UNSUPPORTED_PATTERNS so files with front-matter can use rich mode.

Also fixes: look up html-or-jsx matcher by reason instead of fragile index.
2026-04-12 20:58:38 -07:00
Brennan Benson 6f2154430c feat: add searchable repo picker to new worktree dialog (#559) 2026-04-12 18:50:24 -07:00
Brennan Benson addff9d56b feat: add quick-delete worktree shortcut (#548) 2026-04-12 18:15:48 -07:00
Jinjing 3ba6da5646 Polish Cmd+J worktree palette: hide create action, remove enter arrows, rename footer (#558)
- Only show "Create worktree" action after the user types a query
- Remove per-row CornerDownLeft enter arrow (footer already shows Enter → Open)
- Rename footer label from "Jump" to "Open"
2026-04-12 16:06:55 -07:00
Jinjing 00cac141fe Promote primary worktree to top when searching by repo name in CMD+J palette (#557) 2026-04-12 15:51:47 -07:00
Brennan Benson 08d2c0c335 fix: reapply terminal shortcuts firing in wrong worktree (#554) 2026-04-12 15:46:07 -07:00
Jinjing fb2c0edfa1 Fix active agent display: hide separator when empty, add quick-hide option (#555)
- Remove the border-bottom separator in the agent hovercard when no agents
  are active (looked off as a stray line under "No agents active")
- Add a "Hide from titlebar" button at the bottom of the hovercard that
  disables the badge via settings and shows a persistent dismissible toast
  pointing users to Settings → Appearance to re-enable
2026-04-12 15:42:09 -07:00
brennanb2025 0dd6cd9ec9 1.1.22 v1.1.22 2026-04-12 15:26:15 -07:00
Brennan Benson 71a0069910 Revert "Split-screen tab groups with canonical group/item model" (#551) 2026-04-12 15:20:31 -07:00
Jinjing ccdedc63da Improve auto-updater changelog fallback and dismiss bypass (#550)
* fix: address review findings

Replace repeated dynamic imports in tests with a single static import.

* fix: address CI lint failure — use T[] instead of Array<T>
2026-04-12 15:18:18 -07:00
Brennan Benson 6b3d2cf250 Revert "Start new worktrees with a terminal by default" (#549) 2026-04-12 15:14:58 -07:00
Brennan Benson baec61d1da Revert "fix: preserve terminal sessions when switching worktrees" (#547) 2026-04-12 15:10:37 -07:00
Brennan Benson 0569eb46a6 Revert "fix: terminal shortcuts firing in wrong worktree" (#546) 2026-04-12 15:07:23 -07:00
Jinjing 220f9747ab fix: Cmd+X in rich markdown editor deletes only the current line (#545)
* fix: Cmd+X in rich markdown editor deletes only the current line

- Guard against depth < 1 (GapCursor before top-level leaf nodes) to
  prevent RangeError crash
- Add visual-line cutting for word-wrapped paragraphs so Cmd+X removes
  one visual line at a time instead of the entire paragraph
- Normalize soft line breaks on load/update: split paragraphs with
  embedded \n into separate paragraph nodes so block-level cut works
  per-line
- Add comprehensive tests for cut handler behavior and normalization

* fix: address review findings

- Normalize soft breaks at all document depths (not just top-level)
  using doc.descendants() instead of doc.forEach()
- Capture transaction lazily from editor.view.state.tr to avoid stale
  state after setContent()

* fix: use editor.view.state consistently in normalizeSoftBreaks

Read doc and create tr from editor.view.state (not editor.state) so
position collection and transaction application share the same base
state, avoiding stale-doc corruption after setContent().
2026-04-12 14:16:00 -07:00
Jinwoo Hong ab0ed32543 fix: preserve terminal scroll position when splitting panes (#543) 2026-04-12 13:38:49 -07:00
Jinwoo-H 1263481380 1.1.21 v1.1.21 2026-04-12 16:18:42 -04:00
Jinwoo Hong 0a6ab884b8 fix: terminal shortcuts firing in wrong worktree (#542) 2026-04-12 13:18:30 -07:00
Jinwoo Hong 65d0151189 Add worktree creation to Cmd+J palette (#541) 2026-04-12 12:47:12 -07:00
brennanb2025 f240e461ee 1.1.20 2026-04-12 11:40:52 -07:00
2ff7de89c6 fix: preserve terminal sessions when switching worktrees (#535)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: brennanb2025 <brennankbenson@gmail.com>
2026-04-12 11:25:42 -07:00
Jinwoo Hong ca4f135237 Start new worktrees with a terminal by default (#539) 2026-04-12 11:23:51 -07:00
Neil c9462de125 1.1.19 v1.1.19 2026-04-12 01:20:41 -07:00
Neil 1395b6f516 Support Pi titlebar status tracking (#530) 2026-04-12 01:20:20 -07:00
Pim de Jong fc53f978b6 [codex] Guard traffic light sync off macOS (#531) 2026-04-12 01:18:41 -07:00
Brennan Benson 839d87181b Split-screen tab groups with canonical group/item model (#520) 2026-04-12 01:10:32 -07:00
Neil df7a708af6 Fix terminal focus when creating a tab from the + menu (#529) 2026-04-12 01:00:06 -07:00
Neil 86e48ef86d 1.1.18 v1.1.18 2026-04-12 00:51:18 -07:00
Jinwoo Hong 73c1a922ff Refine Codex accounts settings layout (#528) 2026-04-12 00:41:20 -07:00
Neil 5041afb052 fix: keep OpenCode activity and notifications in sync (#527) 2026-04-12 00:10:52 -07:00
Jinjing 7c538e5a5a 1.1.17 2026-04-12 00:02:13 -07:00
Jinwoo Hong a0735030d8 Refactor browser manager internals and fix grab shortcuts (#525) 2026-04-11 23:52:39 -07:00
Jinjing fd33d9cc2d feat: make titlebar agent status configurable (#526)
Add a `showTitlebarAgentActivity` setting under Appearance > Titlebar
that lets users toggle the agent activity badge in the titlebar.

- Add `showTitlebarAgentActivity` to GlobalSettings (default: true)
- Add toggle in AppearancePane under a new "Titlebar" sub-section
- Upgrade badge from Tooltip to HoverCard with per-worktree breakdown
- Show dimmed idle state when no agents are active
- Fix badge/tab overlap when sidebar is closed (min-w-0 + conditional shrink-0)
- Extract countWorkingAgentsForTab helper for reuse by per-worktree counter
2026-04-11 23:52:21 -07:00
Jinjing 206eb50ab2 fix: preserve terminals on manual quit (#524) 2026-04-11 23:50:58 -07:00
Jinjing a9b3ae6de4 fix: prevent Cmd+Shift+G from opening sidebar during terminal search (#523)
Cmd+Shift+G was opening the source control sidebar even when terminal
search was active, because both App.tsx and keyboard-handlers.ts
registered capture-phase keydown listeners on window with no
coordination between them.

Fix with two layers:
- App.tsx: skip Cmd+Shift+G when [data-terminal-search-root] is in the
  DOM (reliable regardless of listener registration order)
- App.tsx: bail on defaultPrevented as a general guard
- keyboard-handlers.ts: upgrade stopPropagation to
  stopImmediatePropagation for the search navigate handler
2026-04-11 23:38:24 -07:00
Jinjing 54202211a5 reduce sidebar card horizontal padding (#522)
px-3 → px-2 for a more compact sidebar layout.
2026-04-11 23:35:48 -07:00
Neil c4aabcc4e5 fix: audit terminal shortcut interception (#519) 2026-04-11 23:24:04 -07:00
Jinjing c4bd5e492b fix: highlight file search matches on reveal (#518) 2026-04-11 22:53:01 -07:00
Alexander 74e008c616 Add Cmd+G / Cmd+Shift+G terminal search navigation (#440)
* Add design spec for terminal search next/prev shortcuts

Cmd+G / Cmd+Shift+G to navigate search matches when the
search bar is already open, following macOS conventions.

* Address review: isEditableTarget bypass, incremental option, native Cmd+G conflict

* Spec: clarify mod-key check placement and ref sync on empty query

* Add implementation plan for terminal search next/prev shortcuts

* Plan: merge Task 3+4 to avoid compile break, fix stale note, add reorder rationale

* Plan: import SearchState type in TerminalSearch instead of inline duplication

* test: add failing tests for search-navigate key matching

* feat: add Cmd+G / Cmd+Shift+G search navigation to keyboard handler

* feat: wire searchStateRef through TerminalPane and TerminalSearch

* refactor: use searchOpenRef to avoid listener re-registration on search toggle

* test: add Ctrl+Shift+G → previous on Linux/Windows test case
2026-04-11 22:52:32 -07:00