Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
5491 commits
Select commit Hold shift + click to select a range
2a83c95
ci(daemon): gate PRs on daemon protocol crossing from the newest rele…
OrcaWin Oct 1, 2026
a37e502
test(native-chat): cancel the journal import test's tick before teard…
brennanb2025 Oct 1, 2026
b245b3e
feat(sidebar): let the host pill be turned off per card (#24299)
nwparker Oct 1, 2026
4bd55c0
fix(claude): a Stop ends Claude's process, and the next message resum…
brennanb2025 Oct 1, 2026
d4ae6a9
Update README downloads badge
github-actions[bot] Oct 1, 2026
d2dfc79
ci(daemon): runtime-launcher protocol ratchet and Node slot marker (#…
OrcaWin Oct 1, 2026
3e5c8d9
feat(relay): declare Asia cell c31 at the c30 shape (#24310)
Jinwoo-H Oct 1, 2026
6593d7d
feat(orcad): run orcad on the pinned Node instead of Bun (#24110)
OrcaWin Oct 1, 2026
94f6c53
fix(relay): gate the Asia canary on Asia-targeted region fallbacks on…
Jinwoo-H Oct 1, 2026
6b8ca27
chore(relay): move Asia cell c31 to the general same-cap lists after …
Jinwoo-H Oct 1, 2026
8c2cd7d
feat(ai-vault): read remote OpenCode history with the pinned Node; re…
OrcaWin Oct 1, 2026
9ddcc9b
fix(ssh): collect relay versions only when provably exited; runtimes/…
OrcaWin Oct 1, 2026
ddd4927
build(orcad): server node-pty slots at glibc 2.28, plus a glibc 2.17 …
OrcaWin Oct 1, 2026
a560137
feat(ssh): opt-in SSH relay on the pinned Node with prebuilt addons (…
OrcaWin Oct 1, 2026
3a6148e
refactor(native-chat): move the provider-exit proof out of structured…
brennanb2025 Oct 1, 2026
53fd2de
feat(ssh): relay runtime fallback ladder, telemetry and host runtime …
OrcaWin Oct 1, 2026
9ed7b39
fix(relay): run the same-cap headroom gate in the modes the job actua…
Jinwoo-H Oct 1, 2026
67014c8
feat(ssh): pinned-Node relay on Windows SSH hosts (#24135)
OrcaWin Oct 1, 2026
bd90da7
ci: share PR planning setup and reuse the static native cache (#24329)
nwparker Oct 1, 2026
38cb4a0
feat(ssh): runtime-store GC in production and exec-stdin upload fallb…
OrcaWin Oct 1, 2026
5f728f7
fix(relay): let a draining cell pass restart-safe through refused red…
Jinwoo-H Oct 1, 2026
6aed054
ci(ssh): hostile-host matrix for the relay runtime ladder (#24146)
OrcaWin Oct 1, 2026
dfdcfcf
feat(ssh): plain SSH terminals and SFTP browsing when no Orca runtime…
OrcaWin Oct 1, 2026
14d4bb2
fix(ssh): Windows hosts without Add-Type staging; runtime-store GC on…
OrcaWin Oct 1, 2026
c422936
fix(relay): anchor same-cap monitor evidence freshness to the run's a…
Jinwoo-H Oct 1, 2026
554f7f4
feat(packaging): ship the orcad server template in desktop builds (#2…
OrcaWin Oct 1, 2026
0ad77ea
ci(ssh): Windows SSH-host lanes (inbox + preview OpenSSH) for the pin…
OrcaWin Oct 1, 2026
2e3bd20
fix(relay): detach a socket client as peer-closed when a write fails …
OrcaWin Oct 1, 2026
f9940d5
ci(ssh): macOS SSH-host lane for the pinned relay; fix uploads under …
OrcaWin Oct 1, 2026
744e772
fix(relay): accept MIG version-name reconciliation and recreate stran…
Jinwoo-H Oct 1, 2026
8afa1db
feat(ssh): rung B glibc 2.17 compat runtime; gate remote vault on hos…
OrcaWin Oct 1, 2026
6d1a97e
fix(ssh): launch the Windows relay outside sshd's job so standard use…
OrcaWin Oct 1, 2026
3aa2d3a
feat(relay): land the #16741 T1 seam (work drain, publication drain, …
OrcaWin Oct 1, 2026
0b812bd
feat(relay): route relay handlers through work admission; producer pu…
OrcaWin Oct 1, 2026
a789233
refactor(runtime-rpc): extract the Node WebSocket lifecycle; opt-in p…
OrcaWin Oct 1, 2026
dc08ffe
feat(relay): fence and drain file and git response streams on shutdow…
OrcaWin Oct 1, 2026
c991893
feat(ssh): port the SSH connection work ledger and transport close le…
OrcaWin Oct 1, 2026
817af76
feat(daemon): tag daemon stream data with the PTY incarnation id (#16…
OrcaWin Oct 1, 2026
60c9326
feat(profiles): carry markdown frontmatter visibility in project tran…
OrcaWin Oct 1, 2026
99e0303
fix(runtime): project the PTY incarnation onto mobile session tabs (#…
OrcaWin Oct 1, 2026
4e8edc8
feat(ssh): wire SshConnection through the work and transport close le…
OrcaWin Oct 1, 2026
449b8ca
fix(drop): route local terminal and composer drops through the resolv…
AmethystLiang Oct 1, 2026
7176648
fix(native-chat): every chat action press is its own action (re-land …
brennanb2025 Oct 1, 2026
e42c0b3
fix(orchestration): call the Orca session ID orca_session_id everywhe…
brennanb2025 Oct 1, 2026
6b36e4f
feat(relay): await owned watcher and agent children on shutdown (#167…
OrcaWin Oct 1, 2026
d23ecef
feat(session): retry failed renderer session writes and verify local …
OrcaWin Oct 1, 2026
ff212db
feat(daemon): idle retirement, session census and recovery-only provi…
OrcaWin Oct 1, 2026
92cb717
feat(ssh): add pty.resumeClient and split SSH PTY process listing (#1…
OrcaWin Oct 1, 2026
dd87ae5
feat(ssh): remote orcad primitives on the pinned Node runtime (#16741…
OrcaWin Oct 1, 2026
ece9e4d
fix(runtime): fence runtime-environment subscriptions and status prob…
OrcaWin Oct 1, 2026
3fbdaba
feat(orcad): migration manifest and dormant-state contracts (#16741 T…
OrcaWin Oct 1, 2026
c6cfcc0
refactor(native-chat): structured chat failures always reach the diag…
brennanb2025 Oct 1, 2026
35c8887
fix(i18n): correct Korean working and shell labels (#24341)
isairz Oct 1, 2026
d53063d
feat(ssh): track connection-manager drains, test probes and provider …
OrcaWin Oct 1, 2026
34a582b
feat(relay): capability-gated owner reset with a durable preparation …
OrcaWin Oct 1, 2026
beccdec
fix(native-chat): a Codex Stop that Codex refuses or never answers en…
brennanb2025 Oct 1, 2026
56c7642
test(orcad): skip the live-terminal runtime hand-over across a protoc…
Jinwoo-H Oct 1, 2026
9bcdb6a
fix(native-chat): report a failed Stop child end through the host log…
Jinwoo-H Oct 1, 2026
198fe72
Update README downloads badge
github-actions[bot] Oct 1, 2026
99db2bf
feat(runtime): SSH access links for paired servers in a downgrade-saf…
OrcaWin Oct 1, 2026
197ea3a
Free PR CI capacity by avoiding repeated setup and real-time test wai…
nwparker Oct 1, 2026
b3577b7
test(e2e): drag the manual-order worktree to a slot that changes the …
brennanb2025 Oct 1, 2026
9912042
test(e2e): select the onboarding Codex card by its exact name (#24439)
brennanb2025 Oct 1, 2026
8bf90ce
test(e2e): give the sparse preset proof room to finish on CI (#24442)
brennanb2025 Oct 1, 2026
1a9ac0e
feat(ssh): crash-safe orcad activation, rollback and recovery (#16741…
OrcaWin Oct 1, 2026
b823079
fix(relay): admit drained hosts through their own lane and stagger th…
Jinwoo-H Oct 1, 2026
051ca4d
feat(relay): declare US cells c32 and c33 at the 3,000-host shape (#2…
Jinwoo-H Oct 1, 2026
07dad67
refactor(relay): sample fleet health inside the same-cap roll instead…
Jinwoo-H Oct 1, 2026
ae41eb4
fix(terminal): give plain fish tabs Orca's codex function without cha…
Jinwoo-H Oct 1, 2026
b093d3a
feat(orcad): supervisable server: stop requests, managed stop receipt…
OrcaWin Oct 1, 2026
477e699
fix(codex): install Codex's Interrupt hook so an Esc-cancelled turn s…
Jinwoo-H Oct 1, 2026
976dc00
fix(native-chat): Stop's pause is worked out from the chat's history,…
brennanb2025 Oct 1, 2026
fd5804d
fix(native-chat): after a Stop whose exit can't be confirmed, the nex…
brennanb2025 Oct 1, 2026
43d9b43
feat(ssh): remote orcad stop by request file and journaled decommissi…
OrcaWin Oct 1, 2026
d3f8c50
fix(ssh): orcad GC honors the activation journal; readiness requires …
OrcaWin Oct 1, 2026
b804c13
test(runtime): add a readiness census that pins every tui-idle verdic…
Jinwoo-H Oct 1, 2026
8b76683
feat(ssh): deploy and pair an empty managed orcad server over SSH (#1…
OrcaWin Oct 1, 2026
eefc49f
feat(terminal): warn when a typed Codex joins Codex's shared server (…
Jinwoo-H Oct 1, 2026
38c2d1d
feat(ssh): update, roll back, recover and stop a managed orcad server…
OrcaWin Oct 1, 2026
f69052e
Reuse qualified Windows server builds and dependency verification rec…
nwparker Oct 1, 2026
1553bc3
fix(terminal): reattach a background terminal to its own tab instead …
brennanb2025 Oct 1, 2026
ccb63af
fix(native-chat): a Stop still reads as yours after Orca restarts, be…
brennanb2025 Oct 1, 2026
8c1670f
test(e2e): fake Codex answers the --no-daemon --help probe without a …
brennanb2025 Oct 1, 2026
6e7e964
feat(orchestration): tell each agent its own orchestration address (#…
brennanb2025 Oct 2, 2026
02790c5
Fix Codex status after Ctrl+C copy and side-chat navigation (#24339)
nwparker Oct 2, 2026
4e919f3
test: send Codex Ctrl+C to a live raw terminal fixture (#24480)
nwparker Oct 2, 2026
0d2300c
test(e2e): retry the crash probe's main-process reads through the tra…
brennanb2025 Oct 2, 2026
7577366
fix(native-chat): a paired server admits structured chat by client ca…
brennanb2025 Oct 2, 2026
e3cb327
refactor(runtime): read four agents' readiness from JSON rule files t…
Jinwoo-H Oct 2, 2026
4534087
fix(build): import the Electron remote capability list from its own m…
brennanb2025 Oct 2, 2026
9f39520
fix(native-chat): move the chat-tab surface out of the session host s…
Jinwoo-H Oct 2, 2026
9e34bd0
Revert "fix(markdown): return focus to editor from find bar (#23175)"…
AmethystLiang Oct 2, 2026
9dea72f
fix(claude): an informational note is a warning row in its own words,…
brennanb2025 Oct 2, 2026
444f195
ci: run every cross-version wire test, picked up by folder so new one…
brennanb2025 Oct 2, 2026
8ff6296
Speed up serializer checks and keep native caches stable (#24476)
nwparker Oct 2, 2026
24b97e8
refactor(runtime): read Codex, Claude, OpenCode, Pi, OMP and Gemini r…
Jinwoo-H Oct 2, 2026
cdfdadf
fix(runtime): settle tui-idle on hook state for agents whose hooks co…
Jinwoo-H Oct 2, 2026
11b1c8f
test(e2e): dismiss the browser tour before starting screenshot markup…
nwparker Oct 2, 2026
026b837
test(wire): make release compatibility probes deterministic (#24538)
nwparker Oct 2, 2026
783101b
feat(orcad): source-side dormant export of a relay-hosted SSH target …
OrcaWin Oct 2, 2026
0b7b9a9
test: isolate session fixtures and wait for completed indexing (#24544)
nwparker Oct 2, 2026
1fbfb13
test: isolate seeded Git repositories per Playwright worker (#24550)
nwparker Oct 2, 2026
7ad76f8
test: hold the usage snapshot burst clock fixed (#24551)
nwparker Oct 2, 2026
da51e5a
fix(ssh): name missing build tools when the relay has no node-pty (#2…
AmoabaKelvin Oct 2, 2026
34ae093
fix(worktrees): keep creation fast in large repositories (#24346)
nwparker Oct 2, 2026
b666d07
test: update worktree setup and enforce cleanup results (#24552)
nwparker Oct 2, 2026
c9a9b8d
test: restore delayed PTY writes in large-paste coverage (#24556)
nwparker Oct 2, 2026
e2c5414
fix(native-chat): an older Orca keeps a chat with a newer row kind re…
brennanb2025 Oct 2, 2026
ba9af21
test: classify terminal driver input with the current PTY contract (#…
nwparker Oct 2, 2026
3f37fcc
test: align source-control fixtures with current store contracts (#24…
nwparker Oct 2, 2026
306b457
Enable Option shortcuts for ABC keyboards in Auto mode (#24528)
nwparker Oct 2, 2026
5f308bf
revert: take the 26 Phase 3 (#16741 port) PRs back out of main (#24559)
OrcaWin Oct 2, 2026
5a56636
Bound E2E package setup and retain cancellation traces (#24617)
nwparker Oct 2, 2026
a050afb
fix(terminal): stop parking pass queueing no-op renders that trip Rea…
OrcaWin Oct 2, 2026
54be527
fix(markdown): cap rendered size of large Markdown previews to stop r…
OrcaWin Oct 2, 2026
e362129
Remove empty passing sentinels from opt-in socket tests (#24621)
nwparker Oct 2, 2026
76c79f4
fix(linux): move Chromium shared memory off a tiny /dev/shm (#23751)
OrcaWin Oct 2, 2026
f20836c
fix(recovery): prompt instead of reloading into a repeat Windows OOM …
OrcaWin Oct 2, 2026
53930a1
Keep SSH typing replies visible during background pressure (#24629)
nwparker Oct 2, 2026
6153fbc
Reduce redundant headless server CI work (#24527)
nwparker Oct 2, 2026
b49abdb
fix: recover renderer launch failures in the running app (#24250)
OrcaWin Oct 2, 2026
66799f7
Keep paired browser terminal insertion in the host's requested positi…
nwparker Oct 2, 2026
d9fbb4e
Keep SSH typing replies inside narrow split terminal panes (#24682)
nwparker Oct 2, 2026
efbf651
Reduce CI setup costs and fixture failures (#24537)
nwparker Oct 2, 2026
13ecf05
Reuse prepared Windows native builds in SSH CI (#24555)
nwparker Oct 2, 2026
7b1449a
fix(ai-vault): honor ZCode transcript sequence order (#24584)
nwparker Oct 2, 2026
0a81211
fix(cursor): read desktop login outside the main thread (#24572)
nwparker Oct 2, 2026
d627b13
fix(cursor): distinguish usage failures from expired login (#24575)
nwparker Oct 2, 2026
4e46969
fix(cursor): preserve UTF-8 in Windows hook transport (#24585)
nwparker Oct 2, 2026
99b2628
test: update sidebar setup and remove obsolete permission sentinel (#…
nwparker Oct 2, 2026
cd8d03b
fix(dsh): recognize 0.2 profiles and open workspace composer (#24589)
nwparker Oct 2, 2026
adf447d
test: classify acknowledged remount input as driving (#24750)
nwparker Oct 2, 2026
3025264
ci: share bounded apt setup with the E2E native cache job (#24758)
nwparker Oct 2, 2026
cb03a05
fix(opencode): keep absent session stores quiet (#24577)
nwparker Oct 2, 2026
a21d328
fix(terminal): fill OpenCode DOM block glyphs in repainted rows (#24582)
nwparker Oct 2, 2026
d140b72
fix(terminal): pass single-pane TUI tab clicks through drag strip (#2…
nwparker Oct 2, 2026
8186ded
fix(mobile): preserve terminal mode query variables in WebView builds…
nwparker Oct 2, 2026
ff45266
Stop stalled unit jobs after an hour (#24583)
nwparker Oct 2, 2026
8765f8c
fix(opencode): preserve turn outcomes and avoid auto permission atten…
nwparker Oct 2, 2026
76b1a90
chore(deps): update reviewed dependencies across Orca (#24561)
nwparker Oct 2, 2026
700d4de
fix(antigravity): discover global skills from the CLI configuration r…
nwparker Oct 2, 2026
b45f403
fix(antigravity): keep quota probes free and visible without Gemini O…
nwparker Oct 2, 2026
92d2b71
fix(antigravity): launch POSIX hooks through sh with bounded JSON std…
nwparker Oct 2, 2026
0f167ac
test: check plugin fixture worktree cleanup (#24779)
nwparker Oct 2, 2026
4d2f235
fix(files): ignore nested generated directories on macOS (#24620)
nwparker Oct 2, 2026
5706d14
Check E2E packages where the installer reads them (#24785)
nwparker Oct 2, 2026
ddcc279
Preserve Mermaid exports through mobile bundling (#24661)
nwparker Oct 2, 2026
1fc24d3
Update README downloads badge
github-actions[bot] Oct 2, 2026
e2f2b70
ci: skip installed glibc tools in SSH host qualification (#24733)
nwparker Oct 2, 2026
de8bffe
Fix terminal width cutoff on wide panes (#24687)
nwparker Oct 2, 2026
caa4228
fix(runtime): report an open agent question as blocked to tui-idle wa…
Jinwoo-H Oct 2, 2026
4ea6673
fix(runtime): read Codex's 'Implement this plan?' menu as blocked (#2…
Jinwoo-H Oct 2, 2026
564f4d0
feat: live updates for agent state rules (#24387)
Jinwoo-H Oct 2, 2026
9503f9d
fix(runtime): settle Codex tui-idle waits on its hook done, leaving w…
Jinwoo-H Oct 2, 2026
b3f39ee
fix(release): accept the build identity as a later declarator in the …
Jinwoo-H Oct 2, 2026
bdab91e
fix(windows): link the CLI launcher's C runtime statically so orca.ex…
Jinwoo-H Oct 2, 2026
1e600a8
feat(terminal): point an old terminal's Codex shared-server banner at…
Jinwoo-H Oct 2, 2026
0f91540
fix(filesystem): deleting a workspace no longer fails as 'outside all…
brennanb2025 Oct 2, 2026
f2257ff
fix: dismiss Codex account prompt and return focus to terminal (#24683)
nwparker Oct 2, 2026
d6d2795
chore(worktree): include create timing and spare outcome in the works…
brennanb2025 Oct 2, 2026
d3e5923
ci(release): skip the orcad template for tags that predate it (#24872)
Jinwoo-H Oct 2, 2026
44a2ee5
fix(runtime): make OMP 18.4 workers ready at the composer and keep st…
brennanb2025 Oct 2, 2026
1913d27
fix(files): replace watcher subscriptions after native failure (#24723)
nwparker Oct 2, 2026
5f1dece
fix(files): retry failed shallow directory watch replacement (#24724)
nwparker Oct 2, 2026
9273b5f
fix(git): share pending watcher reconciliation startup (#24725)
nwparker Oct 2, 2026
ac28e8c
Skip dependency installation for known headless build inputs (#24716)
nwparker Oct 2, 2026
b94c75c
Reuse pnpm verification records in Alpine CI (#24817)
nwparker Oct 2, 2026
cc73c8e
ci: overlap ARM SSH setup and independent observation waits (#24714)
nwparker Oct 2, 2026
b4ff7fe
fix(tests): run watcher crash harness against current code (#24705)
nwparker Oct 2, 2026
d3a406f
ci(release): publish after a skipped orcad template (#24882)
Jinwoo-H Oct 2, 2026
61836f6
Reduce scheduled CI cache warming to every six hours (#24881)
nwparker Oct 2, 2026
75be95f
ci: move ARM Mac qualification to macOS 15 (#24760)
nwparker Oct 2, 2026
57c786a
fix(files): keep watcher streams across SSH reconnect races (#24722)
nwparker Oct 2, 2026
1aa0860
Keep large Markdown previews responsive (#24880)
nwparker Oct 2, 2026
add1c55
Skip slower Windows root package-store restores in CI (#24885)
nwparker Oct 2, 2026
1f8570e
Advance full shutdown deadlines in mocked Codex connection tests (#24…
nwparker Oct 2, 2026
d88d28a
fix(plugins): restore development watchers after folder replacement (…
nwparker Oct 2, 2026
13ce9a7
fix(watchers): preserve directory identities when checking replacemen…
nwparker Oct 2, 2026
a1da632
fix(opencode-go): don't fall back to OPENCODE_API_KEY when the creden…
Jinwoo-H Oct 2, 2026
a8ee94d
fix(codex): skip the hook trust RPC when Codex's session index is unr…
Jinwoo-H Oct 2, 2026
f8a31ed
refactor(cursor): move the desktop-login read onto the shared foreign…
Jinwoo-H Oct 2, 2026
58cf72d
Skip slower root package-store restores in Linux PR jobs (#24896)
nwparker Oct 2, 2026
58d0e99
test: advance mocked Claude child exit deadlines (#24897)
nwparker Oct 2, 2026
3fba195
perf(tab-bar): a change to one tab no longer re-renders every tab (#2…
AmoabaKelvin Oct 2, 2026
a824fb7
Reuse the headless detector compiler without installing full dependen…
nwparker Oct 2, 2026
533446d
Stop mocked renderer imports from qualifying headless CI (#24902)
nwparker Oct 2, 2026
b06f40f
fix(opencode): read the binder's session store off the main thread; s…
Jinwoo-H Oct 2, 2026
40e60b7
refactor(ai-vault): delete the unused session-scanner worker thread (…
Jinwoo-H Oct 2, 2026
1241ce1
Skip slower root package-store restores in macOS PR jobs (#24908)
nwparker Oct 3, 2026
75f8f34
Overlap independent Linux headless runtime builds (#24910)
nwparker Oct 3, 2026
65deb4b
test(persistence): wait for real worker readiness before timeout (#24…
nwparker Oct 3, 2026
f97ca2a
Add Qoder session history and search (#24614)
nwparker Oct 3, 2026
00da8e1
fix(cursor): show the primary model pool in compact usage (#24830)
nwparker Oct 3, 2026
56427f1
fix(native-chat): one ordered journal writer (#24127)
brennanb2025 Oct 3, 2026
de77c4b
fix(worktrees): list a folder once when git reports it twice (#24357)
AmoabaKelvin Oct 3, 2026
94b4116
Bound AI Vault cache loading and keep atomic saves responsive (#24789)
nwparker Oct 3, 2026
1d5d02e
Resolve explicitly configured command aliases for workers (#24648)
nwparker Oct 3, 2026
e80b550
Cancel the journal import test sampler before database teardown (#24767)
nwparker Oct 3, 2026
bdaeb6c
fix(antigravity): bound Windows hook stdin on the owning runtime (#24…
nwparker Oct 3, 2026
9e27050
Add verified native Antigravity Accounts on the owning runtime (#24691)
nwparker Oct 3, 2026
b5869ee
fix(worktrees): a worktree delete git fails partway stays listed and …
brennanb2025 Oct 3, 2026
2c2dfd0
test: run committed OpenCode redraw capture replay (#24811)
nwparker Oct 3, 2026
328caa2
fix(git): reduce queries and preserve data across execution hosts (#2…
nwparker Oct 3, 2026
c99b202
Use released table parser fix and remove redundant preview work (#24919)
nwparker Oct 3, 2026
3793c58
fix(mobile): release notification and account streams from the transp…
brennanb2025 Oct 3, 2026
603af90
fix(browser): avoid a redundant copy of document preview bytes (#24861)
OrcaWin Oct 3, 2026
613944b
fix(browser): release upload buffers after native staging (#24869)
OrcaWin Oct 3, 2026
501ad0e
fix(editor): release Markdown selection listeners after close (#24875)
OrcaWin Oct 3, 2026
a3524c5
fix(browser): release obsolete state during close replay (#24892)
OrcaWin Oct 3, 2026
aeba62a
fix(journal): encode only the retained tool-output preview (#24696)
OrcaWin Oct 3, 2026
f690319
fix(ssh): release response chunks after the sink accepts them (#24719)
OrcaWin Oct 3, 2026
e1c5232
fix(codex): release full messages behind completed child previews (#2…
OrcaWin Oct 3, 2026
7f388b7
fix(mobile): avoid backtick match arrays when editing Markdown (#24778)
OrcaWin Oct 3, 2026
233f049
fix(editor): avoid newline match arrays when saving LF Markdown (#24795)
OrcaWin Oct 3, 2026
2e9ab41
fix(terminal): cancel viewport retries when panes close (#24745)
OrcaWin Oct 3, 2026
7f12b29
fix(chat): encode only the retained prefix when streamed output overf…
OrcaWin Oct 3, 2026
467ed33
fix(reconnect): release obsolete app state held by handle-gap watcher…
OrcaWin Oct 3, 2026
e0f4adb
fix(activity): release unrelated editor state during the Undo window …
OrcaWin Oct 3, 2026
192fb8f
fix(chat): let idle session readers release retired journal folds (#2…
OrcaWin Oct 3, 2026
b805b77
fix(automations): release unused run output from dashboard rows (#24847)
OrcaWin Oct 3, 2026
709d9bf
fix(notebook): cancel kernel starts when the notebook closes (#24858)
OrcaWin Oct 3, 2026
5e5a992
fix(markdown): reduce Find memory for ordinary text (#24635)
OrcaWin Oct 3, 2026
7e0db0e
fix(clipboard): decode uploaded images without joining all chunks (#2…
OrcaWin Oct 3, 2026
5c52dce
fix(mobile): release file previews after their tabs close (#24655)
OrcaWin Oct 3, 2026
d9a3d3c
fix(editor): expire saved-file snapshots while the editor is idle (#2…
OrcaWin Oct 3, 2026
74609c6
fix(ai-vault): bound transcript text before joining message blocks (#…
OrcaWin Oct 3, 2026
b457583
fix(terminal): release retired status sources from the agent type cac…
OrcaWin Oct 3, 2026
97ab687
fix(jira): expire cached attachment images while idle (#24678)
OrcaWin Oct 3, 2026
1061ded
fix(mobile): merge terminal backlogs without rescanning growing strin…
OrcaWin Oct 3, 2026
7c6a37e
fix(terminal): release retired scrollback layouts from status routing…
OrcaWin Oct 3, 2026
0b0152a
fix(files): release expired mobile path inventories while idle (#24694)
OrcaWin Oct 3, 2026
eb44511
fix(jira): discard detail replies after closing an issue (#24835)
OrcaWin Oct 3, 2026
84a4e8a
fix(browser): avoid a redundant copy of live screencast images (#24851)
OrcaWin Oct 3, 2026
a25f730
fix(terminal): release closed layouts while reveal frames are paused …
OrcaWin Oct 3, 2026
9592159
fix(quick-open): release expired legacy file inventories while idle (…
OrcaWin Oct 3, 2026
87a2c3c
fix(ssh): keep terminal buffers out of failed workspace sync status (…
OrcaWin Oct 3, 2026
2165558
fix(native-chat): the desktop declares structured chat support to pai…
brennanb2025 Oct 3, 2026
18b99ac
fix(ai-vault): release expired host results while idle (#24766)
OrcaWin Oct 3, 2026
ac6c27e
fix(orchestration): avoid loading task descriptions during promotion …
OrcaWin Oct 3, 2026
bd6d7b9
feat(codex): run Windows Codex on the real ~/.codex (#24356)
Jinwoo-H Oct 3, 2026
3c9c2ab
fix(mobile): release callbacks retained by canceled streams (#24625)
OrcaWin Oct 3, 2026
3ad2648
fix(mobile): reduce base64 allocations for encrypted text frames (#24…
OrcaWin Oct 3, 2026
9a1bef4
fix(cursor): resume exact conversation after startup status replay (#…
nwparker Oct 3, 2026
610c048
fix(claude): inspect child tool IDs without rebuilding their output (…
OrcaWin Oct 3, 2026
5c62cb5
fix(native-chat): remove the "still starting" notice that flashed on …
brennanb2025 Oct 3, 2026
a5915b2
fix(native-chat): no loading flash on open, one report for a failed s…
brennanb2025 Oct 3, 2026
ac46d9e
fix(native-chat): plain wording for chat errors and status rows (#24594)
brennanb2025 Oct 3, 2026
476383e
fix: settle unrecoverable Codex reconnect dispatch
innocarpe Oct 3, 2026
3e5d71e
fix: scope Codex reconnect banner to dispatch
innocarpe Oct 3, 2026
fd0c6d8
fix: resolve Codex PTY handle fallback
innocarpe Oct 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
94 changes: 86 additions & 8 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,12 +1,90 @@
/config/scripts/create-draft-release.mjs text eol=lf
/config/scripts/orca-dev.mjs text eol=lf
/config/scripts/latest-stable-release.mjs text eol=lf
/config/scripts/publish-complete-draft-releases.mjs text eol=lf
/config/scripts/release-rc-history.mjs text eol=lf
/config/scripts/run-internal-dev-setup.mjs text eol=lf
/config/scripts/verify-cli-bin.mjs text eol=lf
/config/scripts/verify-release-required-assets.mjs text eol=lf
# A shebang plus CRLF makes vite's SSR transform emit a literal `#!` mid-module,
# so any suite importing the script dies at load with a SyntaxError. Pin the whole
# directory rather than the scripts that happen to have a test today.
/config/scripts/**/*.mjs text eol=lf
/skill-guides/*.md text eol=lf
/skill-stubs/*.md text eol=lf
/skill-stubs/_shared/*.md text eol=lf
/skills/*/SKILL.md text eol=lf
/src/cli/bundled-skill-guides.ts text eol=lf
# Bundled plugin trees are byte-hashed; CRLF checkout would break the pinned hash.
/resources/plugins/** text eol=lf
# Relay assets are copied verbatim into the bundle and hashed byte-for-byte into
# .version, which names the immutable remote install dir. A CRLF checkout makes a
# Windows-built client disagree with a mac/Linux-built one on the same release,
# so one host ends up with two relay trees (#17886 review).
/config/relay-assets/** text eol=lf
# Pin the bytes so a patch reads and diffs identically on every host. It is NOT
# what makes the hash right: pnpm hashes a patch LF-normalized, so a CRLF checkout
# cannot change it. Believing otherwise put a hand-computed raw digest in the
# lockfile twice and broke every install (#17886).
# These files are stored LF, which is not always the encoding they were written
# against -- @vscode/windows-process-tree ships CRLF sources -- so any code that
# runs `git apply` on one must force `-c core.autocrlf=input` rather than trust
# the host's setting. See config/scripts/windows-process-tree-gyp-rebuild.mjs.
/config/patches/*.patch -text
# Same reason, and pnpm parses these too: a CRLF checkout makes the mobile
# patches unparseable, so Windows packaging dies on ERR_PNPM_INVALID_PATCH.
/mobile/patches/*.patch -text
# The xterm bundle hunks also make a diff nobody can read; review the hand-written
# source patch under xterm-src/ instead. The sibling patches stay diffable.
/config/patches/@xterm__xterm@*.patch -diff
/config/patches/xterm-src/*.patch text eol=lf
# pnpm parses these unified diffs during Windows installs; keep checkout bytes stable.
/mobile/patches/*.patch -text
# Generated wrapper fixtures: collapse them in the PR diff so they stop drowning
# the reviewable change, and pin LF because they are compared byte-for-byte.
# Not -diff: the shell diff is the review surface when a wrapper does change.
/src/main/__fixtures__/shell-wrapper-snapshots/*.txt linguist-generated=true text eol=lf
# Captured agent PTY transcripts. -text, not `text eol=lf` like the wrapper snapshots above:
# these carry real CR and CRLF bytes as the terminal emitted them, and line-ending
# normalisation on a Windows checkout would rewrite the evidence the fixture exists to be.
/src/main/runtime/__fixtures__/*.txt -text
/src/main/daemon/__fixtures__/pty-transcripts/*.txt -text
# Generated runtime English subset: compared byte-for-byte by
# verify:localization-runtime-catalog, so a CRLF checkout would fail the gate.
/src/renderer/src/i18n/en-runtime-required.json linguist-generated=true text eol=lf
# Generated method->params catalog: compared byte-for-byte by
# verify:rpc-params-catalog, so a CRLF checkout would fail the gate.
/src/shared/rpc-contract/rpc-params-catalog.generated.ts linguist-generated=true text eol=lf
# Mobile RPC recording goldens: replay requires the file text to equal what rpc:record writes
# (LF), so a CRLF checkout would fail every golden.
/mobile/rpc-foundation/goldens/*.json text eol=lf
# Mobile web page source. Every text byte here is hashed into an asset digest and from
# there into buildId, so a CRLF Windows checkout would ship a different bundle id for
# identical source (91af2897 vs 9d78435e, measured on the bundle this replaced).
/mobile/src/** text eol=lf
/mobile/app/** text eol=lf
/mobile/web-entry/** text eol=lf
# The blanket pin above would mark a future binary as text; exempt the asset types an
# RN page actually carries.
/mobile/src/**/*.png -text
/mobile/src/**/*.jpg -text
/mobile/src/**/*.jpeg -text
/mobile/src/**/*.gif -text
/mobile/src/**/*.ico -text
/mobile/src/**/*.webp -text
/mobile/src/**/*.ttf -text
/mobile/src/**/*.otf -text
/mobile/src/**/*.woff -text
/mobile/src/**/*.woff2 -text
/mobile/app/**/*.png -text
/mobile/app/**/*.jpg -text
/mobile/app/**/*.jpeg -text
/mobile/app/**/*.gif -text
/mobile/app/**/*.ico -text
/mobile/app/**/*.webp -text
/mobile/app/**/*.ttf -text
/mobile/app/**/*.otf -text
/mobile/app/**/*.woff -text
/mobile/app/**/*.woff2 -text
/mobile/web-entry/**/*.png -text
/mobile/web-entry/**/*.jpg -text
/mobile/web-entry/**/*.jpeg -text
/mobile/web-entry/**/*.gif -text
/mobile/web-entry/**/*.ico -text
/mobile/web-entry/**/*.webp -text
/mobile/web-entry/**/*.ttf -text
/mobile/web-entry/**/*.otf -text
/mobile/web-entry/**/*.woff -text
/mobile/web-entry/**/*.woff2 -text
10 changes: 10 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Product source remains owned by its normal reviewers; localization inputs need focused review.
/src/renderer/src/i18n/locales/ @brennanb2025
/config/scripts/*localization*.mjs @brennanb2025
/config/scripts/*locale*.mjs @brennanb2025
/config/i18next.config.ts @brennanb2025

# The relay's deploy and operate surface: workspace, workflows, and the rollout lease action.
/cloud/ @Jinwoo-H
/.github/workflows/cloud-*.yml @Jinwoo-H
/.github/actions/cloud-sql-rollout-lease/ @Jinwoo-H
20 changes: 11 additions & 9 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,11 @@ pnpm install
pnpm dev
```

Ordinary installs include native optional dependencies for the current OS and CPU only.
Before a cross-architecture build (including `pnpm build:mac`, which produces both x64 and
arm64 artifacts by default), run `pnpm install:release` to add the other CPU's variants.
See [the install policy](../docs/reference/pnpm-install-policy.md).

## Branch Naming

Use a clear, descriptive branch name that reflects the change.
Expand Down Expand Up @@ -52,21 +57,19 @@ If your change affects UI or interaction behavior, verify it on the platforms it

Project-owned type declarations belong in `.ts` files. `.d.ts` is reserved for ambient shims (e.g., `env.d.ts`, `vite/client.d.ts`). TypeScript's `skipLibCheck: true` setting applies globally, including to our own `.d.ts` files, which means any unresolved type reference in a `.d.ts` silently becomes `any` at its call sites. Write your types in `.ts` files so the compiler actually checks them.

CI enforces this for `src/preload/` and `src/shared/` — see `docs/preload-typecheck-hole.md`.
CI enforces this for `src/preload/` and `src/shared/`.

## Pull Requests

Each pull request should:
Each pull request should follow [`.github/pull_request_template.md`](./pull_request_template.md). In particular:

- explain the user-visible change
- stay focused on a single topic when possible
- include screenshots or screen recordings for new UI or behavior changes
- open with an ELI5 of the change (plain language paragraph; the PR title is the one-liner)
- explain what changed and why, and stay focused on a single topic when possible
- for any UI or interaction change, attach **before and after** screenshots (or short videos); if there is no visual change, say `No visual change` and why
- include high-quality tests when behavior changes or bug fixes warrant them
- include a brief code review summary from your AI coding agent that explicitly checks cross-platform compatibility, SSH/remote/local compatibility, supported agent and integration compatibility, performance risk, UI quality when applicable, and basic security risk
- mention any platform-specific, remote/SSH-specific, agent-specific, integration-specific, or git-provider-specific behavior and testing notes
- **Include your X (Twitter) handle!** We love giving shoutouts to our contributors when we merge features on [@orca_build](https://x.com/orca_build).

If there is no visual change, say that explicitly in the PR description.
- **Include your X (Twitter) handle** in the PR template Author section — we shout out contributors when we merge features on [@orca_build](https://x.com/orca_build).

## Release Process

Expand Down Expand Up @@ -114,7 +117,6 @@ All stable kinds (`patch`, `minor`, `major`) are computed off the latest _stable

The scheduled 2x/day RC cron in [`release-rc.yml`](../../actions/workflows/release-rc.yml) is independent and continues to run automatically from `main`.


## Release Channels

The public Homebrew cask tracks stable desktop releases:
Expand Down
2 changes: 2 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ body:
value: |
Use this form for Orca bugs. Include enough detail for someone else to reproduce the issue.

Please write your issue in English.

- type: dropdown
id: os
attributes:
Expand Down
2 changes: 2 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ body:
value: |
Use this form for new features or workflow improvements.

Please write your issue in English.

- type: textarea
id: problem
attributes:
Expand Down
5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/other.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@ name: Other
description: Report another Orca issue type
title: '[Other]: '
body:
- type: markdown
attributes:
value: |
Please write your issue in English.

- type: textarea
id: details
attributes:
Expand Down
152 changes: 152 additions & 0 deletions .github/actions/cloud-sql-rollout-lease/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
# Cloud SQL rollout lease

A compare-and-swap lease on one Cloud Storage object, used to serialize Cloud SQL
**connection-budget** rollouts across two repositories.

`concurrency.group: production-cloud-sql-rollout` only serializes runs inside a single repository.
Once the relay workflows live in `stablyai/orca` and the app workflows stay in
`stablyai/orca-cloud`, there are two independent queues pointed at one shared Cloud SQL instance.
`relay-cloud-sql-connection-budget.mjs` computes `rolloutOverlap` as a `Math.max` over the relay
director, api, auth and relay-cell candidates, which is only sound when exactly one rollout is in
flight. This lease is what keeps that assumption true. Keep the per-repo concurrency groups **and**
the lease; they solve different halves of the problem.

## What it protects

No workflow runs a Cloud SQL schema migration. Every locked workflow either deploys a Cloud Run
revision or applies a GCE instance template against the shared instance, so the lease must cover
**all rollouts**, not just migrations.

## Usage

The lease step must run **after** `google-github-actions/setup-gcloud`, and after
`actions/checkout` — `uses: ./.github/actions/...` resolves against the checked-out workspace.
It belongs in the first job of the workflow that holds a GCP credential, which is not always the
gate job: `deploy-relay-production-same-cap`'s gate runs no `gcloud`, so its first acquire happens
in the first cell job.

```yaml
- uses: google-github-actions/auth@v2
with: { workload_identity_provider: ..., service_account: ... }
- uses: google-github-actions/setup-gcloud@v2
- uses: ./.github/actions/cloud-sql-rollout-lease
with:
bucket: onorca-cloud-terraform-state
object: terraform/state/cloud-sql-rollout/production.lock
```

Buckets and objects in use:

| Environment | Bucket | Object |
| ----------- | -------------------------------------- | --------------------------------------------------- |
| production | `onorca-cloud-terraform-state` | `terraform/state/cloud-sql-rollout/production.lock` |
| staging | `onorca-cloud-staging-terraform-state` | `terraform/state/cloud-sql-rollout/staging.lock` |

Workflows that serve both environments (`deploy-relay-asia-topology`,
`operate-relay-asia-admission`) select the pair with an `inputs.environment == 'production'`
ternary on both `bucket` and `object`. `deploy-staging` keeps its own `deploy-artifacts-staging`
concurrency group but takes the staging lease, because it rolls the staging API revision.

The object sits beside `terraform/state/relay-fence-broker/<env>.lock`. The IAM grant names both the
relay and app service accounts, so it is a **foundation-root** resource: `roles/storage.objectAdmin`
conditioned on the `terraform/state/cloud-sql-rollout/` prefix, **plus** an unconditioned
`roles/storage.legacyBucketReader`. Without the second role the generation-matched write fails in a
way that looks like a permissions flake.

## One lease per run, not per job

`deploy-relay-production-capacity` calls its reusable job six times and
`deploy-relay-production-same-cap` four times. Each call is a separate job on a separate runner, so
a naive per-job acquire/release would leave the object free between waves — for runs that have taken
up to 85 minutes.

The lease is therefore keyed to the **run**, not the job. `holder-key` defaults to
`${{ github.repository }}/${{ github.run_id }}`, and a job that finds its own holder key on a live
lease **re-enters** it: the record is refreshed, not rejected. Every job in the chain acquires; only
the last one releases.

```yaml
jobs:
gate:
steps:
- uses: ./.github/actions/cloud-sql-rollout-lease
with: { bucket: ..., object: ..., release: 'false' } # intermediate

wave-1: # ... release: 'false' on every wave job

release_lease:
needs: [gate, wave-1, wave-2, wave-3, wave-4]
if: always()
steps:
- uses: google-github-actions/auth@v2
- uses: google-github-actions/setup-gcloud@v2
- uses: ./.github/actions/cloud-sql-rollout-lease
with: { bucket: ..., object: ..., release: 'true' } # final
```

`release: 'false'` still acquires and still runs its `post` step; `post` only skips the delete. A
single-job workflow leaves `release` at its `true` default and needs no extra job. So does a
workflow whose several jobs can never hold the lease at once: `prove-relay-staging-capacity`'s two
lease-holding jobs are guarded by complementary `inputs.mode` conditions, and the contract test
checks that exclusivity rather than assuming it.

If the final job never runs (runner killed, run cancelled hard), the lease expires on its TTL.

## Timing

- **TTL 35 minutes**, matching `apps/relay-fence-broker/src/mutation-lease.ts`.
- **Renewal every 5 minutes.** `main` spawns a detached background Node process that rewrites
`expires_at` on the same generation-matched path; `post` kills it by pid read back from
`$GITHUB_STATE`. The renewer stops on its own the moment the object stops being ours, and has a
six-hour backstop in case `post` never runs. Its log is written to
`$RUNNER_TEMP/cloud-sql-rollout-lease-renewer.log` and echoed by `post`.
- Renewal is mandatory, not optional: capacity runs have taken 85 minutes, well past any sane TTL.

## Failure behaviour

| Situation | Behaviour |
| -------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| Object absent | Acquire with `ifGenerationMatch: 0`. |
| Live lease, our own holder key | Re-enter. Refresh `expires_at`, keep `acquired_at`. Never fails. |
| Live lease, another holder | **Fail the job immediately**, printing the holder's repository, workflow and run URL. Never queues, never steals. |
| Expired lease | Take over with the observed generation and emit `::warning::` naming the stale holder. |
| `412` on write | Someone raced us. Fail as a conflict. |
| Bucket unreachable, `403`, `5xx` | **Fail closed.** |
| Record present but unparseable | **Fail closed.** A record we cannot read is never treated as free; an operator must inspect and delete it. |
| Release finds a foreign holder | Warn and leave it alone. Our lease had already expired. |
| Release fails | Warn only. `post` never fails a job over a release; the TTL bounds the damage. |

## Why `monitor-relay-production` must not use this

`monitor-relay-production` is in the `production-cloud-sql-rollout` concurrency group but is
**read-only**: its identity holds only monitoring, logging, Cloud SQL and compute _viewer_ roles,
and it runs `gcloud sql instances describe`, never a mutation. It consumes no connection budget.
Putting it on the durable lease would let a monitoring run block a real rollout, and a rollout block
monitoring exactly when an operator most needs it. Keep its same-repo concurrency group; keep it off
the lease. The lock census contract test records it in the not-a-candidate map with this reason.

## Token acquisition

`gcloud auth print-access-token`, not a hand-rolled exchange of the `external_account` credentials
file. Every consuming workflow already runs `setup-gcloud`, gcloud already handles every ADC flavour
including the service-account impersonation leg, and this action must stay zero-dependency because
it is duplicated by hand into the public repo. The GCE metadata server that
`apps/relay-fence-broker/src/google-metadata.ts` uses does **not** exist on GitHub or Blacksmith
runners; only the compare-and-swap algorithm is shared with the fence broker.

## Duplication

This directory is copied verbatim into `stablyai/orca`. It has no `package.json`, no
`node_modules`, and imports nothing outside itself — `action-contract.test.mjs` enforces all three.
Cross-repo consumption via `uses: stablyai/orca/.github/actions/...@<sha>` was rejected: it would
put public-repo code inside private app deploys that hold a production credential, and neither
repository protects `main` today.

## Tests

```
node --test .github/actions/cloud-sql-rollout-lease/
```

`storage-lease.test.mjs` drives the real compare-and-swap path against an in-memory Cloud Storage
fake that enforces generations. No network.
Loading