Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
395 commits
Select commit Hold shift + click to select a range
a0f0ae3
fix(relay): skip idle rehome for hosts that reconnected under 3 minut…
Jinwoo-H Oct 8, 2026
48a9856
fix(relay-ops): let the pre-drain auth gate tolerate an isolated auth…
Jinwoo-H Oct 8, 2026
bac9e0c
fix(relay): latch rehome off only on a sql failure breach that outlas…
Jinwoo-H Oct 8, 2026
23a25ea
fix(relay): let the same-cap roll's post-roll verify outlast one DB s…
Jinwoo-H Oct 8, 2026
0e07640
feat(native-chat): fold long sent messages behind a toggle (#25996)
AmoabaKelvin Oct 8, 2026
8cf6228
feat(relay): alert on cell disconnect bursts and database pool herds …
Jinwoo-H Oct 8, 2026
c61d0bc
Update README downloads badge
github-actions[bot] Oct 8, 2026
3062b9d
fix(relay): refuse host hellos fast when the database pool is timing …
Jinwoo-H Oct 8, 2026
d1e7d15
fix(file-drop): explorer, project sidebar, tab strip and editor own O…
brennanb2025 Oct 8, 2026
7c88ab7
feat(native-chat): number keys and auto-advance for questions (#26288)
AmoabaKelvin Oct 8, 2026
b0fbcfd
test: age relay correction controls through live heartbeats (#26389)
nwparker Oct 8, 2026
56017af
Avoid repeatedly extracting source text for the copy-context hint (#2…
nwparker Oct 8, 2026
5fb18f3
Run only the intended performance contract suites (#26121)
nwparker Oct 8, 2026
5a59710
Skip repeated ANSI parsing scans for plain notebook output (#26124)
nwparker Oct 8, 2026
846caf0
Scan Markdown inline-code spans once when highlighting links (#26126)
nwparker Oct 8, 2026
7cd92a3
Avoid rescanning accumulated notebook stream output (#26123)
nwparker Oct 8, 2026
0d246a6
Use native Base64 encoding for mobile image bytes when available (#26…
nwparker Oct 8, 2026
acd298a
feat(runtime): isolate the server behind a compatibility launcher (#2…
nwparker Oct 8, 2026
316822f
ci: skip cache warming for cache-test-only changes (#26399)
nwparker Oct 8, 2026
7c13552
Label a message stopped before the agent began on it plainly as "Stop…
brennanb2025 Oct 8, 2026
8fdad2a
fix(claude): activate account profiles and remove credential replay (…
brennanb2025 Oct 8, 2026
4f4f021
feat(native-chat): quote a selection from an agent reply into the com…
AmoabaKelvin Oct 8, 2026
d0e729c
fix(claude): drop the repeated sign-in line in the account menu and n…
Jinwoo-H Oct 8, 2026
8b20d21
Remove local branch deletion success toast (#26422)
nwparker Oct 8, 2026
265c626
Allow large markdown documents with HTML in rich mode (#26331)
AmethystLiang Oct 8, 2026
00a8250
test: speed terminal comparisons and retry policy checks (#26396)
nwparker Oct 8, 2026
61de2d8
test: load GitHub operations from their public modules (#26384)
nwparker Oct 8, 2026
e862394
Abort failed runtime downloads after cleanup (#26269)
nwparker Oct 8, 2026
586e6bc
perf: scan only new text for live agent log record boundaries (#26132)
nwparker Oct 8, 2026
7c0e76c
perf(mobile): release closed Markdown document cache entries (#26159)
nwparker Oct 8, 2026
a6c853a
perf(chat): size recovery batches without prefix serialization (#26160)
nwparker Oct 8, 2026
7279210
fix(skills): cancel unread package download responses (#26169)
nwparker Oct 8, 2026
f4c7121
Use browser crypto to speed up mobile image fingerprints (#26170)
nwparker Oct 8, 2026
7610920
Avoid rebuilding committed mobile files while typing (#26196)
nwparker Oct 8, 2026
602e7a3
Stop repeated GitLab detail requests on mobile (#26197)
nwparker Oct 8, 2026
efb071b
Release completed agent-browser helper drain timers (#26210)
nwparker Oct 8, 2026
7e60664
fix(browser): retire cookie snapshots when preparation fails (#26218)
nwparker Oct 8, 2026
c5767f0
perf(skills): index placements within each deletion plan (#26223)
nwparker Oct 8, 2026
2d1ab8b
Avoid refreshing GitHub accounts for repository name edits (#26228)
nwparker Oct 8, 2026
ad0a5ad
Abort rejected optional OpenCode billing requests (#26236)
nwparker Oct 8, 2026
4d7193c
perf: skip image prewarming parse for image-free markdown (#26240)
nwparker Oct 8, 2026
8e22ad2
Scope completed worktree removal authorization refresh to its reposit…
nwparker Oct 8, 2026
8060ca5
perf: persist completed notebook runs in one document update (#26254)
nwparker Oct 8, 2026
408aa13
fix(explorer): reject foreign watch events before deferring (#26265)
nwparker Oct 8, 2026
9f64453
Release feedback requests after response handling completes (#26274)
nwparker Oct 8, 2026
8155e2e
perf: preserve unrelated authorization roots after desktop removal (#…
nwparker Oct 8, 2026
b4e99fc
perf: group Space decision inputs by workspace (#26297)
nwparker Oct 8, 2026
d9ab505
perf: skip assembling deferred Codex text checkpoints (#26199)
nwparker Oct 8, 2026
b41e273
Persist multiple workspace references with atomic edits
nwparker Oct 8, 2026
665fbc4
Release clipboard previews when the chat composer closes (#26234)
nwparker Oct 8, 2026
10a2a6c
perf: reuse Markdown fence scans across sibling toggles (#26324)
nwparker Oct 8, 2026
4da1324
test: isolate hook fixture connections from fake timers (#26369)
brennanb2025 Oct 8, 2026
4bd4f8c
feat(native-chat): show each interrupted chat's workspace as its read…
brennanb2025 Oct 8, 2026
b1e0092
feat(opencode): open OpenCode 2.x in the structured chat too (#26395)
brennanb2025 Oct 8, 2026
2caea6c
feat(omp): open OMP in the structured chat over ACP (#26401)
brennanb2025 Oct 8, 2026
e4cd14d
Remove legacy OS file-drop routing (STA-6940 PR6/6) (#26385)
brennanb2025 Oct 8, 2026
46ef7c4
Drain queued SQLite replies before faulting after a main-loop stall (…
nwparker Oct 8, 2026
69900f0
Share provider search between workspace creation and reference editing
nwparker Oct 8, 2026
a211489
Add saved force-delete preference to workspace deletion menu (#26425)
nwparker Oct 8, 2026
f052e2f
perf: skip unused Grok login-shell probe when installing agent hooks …
nwparker Oct 8, 2026
e97d18d
Avoid repeated session copies when deleting project groups (#26230)
nwparker Oct 8, 2026
10ac420
Release completed provider write payloads (#26208)
nwparker Oct 8, 2026
a4854ac
perf: skip the OpenCode reader worker when its database is absent (#2…
nwparker Oct 8, 2026
07c2379
Encode checkpoint strings in bounded native JSON chunks (#26177)
nwparker Oct 8, 2026
67dbd2f
perf: reuse chat tab ownership across unrelated app updates (#26150)
nwparker Oct 8, 2026
0eee1ce
Remove repeated row copying from terminal redraw ingestion (#26118)
nwparker Oct 8, 2026
952898b
Add always force delete dropdown to workspace recovery dialog (#26476)
nwparker Oct 8, 2026
a53967f
Native chat: add an inline visuals switch and simplify the skill (#26…
brennanb2025 Oct 8, 2026
b1cd858
Show multiple reviews and tasks in workspace cards and details
nwparker Oct 8, 2026
a747c1c
Allow another phone send after delivery is unconfirmed (#26392)
brennanb2025 Oct 8, 2026
216ef29
fix(terminal): avoid replaying completed strings after snapshots
nwparker Oct 8, 2026
6e39b8e
fix: admit relay bulk frames once under backpressure (#26333)
nwparker Oct 8, 2026
8ae5264
Record confirmed PR observations from their terminal pane
nwparker Oct 8, 2026
5252884
Native chat: say when Codex is signed out or the agent isn't installe…
brennanb2025 Oct 8, 2026
e428179
test(native-chat): make the in-place transcript replacement test dete…
OrcaWin Oct 8, 2026
496ee9b
feat(session-history): Resume in New CLI forks a native chat's conver…
brennanb2025 Oct 8, 2026
e0a98a4
fix(hooks): speed up guarded Unicode Windows hook launches (#26382)
OrcaWin Oct 8, 2026
5125f51
Bound multi-reference lookup work and normalize by identity
nwparker Oct 8, 2026
4aa361c
Close the SDK test server before destroying its connections
nwparker Oct 8, 2026
1e76c87
Verify terminal reference deduplication after settlement
nwparker Oct 8, 2026
7c50009
test: remove duplicated cases and source-text checks (#26546)
nwparker Oct 8, 2026
47165c9
test: load session owners directly and skip mocked recovery pacing (#…
nwparker Oct 8, 2026
f5ece0f
test(e2e): retry Hangul-digit attempts the input method never deliver…
OrcaWin Oct 8, 2026
e3639ef
Phase 3.5: fix the top SSH/remote issues at the root cause (#26483)
OrcaWin Oct 8, 2026
89ba968
ci: keep shared unit fixture out of package and browser jobs (#26575)
nwparker Oct 8, 2026
907cb6e
ci: restore five unit runners and prune source-only tests (#26437)
nwparker Oct 8, 2026
17703d0
fix(native-chat): never refuse a user's write because the retry recor…
brennanb2025 Oct 8, 2026
51e2895
fix(native-chat): never refuse a queued card because 20 were waiting,…
brennanb2025 Oct 8, 2026
7bdb0b6
Native chat: inline visuals for Grok, OpenCode and OMP chats (#26530)
brennanb2025 Oct 8, 2026
884be9a
feat(native-chat): show each chat's resume as it happens, and start m…
brennanb2025 Oct 8, 2026
79a8cff
Fix Mermaid diagrams that stay on error after replies finish (#26480)
brennanb2025 Oct 8, 2026
cc291db
Keep picked skills and pending uploads when native chat composers clo…
brennanb2025 Oct 8, 2026
6b43714
feat(agent-sessions): rename "Continue in New Session" to "Hand Off t…
brennanb2025 Oct 8, 2026
3e27e62
Native chat: open files from tool rows through the terminal's file li…
brennanb2025 Oct 8, 2026
d997ef0
Warn on slow profile saves instead of failing them (#26447)
AmethystLiang Oct 8, 2026
b6b4d68
fix(omp): show exit 0 for a command that finished normally (#26494)
brennanb2025 Oct 8, 2026
4390860
Update README downloads badge
github-actions[bot] Oct 8, 2026
9ca9b4e
Revert Claude per-account folders (#24434, #26405) before release (#2…
Jinwoo-H Oct 8, 2026
22974c5
Default experimental native chat to structured chat (#22933)
brennanb2025 Oct 8, 2026
4b13ab6
fix(lint): move the macOS input-source probe out of app.ts (#26643)
brennanb2025 Oct 8, 2026
04ac6d6
Hold messages in the host until a chat's agent has finished starting …
brennanb2025 Oct 8, 2026
5de5391
fix(lint): move knownAgentIds out of the session host (#26648)
brennanb2025 Oct 8, 2026
a062abf
Stop native chat jumping when Codex starts a foreground command (#26503)
brennanb2025 Oct 8, 2026
47019ae
fix(editor): route zoom gestures and app zoom to the PDF viewer (#26652)
Jinwoo-H Oct 8, 2026
6ceb423
fix(native-chat): return focus to the composer after a pick (#26574)
AmoabaKelvin Oct 8, 2026
23fd5e6
fix(browser): keep the annotation composer off the element it annotat…
AmoabaKelvin Oct 8, 2026
d4acd11
fix(window): stop a covered window drawing after a phone stream, and …
Jinwoo-H Oct 8, 2026
4735ece
fix(native-chat): a /compact sent while the agent works waits in line…
brennanb2025 Oct 8, 2026
55eb48c
Let automations pass extra agent arguments on each run (#26659)
AmethystLiang Oct 8, 2026
ff4a51c
Show sign-in guidance for all native chat agents (#26544)
brennanb2025 Oct 8, 2026
58a58f4
Show OMP sign-in guidance when OMP reports no model selected (#26649)
brennanb2025 Oct 8, 2026
81fd59d
fix: keep workspace search filter button on one line (#26580)
genni613 Oct 8, 2026
4d1a3dd
Detect installed GitHub CLI behind hung launchers (#25183)
OrcaWin Oct 8, 2026
3c07588
feat(native-chat): make native chat replies flow in and the transcrip…
AmoabaKelvin Oct 8, 2026
bb44f74
Keep native chat /clear in the same conversation (#26579)
brennanb2025 Oct 8, 2026
59b9bde
Reduce repeated test work and fix Windows cleanup and IME confirmatio…
nwparker Oct 8, 2026
dec18a8
fix(runtime): settle DSH tui-idle on its hook-store done (#26481)
Jinwoo-H Oct 9, 2026
ad7af63
fix(relay): throttle the connection-reservations autovacuum so a run …
Jinwoo-H Oct 9, 2026
0e8e4e7
Reduce repeated test work and skip unrelated server matrices (#26711)
nwparker Oct 9, 2026
4ad8690
Resolve native chat workspaces from catalog snapshots (#26428)
AmethystLiang Oct 9, 2026
d010c83
test(terminal): check the runtime's workspace layout against structur…
Jinwoo-H Oct 9, 2026
7f0e067
test(e2e): layout oracle scenarios with window, headless serve and SS…
Jinwoo-H Oct 9, 2026
37833ce
feat(native-chat): add a chat-owned command receipt store (#26653)
brennanb2025 Oct 9, 2026
d191386
Offer Resume in New CLI / Native Chat from the tab right-click menu (…
brennanb2025 Oct 9, 2026
820277c
Show pre-upgrade Experimental Chat UI users a one-time native chat up…
brennanb2025 Oct 9, 2026
ebb192e
Native chat: Cmd/Ctrl+F finds in the chat (#26517)
brennanb2025 Oct 9, 2026
978c32b
fix(remote): group migrated folders under their execution host (#26535)
nwparker Oct 9, 2026
da6d632
[CI] Revert library patches introduced by test optimization (#26727)
nwparker Oct 9, 2026
04d2ccb
Default status-bar usage to Compact and explain the change once (#26726)
AmethystLiang Oct 9, 2026
bdf0d66
Provide Orca CLI on managed Linux and macOS servers (#26539)
nwparker Oct 9, 2026
1cda323
Report browser placement support from the installed provider (#26559)
nwparker Oct 9, 2026
56cdd67
fix(native-chat): read a queued message in full (#26004)
brennanb2025 Oct 9, 2026
13c9f1f
fix(floating-workspace): keep file links in their owning panel (#26655)
brennanb2025 Oct 9, 2026
8d3c922
refactor(tabs): reuse persistAgentLaunchTabOrder for copied tab-order…
brennanb2025 Oct 9, 2026
8167dda
Distinguish remote browser failures from server connection failures (…
nwparker Oct 9, 2026
b9a7830
Keep new browser tabs on SSH routing after managed conversion (#26570)
nwparker Oct 9, 2026
118de20
Keep open Remote Settings subscribed to the saved-server catalog (#26…
nwparker Oct 9, 2026
b71e538
Explain why stopping the selected Active Server is refused (#26584)
nwparker Oct 9, 2026
6a15cd8
Preserve editor file identity during SSH host conversion (#26593)
nwparker Oct 9, 2026
4e232f9
Preserve execution host identity throughout folder sidebar rows (#26634)
nwparker Oct 9, 2026
f3c0390
Fix Compact usage notice focus and older-host compatibility (#26747)
AmethystLiang Oct 9, 2026
45a969f
Wait for retained editor ownership before listing Markdown documents …
nwparker Oct 9, 2026
5264a7d
Retire canceled managed startup checks before reconnecting (#26645)
nwparker Oct 9, 2026
b79862d
Describe unverifiable managed servers without claiming they stopped (…
nwparker Oct 9, 2026
d2d2d39
Refresh rich Markdown links when document metadata changes (#26595)
nwparker Oct 9, 2026
496a171
fix(acp): keep OMP replies that follow its reasoning (#26658)
brennanb2025 Oct 9, 2026
6235f9a
fix(acp): show the agent's own reason when a prompt fails (#26666)
brennanb2025 Oct 9, 2026
f9d0aa2
Refresh open Markdown links when workspace files change (#26599)
nwparker Oct 9, 2026
4f126bc
Show "Pi isn't signed in" in native chat before the first send (#26743)
brennanb2025 Oct 9, 2026
d273d85
fix(native-chat): underline a file path only once its workspace confi…
brennanb2025 Oct 9, 2026
55d348d
feat(native-chat): show an agent message's sender by its current titl…
brennanb2025 Oct 9, 2026
fc5eb16
Send a headless automation's prompt to agents that read it after they…
brennanb2025 Oct 9, 2026
d7e985c
Start worktree.create's agent through the launch executor (#26709)
brennanb2025 Oct 9, 2026
46460d4
feat(runtime): require Node 24 for servers and remote hosts (#26171)
nwparker Oct 9, 2026
db53143
Update README downloads badge
github-actions[bot] Oct 9, 2026
ded0144
fix(native-chat): settle a dead agent's leftover work in one write th…
brennanb2025 Oct 9, 2026
f01bd93
Keep managed workspace paths out of desktop editor launches (#26668)
nwparker Oct 9, 2026
cf8cc09
[CI] Enable the existing Windows hang watchdog and preserve restart e…
nwparker Oct 9, 2026
cc2ad7b
fix: dispatch Muse Windows hooks directly on safe profile paths (#26755)
nwparker Oct 9, 2026
69cf557
fix(sidebar): keep project headers from overlapping the pinned host (…
AmethystLiang Oct 9, 2026
cbad641
feat(grok): show Grok's subagents as subagent rows (#26508)
brennanb2025 Oct 9, 2026
bfd9858
Retry failed catalog reads when SSH hosts move to Remote (#26531)
nwparker Oct 9, 2026
418c601
Start orchestration workers and remote workers through the launch exe…
brennanb2025 Oct 9, 2026
bcb7305
Refresh SSH host status after a verified manual managed-server update…
nwparker Oct 9, 2026
c586cce
fix(acp): start chats for agents that report no model (#26587)
brennanb2025 Oct 9, 2026
4eb6c0e
test(native-chat): fix main typecheck after the batched journal commi…
brennanb2025 Oct 9, 2026
df922d3
Keep one local project identity after concurrent registration (#26789)
nwparker Oct 9, 2026
6ef42ad
Keep Git identity probes from blocking SSH host reconversion (#26578)
nwparker Oct 9, 2026
6ba8641
Show model and effort choices for every agent before its session star…
brennanb2025 Oct 9, 2026
39a01f9
feat(agent-launch): create a folder workspace and start its agent in …
brennanb2025 Oct 9, 2026
1578716
revert(runtime): temporarily restore the previous host Node minimum (…
nwparker Oct 9, 2026
3ca1d81
fix(source-control): wait for the repo owner's editor saves before di…
nwparker Oct 9, 2026
fd6bc7e
Keep managed status warnings out of desktop gitignore writes (#26671)
nwparker Oct 9, 2026
e43997c
Roll back Windows hang watchdog activation (#26804)
nwparker Oct 9, 2026
f16212a
feat(acp): compact Grok, OpenCode and OMP chats (#26502)
brennanb2025 Oct 9, 2026
1dab0d0
Scope file deletion saves and tab closing to the file owner (#26679)
nwparker Oct 9, 2026
7b1242b
[CI] Reduce repeated test work and use pinned Bun for localization ex…
nwparker Oct 9, 2026
049bf80
test(e2e): keep two host sections in the catalog-retry reconnect test…
OrcaWin Oct 9, 2026
c12c211
Preserve retained desktop browser pages during SSH conversion (#26572)
nwparker Oct 9, 2026
3bcb312
Keep managed servers unverifiable until they answer (#26637)
nwparker Oct 9, 2026
4845ae8
Restore editor file watching when remote host contact returns (#26606)
nwparker Oct 9, 2026
9be39b6
Restore remote explorer updates after server recovery (#26612)
nwparker Oct 9, 2026
6aef5c5
Phase 3.7: fix SSH/remote failures found by adversarial real-host tes…
OrcaWin Oct 9, 2026
6c20143
Preserve the selected host in explorer watcher ownership (#26616)
nwparker Oct 9, 2026
93a6b1a
Keep managed file drags out of desktop browser paths (#26698)
nwparker Oct 9, 2026
22534fe
Show whole-tab hover cards with icons and smooth tab-to-tab slides (#…
nwparker Oct 9, 2026
5bffa93
fix(native-chat): match journal commit signature in receipt test (#26…
AmethystLiang Oct 9, 2026
941c8d8
Reset explorer tree lifetime when its execution host changes (#26627)
nwparker Oct 9, 2026
05e7040
Keep managed file Copy from selecting a desktop file (#26682)
nwparker Oct 9, 2026
05ab94b
Move shared file watches when the selected remote host changes (#26632)
nwparker Oct 9, 2026
c9c6a00
Keep usage overflow chip width stable as hidden count changes (#26873)
AmethystLiang Oct 9, 2026
3f37f7e
Keep an unplaceable row owner out of desktop Open in launches (#26797)
OrcaWin Oct 9, 2026
9d1cd1e
[CI] Consolidate related tests and advance transcript waits with the …
nwparker Oct 9, 2026
40716d7
fix(remote-terminal): keep the disconnected-input grace honest across…
OrcaWin Oct 9, 2026
bd85767
[CI] Use public threads for mobile unit tests (#26899)
nwparker Oct 9, 2026
1c773a3
refactor(ssh-relay-runtime): clean up Phase 3-3.8 code (#26889)
OrcaWin Oct 9, 2026
94ed167
refactor(mobile): let the build alone decide the OTA shell (#26825)
Jinwoo-H Oct 9, 2026
7e621d5
refactor(ssh-orcad-lifecycle): clean up Phase 3-3.8 code (#26891)
OrcaWin Oct 9, 2026
7b91405
Let in-page links switch sections inside a chat visual (#26729)
brennanb2025 Oct 9, 2026
5f62f49
refactor(orcad-daemon-startup-cli): clean up Phase 3-3.8 code (#26892)
OrcaWin Oct 9, 2026
51e7181
Keep remote terminal path links on their own host (#26696)
nwparker Oct 9, 2026
1b2d075
refactor(ssh-connect-managed): clean up Phase 3-3.8 code (#26890)
OrcaWin Oct 9, 2026
7d24509
Reject terminal file drops from a different execution host (#26830)
nwparker Oct 9, 2026
077b62d
fix: use alternate browser for rich Markdown modifier clicks (#26920)
nwparker Oct 9, 2026
65580c5
Honor OpenCode 2 launch mode when resuming sessions (#26843)
nwparker Oct 9, 2026
d2d17a3
fix(orcad): show help before server startup
nwparker Oct 9, 2026
5da51ea
Update README downloads badge
github-actions[bot] Oct 9, 2026
3eea6a5
fix(mobile): size onboarding slides to the modal sheet on iPad (#26919)
Jinwoo-H Oct 9, 2026
cbc6f54
refactor(runtime-core): clean up Phase 3-3.8 code (#26894)
OrcaWin Oct 9, 2026
54b623b
refactor(execution-host): one connection-to-host helper (#26929)
OrcaWin Oct 9, 2026
fbcf0ed
refactor(pty): one remote-runtime PTY id predicate (#26930)
OrcaWin Oct 9, 2026
1f8dce8
refactor(runtime-rpc-terminal-io): clean up Phase 3-3.8 code (#26895)
OrcaWin Oct 9, 2026
6013d09
fix(mobile): one host sidebar on iPad, with the page owning the host …
Jinwoo-H Oct 9, 2026
e5412cc
test(e2e): headless layout oracle covers tab moves between groups (#2…
Jinwoo-H Oct 9, 2026
9021133
Add the inert workspace layout model, Loader and Serializer (#26748)
Jinwoo-H Oct 9, 2026
150bf49
feat(kiro): report Kiro agent status and list Kiro sessions in histor…
w-felipe360 Oct 9, 2026
cce31b4
refactor(renderer-terminal-runtime): clean up Phase 3-3.8 code (#26900)
OrcaWin Oct 9, 2026
a8ce574
Add inert layout commands and runtime transitions (#26749)
Jinwoo-H Oct 9, 2026
6dab0cb
refactor(ipc-persistence-shared): clean up Phase 3-3.8 code (#26902)
OrcaWin Oct 9, 2026
65b2fcf
Start AI commit messages from the same shell environment chats use (#…
Jinwoo-H Oct 9, 2026
ce9eb66
refactor(renderer-ui-store): clean up Phase 3-3.8 code (#26903)
OrcaWin Oct 9, 2026
8b2a5e4
Re-land Claude per-account folders (#24434, #26405) with the upgrade …
Jinwoo-H Oct 9, 2026
6a929b2
fix(hosts): host registry stops minting client SSH hosts from a serve…
OrcaWin Oct 9, 2026
35b145d
[CI] Run Activity tests together and replace the real idle wait (#26949)
nwparker Oct 9, 2026
573ff0b
Save a new chat's first message during create (#26332)
brennanb2025 Oct 9, 2026
8defd66
A new Pi chat names the model it will run on its first frame (#26821)
brennanb2025 Oct 9, 2026
dfffb30
Start orchestration workers as native chats for every agent that has …
brennanb2025 Oct 9, 2026
470f685
refactor(providers): local git provider behind the host router (#26955)
OrcaWin Oct 9, 2026
2cb2bef
feat(native-chat): highlight code blocks and shell commands (#26343)
AmoabaKelvin Oct 9, 2026
2356baa
Open a chat visual in its own tab instead of the sidebar (#26728)
brennanb2025 Oct 9, 2026
b8a0554
refactor(runtime): runtime git commands use a provider for every host…
OrcaWin Oct 9, 2026
4a96463
fix(automations): stop offering Blank Terminal where it cannot be cho…
Jinwoo-H Oct 9, 2026
62878c3
fix(folders): folder workspaces can answer "paired server" (#26958)
OrcaWin Oct 9, 2026
80d7e2d
fix(relay): spread drain placement over a load band instead of one em…
Jinwoo-H Oct 9, 2026
dc69efa
fix(relay): a database fault reaching unhandledRejection no longer ki…
Jinwoo-H Oct 9, 2026
37d2154
feat(relay): read-only seat feed on cells for the directors' shadow d…
Jinwoo-H Oct 9, 2026
1472b68
feat(relay): Cloud Storage bucket for the per-cell runtime switch fil…
Jinwoo-H Oct 9, 2026
d358e59
feat(relay): one-cell flag write workflow with dry run, compare-and-s…
Jinwoo-H Oct 9, 2026
5ffc8d7
Keep Chat UI users with a Terminal default on the terminal, with a ch…
brennanb2025 Oct 9, 2026
0703073
Add an inert read-only layout stream and the layout round-trip self-c…
Jinwoo-H Oct 9, 2026
e88c8c7
chore(providers): neutral router rationale and typed provider generat…
OrcaWin Oct 9, 2026
e72044a
fix(relay): a lost database reply ends its connection within statemen…
Jinwoo-H Oct 9, 2026
ff2c5e0
Merge remote-tracking branch 'upstream/main' into sync/upstream-1.4.214
frbarbre Oct 9, 2026
2ae6fac
fix(fork): keep the Claude web default view reachable after upstream …
frbarbre Oct 9, 2026
e82fc43
fix(fork): let agent-note fields through upstream's new diff comment …
frbarbre Oct 9, 2026
e462499
fix(fork): claim OS file drops over review comment boxes under upstre…
frbarbre Oct 9, 2026
318ec0f
docs(fork): log the sync of upstream 1.4.214 (387 commits)
frbarbre Oct 9, 2026
63f7c8a
fix(fork): adapt fork code to upstream 1.4.214's RPC permissions, cha…
frbarbre Oct 9, 2026
392095e
fix(fork): install Bun for pnpm lint in Verify, which upstream's cata…
frbarbre Oct 9, 2026
3300fc3
docs(fork): note the Verify rounds in the 1.4.214 sync log
frbarbre Oct 9, 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.
4 changes: 4 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -97,3 +97,7 @@

# Generated ACP schemas are checked byte-for-byte against formatted output.
/src/main/acp/generated/*.generated.ts linguist-generated=true text eol=lf
# Generated skill bundle artifacts are verified byte-for-byte against fresh output.
/resources/skills/*.json linguist-generated=true text eol=lf
# Vitest writes snapshots with LF, so checkout bytes must match on every host.
**/__snapshots__/*.snap text eol=lf
3 changes: 1 addition & 2 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Thanks for contributing to Orca.

## Local Setup

Install Node 24, pnpm, and the Bun version in [`config/bun-version`](../config/bun-version).
Install Node 24, pnpm, and the Bun version in [`config/.bun-version`](../config/.bun-version).
`pnpm test` runs Vitest on Bun, with Node workers for runtime contracts such as SQLite,
native PTYs, socket liveness, and V8 memory behavior. `pnpm test:node` runs the same suites
entirely on Node. Builds and dependency installation still use Node and pnpm.
Expand All @@ -29,7 +29,6 @@ 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

Expand Down
3 changes: 2 additions & 1 deletion .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
<!-- What problem does this solve, and why is this approach better than the alternatives you considered? -->

## Linked Issue

_If you do not have one and are an outside contributors, your PR **wiil** be ignored. Refs is not sufficient. Link an actual issue_
<!-- Link the issue this PR addresses, there should ALWAYS be one (for outside contributors) -->
<!-- SPECIAL CASE: If you are a maintainer (member of stablyai org) AVOID opening needless issues. Only attach pre-existing ones -->
Expand Down Expand Up @@ -39,7 +40,7 @@ Fixes #

## Agent skill upstream boundary

- [ ] Not applicable, or this change follows `docs/reference/agent-skill-sharing-upstream-boundary.md` and copies or mechanically translates no upstream skill-installer source, tests, fixtures, registry entries, path tables, comments, or documentation.
- [ ] Not applicable, or this change copies or mechanically translates no upstream skill-installer source, tests, fixtures, registry entries, path tables, comments, or documentation.

## Notes

Expand Down
122 changes: 116 additions & 6 deletions .github/workflows/adhoc-mac-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ name: Adhoc macOS + Windows Dev Build
#
# Deliberately narrow scope:
# - macOS and Windows desktop installers. Linux keeps using RC/stable.
# - No tests, no lint, no e2e. PR CI and release-cut remain the gates.
# - No tests, no lint, no e2e. PR CI and release-cut remain the gates. The one
# exception is the orcad template: like release-cut, it is merged from the
# node-server lanes that build and qualify each SSH target's slot.
# - macOS is signed and notarized so TCC grants survive updates.
# - Windows is unsigned; the published release notes explain the one-time
# SmartScreen/manual-install requirement.
Expand Down Expand Up @@ -81,21 +83,116 @@ env:
ADHOC_RETAIN_DAYS: 30

jobs:
# Why: every job below checks out its own copy, and a branch name read per job builds whatever
# the branch points at when that job starts. A push mid-run then mixes commits, e.g. slot lanes
# from one commit merged by a template step from the next. Resolving once pins the whole run.
# The mac job still vets this commit's reachability before anything is signed.
resolve-ref:
if: github.repository == 'stablyai/orca'
runs-on: ubuntu-latest
timeout-minutes: 5
permissions:
contents: read
outputs:
sha: ${{ steps.resolve.outputs.sha }}
steps:
- name: Resolve the requested ref to one commit
id: resolve
shell: bash
env:
REQUESTED_REF: ${{ inputs.ref || github.ref_name }}
REPO_URL: https://github.com/${{ github.repository }}
run: |
set -euo pipefail
case "$REQUESTED_REF" in
refs/pull/*|pull/*)
echo "::error::Refusing to build PR ref '$REQUESTED_REF'; push the code to a branch of stablyai/orca instead."
exit 1
;;
esac
if [[ "$REQUESTED_REF" =~ ^[0-9a-f]{40}$ ]]; then
sha="$REQUESTED_REF"
else
# Branch first, as the mac job's vet does; a peeled annotated tag names its commit.
refs="$(git ls-remote "$REPO_URL" "refs/heads/$REQUESTED_REF" "refs/tags/$REQUESTED_REF" "refs/tags/$REQUESTED_REF^{}")"
sha=""
for name in "refs/heads/$REQUESTED_REF" "refs/tags/$REQUESTED_REF^{}" "refs/tags/$REQUESTED_REF"; do
sha="$(awk -v ref="$name" '$2 == ref { print $1; exit }' <<<"$refs")"
[[ -n "$sha" ]] && break
done
fi
if [[ -z "$sha" ]]; then
echo "::error::'$REQUESTED_REF' is not a branch, tag, or full commit SHA of stablyai/orca."
exit 1
fi
echo "Resolved $REQUESTED_REF -> $sha"
echo "sha=$sha" >>"$GITHUB_OUTPUT"

# Why its own job: this package ships relays for Windows SSH hosts, and only a
# Windows runner compiles the addon that launches one outside sshd's job.
# Why the unvetted ref is safe here: this job holds no secrets, and the mac job
# vets the same ref before it downloads anything, so fork code never gets signed.
relay-windows-process-tree:
if: github.repository == 'stablyai/orca'
needs: resolve-ref
permissions:
contents: read
uses: ./.github/workflows/relay-windows-process-tree.yml
with:
ref: ${{ inputs.ref || github.ref_name }}
ref: ${{ needs.resolve-ref.outputs.sha }}

# Why: a branch cut before the orcad template landed has none to build or ship.
orcad-template-support:
needs: resolve-ref
runs-on: ubuntu-latest
timeout-minutes: 5
permissions:
contents: read
outputs:
ships: ${{ steps.detect.outputs.ships }}
steps:
- name: Checkout the template packager only
uses: actions/checkout@v6
with:
ref: ${{ needs.resolve-ref.outputs.sha }}
sparse-checkout: |
/config/scripts/packaged-orcad-template.cjs
sparse-checkout-cone-mode: false
persist-credentials: false
- name: Detect whether the ref ships the orcad template
id: detect
shell: bash
run: |
if [[ -f config/scripts/packaged-orcad-template.cjs ]]; then
echo "ships=true" >>"$GITHUB_OUTPUT"
else
echo "ships=false" >>"$GITHUB_OUTPUT"
echo "::notice::This ref predates the orcad template; the build ships without it."
fi

# Design D2, as release-cut does: every desktop build ships the orcad template (server JS plus
# every target's addons), merged from the node-server lanes that qualify each slot at this ref.
# Without it an adhoc build cannot deploy managed orcad to an SSH host. No secrets, like the
# relay job, and the mac job vets the ref before anything is signed.
orcad-template:
needs: [resolve-ref, orcad-template-support]
if: needs.orcad-template-support.outputs.ships == 'true'
permissions:
contents: read
uses: ./.github/workflows/node-server-tests.yml
with:
ref: ${{ needs.resolve-ref.outputs.sha }}
build_template: true

build-adhoc-mac:
needs: relay-windows-process-tree
if: github.repository == 'stablyai/orca'
needs: [resolve-ref, relay-windows-process-tree, orcad-template-support, orcad-template]
# Why not the implicit success(): a ref without the orcad template skips that job on purpose.
if: >-
!cancelled() && github.repository == 'stablyai/orca' &&
needs.relay-windows-process-tree.result == 'success' &&
needs.orcad-template-support.result == 'success' &&
(needs.orcad-template.result == 'success' ||
(needs.orcad-template.result == 'skipped' &&
needs.orcad-template-support.outputs.ships == 'false'))
# Why an environment: it gives the signing/notary/App secrets somewhere to
# live that a stale copy of this workflow on an old branch cannot reach.
# Referencing it is a no-op until repo settings give it teeth; the intended
Expand All @@ -109,6 +206,7 @@ jobs:
version: ${{ steps.adhoc.outputs.version }}
head_sha: ${{ steps.adhoc.outputs.head_sha }}
published: ${{ steps.publish_live.outcome == 'success' && 'true' || 'false' }}
ships_orcad_template: ${{ needs.orcad-template-support.outputs.ships }}
runs-on: blacksmith-6vcpu-macos-15
# Why 150: it must exceed the worst case the retry budgets below can produce
# (install 3x10 + publish 2x45 = 120, plus ~25 for checkout/build/verify), or
Expand All @@ -128,7 +226,8 @@ jobs:
id: vetted
shell: bash
env:
REQUESTED_REF: ${{ inputs.ref || github.ref_name }}
# The commit resolve-ref pinned for every job; vetting it keeps the reachability test.
REQUESTED_REF: ${{ needs.resolve-ref.outputs.sha }}
REPO_URL: https://github.com/${{ github.repository }}
run: |
set -euo pipefail
Expand Down Expand Up @@ -292,6 +391,14 @@ jobs:
# sshd's job for a standard user on a Windows SSH host.
ORCA_REQUIRE_RELAY_NATIVE_ADDONS: x64,arm64

# After the app build so nothing that cleans out/ can drop it; electron-builder ships it.
- name: Download the orcad deployment template
if: needs.orcad-template-support.outputs.ships == 'true'
uses: actions/download-artifact@v8
with:
name: orcad-template
path: out/orcad-template

# Why the token is minted here and not at the top: installation tokens live
# one hour, everything before this point writes nothing, and the notary round
# trip inside the publish step can be tens of minutes. Minting after the build
Expand Down Expand Up @@ -366,6 +473,8 @@ jobs:
GH_TOKEN: ${{ steps.app_token.outputs.token }}
ORCA_ADHOC_BUILD_VERSION: ${{ steps.adhoc.outputs.version }}
ORCA_BUILD_COMMIT: ${{ steps.adhoc.outputs.commit }}
# beforePack and afterPack fail the package when the template is absent.
ORCA_REQUIRE_ORCAD_TEMPLATE: ${{ needs.orcad-template-support.outputs.ships == 'true' && '1' || '' }}
CSC_LINK: ${{ secrets.MAC_CERTS }}
CSC_KEY_PASSWORD: ${{ secrets.MAC_CERTS_PASSWORD }}
# Why all three: electron-builder's notarize step authenticates to the
Expand Down Expand Up @@ -514,3 +623,4 @@ jobs:
tag: ${{ needs.build-adhoc-mac.outputs.tag }}
ref: ${{ needs.build-adhoc-mac.outputs.head_sha }}
version: ${{ needs.build-adhoc-mac.outputs.version }}
orcad_template: ${{ needs.build-adhoc-mac.outputs.ships_orcad_template == 'true' }}
5 changes: 2 additions & 3 deletions .github/workflows/ci-cache-warmup.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ on:
- '.github/actions/prepare-native-runtime/**'
- '.github/actions/prepare-git-compatibility/**'
- '.github/actions/prepare-headless-compiler/**'
- 'config/scripts/headless-detector-compiler-cache*'
- 'config/scripts/headless-detector-compiler-cache.mjs'
- '.github/actions/prepare-linux-package-fixture/**'
- 'config/docker/headless-serve-shutdown/**'
- 'config/docker/cli-launch-contract/**'
Expand Down Expand Up @@ -44,12 +44,11 @@ on:
- '.github/workflows/ci-cache-warmup.yml'
- '.github/actions/prepare-git-compatibility/**'
- '.github/actions/prepare-headless-compiler/**'
- 'config/scripts/headless-detector-compiler-cache*'
- 'config/scripts/headless-detector-compiler-cache.mjs'
- '.github/actions/prepare-linux-package-fixture/**'
- 'config/docker/headless-serve-shutdown/**'
- 'config/docker/cli-launch-contract/**'
- 'config/docker/daemon-shutdown-descendants/**'
- 'config/scripts/ci-cache-warmup-workflow.test.mjs'

permissions:
contents: read
Expand Down
59 changes: 39 additions & 20 deletions .github/workflows/cloud-deploy-relay-production-same-cap-job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ jobs:
if: ${{ github.ref == 'refs/heads/main' }}
runs-on: blacksmith-2vcpu-ubuntu-2204
# The pre-drain sample adds 3-8 min (20 at most); a timeout cancels the job and skips the failsafe.
timeout-minutes: 90
# A 1200000 drain step alone may take 50 min.
timeout-minutes: 120
environment: production
env:
GCP_PROJECT_ID: onorca-cloud
Expand All @@ -53,8 +54,9 @@ jobs:
# /v1/assign at hosts / window and is re-placed through the director's drain-return
# lane. The wave validator admits only its closed set, and anything below the 300000
# default only on US general cells: Asia drains are bound by their targets' accept
# rate. The transition wait below is the 15-min migration lease plus this window. A
# cell on an older image drains at once.
# rate. The transition wait below is the 15-min migration lease plus this window, plus
# its excess over 300000, since restart-safe waits a window of quiet after the drain. A
# cell on an older image drains at once, or refuses a window above 300000.
DRAIN_PACE_WINDOW_MS: ${{ inputs.drain-pace-window-ms }}
steps:
- name: Require exact reusable-workflow configuration
Expand Down Expand Up @@ -499,8 +501,8 @@ jobs:
if: ${{ inputs.mode == 'verify' }}
run: echo 'Exact same-cap rollback point verified.'

# The sample can age the first one-hour token by up to 20 min; the drain's 20-min
# restart-safe wait gets a fresh one.
# The sample can age the first one-hour token by up to 20 min; the drain's restart-safe
# wait (20 min at the default pace, 50 at the slowest) gets a fresh one.
- id: drain-auth
if: ${{ inputs.mode != 'verify' && env.ROLLBACK_RESUME != 'true' }}
uses: google-github-actions/auth@v2
Expand All @@ -517,6 +519,11 @@ jobs:
env:
ORCA_RELAY_ADMIN_ID_TOKEN: ${{ steps.drain-auth.outputs.id_token }}
run: |
# Before any mutation: a cell whose image caps the pace below this one stops untouched.
node dev/scripts/prepare-relay-production-capacity-canary.mjs \
--director-origin "${DIRECTOR_ORIGIN}" --cell-origin "${CELL_ORIGIN}" \
--cell-id "${TARGET_CELL_ID}" --approved-cells same-cap --mode pace-check \
--pace-window-ms "${DRAIN_PACE_WINDOW_MS}"
# Opens the window the report-only shadow health gate below judges this cell over.
echo "drain-started-at=$(date -u +%FT%TZ)" >> "${GITHUB_OUTPUT}"
echo "MUTATION_STARTED=true" >> "${GITHUB_ENV}"
Expand Down Expand Up @@ -555,7 +562,7 @@ jobs:
--heartbeat either --admission migration-only --draining required \
--activity restart-safe --expected-image-digests "${PREDECESSOR_IMAGE_DIGEST}" \
--pace-window-ms "${DRAIN_PACE_WINDOW_MS}" \
--timeout-ms "$((900000 + DRAIN_PACE_WINDOW_MS))"
--timeout-ms "$((900000 + DRAIN_PACE_WINDOW_MS + (DRAIN_PACE_WINDOW_MS > 300000 ? DRAIN_PACE_WINDOW_MS - 300000 : 0)))"
echo "drain-settled-at=$(date -u +%FT%TZ)" >> "${GITHUB_OUTPUT}"

- id: capacity-auth
Expand Down Expand Up @@ -709,19 +716,31 @@ jobs:
env:
ORCA_RELAY_ADMIN_ID_TOKEN: ${{ steps.post-auth.outputs.id_token }}
run: |
# A single transient 5xx (LB warm-up behind a fresh instance) must not
# fail a canary; 4xx (auth, generation mismatch) still fails fast.
# Rides out one DB stall: 5-7 s, then readiness grace and two 10 s LB
# health checks (c18, 10-07 18:49Z: 503 "no healthy upstream", healthy
# 16 s later). A cell still down after 60 s fails; other 4xx fail fast.
# Retried in this loop: the runner's 7.81 client (Ubuntu 22.04) never
# retries under --fail-with-body, so its --retry flags were inert.
admin_post() {
local out="${RUNNER_TEMP}/$1.json"
if ! curl --fail-with-body --max-time 30 \
--retry 3 --retry-delay 2 --retry-connrefused --output "${out}" \
--request POST "$2" \
--header "Authorization: Bearer ${ORCA_RELAY_ADMIN_ID_TOKEN}" \
--header 'Content-Type: application/json' --data "$3"; then
cat "${out}" >&2
return 1
fi
cat "${out}"
local out="${RUNNER_TEMP}/$1.json" window=60 delay=5 status
local deadline=$((SECONDS + window))
while true; do
# A refused or timed-out attempt writes no body; never report the last one's.
rm -f "${out}"
status="$(curl --silent --show-error --max-time 30 --output "${out}" \
--write-out '%{http_code}' --request POST "$2" \
--header "Authorization: Bearer ${ORCA_RELAY_ADMIN_ID_TOKEN}" \
--header 'Content-Type: application/json' --data "$3")" || status=000
case "${status}" in
2??) cat "${out}"; return 0 ;;
000|408|429|5??) ((SECONDS + delay < deadline)) || break ;;
*) break ;;
esac
sleep "${delay}"
done
echo "admin_post $1: HTTP ${status}" >&2
cat "${out}" >&2 2>/dev/null || true
return 1
}
node dev/scripts/verify-relay-capacity-transition.mjs \
--director-origin "${DIRECTOR_ORIGIN}" --cell-origin "${CELL_ORIGIN}" \
Expand Down Expand Up @@ -824,8 +843,8 @@ jobs:
# read cost its full retry budget and can push the job past timeout-minutes, and a
# cancelled job takes the whole wave with it. A healthy gate is already minutes of
# serial reads, so both bounds sit above that: the script settles at seven minutes and
# reaching this eight is the pathological case. Eight on top of a ~14-minute cell still
# leaves the job's 90 minutes intact.
# reaching this eight is the pathological case. Eight on top of a cell of ~14 minutes
# (~45 at the slowest pace) still leaves the job's 120 minutes intact.
timeout-minutes: 8
env:
DRAIN_STARTED_AT: ${{ steps.drain.outputs.drain-started-at }}
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/cloud-deploy-relay-production-same-cap.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,11 @@ on:
required: true
type: string
drain-pace-window-ms:
description: Window the cell spreads its drain over; below 300000 only for US general cells, named in the confirmation
description: Window the cell spreads its drain over; below 300000 only for US general cells; any other value named in the confirmation
required: true
default: '300000'
type: choice
options: ['300000', '60000', '30000']
options: ['300000', '60000', '30000', '900000', '1200000']
canary-run-id:
description: Successful same-code canary in this rehome control generation; reusable across batches
required: false
Expand Down
Loading
Loading