* 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().
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
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
- Delete empty blocks on Cmd+X (match VS Code behavior)
- Preserve rich formatting on clipboard (text/html + text/plain)
- Fix cursor placement after cutting last block (clamp position)
- Guard against null clipboardData to prevent silent data loss
- Extracted contextual copy setup logic into `useContextualCopySetup` hook.
- Replaced direct `setupContextualCopy` usage in `MonacoEditor` with the new hook.
- Added `useContextualCopySetup` to `DiffViewer` to enable contextual copy in diffs.
- Bound copy handlers to both original and modified diff editors.
- Updated `EditorContent` to pass `filePath` and `relativePath` down to `DiffViewer`.
- Made `onSave` optional in `propsRef` since it's not strictly required in diff views.
fitAddon.fit() triggers an xterm.js buffer reflow that can leave the
viewport at a stale scroll offset, making the terminal appear scrolled
up away from the prompt. Before each fit(), capture whether the terminal
was scrolled to the bottom, and restore that position afterwards. If the
user had manually scrolled up to read history, their position is kept.
- Show a "Create new worktree…" option when search yields no matches
- Pre-select it so Enter immediately opens the create dialog
- Replace inline SVG with lucide Plus icon
- Simplify palette item styling (rounded-xl, neutral selection colors)
- Add primary badge, CornerDownLeft hint, and layout refinements
- Remove unused badgeLabel field from search results
Previously, user-initiated update checks during a GitHub release
transition sent 'not-available', falsely telling users they were on
the latest version. Now all benign check failures send 'idle', and the
toast controller converts user-initiated checking→idle into a neutral
"unable to check" message that covers both release transitions and
network blips honestly.
Chromium does not fire a paste event when the clipboard contains only
image data (no text) and the target is a textarea — which is how
xterm.js receives focus. The previous handler relied solely on the
paste ClipboardEvent, so image-only pastes were silently discarded.
Move paste interception to a keydown listener for Cmd+V / Ctrl+V that
checks the clipboard via Electron's main-process API. Text is tried
first (single IPC call, fast path), and image check only runs when
text is empty. The paste event handler is kept as fallback for
non-keyboard triggers (Edit menu, etc.). Also adds image support to
the context menu paste path for consistency.
* Revert "Revert "test: verify auto-update notification flow" (#478)"
This reverts commit 988fa02456.
* 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>