Commit Graph
3283 Commits
Author SHA1 Message Date
Brennan Benson 5b86271acd fix: correct terminal split icon arrow directions (#686) 2026-04-15 19:07:00 -07:00
Brennan Benson 883a8f435b Disambiguate terminal split from tab group split labels (#684) 2026-04-15 18:41:51 -07:00
Jinwoo Hong 3b53441b96 feat: split smart sort and recent sort into separate modes (#680) 2026-04-15 17:54:06 -07:00
Jinwoo Hong ae11e7fefb fix: position browser context menu at cursor with edge flipping (#682) 2026-04-15 16:55:27 -07:00
Brennan Benson e73f831490 fix: return to Orca landing screen after closing last terminal (#677) 2026-04-15 16:08:08 -07:00
Brennan Benson ae54be0450 Align workspace chrome and split tab headers (#679) 2026-04-15 16:07:15 -07:00
Brennan Benson 1c93270157 feat: add New Markdown option to tab group plus icon (#678) 2026-04-15 15:32:49 -07:00
Brennan Benson aad7d04997 Fix split pane shortcuts targeting hidden worktrees (#676) 2026-04-15 14:16:39 -07:00
Brennan Benson e4cdb29a01 feat: enable split groups renderer path (#669) 2026-04-15 13:12:54 -07:00
Jinwoo Hong f5b716a760 feat: add browser tab search to Cmd+J jump palette (#675) 2026-04-15 12:54:56 -07:00
Jinwoo Hong 97f3cd5199 feat: add pinned worktrees to sidebar (#674) 2026-04-15 12:23:13 -07:00
Jinwoo Hong 6507ff8564 fix: prevent markdown files from appearing dirty on open (#673) 2026-04-15 11:38:40 -07:00
Jinjing d43dd038dc fix: prevent stale base ref errors when switching repos (#670)
Reset defaultBaseRef to null on repo change so effectiveBaseRef becomes
falsy until the IPC resolves, preventing branch compare from firing with
a stale cross-repo value. Also fix loading→error→loading flicker by only
resetting to loading state on first request or when base ref changes.
2026-04-15 00:51:19 -07:00
Jinwoo Hong 3632436ca6 feat: add Cmd+F find-in-page to browser pane (#668) 2026-04-15 00:47:05 -07:00
Brennan Benson 90b7f61e65 refactor: dark-launch split groups with correctness fixes (#643)
* refactor: enable split groups

* Fix split groups terminal host rollout

* refactor: remove split groups from add-tab menu

* refactor: dark-launch split groups with correctness fixes
2026-04-15 00:01:40 -07:00
Neil 306118dbee refactor: eliminate useEffect anti-patterns (audit pass 2) (#665)
* refactor: eliminate useEffect anti-patterns across 5 components

- MonacoEditor, RichMarkdownEditor: assign callback/prop refs directly
  during render instead of via useEffect, so ProseMirror and Monaco
  handlers always read the current closure rather than a one-render-
  stale copy.

- SettingsFormControls (FontAutocomplete): replace useEffect that reset
  highlightedIndex on filteredSuggestions/open changes with the
  "adjusting state during render" pattern (track prevOpen /
  prevFilteredSuggestions), so the correct item is highlighted on the
  same paint as the dropdown opens or the filter updates.

- ChecksPanel: replace useEffect that reset 5 local state fields on
  activeWorktreeId change with the "adjusting during render" pattern
  (track prevActiveWorktreeId), so stale title/loading UI from the
  previous worktree is cleared before the first paint of the new one.

- SshPassphraseDialog: split one useEffect that both reset form state
  and focused the input into (a) during-render state reset and (b) a
  focused DOM-only useEffect, so the cleared input is visible
  immediately rather than after a post-paint effect flush.

* fix: resync font autocomplete highlight on value change
2026-04-14 23:28:58 -07:00
Jinwoo Hong 81144f29db fix: prevent window re-maximize when opening browser tab (#666) 2026-04-14 23:20:43 -07:00
Brennan Benson 66456acf8d refactor: extract tab group workspace model and host (#664) 2026-04-14 21:39:45 -07:00
RamziandJinwoo-H a7399cf11f fix: plug memory leaks, unbounded caches, and disk accumulation (#595)
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
2026-04-14 21:07:48 -07:00
Brennan Benson c889e95d65 refactor: gate split group surface ownership in Terminal.tsx (#642) 2026-04-14 20:19:11 -07:00
Colin ChambachanandClaude Sonnet 4.6 d256879f3e Add terminal jump-to-present control (#660)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 19:42:28 -07:00
RamziandJinwoo-H fb5afc3aab feat: add .mmd/.mermaid file viewer with rendered diagram toggle (#597)
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
2026-04-14 19:26:55 -07:00
Brennan Benson 3b897d255d feat: add split group UI with tab-bar context menus and resize handles (#646) 2026-04-14 19:01:11 -07:00
Jinwoo Hong 42e04268fb fix: harden SSH connection reliability and add passphrase prompt (#636) 2026-04-14 18:29:50 -07:00
Jinwoo Hong 8c016c91b2 fix: restore mermaid labels in markdown preview (#659) 2026-04-14 17:06:08 -07:00
Brennan Benson cfe49ff404 fix: restore worktrees through tab group ownership (#645) 2026-04-14 17:01:58 -07:00
Brennan Benson c4460f8820 fix: harden terminal pane lifecycle for split groups (#641) 2026-04-14 16:23:01 -07:00
Jinjing 92353e7233 Fix cursor jump when typing in markdown list items (#658)
The debounced onUpdate serialization feeds back through the content prop,
and if the user types between the debounce firing and the useEffect
running, the stale prop triggers setContent — resetting the cursor.
Skip the destructive setContent when the content prop matches our own
last serialization (lastCommittedMarkdownRef).
2026-04-14 16:09:49 -07:00
Brennan Benson 8d63c6e4fb fix: restore split group session state safely (#653) 2026-04-14 14:52:44 -07:00
Brennan Benson 741974c59c refactor: add split group model foundations (#644) 2026-04-14 14:39:01 -07:00
Jinwoo Hong 901c7335a2 fix: prevent stale terminal buffer flash on worktree switch (#654) 2026-04-14 14:38:41 -07:00
Brennan Benson 033b8bcc31 fix: snapshot uncommitted entries in combined diff to survive commits (#652) 2026-04-14 14:11:05 -07:00
Jinwoo Hong 8f8cbf1497 fix: skip Windows code signing verification for unsigned builds (#651) 2026-04-14 16:10:55 -04:00
Jinwoo Hong 0186891bf2 perf: keep right sidebar mounted when closed to avoid remount freeze (#640) 2026-04-14 16:06:39 -04:00
Jinwoo Hong a913d7f939 fix: add pnpm/yarn/bun global bin paths and resolve claude CLI for GUI-launched apps (#649) 2026-04-14 12:32:29 -07:00
Jinjing 4479e4c0eb fix: use >= in compareVersions fallback to handle equal/unparseable versions (#635)
compareVersions returns 0 for both genuinely equal versions and
unparseable strings. In the localIndex === -1 fallback path, skipping
on >= 0 (instead of just > 0) avoids showing stale rich cards when
the version relationship is ambiguous.
2026-04-14 10:33:25 -07:00
Jinjing bc20035652 fix: improve rich card display logic for current and unlisted versions (#634)
Show rich changelog entries at the user's current version (they may not
have seen the card yet). When the local version isn't in the changelog
JSON, use semver comparison instead of assuming the user is very old —
this avoids showing stale cards to users on newer patch releases.
2026-04-14 10:25:55 -07:00
50d372c385 fix: copy-on-selection for right-click paste in terminal (#632)
Co-authored-by: theofbonin <theo@frizzarin.com.br>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 10:07:30 -07:00
Jinjing 6f89c89075 fix: worktree list right-side padding and hidden scrollbar (#629)
Hide the sidebar scrollbar and add right padding to prevent cards
from touching the sidebar edge.
2026-04-14 01:26:46 -07:00
Jinwoo Hong 170610d1b2 fix: resolve Windows freeze when switching worktrees with right sidebar open (#628) 2026-04-14 00:45:04 -07:00
Jinjing ed981ad4d8 Fix sidebar virtualizer layout after worktree deletes (#627) 2026-04-14 00:30:34 -07:00
Jinwoo Hong 60a092686b perf: systematic performance optimizations (#623) 2026-04-14 00:28:56 -07:00
Jinjing ef75e8d0c2 fix: avoid stale worktree card remeasurement (#626)
* fix: guard WorktreeList getItemKey against stale virtualizer cache entries

When rows shrink (group collapse, worktree removal) while PR/issue data
arrives asynchronously, the virtualizer's elementsCache can hold stale
entries whose data-index exceeds the new rows length. measureElement
calls getItemKey for those stale indices, causing "Cannot read properties
of undefined (reading 'type')". Add a null guard matching the pattern
already used by FileExplorer and Search virtualizers.

* fix: avoid stale worktree card remeasurement
2026-04-13 23:57:48 -07:00
Jinjing 5bb03eb8f4 fix: guard WorktreeList getItemKey against stale virtualizer cache entries (#625)
When rows shrink (group collapse, worktree removal) while PR/issue data
arrives asynchronously, the virtualizer's elementsCache can hold stale
entries whose data-index exceeds the new rows length. measureElement
calls getItemKey for those stale indices, causing "Cannot read properties
of undefined (reading 'type')". Add a null guard matching the pattern
already used by FileExplorer and Search virtualizers.
2026-04-13 23:31:50 -07:00
Jinjing 2b5ac7239f fix: improve cmd+j palette search stability and selection behavior (#622)
- Snap selection to first result when search query changes instead of
  keeping a stale mid-list selection
- Add 150ms debounce on search to reduce result list reshuffling
- Scroll list to top on query change
- Remove green highlight on current worktree row (Current badge remains)
- Remove primary-branch promotion sort that caused jumpy reordering
2026-04-13 22:51:12 -07:00
Jinjing 0ad3fda397 fix: harden active agent hovercard (#621) 2026-04-13 22:49:15 -07:00
Jinjing 130c3e9697 feat: scope terminal shell history per worktree (#620)
* feat: scope terminal shell history per worktree

Each worktree gets its own HISTFILE so ArrowUp only surfaces commands
from the current worktree. Integrates with the new LocalPtyProvider
architecture: history env injection runs after buildSpawnEnv but before
spawnShellWithFallback, and onBeforeFallbackSpawn keeps HISTFILE in
sync when the shell falls back.

* fix: align preload type declaration with implementation

Add missing command field to PtyApi.spawn in index.d.ts to match
the runtime index.ts signature, fixing TS2769 overload conflict.

* chore: remove terminal-history-scope-design.md from tracked files

* fix: mock terminal-history in worktrees test

The deleteWorktreeHistoryDir import pulls in electron's app module.
Add a vi.mock so the test doesn't hit the real electron export.
2026-04-13 22:42:53 -07:00
Jinjing 28a1c93c8c feat: allow dropping external files into the file explorer (#618)
Add support for dragging files from the OS into the file explorer sidebar.
Files are copied (not moved) into the target directory within the worktree.

- Preload detects native file drops via capture-phase listener and resolves
  the drop target (editor, terminal, or file-explorer) from DOM attributes
- New IPC handler `fs:importExternalPaths` copies files/directories with
  symlink pre-scanning, path-traversal protection, and dedup on conflict
- FileExplorer tracks native drag state separately from internal drag state
  to show correct drop highlights without interfering with tree reordering
- FileExplorerRow expands directories on hover during native drags
- useFileExplorerImport hook subscribes to preload IPC events and drives
  the import → refresh → reveal pipeline

Includes review fixes:
- Clear nativeDropTargetDir on row drag-leave to prevent stale highlights
- Clear native drag state on early return in useFileExplorerImport
- Extract row drag logic to useFileExplorerRowDrag hook
- Split import tests into dedicated filesystem-import.test.ts
- Use T[] syntax instead of Array<T> per lint rules
- Use ternary expressions for simple if/else per lint rules
2026-04-13 22:04:49 -07:00
975328e258 fix: show platform-correct modifier keys on homepage shortcut hints (#613)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Manish Reddy <hello@nmreddy.me>
Co-authored-by: Jinjing <6427696+AmethystLiang@users.noreply.github.com>
2026-04-13 22:00:07 -07:00
Jinwoo Hong 379835468f feat: add New Markdown shortcut to tab bar dropdown (#614) 2026-04-13 21:31:48 -07:00