Commit Graph
3283 Commits
Author SHA1 Message Date
Jinjing cd30a335d1 fix: address review findings (#1633) 2026-05-09 16:32:07 -07:00
NeilandNeil Parker 09ca40e4ac fix(windows): window-controls hover height matches titlebar (#1632)
* feat(windows): custom title bar with renderer-drawn window controls

Replace the default Windows native title bar with a custom renderer-drawn
titlebar to match the macOS experience:

- Set titleBarStyle:'hidden' on win32 to remove the OS chrome
- Add min/max/close buttons (Fluent-style SVG) fixed to the top-right corner,
  rendered last in DOM order so they're never blocked by -webkit-app-region:drag
- Route close through IPC (window:close-requested) so the terminal-running
  confirmation guard stays active; minimize/maximize via window:minimize and
  window:maximize IPC channels
- Add maximize state sync (window:maximize-changed) so the restore icon shows
  correctly
- Add Orca logo + ··· application-menu button on the left in place of the bare
  pl-2 spacer; ··· calls Menu.getApplicationMenu().popup() replicating Alt-key
  reveal
- Add window-controls-titlebar-spacer to reserve 138px on the right of the
  full-width titlebar so content isn't obscured by the overlay

* fix(windows): titlebar logo color and window-controls overlap

- Logo light-mode invert: :not(.dark) selector was matching in dark mode
  because .dark lives on <html> (:root), not on a descendant. Fixed to
  :root:not(.dark) so the invert(1) filter only fires in light mode.

- Overlap with right-side controls: introduce --window-controls-width CSS
  var (138px on Windows, 0px elsewhere) on the root div so every affected
  surface reads a single source of truth:
  - Workspace-view floating sidebar toggle (absolute top-0): right now uses
    var(--window-controls-width) instead of hardcoded 0
  - window-controls-titlebar-spacer width uses the var
  - Right sidebar header: new .right-sidebar-header-inset class adds
    padding-right: var(--window-controls-width) to both the top-activity-bar
    and side-layout header variants so the close button is never hidden

* fix(windows): window-controls hover must not bleed below titlebar

The .window-controls container and .window-controls-btn were both 42px
tall while the titlebar is 36px. The hover background filled the full
button height, painting 6px of highlight into the content area below
the titlebar. Shrink both to 36px to match.

* fix(windows): side activity bar icons obscured by window-controls overlay

In side-bar activity-bar mode the icon strip is flush against the right
window edge. The fixed-position window-controls overlay (138×36px)
covers the top-right corner, making the topmost icons unreachable.

Add --window-controls-height (36px on Windows, 0px elsewhere) CSS var
and apply it as padding-top on the side activity bar via
.side-activity-bar-windows-inset — same pattern used by
--window-controls-width for the horizontal dimension.

---------

Co-authored-by: Neil Parker <nwparker@anthropic.com>
2026-05-09 16:20:02 -07:00
buf0-bot[bot]andorca-bot 616dbb3117 fix: pr-bug-scan findings from #1564 (#1610)
Restored proportional-alpha fade for antialiased magenta-key edges by replacing the hard g>=60 gate with a dominance-floor (dom>0.4) check while keeping purples/pinks rejected.

### Findings addressed
- ✅ [medium] src/renderer/src/components/pet/pet-blob-cache.ts:130 — Magenta key no longer fades antialiased edges, leaving halos

Rebased onto current main; bot's intended file (sidekick-blob-cache.ts) maps to current main's pet-blob-cache.ts (sidekick rename hasn't landed).

Co-authored-by: orca-bot <bot@stably.ai>
2026-05-09 04:10:33 -07:00
buf0-bot[bot]andorca-bot e6e45dc22a fix: pr-bug-scan findings from #1565 (#1613)
Added windowsShell parameter to buildAgentDraftLaunchPlan so the post-exit clear-var uses Remove-Item Env: on PowerShell/pwsh and set "FOO=" on cmd.exe; threaded settings.terminalWindowsShell through both call sites.

### Findings addressed
- ✅ **[high]** `src/renderer/src/lib/tui-agent-startup.ts:160-163` — Windows clear-var command only works in cmd.exe, breaks in PowerShell

Rebased onto current main; added settings?.terminalWindowsShell to the useCallback dep array in useComposerState to satisfy react-hooks/exhaustive-deps.

Co-authored-by: orca-bot <bot@stably.ai>
2026-05-09 04:07:39 -07:00
buf0-bot[bot]andorca-bot 337ae272b8 fix: pr-bug-scan findings from #1569 (#1611)
Made installRemoteWatcher return tri-state ('installed'|'unavailable'|'cancelled') so scheduleRemoteWatcherRetry only re-arms on 'unavailable', preventing stale overflow after unwatch/shutdown.

Findings addressed:
- [medium] src/main/ipc/filesystem-watcher.ts:540-549 — Cancelled install reschedules retries; stale overflow fires after unwatch

Rebased onto current main to resolve conflicts.

Co-authored-by: orca-bot <bot@stably.ai>
2026-05-09 04:06:13 -07:00
buf0-bot[bot]andorca-bot f8837fe3f3 fix: pr-bug-scan findings from #1562 (#1612)
Added DeviceRegistry.rotatePendingDevice and threaded a 'rotate' option through the mobile:getPairingQR IPC + preload + MobilePane so explicit Regenerate clicks mint a fresh pending token instead of returning the same one.

Findings addressed:
- [medium] src/main/runtime/device-registry.ts:44-50 — 'Regenerate QR' no longer rotates the token

Rebased onto current main to resolve conflicts.

Co-authored-by: orca-bot <bot@stably.ai>
2026-05-09 04:05:55 -07:00
buf0-bot[bot]andorca-bot f2c01d837d fix: pr-bug-scan findings from #1586 (#1615)
PetOverlay loadStoredPosition now falls back to the legacy 'sidekick-overlay-position' localStorage key and write-throughs to the new key. Deleted orphaned src/main/ipc/sidekick-pet-bundle.ts and its test.

Rebased onto current main to resolve conflicts.

Co-authored-by: orca-bot <bot@stably.ai>
2026-05-09 04:03:00 -07:00
buf0-bot[bot]andorca-bot 4541383f87 fix: pr-bug-scan findings from #1599 (#1616)
Made updateWorktreeMeta best-effort in launch-work-item-direct so a meta write failure no longer aborts the already-created workspace and orphans it.

### Findings addressed
- ✅ **[medium]** `src/renderer/src/lib/launch-work-item-direct.ts:243` — Meta update failure now aborts a successfully created workspace

Rebased onto current main to resolve conflicts.

Co-authored-by: orca-bot <bot@stably.ai>
2026-05-09 04:02:43 -07:00
buf0-bot[bot]andorca-bot 5c29d5338f fix: pr-bug-scan findings from #1597 (#1614)
Added process.on('exit') restore handler so the renamed spawn-helper is restored even if the vitest worker is killed mid-test.

Findings addressed:
- [low] src/main/daemon/node-pty-fd-leak.test.ts:57 — Test renames helper binary; crash leaves it hidden

Rebased onto current main to resolve conflicts.

Co-authored-by: orca-bot <bot@stably.ai>
2026-05-09 04:02:19 -07:00
buf0-bot[bot]andneil 5dfcf1eaca fix: pr-bug-scan findings from #1596 (#1617)
Fixed onboarding next() re-entrance with a synchronous in-flight ref guard, and tightened sanitizeOnboardingUpdate's closedAt to require a finite non-negative number.

Findings addressed:
- [medium] src/renderer/src/components/onboarding/use-onboarding-flow.ts — next() not re-entrant
- [low] src/main/persistence.ts — sanitizeOnboardingUpdate accepts NaN/Infinity for closedAt

Rebased onto current main to resolve conflicts; preserved main's advancedVia parameter and duration_ms telemetry inside the new in-flight guard.

Co-authored-by: neil <neil@stably.ai>
2026-05-09 03:59:33 -07:00
buf0-bot[bot]andorca-bot 9db736c330 fix: pr-bug-scan findings from #1583 (#1618)
Fixed Windows titlebar bugs: WindowControls icon now seeded via new ipc isMaximized() getter on mount; CSS height dropped from 42px to 36px; spacer added to floating right-sidebar toggle and RightSidebar header so content isn't occluded.

Findings addressed:
- [medium] src/renderer/src/App.tsx:50-54 — WindowControls maximize icon wrong on startup if window starts maximized
- [medium] src/renderer/src/assets/main.css:434-460 — Window controls 42px tall but titlebar 36px — bottom 6px overlays content
- [low] src/renderer/src/App.tsx:776-803 — Spacer only rendered in workspace-active titlebar branch

Rebased onto current main to drop ~140 unrelated stale-main reverts; only the 6 Fixer-summary files are touched.

Co-authored-by: orca-bot <bot@stably.ai>
2026-05-09 03:59:12 -07:00
buf0-bot[bot]andneil 6e91777f96 fix: pr-bug-scan findings from #1600 (#1619)
Fixed 6 findings: legacy fetch fallback for local-only bases, memoized canonical fetch key, recorded reconcile token before await, cleared token in finally, configurable publish remote, and fetch-failure-aware base ref error.

Rebased onto current main applying only the Fixer-summary files (worktree-remote.ts, orca-runtime.ts) to avoid silent reverts from a stale base.

Co-authored-by: neil <neil@nous.com>
2026-05-09 03:58:28 -07:00
NeilandNeil Parker 835087e77c fix(windows): titlebar logo color and window-controls overlap (#1627)
Co-authored-by: Neil Parker <nwparker@anthropic.com>
2026-05-09 02:05:28 -07:00
JinjingandOrca 89528f27c0 fix(sidebar): remove confusing base-drift banner from worktree card (#1622)
Co-authored-by: Orca <help@stably.ai>
2026-05-09 00:29:16 -07:00
JinjingandOrca ce67f794d2 fix(worktree): allow Unicode letters/numbers in workspace names (#1624)
Users typing CJK or other non-ASCII names (e.g. 中文) into the Create
Workspace dialog hit "Invalid worktree name" because the sanitizer's
ASCII-only allowlist stripped every character, leaving an empty string.

Replace the allowlist with a Unicode-aware one (\p{L}\p{N}) so non-Latin
scripts pass through. Git ref-format and modern filesystems accept UTF-8.

Co-authored-by: Orca <help@stably.ai>
2026-05-09 00:27:41 -07:00
Jinwoo HongandOrca b023c5713e Polish rich markdown editor interactions (#1609)
Co-authored-by: Orca <help@stably.ai>
2026-05-08 23:28:01 -07:00
Brennan BensonandOrca 3dc5708eb3 fix(diff-comments): scroll diff to clicked note, drop sidebar pencil (#1605)
Co-authored-by: Orca <help@stably.ai>
2026-05-08 23:00:50 -07:00
Brennan BensonandOrca 318e2b4c2c feat(telemetry): onboarding cohort + extension events (#1608)
Co-authored-by: Orca <help@stably.ai>
2026-05-08 19:57:18 -07:00
Jinjing 68d42040f4 fix: isolate e2e daemon and onboarding state (#1606) 2026-05-08 17:45:02 -07:00
f5be12b4a3 feat(add-repo): auto-fill clone destination with workspace parent dir (#1594)
* feat(add-repo): auto-fill clone destination with workspace parent dir

Pre-fills the Clone from URL destination on first entry to the clone step,
deriving the parent directory of settings.workspaceDir so users with the
default config land at ~/orca instead of an empty field that blocks the
Clone button.

Closes #1592

* review: silence max-lines on AddRepoDialog

The PR pushes the file from 411 to 433 lines, over the 400-line cap
for src/renderer/. Matches existing precedent in this dir (RemoteFileBrowser,
WorktreeCard, WorktreeList all carry the same disable + why-comment).

Co-authored-by: Orca <help@stably.ai>

---------

Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: Jinjing <6427696+AmethystLiang@users.noreply.github.com>
Co-authored-by: Orca <help@stably.ai>
2026-05-08 17:37:41 -07:00
Brennan BensonandOrca 325ee96ec4 docs(styleguide): UI style guide + AGENTS pointer + selection token cleanup (#1601)
Co-authored-by: Orca <help@stably.ai>
2026-05-08 15:38:09 -07:00
JinjingandOrca 11b362c92d feat(worktree): optimistic create with reconciled base status (#1600)
Surface worktree creation immediately and reconcile remote base state
asynchronously, emitting drift/conflict events as fetches complete.

Co-authored-by: Orca <help@stably.ai>
2026-05-08 14:59:23 -07:00
Jinjing cca7c83c80 fix: link issue metadata before workspace launch (#1599) 2026-05-08 14:58:13 -07:00
JinjingandOrca e0851ec722 feat: onboarding flow for new users (#1596)
* wip

* WIP: Changes before auto-review fixes

Co-authored-by: Orca <help@stably.ai>

* WIP: Changes before auto-review fixes

Co-authored-by: Orca <help@stably.ai>

* WIP: Changes before auto-review fixes

Co-authored-by: Orca <help@stably.ai>

* fix: address auto-review findings (iteration 1)

Co-authored-by: Orca <help@stably.ai>

* fix: address auto-review findings (iteration 2)

Co-authored-by: Orca <help@stably.ai>

* fix: archive review context and improve agent detection on wizard mount

Co-authored-by: Orca <help@stably.ai>

* fix: address CI lint failures and split use-onboarding-flow.ts

Co-authored-by: Orca <help@stably.ai>

* fix: mock ./onboarding in register-core-handlers test

Co-authored-by: Orca <help@stably.ai>

* fix: also toggle light class on documentElement so onboarding e2e theme wait resolves

The onboarding e2e calls waitForFunction(() => classList.contains('dark') || classList.contains('light')) before snapshotting the starting theme. applyDocumentTheme only toggled 'dark', so on a host that resolves system to light the wait timed out (CI Linux headless). Toggle 'light' as the inverse class so consumers can observe the resolved theme symmetrically; Tailwind keys only on 'dark' so styling is unchanged.

Co-authored-by: Orca <help@stably.ai>

* fix: add braces to Landing menu close-on-outside-click handler

oxlint config requires braces for all if statements.

Co-authored-by: Orca <help@stably.ai>

* chore: trigger CI

Co-authored-by: Orca <help@stably.ai>

---------

Co-authored-by: Orca <help@stably.ai>
2026-05-08 14:17:50 -07:00
Brennan BensonandOrca 2050fa87a0 feat(source-control): send all notes to agent in a new terminal tab (#1568)
Co-authored-by: Orca <help@stably.ai>
2026-05-08 13:52:08 -07:00
Brennan BensonandOrca 2fafb9b351 fix(opencode): light up worktree status dot for opencode panes (#1593)
Co-authored-by: Orca <help@stably.ai>
2026-05-08 13:43:49 -07:00
Jinjing 3cf4f7e93d Close node-pty spawn failure fds (#1597) 2026-05-08 13:27:53 -07:00
JinjingandOrca 97c91e8af3 fix: scroll long SSH target list in Add Repo dialog (#1598)
Co-authored-by: Orca <help@stably.ai>
2026-05-08 13:26:49 -07:00
Jinjing bcbb7528bd Close node-pty macOS slave fd (#1588) 2026-05-08 13:09:09 -07:00
Jinjing 2dcff0687f fix: rename sidekick to pet (#1586) 2026-05-08 13:04:09 -07:00
Brennan BensonandOrca f5492c0043 feat(diff-comments): edit notes inline from diff card and sidebar (#1570)
Co-authored-by: Orca <help@stably.ai>
2026-05-08 12:59:51 -07:00
JinjingandOrca 1fbe7d9dbf Improve node-pty spawn diagnostics (#1587)
* Improve node-pty spawn diagnostics

* Preserve original error stack when adding node-pty recovery hint

Mutate the existing Error's message instead of replacing the object so
the original stack trace and custom fields survive into telemetry/logs.

Co-authored-by: Orca <help@stably.ai>

---------

Co-authored-by: Orca <help@stably.ai>
2026-05-08 12:53:03 -07:00
Brennan BensonandOrca 952ee7a6ec fix(opencode): mirror user OPENCODE_CONFIG_DIR via per-PTY overlay (#1595)
Co-authored-by: Orca <help@stably.ai>
2026-05-08 12:12:19 -07:00
Brennan BensonandOrca 002e2acc38 feat(telemetry): onboarding-funnel events + nth_repo_added cohort (#1591)
Co-authored-by: Orca <help@stably.ai>
2026-05-08 10:50:43 -07:00
JinjingandOrca 20f950de3d feat(editor): register custom Monaco language for .astro files (#1590)
Map .astro to a dedicated 'astro' language with frontmatter, embedded
script/style, and expression interpolation handling, instead of falling
back to plain html.

Co-authored-by: Orca <help@stably.ai>
2026-05-08 10:24:43 -07:00
JinjingandOrca e400191cf0 fix(filesystem-auth): allow worktree access through macOS /var canonical alias (#1589)
#1524 stopped realpath'ing every worktree root during background refreshes
to avoid TCC prompts, which broke File Explorer for worktrees registered
under /var/folders when realpath canonicalizes them to /private/var/folders.

Lazily canonicalize the registered root only when the user actively touches
it: pass the pre-realpath source path through resolveAuthorizedPath so
isPathAllowedIncludingRegisteredWorktrees can match the canonical target
against the source's registered ancestor and cache the canonical root for
future lookups.

Co-authored-by: Orca <help@stably.ai>
2026-05-08 10:22:15 -07:00
Jinjing 884feb42b2 fix: add update recheck action (#1585) 2026-05-08 09:38:52 -07:00
NeilandNeil Parker 7c45ef45b4 feat(windows): custom title bar with renderer-drawn window controls (#1583)
Replace the default Windows native title bar with a custom renderer-drawn
titlebar to match the macOS experience:

- Set titleBarStyle:'hidden' on win32 to remove the OS chrome
- Add min/max/close buttons (Fluent-style SVG) fixed to the top-right corner,
  rendered last in DOM order so they're never blocked by -webkit-app-region:drag
- Route close through IPC (window:close-requested) so the terminal-running
  confirmation guard stays active; minimize/maximize via window:minimize and
  window:maximize IPC channels
- Add maximize state sync (window:maximize-changed) so the restore icon shows
  correctly
- Add Orca logo + ··· application-menu button on the left in place of the bare
  pl-2 spacer; ··· calls Menu.getApplicationMenu().popup() replicating Alt-key
  reveal
- Add window-controls-titlebar-spacer to reserve 138px on the right of the
  full-width titlebar so content isn't obscured by the overlay

Co-authored-by: Neil Parker <nwparker@anthropic.com>
2026-05-08 00:36:37 -07:00
83b3369ea5 fix: Support Codex pet sidekick animations (#1533)
* Support Codex pet sidekick animations

* Refine Codex pet defaults and drop unused failed animation state

Always default spritesheetPath to spritesheet.webp when a manifest
omits it, even when explicit frame/animation metadata is present, so
non-Codex bundles still benefit from the standard sheet name.

Drop the 'failed' animation entirely — Orca has no failure state, so
mapping interrupted completions to 'failed' would conflate user
cancellation with agent failure. Codex spritesheets can still expose
a 'failed' row as an asset contract, but it's never selected at runtime.

Co-authored-by: Orca <help@stably.ai>

---------

Co-authored-by: Jinjing <6427696+AmethystLiang@users.noreply.github.com>
Co-authored-by: Orca <help@stably.ai>
2026-05-07 23:50:20 -07:00
buf0-bot[bot]andorca-bot a3242035c2 fix: pr-bug-scan findings from #1478 (#1561)
Fixed banner Docs link to use openExternal IPC like the block variant; restricted hasKeyringFallback to same-host keyring accounts so multi-host users aren't told a fallback exists when none does.

Findings addressed:
- src/renderer/src/components/github-project/GhAuthErrorHelp.tsx:218-227 — Banner Docs link uses <a target="_blank"> instead of shell IPC
- src/main/github/auth-diagnose.ts:121-127 — hasKeyringFallback ignores host, can mislead multi-host users

Rebased onto current main to drop unrelated reverts.

Co-authored-by: orca-bot <bot@stably.ai>
2026-05-07 23:14:05 -07:00
buf0-bot[bot]andorca-bot 57d095bf6f fix: pr-bug-scan findings from #1475 (#1562)
host-store: write AsyncStorage metadata before SecureStore token to avoid orphaned keychain tokens on crash. mobile IPC: coalesce repeated getPairingQR calls onto a single pending device token via new DeviceRegistry.getOrCreatePendingDevice.

Findings addressed:
- [high] mobile/src/transport/host-store.ts — saveHost orders Keychain write before AsyncStorage — orphaned tokens on crash
- [low] src/main/ipc/mobile.ts:84-95 — getPairingQR creates a device token on every call, leaking pre-paired entries

Rebased onto current main to resolve conflicts; preserved tokenCache.set added on main.

Co-authored-by: orca-bot <bot@stably.ai>
2026-05-07 23:11:03 -07:00
buf0-bot[bot]andorca-bot 74159b43d1 fix: pr-bug-scan findings from #1477 (#1565)
Reordered pi prefill extension to check event.reason before consuming env var; appended shell unset/clear for ORCA_PI_PREFILL after pi exits to avoid stale prefill on rerun.

Findings addressed:
- src/main/pi/titlebar-extension-service.ts:36-46 — Prefill env var consumed before reason check — may silently drop prefill
- src/main/pi/titlebar-extension-service.ts:30-46 — ORCA_PI_PREFILL still set in shell env after pi exits

Rebased onto current main.

Co-authored-by: orca-bot <bot@stably.ai>
2026-05-07 23:10:43 -07:00
buf0-bot[bot]andorca-bot ba034c3c3d fix: pr-bug-scan findings from #1454 (#1567)
Addresses two SIGKILL/wake-routing bugs:

- setWorkspaceSession now merges prior tab.ptyId / ptyIdsByLeafId
  when the incoming snapshot's binding is empty, closing the second
  half of the SIGKILL race that could clobber persistPtyBinding.
- DaemonPtyRouter.shutdown skips sessionAdapters.delete when
  keepHistory=true so legacy-adapter sessions wake on the right
  adapter on resume.

Co-authored-by: orca-bot <bot@stably.ai>
2026-05-07 23:07:38 -07:00
buf0-bot[bot]andorca-bot cd686f58d0 fix: pr-bug-scan findings from #1551 (#1571)
Re-added the `item.type !== 'pr'` guard around the relocated 'Start workspace from issue' button in GHEditSection so PRs no longer show it.

### Findings addressed
- ✅ **[medium]** `src/renderer/src/components/GitHubItemDialog.tsx` — 'Start workspace from issue' now renders on PRs

Rebased onto current main; removed the now-redundant early `return null` for PRs at the top of GHEditSection so the per-button guard is reachable and labels/assignees popovers remain available on PRs.

Co-authored-by: orca-bot <bot@stably.ai>
2026-05-07 23:06:47 -07:00
buf0-bot[bot]andorca-bot 98d3deaa13 fix: pr-bug-scan findings from #1508 (#1569)
Fix race between in-flight remote watcher install and unwatch/shutdown by tracking cancel tokens; emit overflow fs:changed when the 60s retry timeout gives up so renderer falls back to manual refresh.

### Findings addressed
- [medium] src/main/ipc/filesystem-watcher.ts:445-480 — Race between in-flight installRemoteWatcher and unwatch/shutdown leaks watcher
- [low] src/main/ipc/filesystem-watcher.ts:497-505 — Silent timeout: 60s give-up never notifies renderer

Rebased onto current main.

Co-authored-by: orca-bot <bot@stably.ai>
2026-05-07 23:03:13 -07:00
buf0-bot[bot]andorca-bot 390f9f52fc fix: pr-bug-scan findings from #1524 (#1572)
Don't seed empty-success worktree roots in worktrees:list[All] catch (prevents auth-cache poisoning); restored focus-gated fetchWorktrees polling for the active repo so non-active worktrees pick up terminal-driven branch switches; encode detached HEAD as undefined instead of '' so renderer's nullish-coalescing preserves prior branch.

Rebased onto current main to apply only the intended diff.

Co-authored-by: orca-bot <bot@stably.ai>
2026-05-07 22:59:33 -07:00
buf0-bot[bot]andorca-bot 493f08bfa5 fix: pr-bug-scan findings from #1472 (#1564)
Fixed bundle-sheet keyed-canvas discard, narrowed magenta key threshold to avoid keying purples/pinks, hardened bundle copyFile against TOCTOU via O_NOFOLLOW, and skipped frame detection when the manifest already provides a valid sprite layout.

Rebased onto current main to resolve conflicts; reviewed and merged round-1 reviewer feedback (no committed node_modules).

Co-authored-by: orca-bot <bot@stably.ai>
2026-05-07 22:07:58 -07:00
buf0-bot[bot]andorca-bug-scan-bot 8d9b629b26 fix: pr-bug-scan findings from #1468 (#1559)
Co-authored-by: orca-bug-scan-bot <orca-bug-scan-bot@stably.ai>
2026-05-07 21:58:55 -07:00
buf0-bot[bot]andorca-bug-scan-bot 9bc8166ad8 fix: pr-bug-scan findings from #1465 (#1558)
Co-authored-by: orca-bug-scan-bot <orca-bug-scan-bot@stably.ai>
2026-05-07 21:58:13 -07:00
JinjingandOrca a41a663448 fix(new-workspace): keep Cmd/Ctrl+Enter submit working after source selection (#1557)
Selecting a PR/issue/Linear row replaces the focused input with a source
pill, which causes Chromium to retarget the next keydown to document.body.
Allow body/documentElement as submit targets so the modal shortcut keeps
working post-selection. Also tighten the modifier check to be platform-
exclusive (Cmd-only on Mac, Ctrl-only elsewhere).

Co-authored-by: Orca <help@stably.ai>
2026-05-07 20:25:50 -07:00