Commit graph

382 commits

Author SHA1 Message Date
Jinjing
aedd4f7b4f
docs: update README for CLI integration and improve conversion (#279)
This commit completely overhauls the README to prominently feature the new Orca CLI orchestration capabilities. It also revamps the page structure for better conversion by adding trust badges, explicit cross-platform support text, a 'Quick Start' guide, and a dedicated 'Why Orca?' section. Lastly, the CONTRIBUTING.md guide was updated to encourage contributors to provide their Twitter handle for shoutouts.
2026-04-03 20:56:34 -07:00
Jinjing
653575e506
fix: open external files in Orca editor (#276)
* feat: allow opening files outside the worktree in the editor

Fixes an issue where prompting Claude Code to open a file outside the worktree
would fall back to opening the default system viewer, and dragging external files
into Orca wouldn't work.

- Replaced `shell.openFilePath` fallback with internal `store.openFile` for
  external files clicked in the terminal.
- Added a global drag-and-drop handler (`useGlobalFileDrop`) that resolves
  external file paths and opens them natively in Orca.
- Used `window.api.fs.stat` to prevent opening directories directly in the editor,
  falling back to the OS system viewer.

Closes stablyai/orca#271

* fix: authorize external editor file opens
2026-04-03 18:56:37 -07:00
Jinjing
cb32f017aa 1.0.81 2026-04-03 17:06:52 -07:00
Jinwoo Hong
44af290fed
Update Orca skill install command (#274) 2026-04-03 16:57:40 -07:00
Jinwoo Hong
182ba156dd
Add Orca runtime CLI and bundled install support (#273) 2026-04-03 16:50:28 -07:00
Jinjing
ccc1fa7b8b
fix: improve contextual copy affordance in monaco (#272) 2026-04-03 14:37:40 -07:00
Yax Patel
1cabc35e45
fix: make sidebar resizing responsive (#270)
* feat: add field to edit terminal font weight

* fix: allow scrolling in terminal font menu dropdown

* feat: scroll through fonts with arrow keys

* fix: keep terminal font picker keyboard-focused after button clicks

* fix: let keyboard users close terminal font picker from toggle button

* fix: responsive resize behavior

* chore: add tests

* fix: clamp hydrated sidebar widths
2026-04-03 14:14:37 -07:00
Jinjing
84f316b6ac 1.0.80 2026-04-03 11:39:41 -07:00
Jinjing
51e9a8fafe
fix: restore markdown source editor layout (#269) 2026-04-03 11:35:30 -07:00
Jinjing
b55f54ecaa 1.0.79 2026-04-03 10:40:38 -07:00
Jinjing
38103400e0
fix: avoid electron-vite release build OOM (#268) 2026-04-03 10:40:24 -07:00
Jinjing
8f67e28e22 1.0.78 2026-04-03 10:09:24 -07:00
Jinjing
2d6fbec929
feat: auto updater background polling and persistent reminder UI (#266)
* feat: add update reminder component and background polling

* refactor: replace update reminder banner with subtle bottom-right toast

Swap the full-width top banner for a compact fixed-position toast in the
bottom-right corner, matching the existing Sonner toast styling. Also
extract pure functions (statusesEqual, isBenignCheckFailure) from
updater.ts into updater-fallback.ts to fix max-lines lint error.

* fix: mock checkForUpdates to return a promise so .catch() works in tests
2026-04-03 10:02:44 -07:00
Jinjing
a3a0ba24d2
fix: preserve rich markdown round-trips (#267) 2026-04-03 09:57:54 -07:00
Jinjing
6016b6ef5b 1.0.77 2026-04-03 00:42:58 -07:00
Jinjing
1b91904af4
fix: defer mac auto-update install until ShipIt is ready (#265)
* fix: defer mac auto-update install until ShipIt is ready

* fix: import missing deferMacQuitUntilInstallerReady
2026-04-03 00:42:44 -07:00
Jinjing
3e22aaf16a 1.0.76 2026-04-03 00:34:03 -07:00
Jinjing
22f916e421
feat: add rich markdown editor mode (#264)
* feat: add rich markdown editor mode

* fix: preserve rich search navigation focus
2026-04-02 22:53:47 -07:00
Jinjing
bf15a5ae84 1.0.75 2026-04-02 21:15:32 -07:00
Jinjing
850c2f5b5e 1.0.74 2026-04-02 21:15:29 -07:00
Neil
86524a4da5
Fix link formatting in installation instructions (#263) 2026-04-02 21:13:35 -07:00
Neil
ef12fac745
Update README with installation and shipping details 2026-04-02 21:12:33 -07:00
Jinjing
126ec8ba0e
fix: accurate rebase status detection and continuous status polling (#262) 2026-04-02 20:50:22 -07:00
Neil
6c391cb7a3
Update README.md (#261) 2026-04-02 16:40:31 -07:00
Jinjing
9dd73b8b32
fix: stabilize search result editor reveal (#260) 2026-04-02 08:47:18 -07:00
Jinjing
2d7c597e82 1.0.73 2026-04-02 00:08:55 -07:00
Matheus Nogueira
3c36da80a8
fix: add git-based fallback for file search on Linux (#257)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-01 21:05:18 -07:00
Jinjing
11c65ab3a7 1.0.72 2026-04-01 17:29:46 -07:00
Jinjing
0a988d5c9b
fix: restore pdf preview rendering (#258) 2026-04-01 17:28:05 -07:00
Jinjing
00d3e15c71
feat: change default divider thickness to 3px for first-time users (#256)
The previous 1px default was too thin for comfortable visibility.
This changes the default to 3px, which only affects new users who
haven't customized the setting. Also updates the preview component's
fallback to stay consistent with the new default.
2026-04-01 16:38:55 -07:00
Jinjing
532ee5ca4e
fix: show file action buttons only on hover without layout shift (#255)
Action buttons (revert, stage) in the Changes list now use absolute
positioning with a solid background overlay, so they appear on hover
without taking up space or shifting file names and status letters.
2026-04-01 16:29:44 -07:00
Matheus Nogueira
2ec433f6df
feat: add copy remote URL to line number context menu (#253)
* feat: add copy remote URL to line number context menu

Add 'Copy Remote URL' option to the line number gutter right-click menu,
allowing users to quickly copy a shareable link to a file and line on
GitHub, GitLab, Bitbucket, or other hosted git providers.

- Install hosted-git-info to parse remote URLs and generate browse URLs
- Add getRemoteFileUrl() to resolve file URLs using default branch
- Wire up IPC handler, preload bridge, and renderer UI
- Use ExternalLink icon to distinguish from path copy options

* refactor: use @types/hosted-git-info instead of custom type declarations

Replace the custom hosted-git-info.d.ts with the @types package from
DefinitelyTyped. Use a targeted cast for browseFile() which the @types
package doesn't include yet (stuck on v3 API).

* refactor: revert to local type declarations for hosted-git-info

The @types/hosted-git-info package is stuck on the v3 API and lacks
browseFile(). A local .d.ts is cleaner than casting around stale types.
2026-04-01 20:02:05 -03:00
Jinjing
e8e7d2ea8f
feat: add PDF file preview support in diff viewer (#252)
* fix: address review findings

- Add sandbox="allow-same-origin" to PDF iframes to prevent script execution
- Wrap atob() in try/catch to gracefully handle corrupt base64 data
- Reset imageError state on content change to allow re-rendering
- Add click overlay on PDF iframe so popup open works correctly
- Compact test mock resets to stay within max-lines lint rule

* fix: consolidate binary preview tests to stay within max-lines limit
2026-04-01 15:12:50 -07:00
Jinjing
528e03e8a5
fix: add null-byte validation to resolveRegisteredWorktreePath (#251) 2026-04-01 14:04:33 -07:00
Jinjing
5b3f132519
feat: prevent branch name reuse across PR history (#250)
- Reject worktree creation if the computed branch name already exists locally, on a remote, or in PR history. This prevents a fresh worktree from inheriting a stale/merged PR immediately after creation.
- Wrap getPRForBranch in try/catch so GitHub API failures don't block worktree creation
- Fix remote branch matching to compare full branch name after refs/remotes/<remote>/ prefix, preventing false positives
- Wrap updateWorktreeMeta in try/catch so meta-update failures don't leave the dialog in an error state for an already-created worktree
2026-04-01 13:24:07 -07:00
Jinjing
918e72b49a 1.0.71 2026-04-01 09:39:46 -07:00
Colin Chambachan
86799b4793
feat: add file actions to file explorer (#235)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-01 09:36:52 -07:00
Jinjing
894f1bb6aa
feat: show ShieldAlert icon for conflict-review tabs (#249)
* feat: show ShieldAlert icon for conflict-review tabs

Display a distinct orange ShieldAlert icon for tabs opened in
conflict-review mode, differentiating them from regular diff tabs.

* fix: clear stale Rebasing/Merging badge on non-active worktrees

The git status polling only runs for the active worktree. When a
non-active worktree finishes rebasing, its conflict operation was
never updated to 'unknown', leaving the badge stuck.

Add a lightweight git:conflictOperation IPC (fs-only, no git subprocess)
and poll it for non-active worktrees that have a non-unknown operation.
Once the operation clears, the worktree drops out of the poll list.
2026-03-31 21:47:59 -07:00
Jinjing
617f0c3487
feat: add jump-to-file button in diff view and improve tab styling (#248)
Add a "Open file" button in the diff editor header that opens the
modified-side file in a regular edit tab — useful for accessing
markdown preview from a diff. The button is disabled when the diff
target is deleted.

Also refine tab bar styling: active tabs now use accent background
with bold text, and file explorer rows get consistent hover colors.
2026-03-31 19:23:57 -07:00
Jinjing
2dd8954468
feat: add find in markdown preview (#247) 2026-03-31 19:22:24 -07:00
Neil
9fa7aec27a
feat: show hover tooltip for OSC 8 and file path links (#246)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-31 19:07:14 -07:00
Jinjing
6f77e8b2c6 1.0.70 2026-03-31 16:34:07 -07:00
Jinjing
8d44edcda9
fix: harden updater version comparisons (#245) 2026-03-31 16:31:04 -07:00
Jinwoo Hong
12344a51cf
fix: capture terminal buffers before quitAndInstall (#241)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-31 15:34:14 -07:00
Jinjing
12dc676209
feat: allow search for hidden files in quick-open (#239)
Enable --hidden flag for ripgrep so dotfiles users commonly edit
(.env, .github/*, .eslintrc, etc.) appear in quick-open results.
Use a blocklist of tool-generated hidden dirs instead of blocking
all dot-prefixed paths.

Key changes:
- Add --hidden to rg and filter via HIDDEN_DIR_BLOCKLIST
- Add second rg call with --no-ignore-vcs to surface .env* files
- Use fast string-slice prefix stripping with path.relative() fallback
- Guard against path traversal in the fallback path
- Handle Windows path separators via --path-separator and normalization
- Collect into shared Set to avoid duplicate array spread
2026-03-31 13:09:56 -07:00
Jinjing
1e7956bd30 1.0.69 2026-03-31 09:28:15 -07:00
Jinjing
4497d3adf5
feat: add isMainWorktree field to GitWorktreeInfo (#237)
Expose whether a worktree is the repo's main working tree (the first
entry from `git worktree list`). This lets consumers distinguish the
main worktree from linked worktrees created via `git worktree add`.
2026-03-31 09:24:13 -07:00
Niklas Marder
d13d59ac40
fix: show correct keyboard shortcuts on Windows in terminal context menu (#233)
* fix: show correct keyboard shortcuts on Windows in terminal context menu

The terminal right-click menu was hardcoded to show macOS shortcuts
(⌘C, ⌘V, etc.) regardless of platform. Now detects the OS via
navigator.userAgent and shows Ctrl+ on Windows/Linux.

Follows the same pattern used in ShortcutsPane and WorktreeMetaDialog.

Fixes #230

* fix: use template literals for compound shortcuts to avoid JSX whitespace

Multi-line JSX expressions insert a space between modifier tokens
(e.g. "⌘ ⇧D" instead of "⌘⇧D"). Template literals avoid this.

---------

Co-authored-by: niklasmarderx <niklasmarderx@users.noreply.github.com>
Co-authored-by: Jinjing <6427696+AmethystLiang@users.noreply.github.com>
2026-03-31 08:56:41 -07:00
Jinjing
e0e01cd687
feat: configurable worktree cards with property toggles (#232)
- fix: stay under max-lines lint limit after merge with main

Extract restoreScrollbackBuffers into layout-serialization.ts to reduce
use-terminal-pane-lifecycle.ts below the 300-line limit. Also filter
stale leaf IDs from persisted scrollback buffers and remove design doc.

- fix: polish worktree card controls

- feat: configurable worktree cards with property toggles
2026-03-31 08:49:00 -07:00
Jinjing
f2eb119c62
feat: display CI conflict details and improve merge-conflict UX (#234)
- Add PRConflictSummary type and derive conflict metadata (base ref,
  commits behind, conflicting files) via local git merge-tree
- Fix parseUnmergedEntry to use space-separated parsing (porcelain v2
  unmerged entries are not tab-separated)
- Enhance rebase detection by checking rebase-merge/ and rebase-apply/
  directories in addition to REBASE_HEAD
- Show conflicting files list and commits-behind count in ChecksPanel
- Disable merge button with tooltip when PR has conflicts
- Add operation banners (merge/rebase/cherry-pick) in SourceControl
  and WorktreeCard
- Reorder section list so unstaged changes appear above staged
- Extract conflict-summary, issues, and gh-utils into separate modules
- Add 10s timeout to git fetch in conflict summary derivation
- Fix test fixtures to match real porcelain v2 format
2026-03-31 01:27:39 -07:00