Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1064 commits
Select commit Hold shift + click to select a range
9e8a3a5
fix(repos): stop reporting clones that never ran as successful (#23770)
AmoabaKelvin Oct 6, 2026
83cf7cf
perf(ci): compile release JavaScript once for all packaging hosts (#2…
nwparker Oct 6, 2026
58b4633
refactor(codex): remove code the ~/.codex hook rework left unused (#2…
Jinwoo-H Oct 6, 2026
53edf8e
fix: recover deleted Active Server defaults and preserve editor hosts…
nwparker Oct 6, 2026
7e52bed
fix(editor): recover PDF previews after failed refreshes
nwparker Oct 6, 2026
d6b155d
Fix Claude's stuck spinner after Escape cancellation (#25846)
nwparker Oct 6, 2026
40f0319
fix(native-chat): fingerprint the consumed transcript boundary (#25965)
nwparker Oct 6, 2026
f7c542c
Keep profile saving alive after a stalled main loop (#25318)
AmethystLiang Oct 6, 2026
ce4c99a
fix(terminal): keep a pane closed just before quit from coming back o…
Jinwoo-H Oct 6, 2026
0a26f3e
fix(native-chat): honor saved agent Command and Arguments (#25721)
brennanb2025 Oct 6, 2026
e1e9d1c
feat(agent-launch): host-assigned caller identity and a launch record…
brennanb2025 Oct 6, 2026
28ed544
Fix send picker reveal under collapsed hosts and parents (#25950)
nwparker Oct 6, 2026
e813fa5
feat(native-chat): keep a message a Stop took back on screen, with on…
brennanb2025 Oct 6, 2026
6aa12c3
Name native Claude and Codex chats after their first message (#25724)
brennanb2025 Oct 6, 2026
51062e6
fix(test): pass resolveLaunchArgs in the record store slot test so ma…
Jinwoo-H Oct 6, 2026
cc60067
fix(test): pass resolveLaunchArgs in the Codex stopped-send-order tes…
Jinwoo-H Oct 6, 2026
c893048
feat(native-chat): show which agent a chat message is from, and open …
brennanb2025 Oct 6, 2026
72b8411
test(e2e): terminal layout parity check against main (#25681)
Jinwoo-H Oct 6, 2026
6352ff3
Run nested workspace deletion in the background (#25975)
nwparker Oct 6, 2026
d8c871a
Speed up unit tests with cross-runtime duration scheduling (#25967)
nwparker Oct 6, 2026
fa42e57
fix(gitlab): select SSH workspace host for merge request and issue wr…
nwparker Oct 6, 2026
add5344
fix(browser): detect Comet in its Windows vendor directory (#25983)
nwparker Oct 6, 2026
7bc9ff9
fix(grok): add Grok 4.7 to the fallback model catalog (#25976)
Jinwoo-H Oct 6, 2026
1eeb8f3
fix(test): drop the duplicate resolveLaunchArgs that two merges both …
brennanb2025 Oct 6, 2026
2137295
fix(git): use branch-safe author names as username fallback (#25984)
nwparker Oct 6, 2026
deb7374
Simplify reveal and test fixture cleanup (#25978)
nwparker Oct 6, 2026
5345ba3
Fix ownership for terminal and chat file drops (STA-6940, PR 1/6) (#2…
brennanb2025 Oct 6, 2026
31f1035
fix(orchestration): serve a /clear'd native-chat worker through the s…
brennanb2025 Oct 6, 2026
53b9ccb
refactor(terminal): add in-place pane layout geometry apply (unused) …
Jinwoo-H Oct 6, 2026
35e173a
fix(native-chat): alert when a structured chat asks for approval or i…
brennanb2025 Oct 6, 2026
f6448a1
fix(native-chat): say which retry a Claude retry is on and what it la…
brennanb2025 Oct 6, 2026
e717ea6
feat(native-chat): copy chat images from the right-click menu (#24161)
AmoabaKelvin Oct 6, 2026
faed899
fix(ci): run three new SQLite-backed tests in the Node runtime projec…
Jinwoo-H Oct 6, 2026
86d03ff
fix(native-chat): sending brings the latest into view and follows the…
AmoabaKelvin Oct 6, 2026
61bcca9
fix: stop Codex and OpenCode helper servers when Orca quits or crashe…
brennanb2025 Oct 7, 2026
323f312
refactor(terminal): mark layout updates from user gestures (#25680)
Jinwoo-H Oct 7, 2026
3308ff8
Bound YAML merge conversion and close SQLite routing review gaps (#25…
nwparker Oct 7, 2026
9c6702b
test(codex): guard that turning hooks off wins over an in-flight turn…
Jinwoo-H Oct 7, 2026
c9f4cd7
fix(editor): close stale duplicate documents safely
nwparker Oct 5, 2026
91bb636
test(editor): align model and cursor custody fixtures with owner-clos…
nwparker Oct 5, 2026
8bd567a
fix(editor): protect document backing files and complete close cleanup
nwparker Oct 6, 2026
31d8574
fix(editor): retain placeholders for drafts during bulk close
nwparker Oct 6, 2026
983098d
test(codex): synchronize fake clock with forced process close
nwparker Oct 6, 2026
0c32e80
test(codex): reuse unproven close fixture sequence
nwparker Oct 6, 2026
14bae2e
Route mirrored editor closes through their captured runtime owner
nwparker Oct 6, 2026
1040f67
Keep orchestration SQLite fixtures in the Node test runtime
nwparker Oct 6, 2026
f052085
Keep mobile restore SQLite fixture in the Node test runtime
nwparker Oct 7, 2026
66c775f
refactor(terminal): project main's terminal layout after each save (n…
Jinwoo-H Oct 7, 2026
00e3027
feat(agent-launch): show an agent's tab at once, where the caller ask…
brennanb2025 Oct 7, 2026
37ff387
Run combined localization catalog verification on Bun (#25999)
nwparker Oct 7, 2026
2d08b3a
Speed up expensive test fixtures (23–82% less time) (#26000)
nwparker Oct 7, 2026
c0273b1
test(e2e): move the Source Control reveal golden into its own spec so…
Jinwoo-H Oct 7, 2026
3fb72d1
Run Node event-loop measurement after ordinary test suites (#26015)
nwparker Oct 7, 2026
0c96550
fix(native-chat): queued messages carry on in order after any turn, a…
brennanb2025 Oct 7, 2026
cdd0b7a
fix(native-chat): stop flashing a reconnecting line on a stream drop …
brennanb2025 Oct 7, 2026
825d7bd
test(vitest): run agent-launch-instant-tab in the SQLite runtime proj…
Jinwoo-H Oct 7, 2026
9fdd90f
feat(orchestration): a native chat can be a dispatch worker, like a t…
brennanb2025 Oct 7, 2026
b3b6c5d
Give native chat names one source for tabs, sidebar and AI Vault (lis…
brennanb2025 Oct 7, 2026
7a59aa3
fix(worktrees): decide setup before git worktree add on the host's cr…
brennanb2025 Oct 7, 2026
0bdcaf3
fix(claude): start a Claude chat with its saved options and send the …
brennanb2025 Oct 7, 2026
5b1bb78
[STA-6940] Prepare file drops for element owners (PR 2 of 6) (#25748)
brennanb2025 Oct 7, 2026
923ef7c
fix(native-chat): refuse a Command that can't run instead of silently…
brennanb2025 Oct 7, 2026
70c6876
fix(rovo): detect and launch Rovo Dev through acli (#25981)
Jinwoo-H Oct 7, 2026
7c9c3d4
fix(lint): bring structured-agent-session-host back under max-lines (…
Jinwoo-H Oct 7, 2026
d3e1494
test: bound memory used by the runtime Electron audit (#26049)
nwparker Oct 7, 2026
55c86ce
refactor(terminal): report breaches of the two layout invariants; add…
Jinwoo-H Oct 7, 2026
dff65d5
feat(claude): prepare account profiles and shared history (Step 1 of …
brennanb2025 Oct 7, 2026
bfcbcfd
refactor(terminal): move a dragged-out pane in main before the window…
Jinwoo-H Oct 7, 2026
9d8e363
chore(relay): move Asia cell c34 to the general same-cap lists after …
Jinwoo-H Oct 7, 2026
d1fe11c
refactor(terminal): carry pane placement on terminal start, report-on…
Jinwoo-H Oct 7, 2026
76d480f
Fix unsafe test fixtures and the Bun version pin (#26051)
nwparker Oct 7, 2026
7f83e0a
fix(serve): keep every persisted terminal on the phone after serve re…
Jinwoo-H Oct 7, 2026
8464b15
Claude account profiles: dormant routing and consumers (Step 2 of 4) …
brennanb2025 Oct 7, 2026
2f49377
feat(native-chat): Grok as a structured chat over the Agent Client Pr…
brennanb2025 Oct 7, 2026
64bb937
Claude account profiles: dormant WSL guest setup (Step 3 of 4) (#24384)
brennanb2025 Oct 7, 2026
358e4f9
fix(claude): share account history on Windows with junctions and a sa…
Jinwoo-H Oct 7, 2026
988f87e
fix(native-chat): move the attachment failure words to their own modu…
brennanb2025 Oct 7, 2026
d0b0f13
fix(native-chat): hold a queued message until the turn ahead opens (f…
brennanb2025 Oct 7, 2026
6bc5291
fix(orchestration): word the worker brief for a chat worker (#26036)
brennanb2025 Oct 7, 2026
acea59c
refactor(native-chat): remove the records-file and per-chat journal i…
brennanb2025 Oct 7, 2026
0acf039
Keep native contracts on Node and wait for Git upgrade completion (#2…
nwparker Oct 7, 2026
eaceac0
feat(native-chat): searchable model picker (#26011)
AmoabaKelvin Oct 7, 2026
8f42451
feat(native-chat): suggest files on @ and name the triggers (#26017)
AmoabaKelvin Oct 7, 2026
f31d7a4
fix(acp): fail the journal open through AgentSessionJournal.open in t…
Jinwoo-H Oct 7, 2026
a3ecee0
feat(native-chat): one notice card above the composer for the chat's …
brennanb2025 Oct 7, 2026
98e5f5c
Update README downloads badge
github-actions[bot] Oct 7, 2026
c8dcffc
fix(native-chat): pass the @-mention file props in the composer resum…
Jinwoo-H Oct 7, 2026
67dc092
fix(windows): keep generated skills and snapshots LF (#25972)
nwparker Oct 7, 2026
4077fb4
fix(ci): actually exclude Electron probes from the headless node-serv…
Jinwoo-H Oct 7, 2026
b6f3428
perf(tests): reuse Vitest transforms between test runs (#26095)
nwparker Oct 7, 2026
b062278
fix(native-chat): let code blocks grow to their full height (#26021)
AmoabaKelvin Oct 7, 2026
3427450
fix(agent-launch): a phone's launch leaves the desktop window where i…
brennanb2025 Oct 7, 2026
e5ade4b
fix(worktrees): when the host can't fetch a remote base, create from …
brennanb2025 Oct 7, 2026
385fe8a
perf(tests): avoid repeated persistence imports in automation fixture…
nwparker Oct 7, 2026
47f4d3f
feat(agent-launch): the desktop AI buttons start their agent through …
brennanb2025 Oct 7, 2026
e6c298e
fix(native-chat): a Stop Codex took settles the message whose turn ne…
brennanb2025 Oct 7, 2026
535c83a
refactor(composer): delete the full-create path no caller reaches (#2…
brennanb2025 Oct 7, 2026
25e0a29
feat: stream desktop audio and video previews with native controls (#…
nwparker Oct 7, 2026
6fd0918
Stop pane migration fixture hooks before closing stores (#26131)
nwparker Oct 7, 2026
d58ea0c
Advance mocked scheduler clocks without real sleeps (#26135)
nwparker Oct 7, 2026
e6bcc5a
Keep draft reload tests on the existing cache module (#26145)
nwparker Oct 7, 2026
81ba5c3
test: reuse scratch cells in terminal replay oracle scans (#26162)
nwparker Oct 7, 2026
5b0d387
test: avoid Store imports in terminal session fixtures (#26166)
nwparker Oct 7, 2026
5cafefe
Phase 3: every SSH host runs a managed Orca server (orcad), replacing…
OrcaWin Oct 7, 2026
520033b
fix(native-chat): fold thoughts and tool calls between replies into o…
brennanb2025 Oct 7, 2026
2584ed9
feat: play video and music files in mobile previews (#26148)
nwparker Oct 7, 2026
e4da27e
perf(tests): reuse the first UI-state store constructor per case (#26…
nwparker Oct 7, 2026
b8c9671
test(ssh): isolate permission probes from real PID reuse (#26190)
nwparker Oct 7, 2026
2dc98c9
perf(tests): reuse composer decisions without loading the hook (#26179)
nwparker Oct 7, 2026
7f8b4a8
test: isolate remote upload cases from bootstrap writes and clock rol…
nwparker Oct 7, 2026
0d82899
Update README downloads badge
github-actions[bot] Oct 7, 2026
e381443
test: advance retry policy clocks without real waits (#26220)
nwparker Oct 7, 2026
40d35fb
test: run real SSH command contracts under Node (#26226)
nwparker Oct 7, 2026
4a0418d
test: import Activity fixture builders from their existing owners (#2…
nwparker Oct 7, 2026
39710c7
test: load renderer fixture builders without the full Store (#26217)
nwparker Oct 7, 2026
76d1b7b
test: reuse first SQLite fixture construction in five suites (#26231)
nwparker Oct 7, 2026
a576c0b
test(persistence): reuse first constructors in six more suites (#26250)
nwparker Oct 7, 2026
7d6d7ca
fix(skills): observe archive abort errors before reading (#26246)
nwparker Oct 7, 2026
91d6ed0
fix(worktrees): a phone or CLI create puts the agent in the first orc…
brennanb2025 Oct 7, 2026
136c039
test: import Activity functions directly in eight suites (#26237)
nwparker Oct 7, 2026
c2f3229
fix(worktrees): a phone or CLI create keeps a sparse preset only when…
brennanb2025 Oct 7, 2026
68c493f
test(runtime): advance injected teardown policy clocks (#26267)
nwparker Oct 7, 2026
80d4509
fix(native-chat): a message kept after a quit or close waits in order…
brennanb2025 Oct 7, 2026
98f0193
feat(native-chat): show agent-written visuals inline in structured ch…
brennanb2025 Oct 7, 2026
7f43d9b
test(startup): advance mocked display readiness polling (#26283)
nwparker Oct 7, 2026
a002658
terminal: window says where each new terminal goes (no behavior chang…
Jinwoo-H Oct 7, 2026
7bea20d
test(terminal): pin layout invariants the mirror refactor must keep (…
Jinwoo-H Oct 7, 2026
d68f3bb
fix(ssh): bind reattached SSH panes into the target's own session par…
Jinwoo-H Oct 7, 2026
990c62e
feat(native-chat): attach files to a structured chat on a paired serv…
brennanb2025 Oct 7, 2026
726eaf1
fix(native-chat): recall every sent prompt with Up/Down in the compos…
AmoabaKelvin Oct 7, 2026
49e6cc1
fix(native-chat): show right-click Copy and Paste only where they app…
AmoabaKelvin Oct 7, 2026
42a40f8
feat(markdown): render GitHub-style callouts (#26255)
AmoabaKelvin Oct 7, 2026
00984cc
ci: run full pull-request unit tests across ten shards (#26295)
nwparker Oct 7, 2026
7b26725
Keep native watcher contracts in Node and reset runtime test caches (…
nwparker Oct 7, 2026
e05c69f
fix(session): at startup, a local copy never overrides an SSH-owned w…
Jinwoo-H Oct 7, 2026
7b054e6
fix(browser): keep the desktop drawing while a phone streams a browse…
Jinwoo-H Oct 7, 2026
0f9f199
fix(native-chat): no saved outbox on the desktop; one send at a time,…
brennanb2025 Oct 7, 2026
1617ff3
feat(mobile): show chat visuals inline in the phone's native chat (#2…
brennanb2025 Oct 7, 2026
661cba9
fix(native-chat): a local chat this computer can't run opens the agen…
brennanb2025 Oct 7, 2026
31a5b42
perf(test): advance terminal probe policy clocks explicitly (#26327)
nwparker Oct 7, 2026
e08e0e0
ci(e2e): move apt off the Azure mirror on runner images that use a mi…
OrcaWin Oct 7, 2026
995ef11
feat(native-chat): say in the chat why Orca stopped a reply, and offe…
brennanb2025 Oct 7, 2026
2803be7
[STA-6940] Deliver chat, workspace composer, and feedback file drops …
brennanb2025 Oct 7, 2026
b57bb7c
fix(native-chat): show host outages in the notice card (#26161)
brennanb2025 Oct 7, 2026
16cd1e0
docs: remove stale internal reference documentation (#26328)
nwparker Oct 7, 2026
2460068
feat(mobile): show a native chat's subagents like desktop (#26125)
brennanb2025 Oct 7, 2026
c785c98
feat(native-chat): teach chat agents to show inline visuals in their …
brennanb2025 Oct 7, 2026
7abd74e
Keep the structured-session compatibility manifest within the file li…
nwparker Oct 7, 2026
a07f4b2
feat(relay): slower same-cap drain paces (15 and 20 min) for every ce…
Jinwoo-H Oct 7, 2026
a551aa5
OpenCode structured chat over the Agent Client Protocol (#25845)
brennanb2025 Oct 7, 2026
b1e09a4
fix(native-chat): show an SSH session's chat history on the phone and…
Jinwoo-H Oct 7, 2026
de4ee59
perf(renderer): import published Radix primitives directly (#26256)
nwparker Oct 7, 2026
1f79033
test: reset canonical PR stack cache in GraphQL fixtures (#26346)
nwparker Oct 7, 2026
e08ba9f
feat(native-chat): compact tool runs with a bounded call list (#26285)
AmoabaKelvin Oct 7, 2026
e9b3efa
feat(native-chat): preview each rail tick with its reply (#26056)
AmoabaKelvin Oct 7, 2026
5a1009f
test: poll successful PTY cleanup without repeated idle waits (#26360)
nwparker Oct 8, 2026
4f60f32
chore(i18n): translate 176 new keys to es/fr/ja/ko/zh (#26365)
AmethystLiang Oct 8, 2026
939288e
fix(file-drop): deliver terminal files to the pane under the cursor (…
brennanb2025 Oct 8, 2026
65a0e96
fix(serve): restore the saved active tab group on the phone after a c…
Jinwoo-H Oct 8, 2026
369b202
test: remove idle polling from compaction contracts (#26373)
nwparker Oct 8, 2026
c71601f
Add Pi structured native chat through its RPC mode (#25851)
brennanb2025 Oct 8, 2026
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
bf31aa9
Merge Orca main into Kiro usage PR and resolve provider conflicts
w-felipe360 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
2ef26e2
Merge branch 'stablyai:main' into fix/kiro-pr-14001-main-conflicts
w-felipe360 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
1d8d237
fix(usage): detect configured Kiro CLI and use shared process runner
w-felipe360 Oct 8, 2026
92add40
Merge commit 'e3639ef8d69209b8278b41c0e722811960ea7ec0' into fix/kiro…
w-felipe360 Oct 8, 2026
b850900
fix(usage): accept Kiro reset descriptions without ISO dates
w-felipe360 Oct 8, 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.
16 changes: 16 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@
/skill-stubs/_shared/*.md text eol=lf
/skills/*/SKILL.md text eol=lf
/src/cli/bundled-skill-guides.ts text eol=lf
# SVG bytes feed embedded data URLs and asset hashes on every build host.
*.svg text eol=lf
# Compiler input line breaks must not depend on the checkout OS.
*.ts text eol=lf
*.tsx text eol=lf
*.html 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
Expand Down Expand Up @@ -47,6 +53,9 @@
# 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).
Expand Down Expand Up @@ -85,3 +94,10 @@
/mobile/web-entry/**/*.otf -text
/mobile/web-entry/**/*.woff -text
/mobile/web-entry/**/*.woff2 -text

# 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
9 changes: 7 additions & 2 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,11 @@ Thanks for contributing to Orca.

## Local Setup

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.

```bash
pnpm install
pnpm dev
Expand All @@ -24,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 Expand Up @@ -63,9 +67,10 @@ CI enforces this for `src/preload/` and `src/shared/`.

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

- if you are an outside contributor, link the issue your PR addresses
- 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
- for any UI or interaction change, attach **before and after** screenshots (or short videos); if there is no visual or interaction change, write `N/A` and briefly explain 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
Expand Down
174 changes: 87 additions & 87 deletions .github/actions/install-node-dependencies/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,16 @@ name: Install Node dependencies
description: Installs the Node toolchain and repository dependencies for CI jobs, with optional Electron archive caching.

inputs:
cache-pnpm-store:
description: Restore or save the pnpm download store; verification and native caches are independent.
required: false
default: 'true'
cache-pnpm-store-lookup-only:
description: Auto uses measured hosted Node 24 root installs; true forces lookup, false retains archive restoration.
required: false
default: auto
cache-pnpm-verification:
description: Restore pnpm's policy-checked lockfile verification record on Linux.
description: Restore pnpm's policy-checked lockfile verification record.
required: false
default: 'true'
native-runtime:
Expand All @@ -28,9 +36,12 @@ inputs:
default: 'false'

outputs:
pnpm-store-cache-hit:
description: Whether the requested download store matched an existing cache.
value: ${{ steps.pnpm-store-lookup.outputs.cache-hit || steps.pnpm-store-restore.outputs.cache-hit || steps.requested-node.outputs.cache-hit || steps.default-node.outputs.cache-hit }}
verification-cache-hit:
description: Whether pnpm's verification record was restored.
value: ${{ steps.verification-cache-restore.outputs.cache-hit }}
value: ${{ steps.verification-cache.outputs.cache-hit }}
verification-cache-path:
description: The small pnpm-owned verification record, without registry metadata.
value: ${{ steps.verification-cache.outputs.path }}
Expand All @@ -42,14 +53,44 @@ outputs:
value: ${{ steps.requested-node.outputs.node-version || steps.default-node.outputs.node-version }}
native-cache-scope:
description: Operating-system image scope used by the native module cache.
value: ${{ steps.native-cache-scope.outputs.scope }}
value: ${{ steps.native-runtime.outputs.cache-scope }}
native-cache-key:
description: Exact native cache key requested after installation.
value: ${{ steps.native-runtime.outputs.cache-key }}
native-cache-path:
description: Native build directories covered by the requested cache.
value: ${{ steps.native-runtime.outputs.cache-path }}
native-cache-hit:
description: Whether the compiled native module cache was restored.
value: ${{ steps.native-cache-restore.outputs.cache-hit || steps.native-cache-restore-only.outputs.cache-hit }}
value: ${{ steps.native-runtime.outputs.cache-hit }}

runs:
using: composite
steps:
- name: Resolve pnpm store mode
id: pnpm-store-mode
if: >-
github.event_name != 'pull_request' && inputs.cache-pnpm-store != 'false' &&
(inputs.cache-pnpm-store-lookup-only == 'true' ||
(inputs.cache-pnpm-store-lookup-only == 'auto' &&
inputs.cache-dependency-path == 'pnpm-lock.yaml' &&
runner.environment == 'github-hosted' && job.container.id == '' &&
(runner.os == 'Linux' || runner.os == 'macOS' || runner.os == 'Windows') &&
(runner.arch == 'X64' || runner.arch == 'ARM64') &&
(inputs.node-version == '' || inputs.node-version == '24')))
shell: bash
env:
LOOKUP_REQUEST: ${{ inputs.cache-pnpm-store-lookup-only }}
run: |
lookup_only=true
case "$LOOKUP_REQUEST" in
[aA][uU][tT][oO])
# Hosted runners have Node for this manifest-only check before toolchain setup.
lookup_only="$(node -p 'const p = require("./package.json"); p.engines?.node === "24" && typeof p.packageManager === "string" && p.packageManager.split("+")[0] === "pnpm@12.8.1"')"
;;
esac
printf 'lookup-only=%s\n' "$lookup_only" >> "$GITHUB_OUTPUT"

# setup-node needs pnpm on PATH to locate and restore its store.
- name: Setup pnpm
uses: pnpm/setup@v2
Expand All @@ -63,7 +104,7 @@ runs:
uses: actions/setup-node@v6
with:
node-version-file: package.json
cache: ${{ github.event_name != 'pull_request' && 'pnpm' || '' }}
cache: ${{ github.event_name != 'pull_request' && inputs.cache-pnpm-store != 'false' && steps.pnpm-store-mode.outputs.lookup-only != 'true' && 'pnpm' || '' }}
cache-dependency-path: ${{ inputs.cache-dependency-path }}
package-manager-cache: false

Expand All @@ -73,50 +114,66 @@ runs:
uses: actions/setup-node@v6
with:
node-version: ${{ inputs.node-version }}
cache: ${{ github.event_name != 'pull_request' && 'pnpm' || '' }}
cache: ${{ github.event_name != 'pull_request' && inputs.cache-pnpm-store != 'false' && steps.pnpm-store-mode.outputs.lookup-only != 'true' && 'pnpm' || '' }}
cache-dependency-path: ${{ inputs.cache-dependency-path }}
package-manager-cache: false

# PR-local stores compete with reusable build caches for the repository quota.
- name: Resolve pnpm download store
id: pnpm-store
if: github.event_name == 'pull_request'
if: >-
github.event_name == 'pull_request' && inputs.cache-pnpm-store != 'false' &&
!((runner.os == 'Linux' || runner.os == 'macOS') && (runner.arch == 'X64' || runner.arch == 'ARM64') && inputs.cache-dependency-path == 'pnpm-lock.yaml') &&
(runner.os != 'Windows' ||
!(runner.arch == 'X64' && contains(inputs.cache-dependency-path, 'mobile/pnpm-lock.yaml')) &&
!((runner.arch == 'X64' || runner.arch == 'ARM64') && inputs.cache-dependency-path == 'pnpm-lock.yaml')) ||
(github.event_name != 'pull_request' && inputs.cache-pnpm-store != 'false' &&
steps.pnpm-store-mode.outputs.lookup-only == 'true')
shell: bash
env:
LOCKFILE_HASH: ${{ hashFiles(inputs.cache-dependency-path) }}
STORE_LOOKUP_ONLY: ${{ steps.pnpm-store-mode.outputs.lookup-only == 'true' }}
run: |
test -n "$LOCKFILE_HASH"
cache_path="$(pnpm store path --silent)"
test -n "$cache_path"
printf 'path=%s\n' "$cache_path" >> "$GITHUB_OUTPUT"
printf 'arch=%s\n' "$(node -p 'require("node:os").arch()')" >> "$GITHUB_OUTPUT"
if [ "$STORE_LOOKUP_ONLY" = 'true' ]; then
printf 'ORCA_PNPM_STORE_CACHE_PATH=%s\n' "$cache_path" >> "$GITHUB_ENV"
fi

# Match setup-node's key and path so existing default-branch stores remain reusable.
# Direct downloads beat store restoration for the measured Linux, macOS and Windows installs.
- name: Restore pnpm download store without saving
if: github.event_name == 'pull_request'
id: pnpm-store-restore
if: >-
github.event_name == 'pull_request' && inputs.cache-pnpm-store != 'false' &&
!((runner.os == 'Linux' || runner.os == 'macOS') && (runner.arch == 'X64' || runner.arch == 'ARM64') && inputs.cache-dependency-path == 'pnpm-lock.yaml') &&
(runner.os != 'Windows' ||
!(runner.arch == 'X64' && contains(inputs.cache-dependency-path, 'mobile/pnpm-lock.yaml')) &&
!((runner.arch == 'X64' || runner.arch == 'ARM64') && inputs.cache-dependency-path == 'pnpm-lock.yaml'))
uses: actions/cache/restore@v5
with:
path: ${{ steps.pnpm-store.outputs.path }}
key: node-cache-${{ runner.os }}-${{ steps.pnpm-store.outputs.arch }}-pnpm-${{ hashFiles(inputs.cache-dependency-path) }}

- name: Resolve pnpm verification cache
id: verification-cache
if: runner.os == 'Linux' && inputs.cache-pnpm-verification == 'true'
shell: bash
env:
POLICY_HASH: ${{ hashFiles('pnpm-lock.yaml', 'pnpm-workspace.yaml', '.npmrc') }}
run: |
printf 'path=%s/lockfile-verified.jsonl\n' "$(pnpm cache path)" >> "$GITHUB_OUTPUT"
printf 'key=pnpm-verification-v1-%s-%s-%s-%s\n' "$RUNNER_OS" "$RUNNER_ARCH" "$(pnpm --version)" "$POLICY_HASH" >> "$GITHUB_OUTPUT"
# Producers can refresh access and publish misses without downloading existing archives.
- name: Keep pnpm download store without restoring
id: pnpm-store-lookup
if: steps.pnpm-store-mode.outputs.lookup-only == 'true'
uses: actions/cache@v5
with:
# Twice-nested composite cleanup loses internal step outputs.
path: ${{ env.ORCA_PNPM_STORE_CACHE_PATH }}
key: node-cache-${{ runner.os }}-${{ steps.pnpm-store.outputs.arch }}-pnpm-${{ hashFiles(inputs.cache-dependency-path) }}
lookup-only: true

- name: Restore pnpm verification record
id: verification-cache-restore
if: steps.verification-cache.outputs.key != ''
continue-on-error: true
uses: actions/cache/restore@v5
id: verification-cache
uses: ./.github/actions/restore-pnpm-verification
with:
path: ${{ steps.verification-cache.outputs.path }}
key: ${{ steps.verification-cache.outputs.key }}
enabled: ${{ inputs.cache-pnpm-verification }}

- name: Validate native runtime
shell: bash
Expand Down Expand Up @@ -154,7 +211,7 @@ runs:

# pnpm checks the cached record's policy and validity; never bypass verification.
- name: Save pnpm verification record on main
if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request' && steps.verification-cache.outputs.key != '' && steps.verification-cache-restore.outputs.cache-hit != 'true'
if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request' && steps.verification-cache.outputs.key != '' && steps.verification-cache.outputs.cache-hit != 'true'
continue-on-error: true
uses: actions/cache/save@v5
with:
Expand Down Expand Up @@ -194,68 +251,11 @@ runs:
path: ${{ steps.electron-package-cache.outputs.cache-root }}
key: electron-package-${{ runner.os }}-${{ runner.arch }}-${{ steps.electron-package-cache.outputs.version }}

# Why cached: `--ignore-scripts` leaves node-pty without build/Release, so
# ensure-native-runtime node-gyp-compiles it in every job that asks for a runtime.
# The artifacts are ABI-bound, so the key carries the target runtime, the resolved
# Node version, and the patch whose contents the build has to match.
# Windows extra globs are empty on Linux. No restore-keys: a partial-match key is
# an ABI-mismatched build, and ensure-native-runtime would recompile it anyway.
# Native addons built on a newer Linux image can require glibc symbols
# missing from an older runner/container. ImageOS distinguishes hosted
# Windows/macOS images; /etc/os-release also distinguishes Linux containers.
- name: Resolve native cache scope
id: native-cache-scope
if: inputs.native-runtime != 'none'
shell: bash
run: |
scope="${ImageOS:-$RUNNER_OS}"
if [ -r /etc/os-release ]; then
. /etc/os-release
scope="${ID:-linux}-${VERSION_ID:-unknown}"
fi
echo "scope=$scope" >> "$GITHUB_OUTPUT"

- name: Restore compiled native modules
id: native-cache-restore
if: inputs.native-runtime != 'none' && inputs.persist-native-cache != 'false'
uses: actions/cache@v5
with:
path: |
node_modules/.pnpm/node-pty@*/node_modules/node-pty/build
native/windows-registry/build
node_modules/.pnpm/@vscode+windows-process-tre*/node_modules/@vscode/windows-process-tree/build
key: native-modules-${{ runner.os }}-${{ steps.native-cache-scope.outputs.scope }}-${{ runner.arch }}-${{ inputs.native-runtime }}-node${{ steps.requested-node.outputs.node-version || steps.default-node.outputs.node-version }}-${{ hashFiles('pnpm-lock.yaml', '.github/actions/install-node-dependencies/action.yml', 'config/scripts/ensure-native-runtime.mjs', 'config/scripts/rebuild-native-deps.mjs', 'config/patches/node-pty@1.1.0.patch', 'config/patches/@vscode__windows-process-tree@0.8.0.patch', 'native/windows-registry/src/addon.cc', 'native/windows-registry/binding.gyp', 'native/windows-registry/package.json') }}

- name: Restore compiled native modules without saving
id: native-cache-restore-only
if: inputs.native-runtime != 'none' && inputs.persist-native-cache == 'false'
uses: actions/cache/restore@v5
with:
path: |
node_modules/.pnpm/node-pty@*/node_modules/node-pty/build
native/windows-registry/build
node_modules/.pnpm/@vscode+windows-process-tre*/node_modules/@vscode/windows-process-tree/build
key: native-modules-${{ runner.os }}-${{ steps.native-cache-scope.outputs.scope }}-${{ runner.arch }}-${{ inputs.native-runtime }}-node${{ steps.requested-node.outputs.node-version || steps.default-node.outputs.node-version }}-${{ hashFiles('pnpm-lock.yaml', '.github/actions/install-node-dependencies/action.yml', 'config/scripts/ensure-native-runtime.mjs', 'config/scripts/rebuild-native-deps.mjs', 'config/patches/node-pty@1.1.0.patch', 'config/patches/@vscode__windows-process-tree@0.8.0.patch', 'native/windows-registry/src/addon.cc', 'native/windows-registry/binding.gyp', 'native/windows-registry/package.json') }}

# pnpm's bundled gyp_main.py is not executable on fresh Linux runners.
- name: Use external node-gyp
if: runner.os == 'Linux' && inputs.native-runtime != 'none'
shell: bash
env:
NATIVE_RUNTIME: ${{ inputs.native-runtime }}
NATIVE_CACHE_HIT: ${{ steps.native-cache-restore.outputs.cache-hit || steps.native-cache-restore-only.outputs.cache-hit }}
run: |
# A cache hit can contain unusable addons; probe before skipping the rebuild toolchain.
if [ "$NATIVE_RUNTIME" = node ] && [ "$NATIVE_CACHE_HIT" = true ] &&
node config/scripts/ensure-native-runtime.mjs --check-only; then
exit 0
fi
npm install -g node-gyp@11.5.0
echo "npm_config_node_gyp=$(npm root -g)/node-gyp/bin/node-gyp.js" >> "$GITHUB_ENV"

- name: Prepare native runtime
id: native-runtime
if: inputs.native-runtime != 'none'
shell: bash
env:
NATIVE_RUNTIME: ${{ inputs.native-runtime }}
run: node config/scripts/ensure-native-runtime.mjs --runtime="$NATIVE_RUNTIME"
uses: ./.github/actions/prepare-native-runtime
with:
native-runtime: ${{ inputs.native-runtime }}
node-version: ${{ steps.requested-node.outputs.node-version || steps.default-node.outputs.node-version }}
persist-native-cache: ${{ inputs.persist-native-cache }}
9 changes: 6 additions & 3 deletions .github/actions/prepare-git-compatibility/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,17 @@ runs:
uses: actions/cache@v5
with:
path: ~/.cache/orca-git-compat/git-2.25.5
key: git-compat-baseline-${{ runner.os }}-${{ runner.arch }}-2.25.5
key: git-compat-baseline-${{ runner.os }}-${{ runner.arch }}-2.25.5-submodule

# Finish the CPU-heavy build before any timed compatibility lanes start.
- name: Build the baseline Git binary
shell: bash
run: |
archive="$RUNNER_TEMP/git-2.25.5.tar.gz"
source="$HOME/.cache/orca-git-compat/git-2.25.5"
if [ -x "$source/git" ]; then
if [ -x "$source/git" ] && [ -x "$source/git-submodule" ] \
&& [ -f "$source/git-sh-setup" ] && [ -f "$source/git-sh-i18n" ] \
&& [ -f "$source/git-parse-remote" ] && [ -x "$source/git-sh-i18n--envsubst" ]; then
exit 0
fi
curl -fsSL https://www.kernel.org/pub/software/scm/git/git-2.25.5.tar.gz -o "$archive"
Expand All @@ -27,6 +29,7 @@ runs:
mkdir -p "$source"
tar -xzf "$archive" -C "$source" --strip-components=1
make -C "$source" -j"$(nproc)" \
NO_GETTEXT=YesPlease NO_TCLTK=YesPlease NO_PYTHON=YesPlease git
NO_GETTEXT=YesPlease NO_TCLTK=YesPlease NO_PYTHON=YesPlease \
git git-submodule git-sh-setup git-sh-i18n git-parse-remote git-sh-i18n--envsubst
# Object files are no longer needed after linking the cached binary.
find "$source" -name '*.o' -delete
Loading