Commit Graph

1664 Commits

Author SHA1 Message Date
Jinjing cfa99fd71d
refine orca-cli and orchestration skill frontmatter (#1642)
Sharpens the routing boundary so agents reliably pick the right skill:
orchestration owns agent-to-agent messaging (writes that target another
AI agent's terminal), while orca-cli owns worktrees, browser, and
non-agent terminal I/O — including reads and waits on agent terminals.
Validated against adversarial routing tests.

Co-authored-by: Orca <help@stably.ai>
2026-05-09 18:30:23 -07:00
Neil 3b87505a97
feat: show unread count in macOS Dock (#1641) 2026-05-09 18:28:56 -07:00
Jinjing 7c51f07858
fix: allow any composer ancestor for cmd+enter submit (#1639)
Co-authored-by: Orca <help@stably.ai>
2026-05-09 18:17:39 -07:00
Neil 4e8be92c84
Revert "fix(skills): remove broken doc references in orca-cli SKILL.md" (#1638) 2026-05-09 18:03:59 -07:00
xiaolai f22d046160
fix(skills): remove broken doc references in orca-cli SKILL.md (#973)
* fix(skills): remove broken doc references in orca-cli SKILL.md

Three files listed under ## References do not exist in the repository:
docs/orca-cli-focused-v1-status.md, docs/orca-cli-v1-spec.md, and
docs/orca-runtime-layer-design.md. Agents following the skill would hit
dead links when trying to resolve ambiguous CLI behavior. Replace the
stale list with a general pointer to the docs/ directory.

Co-Authored-By: Claude Code <noreply@anthropic.com>

* docs: remove stale Orca CLI doc index

---------

Co-authored-by: claude[bot] <claude[bot]@users.noreply.github.com>
Co-authored-by: Claude Code <noreply@anthropic.com>
Co-authored-by: Neil <4138956+nwparker@users.noreply.github.com>
2026-05-09 17:58:49 -07:00
buf0-bot[bot] 778691e6a1
revert: remove re-introduced fetchWorktrees poll from #1572 (#1637)
The buf0-bot fix-PR #1572 (findings from #1524) re-added a 30s
focus-gated fetchWorktrees poll in useGitStatusPolling that #1524 was
specifically removing. The other two findings in #1572 (worktrees:list
auth-cache poisoning and detached-HEAD encoding) are preserved.

Why: parent PR #1524's intent was to reduce background polling; the
bot's 'restoration' was an unintended behavior re-add framed as a bug
fix.

Co-authored-by: orca-bot <bot@stably.ai>
2026-05-09 17:44:28 -07:00
buf0-bot[bot] aa70c943f4
Revert "fix: pr-bug-scan findings from #1551" (#1571) (#1635)
Co-authored-by: orca-bot <bot@stably.ai>
2026-05-09 17:41:47 -07:00
buf0-bot[bot] 2b133972fa
Revert "fix: pr-bug-scan findings from #1468" (#1559) (#1636)
Co-authored-by: orca-bot <bot@stably.ai>
2026-05-09 17:40:48 -07:00
Cristian Lopez 1736f08dc7
fix(tabs): close-others/close-to-right on editor & browser tabs
Fix mixed terminal/editor/browser tab context menu actions by resolving visible ids back to unified tab ids and counting all visible tab kinds for Close Others.\n\nAdds regression coverage for TabBar menu wiring and TabGroupPanel visible-id resolution.
2026-05-09 17:19:35 -07:00
Jinjing 2e1a3ab17a
Revert "fix: pr-bug-scan findings from #1565" (#1634)
Co-authored-by: Orca <help@stably.ai>
2026-05-09 16:52:34 -07:00
Jinjing cd30a335d1
fix: address review findings (#1633) 2026-05-09 16:32:07 -07:00
github-actions[bot] 2e882fb420 release: v1.3.46-rc.2 2026-05-09 23:30:27 +00:00
Neil 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
github-actions[bot] d345aeda65 release: v1.3.46-rc.1 [rc-slot:2026-05-09-15] 2026-05-09 22:19:04 +00:00
buf0-bot[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] 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] 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] 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] 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] 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] 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] 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] 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] 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
github-actions[bot] 8b0d378eb1 release: v1.3.46-rc.0 [rc-slot:2026-05-09-03] 2026-05-09 10:26:16 +00:00
github-actions[bot] 8151069816 release: v1.3.45 2026-05-09 09:06:24 +00:00
Neil 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
Jinjing e8c56be897
test: harden terminal attention e2e (#1626) 2026-05-09 01:20:35 -07:00
Neil 5eb5043344
Move STYLEGUIDE.md into docs/ (#1625)
Co-authored-by: Orca <help@stably.ai>
2026-05-09 01:08:35 -07:00
github-actions[bot] e602decf1d release: v1.3.44 2026-05-09 08:05:39 +00:00
Jinjing 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
Jinjing 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 Hong b023c5713e
Polish rich markdown editor interactions (#1609)
Co-authored-by: Orca <help@stably.ai>
2026-05-08 23:28:01 -07:00
Brennan Benson 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 Benson 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
Matt Van Horn 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 Benson 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
github-actions[bot] a44ab4130c release: v1.3.43-rc.1 [rc-slot:2026-05-08-15] 2026-05-08 22:24:51 +00:00
Jinjing 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
github-actions[bot] fc3b44b77f release: v1.3.43-rc.0 2026-05-08 21:54:35 +00:00
Jinjing 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 Benson 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 Benson 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
Jinjing 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 Benson 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