Commit Graph
8614 Commits
Author SHA1 Message Date
Jinjing aef508d2b3 fix: address review findings (#455) 2026-04-10 19:37:36 -07:00
Brennan Benson 02ac8f48e9 fix: show update prompt for unrecognized orca.yaml keys (#454) 2026-04-10 18:28:59 -07:00
Colin Chambachan 874ba49789 fix: preserve reverse search shortcut (#453)
* fix: preserve reverse search shortcut

* test: cover cmd+r reverse search regression
2026-04-10 16:34:25 -07:00
Jinjing 6631047b95 1.1.9 v1.1.9 2026-04-10 14:15:48 -07:00
Jinwoo Hong 4389c65876 Add browser context grab feature (#451) 2026-04-10 14:13:35 -07:00
Jinjing c726878a27 feat: render markdown in worktree comment cards (#452)
Add CommentMarkdown component using react-markdown + remark-gfm +
remark-breaks to render rich formatting (bold, lists, code, links) in
sidebar worktree comment cards. Update height estimation to account for
markdown block elements and capped code block height.
2026-04-10 14:11:55 -07:00
Jinjing 3e8017627f fix: restore terminal surface when switching back to a worktree (#450)
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.
2026-04-10 14:03:18 -07:00
Brennan Benson 7b63288f68 feat: GitHub issue command automation for worktree creation (#441)
* 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
2026-04-10 13:52:46 -07:00
Jinjing d0cee5f83e 1.1.8 v1.1.8 2026-04-10 12:32:10 -07:00
Jinjing 62aeda84d3 fix: stop virtualizer.measure() from resetting DOM measurements on card click (#449)
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.
2026-04-10 12:30:17 -07:00
Jinwoo Hong 14936b67e8 fix: invalidate filesystem-auth cache after CLI worktree creation (#446) 2026-04-10 11:34:18 -07:00
Jinjing 3dfa87daab 1.1.8-rc.0 v1.1.8-rc.0 2026-04-10 11:10:16 -07:00
Jinjing 3c479c04f3 fix: correct worktree card height estimates to match actual CSS layout (#445)
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.
2026-04-10 10:52:15 -07:00
Jinwoo Hong 1b3719cb4c Add Codex usage tracking (#444) 2026-04-10 10:04:57 -07:00
Jinwoo Hong 386bd17fb1 fix: avoid Claude cache timer before first prompt (#442) 2026-04-10 01:14:33 -07:00
Neil be6a28bd58 Fix titlebar sidebar controls (#438) 2026-04-10 00:48:03 -07:00
Neil 0ceca04014 Revert "Smooth sidebar transitions and reduce terminal jitter" (#439) 2026-04-10 00:47:55 -07:00
Jinwoo Hong c6ff6da3a8 Add in-app browser tabs (#430) 2026-04-10 00:04:42 -07:00
Neil fee1165747 Smooth sidebar transitions and reduce terminal jitter (#433) 2026-04-09 23:50:46 -07:00
Neil 8d3f640e67 Fix macOS dev Electron shutdown on Ctrl+C (#435) 2026-04-09 23:50:23 -07:00
Jinjing 5d1eae28c7 fix: preserve file explorer scroll position on tree refresh (#436)
Keep existing children visible in dirCache during force-reload instead
of clearing to [], preventing the virtualizer from losing scroll
position and jumping to the top when files are created, duplicated, or
deleted.
2026-04-09 23:47:20 -07:00
Jinjing 65b76d03d8 fix: debounce sidebar sort and refresh activity on comment edit (#434)
Sort-epoch changes are now debounced by 3 seconds before triggering a
re-sort, preventing jarring position shifts when background events (AI
starting work, terminal title changes) recalculate time-decay scores.
Structural changes (worktree added/removed) bypass the debounce and
apply immediately.

Comment edits now bump lastActivityAt so the worktree holds its ranking
instead of dropping due to decayed recency.
2026-04-09 23:32:35 -07:00
Neil 6288141d5d Fix stale GitHub CLI auth preflight state (#432) 2026-04-09 23:20:18 -07:00
Jinjing acaacd3b41 feat: display worktree comments with line wrapping instead of hover card (#431)
Replace the HoverCard tooltip with inline whitespace-pre-wrap rendering
so multi-line comments are visible at a glance. Update estimateRowHeight
to dynamically calculate comment height based on content length and
newline count.
2026-04-09 22:46:39 -07:00
Jinjing 5f5be8410d feat: add shift-select bulk source control actions (#429) 2026-04-09 18:30:32 -07:00
Jinjing de36c6bafe fix: prune git worktree tracking after orphaned worktree removal (#428)
When removing an orphaned worktree, `git worktree remove` fails but the
directory is cleaned up via `rm`. Without a subsequent `git worktree prune`,
git's internal tracking remains stale — `git worktree list` continues to
show the entry and the branch stays locked. Add `git worktree prune` after
the rm in both the IPC handler and OrcaRuntimeService to fix this.
2026-04-09 17:46:57 -07:00
Alexander 7a7d287ed2 feat: focus-follows-mouse setting for terminal panes (#389) 2026-04-09 17:02:01 -07:00
Jinjing d8dfca5f07 fix: prevent tab width shift during auto-save dirty state toggle (#427)
Move dirty-dot indicator and close button into a shared fixed-width
container so toggling between dirty/clean states during auto-save
does not cause the tab to resize.
2026-04-09 16:29:47 -07:00
Jinjing c908bdfbb2 fix: default LANG to UTF-8 for terminal character display (#423)
* fix: address review findings

* fix: improve error handling in terminal e2e helper JSON parsing

* fix: remove unused catch parameter in terminal e2e helper

* fix: use nullish coalescing assignment for LANG default in PTY spawn

The object spread approach ({LANG: default, ...process.env}) produced
undefined on CI (Ubuntu/Node 22) despite working locally. Switch to
explicit ??= assignment after the spread for reliable cross-platform
behavior.
2026-04-09 14:02:02 -07:00
Jinjing df54597cc3 fix: address review findings (#422) 2026-04-09 13:37:20 -07:00
Jinwoo-H 5c0d97ebf9 1.1.7 v1.1.7 2026-04-09 15:30:36 -04:00
Jinwoo Hong 4d5da8c0a9 Add Claude usage tracking analytics (#417) 2026-04-09 12:28:59 -07:00
Jinjing bced9b5308 refactor: reorganize project structure for build assets and scripts (#419)
Move build resources to resources/build/, icon source files to
resources/icon-source/, scripts to config/scripts/, and patches
to config/patches/ for a cleaner top-level directory layout.
2026-04-09 12:28:52 -07:00
Jinjing e5f75564af feat: add mermaid diagram rendering and code block copy button (#418)
* feat: add mermaid diagram rendering and code block copy button

- Add mermaid library for rendering mermaid diagrams in markdown preview
- Create MermaidBlock component for diagram rendering
- Create CodeBlockCopyButton component for copying code blocks
- Extract CSS into separate files for better organization

* fix: address review findings

- Sanitize mermaid SVG output with DOMPurify before innerHTML assignment
- Remove dead `initialized` flag in MermaidBlock
- Serialize concurrent mermaid.render() calls with a promise queue
- Add .catch() handlers for clipboard write promises
- Skip CodeBlockCopyButton wrapper for mermaid diagram blocks
2026-04-09 12:21:11 -07:00
Jinjing 1b868cbc35 fix: address review findings (#416)
Strengthen test for file:// link handling — assert that openFile is
actually called (positive behavior), not just that the old shell path
is skipped.
2026-04-09 10:29:35 -07:00
Jinwoo Hong 81a2de6067 fix: keep pdf previews inline on click (#415) 2026-04-09 09:27:24 -07:00
Jinjing d5a8ab5aba 1.1.6 v1.1.6 2026-04-08 23:29:11 -07:00
Jinjing a721743b0a fix: improve tab bar styling and prevent tab resize on switch (#414)
- Make the "+" new tab button a compact rounded icon button instead of
  a full-height rectangle
- Increase titlebar height from 38px to 42px for better proportions
- Remove font-medium from active tabs to prevent layout shift when
  switching between tabs
2026-04-08 23:22:39 -07:00
Jinjing d546af1b51 refactor to clean up the codebase (#412)
* chore: clean up repo root for faster README visibility

- Delete unused images (debug_orca.png, orca_3d.jpg, screenshot.png)
- Delete stale design docs from docs/
- Move tsconfig sub-configs, electron-builder config, and vitest config to config/
- Move file-drag.gif to docs/assets/ and design doc to docs/
- Update all path references in package.json, tsconfig.json, and moved configs

* fix: remove stale worktree dialog callback dependency
2026-04-08 22:49:16 -07:00
Jinjing 05f84da4e1 feat: add "Reveal in Finder" context menu item to file explorer (#411)
Adds a platform-aware context menu option to reveal files/folders in the
system file manager (Finder on macOS, File Explorer on Windows, Files on Linux).
2026-04-08 22:25:32 -07:00
Jinjing 0204c36c0f fix: xterm fit refresh, notification timing, and lint-staged config (#410)
- Move xterm FitAddon refresh() outside the resize conditional so
  sub-cell-width container shrinks don't leave blank content
- Defer startup notification to window 'show' event so the macOS
  permission dialog appears after the window is visible
- Add click handler on startup notification to open System Preferences
- Prevent GC of startup notification via activeNotifications set
- Fix lint-staged config: remove yaml/html/md from oxfmt pattern
  since oxfmt only supports json and css beyond JS/TS
2026-04-08 22:15:54 -07:00
Jinjing cd86a49ea4 feat(cli): run setup commands in right-side split pane (#409)
* feat: run setup script in split pane so main terminal stays interactive (#381)

Instead of running the worktree setup script in the main terminal pane
(blocking user interaction), queue a setup-split signal that TerminalPane
consumes on mount — creating the initial pane clean, then splitting right
and injecting the command into the new pane's PTY.

* fix: address review findings

* fix(terminal): run context menu Close Pane through request-close lifecycle
2026-04-08 21:45:27 -07:00
Jinjing 92a8726046 feat: run setup script in split pane so main terminal stays interactive (#407)
* feat: run setup script in split pane so main terminal stays interactive (#381)

Instead of running the worktree setup script in the main terminal pane
(blocking user interaction), queue a setup-split signal that TerminalPane
consumes on mount — creating the initial pane clean, then splitting right
and injecting the command into the new pane's PTY.

* fix: address review findings
2026-04-08 21:42:23 -07:00
Jinjing abadf5a2a8 fix: address review findings (#406) 2026-04-08 21:41:10 -07:00
Jinjing 90d3fd37a2 Improve orca.yaml invalid-state UI with repair guidance (#405)
* check in

* fix: address review findings
2026-04-08 21:38:45 -07:00
Jinjing 265c2ddd68 Remove macOS notification permission checking (#404)
* fix: address review findings

* fix: mock process.platform as darwin in system-denied test

The test exercises the macOS notification permission gate, which only
checks systemPreferences.getNotificationSettings on darwin. Without
mocking the platform, Linux CI takes the non-darwin path and the
assertion fails.

* chore: remove stale test files

* refactor: remove macOS notification permission checking

The systemPreferences.getNotificationSettings() check added friction
without meaningful benefit — macOS handles permission prompting natively
when a notification is posted, making the manual check redundant.
Removes getPermissionStatus(), the system-denied dispatch reason,
the IPC handler, the renderer permission-blocked banner, and all
related tests.
2026-04-08 20:59:49 -07:00
Neil f86e41f06f 1.1.5 v1.1.5 2026-04-08 20:46:41 -07:00
Neil b60341ff0c Revert "fix: prevent terminal reset when splitting tab groups" (#403) 2026-04-08 20:45:23 -07:00
Jinjing 02a092b52f fix: address review findings (#402)
- Fix ZoomOverlay to fully unmount after fade-out so the fixed overlay
  doesn't linger and interfere with Radix portal layering, click-outside
  detection, or focus management (fixes broken file switching)
- Lower z-index from 9999 to z-50 to match app conventions
- Fix editor zoom percent to use actual base font size from settings
  and computeEditorFontSize for clamping instead of hardcoded 14
- Extract useTerminalFontZoom to own file to keep keyboard-handlers
  under the 300-line lint limit
2026-04-08 20:43:50 -07:00
Jinjing 01f3483b21 feat: structured notification dispatch results and startup permission registration (#400)
* fix: address review findings

* fix: mock process.platform as darwin in system-denied test

The test exercises the macOS notification permission gate, which only
checks systemPreferences.getNotificationSettings on darwin. Without
mocking the platform, Linux CI takes the non-darwin path and the
assertion fails.

* chore: remove stale test files
2026-04-08 20:36:01 -07:00