Commit graph

851 commits

Author SHA1 Message Date
Jinwoo-H
2df028457a fix: improve assertManagedHomePath error for cross-environment accounts
In dev mode, userData points to orca-dev/ while the packaged app uses
orca/. Accounts created by the packaged app have production paths baked
into settings. When a dev instance iterates these accounts during config
sync, realpathSync throws ENOENT (production path doesn't exist under
orca-dev/) producing a confusing "escaped Orca account storage" error.

Add a prefix check before realpathSync and an existence check so the
error message clearly explains the mismatch instead of implying a
security violation.
2026-04-19 18:05:20 -04:00
Jinwoo-H
20d1524914 1.2.3-rc.10 2026-04-17 13:38:26 -04:00
Jinwoo Hong
7c6d408f16
fix: resolve posix_spawnp failure in daemon's node-pty spawn (#762) 2026-04-17 10:37:56 -07:00
Jinjing
c655c13629
feat(settings): give browser its own settings pane (#764)
- Move browser-related settings out of the in-browser gear dialog and
  out of General into a dedicated Browser pane in Settings, and route
  the browser gear button to open it.
2026-04-17 10:35:52 -07:00
Jinjing
949f3e396a
fix: remove smooth scroll animation on settings section navigation (#765) 2026-04-17 10:27:52 -07:00
Jinjing
6767157fe0
feat: add double-click-to-rename for editor tabs and file explorer (#760)
- fix: prevent Escape-cancelled rename from committing via trailing blur

Users can now double-click a filename in editor tabs or the file explorer to rename it inline. Both flows share a common renameFileOnDisk() function that handles:
- Quiescing in-flight autosaves before rename to prevent recreating old paths
- Remapping all open editor tabs to the renamed file/directory
- Undo/redo support via the file explorer undo stack

The shared Escape-cancel logic prevents a race condition where blur could fire and commit the rename after user cancelled with Escape.
2026-04-17 10:16:38 -07:00
Jinwoo-H
21fc9383c0 1.2.3-rc.9 2026-04-17 12:39:18 -04:00
Jinwoo-H
f7fa1e56d5 1.2.3-rc.8 2026-04-17 12:38:22 -04:00
Jinwoo Hong
25b3093c48
fix: bundle xterm deps into daemon-entry to fix packaged build crash (#759) 2026-04-17 09:29:29 -07:00
Neil
50e2376df8
fix: autofocus composer prompt and make "Use" open composer directly (#758) 2026-04-17 00:56:59 -07:00
Jinjing
6bf6a4bda1
fix: remove max-width cap on right sidebar drag resize (#727) (#757)
The right sidebar drag was hard-capped at 500px, so long file names
(e.g. construction drawing sheets, multi-part document names) always
truncated with no way to reveal them.

The cap is now window-relative — users can drag the sidebar up to
(window width − 320px reserve) so the left sidebar and editor can
still breathe. Persistence clamp split so the right sidebar keeps a
loose 4000px safety net for corrupted values, while the left sidebar
stays at 500px.
2026-04-17 00:38:47 -07:00
Jinjing
eced42167f
fix: show pointer cursor when hovering titlebar agent badge (#754)
The badge's inner dot and count spans inherited the titlebar's
-webkit-app-region: drag, which overrode the button's cursor: pointer.
Disable pointer events on the children so hover/click hit-test the
button itself (which opts out of the drag region).
2026-04-17 00:09:03 -07:00
Neil
6226d5936b 1.2.3-rc.7 2026-04-16 23:55:53 -07:00
Neil
ee69e110fc
Compser template (#753) 2026-04-16 23:55:37 -07:00
Jinjing
fcbdd95b43
fix: auto-focus rich markdown editor on mount (#750)
* fix: auto-focus rich markdown editor on mount

Match MonacoEditor's behavior so opening a new markdown file (Cmd+Shift+N)
or switching to a rich-markdown tab lands the cursor in the editor. Guards
against focus theft from modals/dialogs and passes `scrollIntoView: false`
so the focus call doesn't race with useEditorScrollRestore's RAF retry loop.

* fix: use 'start' position to avoid AllSelection on empty editor

Passing null to commands.focus() keeps the editor's current selection,
which for a fresh empty document is an AllSelection — rendered as a
visible 0-width highlight inside the placeholder instead of a normal
caret. 'start' resolves to a proper TextSelection at doc start.

Also update review-and-submit skill to push before gh pr create.
2026-04-16 23:30:14 -07:00
Jinjing
d1a3324e7e
fix: make Cmd+J worktree jump scroll instant (#751)
Remove `scroll-smooth` from the virtualized sidebar viewport so palette
reveals land immediately instead of animating the full cross-list
distance at the browser's default smooth-scroll speed.

Single-card stepping (Cmd+Shift+↑/↓) no longer glides either — the
brevity of the movement makes instant feel snappier, and it avoids
the state-machine risk of toggling `scroll-behavior` inline when
tanstack virtual can also issue follow-up scroll corrections after
dynamic item measurement.
2026-04-16 23:25:17 -07:00
Neil
6e1cb1c6cf
fix: boot to landing before shutting down active worktree (#749) 2026-04-16 22:56:01 -07:00
Jinwoo Hong
fd4f986c59
feat: terminal persistence via out-of-process daemon (#729) 2026-04-17 01:42:41 -04:00
Jinwoo Hong
39832c7801
feat: Ghostty-style macOS Option key mode setting (#748)
* feat: add Ghostty-style macOS Option key mode setting

Disable xterm's macOptionIsMeta by default so non-US keyboard layouts
can compose characters (e.g. @ on German, € on French). Add a
user-facing "Option as Alt" setting with four modes — Both, Left,
Right, Off — mirroring Ghostty's macos-option-as-alt. Core readline
shortcuts (Option+B/F/D) are automatically compensated when Option is
in compose mode. The setting applies live to existing terminal panes.

* fix: track Option key location from modifier keydown, not character key

KeyboardEvent.location on a character key (e.g. Period) reports that
key's own position (always 0), not which modifier is held. Left/right
Option mode was broken because we read location from the character
event. Fix by recording the Option key's location from its own
keydown/keyup events and passing it as a separate parameter.
2026-04-17 01:37:22 -04:00
Neil
42e01f240c
perf: speed up NewWorkspacePage first paint (#746)
* perf: speed up NewWorkspacePage first paint

- SWR cache + inflight dedup for gh work-items in store
- Prefetch on openNewWorkspacePage, sidebar Plus hover, Landing hover
- Seed list synchronously from cache to kill the double-fetch on mount
- Module-scoped detectAgents promise cache (one IPC per session)
- Consolidate useComposerState store subs via useShallow
- Hoist Intl.RelativeTimeFormat to module scope (was per row)
- LightRays: count 6->3, blur 44->20, drop mix-blend-screen,
  willChange compositor hint, prefers-reduced-motion bailout

* perf: drop redundant runIssueAutomation state + effect

Derived-state-via-effect anti-pattern: runIssueAutomation was just a
mirror of canOfferIssueAutomation toggled through a useEffect, so
shouldRunIssueAutomation was effectively canOfferIssueAutomation one
render late. Compute during render instead.

* fix: prefetch under the exact cache key the page will read

Sidebar and Landing were calling prefetchWorkItems with no query, warming
the cache at '::'' which NewWorkspacePage never reads. Pass the user's
default-preset query so hover-prefetch actually hits the key the page
looks up on mount.
2026-04-16 22:03:24 -07:00
Neil
2871294290
feat: nicer composer prompt scrollbar and inline '>' prefix (#747)
* feat: nicer composer prompt scrollbar and inline '>' prefix

Style the workspace composer prompt with a sleek scrollbar, and render the
'>' prefix as an inline-feeling overlay that scrolls with the text. Scrolling
is hoisted onto an outer wrapper so the '>' and typed text share a single
native scroll container — no cross-layer paint delay, no wobble.

* docs: fix stale comment describing abandoned translateY approach
2026-04-16 21:58:54 -07:00
Neil
eec2f9137e
feat: configurable setup script launch location (#745)
Adds a Terminal settings control for where the repo setup script runs
on workspace create: vertical split (default, preserves prior behavior),
horizontal split, or a separate "Setup" tab that does not steal focus
from the primary terminal.
2026-04-16 21:20:38 -07:00
Brennan Benson
ad472f89d4
Fix split-pane console regressions and terminal context menu dismiss (#743) 2026-04-16 21:16:02 -07:00
Neil
7df0d9686c
feat: GitHub PR/issue drawer on new-workspace page (#744) 2026-04-16 21:14:24 -07:00
Neil
480c19f5f0
fix: pinned 'Add folder/repo' footer in repo combobox (#741)
- Changed 'repositories' → 'repos/folders' in search placeholder and empty state
- Added always-visible 'Add folder/repo' button with FolderPlus icon in popover footer
- Button calls existing addRepo store action (same folder picker flow)
- Auto-selects newly added repo on success
- Made Command controlled to clear selection highlight when hovering footer
2026-04-16 20:55:10 -07:00
Jinwoo Hong
961f507ed3
feat: improve cookie import robustness and cross-platform support (#736) 2026-04-16 20:44:10 -07:00
Neil
e8e5258138
fix: slugify prompt fallback in composer workspace name (#740) 2026-04-16 20:39:32 -07:00
Brennan Benson
31d402baa5
Prevent replaying split pane startup commands (#737) 2026-04-16 20:36:37 -07:00
Neil
a3dd4e8fb3
feat: open composer modal from Cmd+J with GH URL support (#739) 2026-04-16 20:33:54 -07:00
Jinwoo Hong
63b2353cfd
feat: browser URL history and address bar autocomplete (#738) 2026-04-16 20:07:46 -07:00
Jingyue Wu
eb8901ce36
feat: file explorer shortcuts + fix worktree switch shortcut hinting (#719)
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
2026-04-16 18:40:34 -07:00
Brennan Benson
5c664fc0b9
feat: support dragging tabs into new split panes (#732) 2026-04-16 16:47:11 -07:00
dependabot[bot]
0f0a237e69
build(deps-dev): bump electron from 41.0.3 to 41.1.0 (#721)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-16 16:39:34 -07:00
Neil
eaff42ec9a 1.2.3-rc.6 2026-04-16 16:35:49 -07:00
Neil
07902e749a 1.2.3-rc.5 2026-04-16 16:02:56 -07:00
Neil
c598dfe102 1.2.3-rc.4 2026-04-16 15:45:09 -07:00
Neil
d2a53c8fcc
New workspace create page (#710)
* New workspace page with agent catalog, composer modal, and terminal integration

* fix lint

* better blank state

* fix: resolve typecheck errors in new-workspace flow

- widen activateAndRevealWorktree's issueCommand to accept direct
  command shape used by NewWorkspacePage, not just the main-process
  runner-script variant
- use a ref object in pty-connection tests to dodge TS narrowing the
  captured callback to never across the mock closure boundary

* fix: bound worktree name auto-suffix loop to prevent OOM in tests

The auto-suffix loop in createLocalWorktree had no termination cap.
When tests (or a misconfigured env) mocked getBranchConflictKind /
getPRForBranch to always return a collision, the loop ran forever and
the vitest worker crashed with "Ineffective mark-compacts near heap
limit".

Cap the search at 100 suffixes, and if all fail, fall back to the
original specific error messages (branch already exists / PR already
owns the name) instead of a generic failure.

Update the two tests that asserted the old throw-on-first-conflict
behavior to verify the new auto-suffix path end-to-end.
2026-04-16 15:41:40 -07:00
Jinwoo Hong
c8a8ef1b5c
fix: stop smart sort from reordering after focus (#730) 2026-04-16 15:17:48 -07:00
github-actions[bot]
bd16c0cfdd release: 1.2.3-rc.3 [rc-slot:2026-04-16-15] 2026-04-16 22:10:44 +00:00
brennanb2025
61c1822bb9 1.2.3-rc.2 2026-04-16 14:31:44 -07:00
Brennan Benson
48c24935c3
fix: prevent split-group container teardown when switching worktrees (#726) 2026-04-16 14:29:33 -07:00
Jinjing
19d22b0667
feat: add View button to delete failure toasts for worktree navigation (#725)
When a worktree delete fails, users may want to inspect the worktree
to understand why. Add a "View" button that navigates to the worktree
via activateAndRevealWorktree on all delete failure toasts.
2026-04-16 13:41:02 -07:00
Jinjing
2e2e151aa0
Change New Markdown shortcut from ⌘⇧N to ⌘⇧M (#724)
⌘⇧N conflicts with the well-known "New Window" convention in VS Code
and Chrome. ⌘⇧M is a clear mnemonic for Markdown and doesn't clash
with any existing shortcut. Also adds New Browser Tab and New Markdown
entries to the Settings keyboard shortcuts pane.
2026-04-16 13:35:47 -07:00
Brennan Benson
7db6270b91
Show split actions on the active pane header (#695) 2026-04-16 11:59:36 -07:00
github-actions[bot]
639f126aa6 release: 1.2.3-rc.1 [rc-slot:2026-04-16-04] 2026-04-16 11:16:58 +00:00
github-actions[bot]
9a63289740 release: 1.2.3-rc.0 [rc-slot:2026-04-16-03] 2026-04-16 10:24:37 +00:00
Neil
0a29512996 1.2.2 2026-04-16 01:13:29 -07:00
Jinjing
22e2b90ad8
fix: exclude orphaned worktrees from active agent count (#709)
tabsByWorktree can retain entries for worktrees deleted outside Orca or
whose cleanup didn't complete. This caused phantom agents to appear in
the titlebar count. Now both countWorkingAgents and
getWorkingAgentsPerWorktree filter against worktreesByRepo as the source
of truth.
2026-04-16 00:54:41 -07:00
Jinjing
a928d56a50
fix: improve new-tab button spacing and dropdown alignment (#708)
Increase gap between last tab and the "+" button (ml-0.5 → ml-2),
add more vertical padding to dropdown menu items (py-0.5 → py-1.5),
and align dropdown to open rightward (align end → start).
2026-04-16 00:39:55 -07:00
Neil
35e0c9811d 1.2.2-rc.3 2026-04-16 00:11:17 -07:00