Commit Graph
8614 Commits
Author SHA1 Message Date
Jinjing 9236cd70b6 1.0.94 v1.0.94 2026-04-06 18:36:25 -07:00
Jinjing adf0c69867 1.0.94-rc.2 v1.0.94-rc.2 2026-04-06 18:10:07 -07:00
Jinjing 36085a0b89 fix: exclude RC/prerelease versions from auto-updater (#350)
* fix: fall back to stable release when electron-updater picks an RC

When the latest GitHub release is an RC, electron-updater (with
allowPrerelease enabled) reports it as available and never considers
older stable releases. Previously the code simply rejected the RC and
sent not-available, silently hiding real stable updates.

Now the update-available handler calls findFallbackReleaseVersion()
when it detects a prerelease, which queries the GitHub releases API
(filtering out prereleases/drafts) to find the newest stable version
newer than what's running and offers it as a manual download.

* fix: persist check timestamp when RC fallback fetch fails

The .catch path in the update-available RC handler was missing
recordCompletedUpdateCheck(), which meant a failed GitHub API call
during fallback would not persist the check timestamp. On next app
launch the interval check could fire immediately instead of waiting
the full 36 hours.
2026-04-06 18:02:41 -07:00
Jinjing 5d6fb3923f feat: add file duplicate to file explorer context menu (#351)
* feat: add file duplicate option to file explorer context menu

* fix: address review findings
2026-04-06 17:39:31 -07:00
Matheus Nogueira 132e033292 Scope zoom shortcuts to editor content outside terminal tabs (#348) 2026-04-06 21:07:08 -03:00
Matheus Nogueira e42ae3f0f0 Fix terminal zoom shortcuts on Linux layouts (#347) 2026-04-06 20:42:55 -03:00
Brennan BensonandClaude Opus 4.6 697c963986 fix: dynamic estimateSize for worktree cards to prevent overlap (#346)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 16:35:48 -07:00
Jinjing 85dd635598 fix: address review findings (#345) 2026-04-06 15:33:59 -07:00
Jinjing 455612e6da 1.0.94-rc.1 v1.0.94-rc.1 2026-04-06 15:23:21 -07:00
Jinjing fdbd08e085 fix: unpack out/shared/ from asar so CLI cross-directory imports resolve (#344)
The CLI entry-point (out/cli/) requires modules from out/shared/ (e.g.
runtime-bootstrap). Without unpacking both directories, Node's require()
fails when the CLI runs outside the asar archive.
2026-04-06 15:03:05 -07:00
Jinwoo HongandClaude Opus 4.6 d4a2d25942 feat: add Cmd/Ctrl+L to toggle right sidebar visibility (#343)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 14:42:48 -07:00
Jinjing 5c67bd1bee 1.0.94-rc.0 v1.0.94-rc.0 2026-04-06 14:39:26 -07:00
Jinjing 6c423f15f0 feat: improve terminal font compatibility across platforms (#342)
* feat: improve terminal compatibility with default fonts across platforms

Add cross-platform monospace font fallback chain (SF Mono, Menlo, Monaco,
Cascadia Mono, Consolas, DejaVu Sans Mono, Liberation Mono) so the terminal
renders correctly on macOS, Windows, and Linux out of the box.

- Platform-aware default font in settings (SF Mono / Cascadia Mono / DejaVu)
- buildFontFamily deduplicates user font against full fallback chain
- Error handling for pty spawn failures with user-facing error banner
- Zero-dimension diagnostic when terminal container has no layout
- WebGL context loss / unavailability logging for debugging

* feat: improve terminal font fallback and pty error handling

- Add cross-platform terminal font fallbacks
- Surface pty spawn errors to terminal UI
- Fix max-lines eslint error in TerminalPane
- Fix curly braces eslint error in constants.ts
2026-04-06 14:33:33 -07:00
Jinjing fb7ea89e7e docs: update orca-cli skill to support worktree comment updates as default agent behavior (#341)
Add guidance for coding agents to keep worktree comments updated at meaningful
checkpoints, making work-in-progress status visible in the Orca UI without
explicit user requests.
2026-04-06 13:57:41 -07:00
Neil c2da8124e9 1.0.93 v1.0.93 2026-04-06 13:34:02 -07:00
NeilandClaude Opus 4.6 d50807f7c3 fix: cmd+w closes active terminal pane, not entire tab (#335)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 13:33:48 -07:00
Jinjing 39b972fc64 1.0.92 v1.0.92 2026-04-06 12:55:44 -07:00
Jinjing 67f47ed036 1.0.92-rc.3 v1.0.92-rc.3 2026-04-06 12:48:45 -07:00
Jinjing 5545c28d18 fix: show error toast when quitAndInstall fails (#333)
Without this, a failed restart is a silent no-op. Now all three
call sites (settings pane, auto-restart, and "Restart Now" toast
action) surface the failure to the user and reset autoRestartAfterDownload
to avoid a stuck state.
2026-04-06 12:41:18 -07:00
Jinjing b366205bfa 1.0.92-rc.2 v1.0.92-rc.2 2026-04-06 12:27:28 -07:00
Jinjing c6a0791a1a 1.0.92-rc.1 2026-04-06 12:27:26 -07:00
Jinjing 51f26d1ca8 feat: extract headless autosave controller and bypass beforeunload during updater restart (#330)
Move editor autosave/save-queue logic out of EditorPanel into a
standalone controller that survives tab switches without keeping
the full editor UI mounted. Add updater lifecycle events so
beforeunload guards step aside during quitAndInstall, preventing
stale dirty-file prompts from blocking app restarts.
2026-04-06 11:59:08 -07:00
Jinjing 8c130591c3 fix: address review findings (#329) 2026-04-06 11:56:12 -07:00
Jinwoo HongandClaude Opus 4.6 3211c1e15d feat: restore active terminals on app restart (#328)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 11:32:20 -07:00
Jinwoo HongandClaude Opus 4.6 1e95418122 Fix Orca CLI runtime bootstrap recovery (#324)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 11:32:16 -07:00
Jinjing c6fc7ea4c8 1.0.92-rc.0 v1.0.92-rc.0 2026-04-06 09:21:52 -07:00
Jinjing 541dfebc70 feat: save dirty editor files before auto-update quitAndInstall (#327)
* feat: save dirty editor files before auto-update quitAndInstall

Dispatch a custom event from the preload quitAndInstall to flush unsaved
editor buffers before Electron's quitAndInstall bypasses the normal close
sequence. The EditorPanel claims the event, saves all dirty files via the
existing queueSave path, and resolves/rejects so the updater knows whether
it is safe to proceed.

* fix: address review findings

- Wrap save-before-update in try/catch so a save failure never silently
  prevents the update from installing
- Move detail.claim() inside try/catch to prevent promise hang on
  unexpected errors
- Add duplicate dirty tab detection to reject when the same file is
  dirty in multiple tabs (prevents silent write races)
2026-04-06 09:17:42 -07:00
Jinjing 73ef6281d6 1.0.91 v1.0.91 2026-04-06 00:21:43 -07:00
Jinjing f4ce41951e fix: address review findings (#323)
- Cap module-scoped caches (combinedDiffViewStateCache, combinedDiffScrollTopCache)
  at 20 entries with LRU eviction to prevent unbounded memory growth
- Promote generationRef to useState for use in React key prop so key changes
  are properly tracked by React's rendering cycle
2026-04-06 00:01:02 -07:00
Neil 4a319d9e05 1.0.90 v1.0.90 2026-04-05 23:50:33 -07:00
NeilandClaude Opus 4.6 93de627208 fix: show error toast when adding non-git folder (#321)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-05 23:36:30 -07:00
Neil deec6409df 1.0.89 v1.0.89 2026-04-05 23:35:53 -07:00
Jingyue Wu 77f6021aff fix: titlebar alignment in fullscreen and on windows (#277) 2026-04-05 23:34:12 -07:00
NeilandClaude Opus 4.6 7c7ec172e0 feat: check git and gh availability on landing page (#322)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-05 23:34:00 -07:00
Jinwoo HongandClaude Opus 4.6 4dec80386a feat: search by comment, PR number/title, and issue number/title (#320)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-05 22:48:46 -07:00
Jinjing 0651fa1a31 1.0.88 v1.0.88 2026-04-05 18:05:17 -07:00
Jinjing b82a8a62dc fix: improve delete worktree failure toast messages (#319)
- Show user-friendly guidance instead of raw git stderr when worktree
  deletion fails due to changed files, directing users to Force Delete.
- Extract toast message logic to reusable getDeleteWorktreeToastCopy
  function with comprehensive test coverage.
2026-04-05 17:59:09 -07:00
Ruan Gustavo a4ac7db972 fix: remove macOS traffic light padding on Windows (#317) 2026-04-05 17:49:29 -07:00
Jinjing b8b2654dda fix: resolve local images via IPC blob URLs in markdown editor (#318)
Local images referenced in markdown (both preview and rich editor) failed
to display in dev mode because file:// URLs are blocked by cross-origin
restrictions when the renderer is served from localhost.

- Load local images via IPC readFile → blob URL conversion
- Add useLocalImageSrc hook for react-markdown preview
- Add loadLocalImageSrc for ProseMirror nodeView in rich editor
- Snapshot cursor position before native file picker to fix insertion point
- Add blob URL cache with LRU eviction (max 100) and revokeObjectURL cleanup
- Add resolveImageAbsolutePath helper with tests
2026-04-05 17:42:09 -07:00
Jinjing b532df4650 feat: make inline diff display default and add setting (#316)
- chore: update screenshot

- fix: address review findings

- feat: make inline diff display default and add setting
2026-04-05 16:44:52 -07:00
Jinjing 171a2052df fix: address review findings (#315) 2026-04-05 16:17:07 -07:00
NeilandClaude Opus 4.6 3ec7fcb05e fix: new worktree not sorting to top with sort=recent (#314)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-05 14:47:41 -07:00
Jinjing df43248761 1.0.87 v1.0.87 2026-04-05 13:40:05 -07:00
Jinjing 6b18a1ce28 fix: centralize updater restart deferral in main process (#313)
* fix: defer updater quitAndInstall to allow React/UI state to settle

PR #299 introduced a regression where the one-click auto-update flow
would synchronously invoke `quitAndInstall` immediately upon receiving
the `downloaded` state transition. This triggered a synthetic `beforeunload`
event (to capture terminal buffers) and an IPC call to quit in the exact
same event loop tick that React and the Toast library were processing
state updates. This disrupted the renderer's synchronous shutdown and flush
logic, causing the app to fail to quit and install properly.

This adds a `setTimeout` to defer `quitAndInstall`, pushing it to the
bottom of the event queue. This allows the UI state to settle and ensures
the `beforeunload` flush sequence executes cleanly.
Test cases have also been updated to use fake timers.

* fix: centralize updater restart deferral in main process
2026-04-05 13:34:25 -07:00
Jinjing 6754fa22f9 1.0.86 v1.0.86 2026-04-05 11:55:08 -07:00
Jinjing 8e77aca170 fix: fetch PR checks by head sha (#312) 2026-04-05 11:54:53 -07:00
Jinjing b4e3dfa0b7 fix: add catch handlers for unhandled promise rejections in delete worktree (#311) 2026-04-05 11:49:00 -07:00
Jinjing f387dfa993 fix: remove freeze-on-select mechanism for sidebar sort stability (#310)
Replace the activeWorktreeSelectionNonce / frozen-sort-override approach
with the simpler sortEpoch-only strategy.  Selection side-effects
(clearing isUnread, PR cache refresh) no longer participate in sort
ordering, so clicking a card never reshuffles the sidebar.

- Remove activeWorktreeSelectionNonce from store
- Remove RecentSortOverride refs and secondary sort memo
- Swap prCache → repos in sortedIds deps (prCache changes are consumed
  inside the memo via direct store access when sortEpoch increments)
2026-04-05 11:47:44 -07:00
Jinjing a4481a7ebb fix: improve combined diff header interactions (#309) 2026-04-05 11:37:18 -07:00
Jinjing 3e51000bc5 fix: bypass gh CLI HTTP cache on manual PR checks refresh (#308)
The `gh api --cache 60s` flag caused stale check-run data even when
the user explicitly clicked refresh. Thread a `noCache` flag through
IPC so manual refreshes skip the gh CLI cache while polling still
benefits from it.
2026-04-05 11:26:32 -07:00