* 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
* 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>
When a <webview> guest has focus, keyboard events go to the guest's own
webContents and never reach the renderer's window-level keydown handler.
Forward app shortcuts from the guest's before-input-event through IPC so
they work consistently regardless of which surface has focus.
Shortcuts fixed: Cmd+Shift+B (new browser tab), Cmd+T (new terminal tab),
Cmd+W (close active tab), Cmd+Shift+]/[ (switch tabs), Cmd+J (worktree
palette), Cmd+P (quick open), Cmd+1-9 (jump to worktree).
Replace FISH_NAMES with MARINE_CREATURES, default from Salmon to
Nautilus. Remove commonly eaten food fish and add cephalopods, marine
mammals, seabirds, deep-sea creatures, and mythical sea beings.
* Fix browser tab focus and grab shortcut behavior
* fix: resolve focus stealing and iframe grabbing edge cases
- Move post-navigation focus handoff to the start of programmatic navigations to prevent stealing focus if the user clicks the address bar while the page is loading.
- Add IFRAME to the isEditable check in the grab shortcut guest forwarder to prevent stealing native copy from cross-origin iframes.
Move "Open Links In Orca" into its own Browser section under General
settings and register it in the search index so searching "browser"
actually finds it. Also drop the sm:gap-0 override on dialog footers
so button spacing stays consistent at all breakpoints.
* Add richer feedback dialog
* Keep anonymous submission client-side only
* Use lowercase feedback API host
* Fallback feedback submission when api host is unavailable
On macOS, Shift+[ reports '{' as e.key (the shifted character), breaking
the Cmd+Shift+[ / ] tab switch shortcut. Switch to e.code which always
reports 'BracketLeft'/'BracketRight' regardless of modifier state.
Also use reconcileTabOrder so tab switching works even when
tabBarOrderByWorktree is unset (e.g. restored session worktrees).
* wip in the design doc
* fix: use Ctrl+Shift+J for worktree palette on non-darwin platforms
To avoid colliding with Ctrl+J (Line Feed) on Windows/Linux, we now
use Ctrl+Shift+J for the worktree jump palette on those platforms,
leaving Cmd+J for macOS.
* refactor: migrate QuickOpen to cmdk and unify overlay state
- Migrated `QuickOpen.tsx` to use `cmdk` (`CommandDialog`) for visual and
behavioral consistency with the new worktree jump palette, while keeping
the existing custom fuzzy match algorithm.
- Unified the overlay state systems (`activeModal`, `quickOpenVisible`,
`worktreePaletteVisible`) into a single `activeModal` union type.
- This automatically handles mutual exclusion without boilerplate
toggle logic spread across components.
* fix: forward QuickOpen and worktree shortcuts from browser guests
Added main-process interceptors for `Cmd/Ctrl+P` and `Cmd/Ctrl+1-9`
so that QuickOpen and numeric worktree jumping continue to work
even when an embedded browser guest (webview) has keyboard focus.
* fix: address review findings
- Set spawnEnv.SHELL before pty.spawn() in the fallback loop so the
child process inherits the correct SHELL value instead of the stale
original.
- Remove dead Cmd+P and Cmd+1-9 renderer keydown handlers from App.tsx;
these are now handled via IPC from createMainWindow.ts before-input-event
(the IPC handlers in useIpcEvents.ts have the same view-state guards).
Browser tabs are factored into getWorktreeStatus, so leaving them
behind after shutdown keeps the sidebar dot green even though all
terminals are dead. Clear browserTabsByWorktree and
activeBrowserTabIdByWorktree during shutdown so the status indicator
transitions to inactive.
The old code used a hardcoded PRIMARY_BRANCHES set (main, master, develop,
dev) to decide badge styling, which was misleading — a non-primary worktree
on "main" got a badge nearly identical to the actual primary worktree.
Now we use the authoritative `isMainWorktree` flag from git, show a
"primary" badge next to the display name, and always show the branch name
in the subtitle row regardless of branch naming conventions.
The tab-type restoration logic in setActiveWorktree fell through to the
editor branch when a worktree had open files, even if the user was last
on the terminal surface. Add an explicit 'terminal' case so switching
back lands on the terminal tab as expected.
* feat: add shared issue command config and worktree automation
- Add shared top-level issue command support in orca.yaml with per-user .orca override read/write paths
- Surface the issue command in repository settings and the create-worktree dialog
- Queue issue-command terminal splits independently from setup-runner splits
- Preserve user checkbox state and repo-switch draft saves for issue command configuration
- Add parser, activation, and terminal-state test coverage for the new flow
* fix: clarify custom issue command settings label
* docs: clarify issue command effect behavior
* docs: unify issue command examples
* fix: keep issue command examples on one line
* style: use direct useEffect import in add worktree dialog
measure() resets all cached DOM measurements back to estimateSize()
predictions. When clicking a card triggers a prCache refresh, the
effect fires, discarding accurate measurements and replacing them with
imprecise estimates — causing visible card overlap. The measureElement
ref already uses a ResizeObserver to auto-update sizes when card
content changes, making the manual measure() calls unnecessary.
Recalibrate virtualizer row height constants: base 52→55 (accounts for
2px border + 15px title), meta rows 22→16 (py-0.5 + icon size-3),
meta section spacing uses gap-1.5 + mt-0.5 + gap-[3px] between rows.
Add +1px when both status and unread indicators are visible.