Commit Graph
571 Commits
Author SHA1 Message Date
Jinjing 216cabb9f0 update readme to include new browser design mode feature (#463) 2026-04-10 21:19:23 -07:00
Jinjing 821e205c6f fix: preserve terminal session state during periodic saves (#461) 2026-04-10 21:06:37 -07:00
Jinjing 1049b8af65 1.1.10-rc.0 v1.1.10-rc.0 2026-04-10 20:47:41 -07:00
Jinjing a666ecb347 feat: enable open-links-in-app by default (#460) 2026-04-10 20:27:33 -07:00
Jinjing dad6713553 fix: clear browser tab state on worktree shutdown (#458)
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.
2026-04-10 20:17:50 -07:00
Jinjing 7c71afce55 fix: replace branch-name heuristic with isMainWorktree for primary badge (#457)
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.
2026-04-10 19:58:45 -07:00
Jinjing 0f819032a0 feat: auto-refresh File Explorer via filesystem watcher (#456)
* fix: address review findings

* feat: add filesystem watcher for auto-refreshing File Explorer

Adds @parcel/watcher-based filesystem watching so the File Explorer
automatically reflects external changes (creates, deletes, renames)
without manual refresh.
2026-04-10 19:50:14 -07:00
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