Skip to content

Refresh worktree quick jump UI - #487

Merged
AmethystLiang merged 2 commits into
stablyai:mainfrom
colinchambachan:feat/worktree-quickjump-enhancement
Apr 11, 2026
Merged

AmethystLiang merged 2 commits into
stablyai:mainfrom
colinchambachan:feat/worktree-quickjump-enhancement

Conversation

@colinchambachan

@colinchambachan colinchambachan commented Apr 11, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Refresh the worktree quick jump palette so it feels more like a dedicated switcher than a stock command list.

This PR:

  • refreshes the palette chrome, spacing, row hierarchy, footer hints, and repo/current chip treatment
  • adds sidebar-style live worktree status indicators to each result row
  • extracts shared worktree status and palette search/result-shaping helpers so the palette and sidebar use the same activity rules
  • keeps palette selection stable by worktreeId while live recent ordering changes
  • fixes sidebar quick-swap shortcut handling so modal overlays do not show or react to the Cmd/Ctrl+1-9 hint state incorrectly
  • adds accessibility fixes for both the palette rows and the keyboard-focusable sidebar worktree list

Screenshots

Screen.Recording.2026-04-11.at.3.19.50.PM.mov

Testing

  • pnpm lint
  • pnpm typecheck
  • pnpm test
  • pnpm build
  • Added or updated high-quality tests that would catch regressions, or explained why tests were not needed

Additional verification run locally:

  • pnpm exec vitest run src/renderer/src/lib/worktree-status.test.ts src/renderer/src/lib/worktree-palette-search.test.ts src/renderer/src/lib/worktree-activation.test.ts src/renderer/src/components/sidebar/WorktreeCard.test.ts --config config/vitest.config.ts
  • pnpm run typecheck:web

AI Review Report

Ran an AI review/fix loop over the changed renderer files. The review explicitly checked cross-platform compatibility for macOS, Linux, and Windows, including shortcut handling, shortcut labels, path behavior, and Electron overlay interactions touched by this PR.

Main findings from review:

  • the palette session reset depended on onOpenChange(true) even though the dialog is opened from external store state
  • the refreshed palette rows overrode their accessible name with an incomplete aria-label
  • the new sidebar keyboard handler was too global and could steal editor/input shortcuts or switch worktrees behind open modals
  • the tabbable sidebar worktree list container needed explicit accessibility semantics

Changes made in response:

  • moved palette-open initialization to a visible-driven effect
  • removed the incomplete palette aria-label override so row content drives the accessible name again
  • guarded sidebar worktree shortcuts for modal-open and editable-target cases
  • added listbox semantics and active-descendant wiring to the focusable sidebar worktree list container

Security Audit

Reviewed the touched code for basic renderer-side security risks.

Checked areas:

  • input handling for palette search and keyboard shortcut events
  • path handling and worktree/repo identity plumbing in the extracted helper modules
  • command execution and IPC surface changes in the touched files
  • accidental cross-overlay behavior that could trigger actions on the wrong worktree
  • dependency usage in the shared cmdk wrapper changes

Summary:

  • no new command execution, auth, secrets, or IPC exposure risks were introduced by this PR
  • no new path-joining or filesystem mutation logic was added in the touched code
  • the main practical safety issue found was shortcut scope: worktree navigation shortcuts could fire in the wrong context; that was fixed before opening this PR
  • no additional security follow-up is currently required for the changed files

Notes

  • Cross-platform shortcut behavior remains runtime-gated: modifier-key logic continues to distinguish macOS vs Linux/Windows.

@colinchambachan
colinchambachan marked this pull request as ready for review April 11, 2026 19:23

@AmethystLiang AmethystLiang left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Excellent work! The extraction of the search/status logic into shared testable libraries is very clean, and the UI/accessibility improvements are top-notch. Love the attention to detail with the shortcut guards and focus management. Approved.

@AmethystLiang
AmethystLiang merged commit c24c20e into stablyai:main Apr 11, 2026
2 checks passed
AmethystLiang pushed a commit that referenced this pull request Apr 11, 2026
AmethystLiang added a commit that referenced this pull request Apr 11, 2026
* Revert "Revert "test: verify auto-update notification flow" (#478)"

This reverts commit 988fa02.

* test: fix missing ipc events mock in useIpcEvents.test.ts

* Add usage status bar and Codex account switching (#483)

* 1.1.14

* feat: add active agent count in top bar (#484)

* feat: add active agent count in top bar

* fix: pass missing runtime pane title setters to pty connection

---------

Co-authored-by: Jinjing <6427696+AmethystLiang@users.noreply.github.com>

* Add "No login required" to README features (#486)

* Add "No login required" to top of README features

Highlight that Orca needs no account or login — users bring their own
Claude Code or Codex subscription directly.

* Simplify no-login line and add Codex account switching section

- Trim "No login required" to just the essentials
- Add [New] Hot Swap Codex Accounts section with gif demo

* Fix README badge layout — remove blank lines inside HTML blocks (#488)

Blank lines inside <p> tags cause GitHub to render each badge as a
separate paragraph instead of inline on one row.

* Add Codex account switcher gif (#489)

The gif was referenced in README but never committed.

* Refresh worktree quick jump UI (#487)

* fix: Warp-parity keyboard shortcuts — image paste and line-kill bindings (#491)

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Jinjing <6427696+AmethystLiang@users.noreply.github.com>

* Nicer agent list (#492)

* test: mock more missing IPC handlers and store actions in useIpcEvents tests

---------

Co-authored-by: Jinwoo Hong <73622457+Jinwoo-H@users.noreply.github.com>
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Yax Patel <74978532+ypatel2022@users.noreply.github.com>
Co-authored-by: Colin Chambachan <colin.chambachan@gmail.com>
Co-authored-by: Ramzi <79337754+heyramzi@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Neil <4138956+nwparker@users.noreply.github.com>
enrick-dev pushed a commit to enrick-dev/orca that referenced this pull request Oct 15, 2026
enrick-dev pushed a commit to enrick-dev/orca that referenced this pull request Oct 15, 2026
…i#479)

* Revert "Revert "test: verify auto-update notification flow" (stablyai#478)"

This reverts commit f2ebb3c.

* test: fix missing ipc events mock in useIpcEvents.test.ts

* Add usage status bar and Codex account switching (stablyai#483)

* 1.1.14

* feat: add active agent count in top bar (stablyai#484)

* feat: add active agent count in top bar

* fix: pass missing runtime pane title setters to pty connection

---------

Co-authored-by: Jinjing <6427696+AmethystLiang@users.noreply.github.com>

* Add "No login required" to README features (stablyai#486)

* Add "No login required" to top of README features

Highlight that Orca needs no account or login — users bring their own
Claude Code or Codex subscription directly.

* Simplify no-login line and add Codex account switching section

- Trim "No login required" to just the essentials
- Add [New] Hot Swap Codex Accounts section with gif demo

* Fix README badge layout — remove blank lines inside HTML blocks (stablyai#488)

Blank lines inside <p> tags cause GitHub to render each badge as a
separate paragraph instead of inline on one row.

* Add Codex account switcher gif (stablyai#489)

The gif was referenced in README but never committed.

* Refresh worktree quick jump UI (stablyai#487)

* fix: Warp-parity keyboard shortcuts — image paste and line-kill bindings (stablyai#491)

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Jinjing <6427696+AmethystLiang@users.noreply.github.com>

* Nicer agent list (stablyai#492)

* test: mock more missing IPC handlers and store actions in useIpcEvents tests

---------

Co-authored-by: Jinwoo Hong <73622457+Jinwoo-H@users.noreply.github.com>
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Yax Patel <74978532+ypatel2022@users.noreply.github.com>
Co-authored-by: Colin Chambachan <colin.chambachan@gmail.com>
Co-authored-by: Ramzi <79337754+heyramzi@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Neil <4138956+nwparker@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants