Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
293 commits
Select commit Hold shift + click to select a range
deebe05
fix: open editor rename after context menu releases focus (#18934)
nwparker Sep 7, 2026
1ef75d7
fix: avoid starting browser helpers just to reset absent sessions (#1…
nwparker Sep 7, 2026
4ba8ddc
fix: prefer retained provider snapshots during hidden terminal recove…
nwparker Sep 7, 2026
8dad595
fix: preserve overlay focus during terminal mounting and layout (#18982)
nwparker Sep 7, 2026
a272a1e
fix: preserve terminal command probes across control frames (#19006)
nwparker Sep 7, 2026
225a475
fix: preserve paired host sessions during startup residue cleanup (#1…
nwparker Sep 7, 2026
b497f15
fix: preserve renderer browser publication during client-hosted page …
nwparker Sep 7, 2026
0d973c1
fix: honor remote terminal insertion in the calling client (#18995)
nwparker Sep 7, 2026
f88cbb4
fix: keep paired tab updates live after runtime terminal fallback (#1…
nwparker Sep 7, 2026
e28b159
fix: avoid credit deadlock during large SSH PTY recovery (#19026)
nwparker Sep 7, 2026
deb0be1
fix: recognize working WSL1 without a WSL2 kernel (#19061)
nwparker Sep 7, 2026
0cba706
fix(ports): coalesce advertised URL refresh bursts (#19150)
nwparker Sep 7, 2026
be10e54
perf(store): keep recentlyRetiredAgentStatusPaneKeys identity on no-o…
nwparker Sep 7, 2026
373514e
perf(worktrees): stop worktree teardown replacing arrays and maps it …
nwparker Sep 7, 2026
463cab2
fix(cmd-j): remove duplicate browser ownership inputs (#19172)
nwparker Sep 7, 2026
14e0d40
fix: recognize the kimi-code process as the kimi agent (#18634)
Aladex Sep 7, 2026
fc37958
fix: release floating terminal WebGL contexts while closed (#19000)
nwparker Sep 7, 2026
e7563c6
fix: fence browser recovery to attach inventory placements (#18910)
nwparker Sep 7, 2026
af5918a
test: use host-qualified paired palette row identities (#19175)
nwparker Sep 7, 2026
1e301ab
test: cover native Wayland Hangul in isolated CI (#19174)
nwparker Sep 7, 2026
357a4d4
test(e2e): scope paired preview link checks to confirmation (#18924)
nwparker Sep 7, 2026
4be1c01
test: await rendered remote agent placement before checking mirrors (…
nwparker Sep 7, 2026
b3acef2
test: verify imported projects through the virtualized sidebar (#19003)
nwparker Sep 7, 2026
e9af947
test: confirm running-command prompts when closing tabs (#18965)
nwparker Sep 7, 2026
e48d83a
Fix MiniMax China usage routing and credential handling (#14929)
weekbin Sep 7, 2026
4934920
fix(rate-limits): stop reporting Grok usage as 0% when the API omits …
TimothyVang Sep 7, 2026
1848855
test: enable software WebGL for Linux CI headful specs (#19001)
nwparker Sep 7, 2026
6c8ce54
test: publish restored snapshot before draining its held FIFO (#19186)
nwparker Sep 7, 2026
79eb666
test: retain paired browser value from successful poll (#19189)
nwparker Sep 7, 2026
3160b54
feat: real background push notifications for the mobile app (#8129) (…
Jinwoo-H Sep 7, 2026
2dd3958
test: distinguish external retention from owned worker recovery (#19190)
nwparker Sep 7, 2026
68dd390
feat(orchestration): orchestrate native-born structured chat sessions…
brennanb2025 Sep 7, 2026
546fd9b
fix(native-chat): remember structured chat model and effort picks (#1…
brennanb2025 Sep 7, 2026
bf4e270
fix(native-chat): list the slash commands and skills a structured Cla…
brennanb2025 Sep 7, 2026
fb32204
skills: rewrite and trim the seven non-orchestration guides (#19128)
Jinwoo-H Sep 7, 2026
f1d8545
feat(chat): support structured /clear and /compact commands (#19164)
brennanb2025 Sep 7, 2026
d53cbed
revert: hold mobile push feature for user testing (#19203)
Jinwoo-H Sep 7, 2026
bd242a0
fix(editor): support Shift+wheel scrolling in combined diffs (#11756)
brohoya Sep 7, 2026
1ae7aa8
feat(native-chat): resume an Agent Session History row into a new str…
brennanb2025 Sep 7, 2026
c300913
fix(mobile): stop double-scaling commit timestamps in history rows (#…
blade035 Sep 7, 2026
ba4e79c
fix(runtime): apply the structured-chat setting to every RPC caller (…
brennanb2025 Sep 7, 2026
fa5ef99
fix(native-chat): settle structured chat turns stranded by a restart …
brennanb2025 Sep 7, 2026
2ccf35b
fix: avoid quadratic trimming during fullscreen terminal redraws (#19…
nwparker Sep 7, 2026
e4770d7
Restore independent push gateway deployment (#19225)
Jinwoo-H Sep 7, 2026
a62cfed
Resolve push source archive from repository root (#19231)
Jinwoo-H Sep 7, 2026
3f4793b
Reorganize MiniMax modules and de-duplicate shared test state (#19197)
nwparker Sep 7, 2026
374c676
fix: repaint hidden output overflow after answered restore deadline (…
nwparker Sep 7, 2026
3145060
fix: retain MSYS shell descendants in their terminal job (#19068)
nwparker Sep 7, 2026
ffff6ea
fix(test): admit the adoption-replay create fixture through the struc…
nwparker Sep 7, 2026
c3a7008
Fix MiniMax credential-expiry reporting, region sync, and refresh (#1…
nwparker Sep 7, 2026
a3e6736
fix(orchestration): recover Codex idle after completion title race (#…
Jinwoo-H Sep 7, 2026
ecfcc0d
feat(relay): time successful client accepts and control round trips (…
Jinwoo-H Sep 7, 2026
f5be177
fix(relay): rehome hosts to their preferred region in either directio…
Jinwoo-H Sep 7, 2026
23df74d
perf(mobile): cut the relay reconnect critical path and admit dead so…
Jinwoo-H Sep 7, 2026
0ba7f8d
feat(mobile): draw the last known tab strip while a session reconnect…
Jinwoo-H Sep 7, 2026
e068947
feat(relay): alert on far-cell placement and skewed region hints (#19…
Jinwoo-H Sep 7, 2026
fede3eb
fix(test): give federation tests a real read-after-write sync barrier…
Jinwoo-H Sep 7, 2026
d74f8cb
revert(mobile): hold the relay reconnect path and cache-first reconne…
Jinwoo-H Sep 7, 2026
db13cff
relay: give the asia-east2 cells the regional rehome identity (#19239)
Jinwoo-H Sep 7, 2026
91d7783
fix(relay): state pending-conn details to hosts that advertise the ca…
Jinwoo-H Sep 7, 2026
9c8f4c3
fix(relay): bound control RTT samples per ping and per flush window (…
Jinwoo-H Sep 7, 2026
1bf3067
fix(relay-ops): let the rehome trust probe approve the asia-east2 cel…
Jinwoo-H Sep 7, 2026
9d29e68
fix(codex): distinguish personal and enterprise accounts sharing an e…
nwparker Sep 7, 2026
8cd0abf
test(relay): prove the capability header reaches acceptControl over a…
Jinwoo-H Sep 7, 2026
a899f92
feat(windows): enable structured Codex chat on native Windows (#18519)
brennanb2025 Sep 7, 2026
bcb703f
test(ssh): isolate the MFA fixture from the developer's real ~/.ssh (…
brennanb2025 Sep 7, 2026
6ae5418
Add localization for activity view and sidebar (#18589)
OrcaWin Sep 7, 2026
bffdad9
fix(native-chat): make structured chat tabs renameable (#19153)
brennanb2025 Sep 7, 2026
0252fe5
feat(native-chat): show Codex subagent activity instead of opcode row…
brennanb2025 Sep 7, 2026
da4da8e
fix(agent-status): stop a stale self-authored agent title from faking…
brennanb2025 Sep 7, 2026
a87a19c
fix(terminal): remount a pane left unbound by a spawn that returned n…
brennanb2025 Sep 7, 2026
33af0af
fix(relay): stop rejecting the near region on a cold first probe (#19…
Jinwoo-H Sep 7, 2026
e628090
perf(mobile): cut the relay reconnect critical path and admit dead so…
Jinwoo-H Sep 7, 2026
c374132
perf(mobile): open a session with parallel startup RPCs and a pre-war…
Jinwoo-H Sep 7, 2026
e60d9aa
fix(relay): attach a phone whose accept straddles a control rebind (d…
Jinwoo-H Sep 7, 2026
6729f3a
tools: add a phone-vantage relay connect benchmark (#19251)
Jinwoo-H Sep 7, 2026
643571d
feat(mobile): draw the last known tab strip while a session reconnect…
Jinwoo-H Sep 7, 2026
5857357
feat(relay): log the region probe and name the assigned cell (#19307)
Jinwoo-H Sep 7, 2026
ceafdca
perf(mobile): race the direct and relay dials from t=0 on every recon…
Jinwoo-H Sep 7, 2026
83b1558
feat(mobile): time relay dial stages so diagnostics say where a slow …
Jinwoo-H Sep 7, 2026
9fed61e
Persist agents sidebar search visibility as pairing-local preference …
AmethystLiang Sep 7, 2026
ce4a3a4
feat(chat): add structured session rewind backend (#19235)
brennanb2025 Sep 7, 2026
1d1b73c
Defer inactive browser pages across worktree switches (#19326)
AmethystLiang Sep 7, 2026
5cefb44
fix(native-chat): stop an unanswered host from reading as one that re…
brennanb2025 Sep 7, 2026
6a47d28
fix(native-chat): scope composer file drops to the pane that received…
brennanb2025 Sep 7, 2026
d936d8d
revert(mobile): pull the relay connect-speed mobile pass pending a sm…
Jinwoo-H Sep 7, 2026
bcd4076
fix(relay): never cache a region hint from a one-region catalog (#19349)
Jinwoo-H Sep 7, 2026
0b3af9d
Show native chat message timestamps on hover and keyboard focus (#19218)
brennanb2025 Sep 7, 2026
d0506bf
feat(native-chat): add execution details and tool row identity (#19226)
brennanb2025 Sep 7, 2026
2265fce
chore(mobile): remove stale max-lines exceptions (#19366)
nwparker Sep 7, 2026
9f04403
fix(native-chat): render compaction notices, plan documents, and imag…
brennanb2025 Sep 7, 2026
5882400
fix(sidebar): reveal collapsed workspaces without clearing filters (#…
nwparker Sep 8, 2026
3b8128d
fix(orchestration): index per-PTY mailbox reservation cleanup (#19390)
brennanb2025 Sep 8, 2026
cfd59f2
fix(deps): update desktop parser security dependencies (#19361)
OrcaWin Sep 8, 2026
91fbc15
fix(deps): harden cloud HTTP and WebSocket dependencies (#19362)
OrcaWin Sep 8, 2026
1dae024
chore(mobile): patch xmldom security fixes in plist tooling (#19380)
OrcaWin Sep 8, 2026
a4e5106
chore(docs): patch brace expansion resource exhaustion fixes (#19382)
OrcaWin Sep 8, 2026
b8f6c7c
fix(deps): update react-i18next for TypeScript 7 and parser fixes (#1…
OrcaWin Sep 8, 2026
102402e
fix(deps): update DOMPurify sanitizer hardening (#19377)
OrcaWin Sep 8, 2026
cbc7bb4
fix(ci): read the changed-path list past the first pipe buffer (#19409)
nwparker Sep 8, 2026
5bd0247
fix(xterm): remove scrollback decorations by identity (#13178)
bbingz Sep 8, 2026
c1e15c4
feat(native-chat): read a tool batch as a group (#19372)
brennanb2025 Sep 8, 2026
de0a91b
fix(deps): update Electron to reviewed 43.6 runtime (#19369)
OrcaWin Sep 8, 2026
98b0c32
fix: preserve user input during terminal scrollback replay (#19075)
nwparker Sep 8, 2026
c056c6f
Unify sidebar create actions into single dropdown menu (#19375)
AmethystLiang Sep 8, 2026
da836fa
fix: preserve terminal retirement proof across renderer publications …
nwparker Sep 8, 2026
aeddfa4
perf(renderer): avoid per-second spinner animation events (#19407)
OrcaWin Sep 8, 2026
a278d84
fix(pi): show input modals as waiting instead of working (#18836)
mmarabel Sep 8, 2026
6642053
fix e2e create menu races (#19448)
AmethystLiang Sep 8, 2026
e182930
test: cover input in five simultaneously flooding SSH panes (#19071)
nwparker Sep 8, 2026
fc78a7d
fix(runtime): stop a first status publication retiring in-flight work…
nwparker Sep 8, 2026
1e693ed
fix(clipboard): route runtime-owned SSH image paste through the runti…
nwparker Sep 8, 2026
7adb5b3
fix(sidebar): label pinned rows with their host on a multi-host sideb…
nwparker Sep 8, 2026
2171253
Log error details on session kill failure (#19381)
AmethystLiang Sep 8, 2026
1a8640a
Stabilize scrollbar gutter to prevent message list layout shift (#19332)
AmethystLiang Sep 8, 2026
ba5f708
Rank activity status groups by attention level (#19329)
AmethystLiang Sep 8, 2026
d3baad2
perf: index selected team IDs and choose primary team in one pass (#1…
OrcaWin Sep 8, 2026
32510c9
perf: skip Git-status indexing without eligible editors (#19437)
OrcaWin Sep 8, 2026
9190878
perf: stop filesystem authorization at the first matching root (#19438)
OrcaWin Sep 8, 2026
253fa43
perf: index editor ownership and restored workspace projections (#19444)
OrcaWin Sep 8, 2026
f0bfc94
fix: avoid duplicate repository groups during catalog refresh (#19170)
kiendle Sep 8, 2026
31b84cc
Fix native PTY I/O failures disabling session termination (#19523)
AmethystLiang Sep 8, 2026
fb9d08f
perf: index project table option and iteration order (#19476)
OrcaWin Sep 8, 2026
505af34
perf: stop clone URL discovery at the first usable source (#19477)
OrcaWin Sep 8, 2026
d160c78
perf: clone only changed work-item pages (#19478)
OrcaWin Sep 8, 2026
5d0a45b
perf: use counted membership for worker transcript roster twins (#19484)
OrcaWin Sep 8, 2026
7dd6373
perf: skip sorting when all final automation runs fit (#19485)
OrcaWin Sep 8, 2026
d0969a4
perf: parse Git history headers without splitting commit bodies (#19486)
OrcaWin Sep 8, 2026
9039cd5
perf: index forgotten Codex turns for bounded ordinal retention (#19488)
OrcaWin Sep 8, 2026
5aaf146
perf: cache matched and unmatched Claude usage cwd attribution (#19489)
OrcaWin Sep 8, 2026
990674f
perf: sum omitted workspace sizes without intermediate objects (#19491)
OrcaWin Sep 8, 2026
3b00cfc
fix(activity): keep badge in step with monitoring turns; drop dead ca…
AmethystLiang Sep 8, 2026
ab32355
test(e2e): fix automation and browser reconciliation tests (#19530)
AmethystLiang Sep 8, 2026
83167f0
perf: index VM feature restoration and precompute sorting identities …
OrcaWin Sep 8, 2026
81bd912
perf: reuse normalized path matchers for batch deletion (#19458)
OrcaWin Sep 8, 2026
894fbc8
perf: normalize only retained browser history candidates (#19460)
OrcaWin Sep 8, 2026
b52d777
perf: index prior memberships during project identity succession (#19…
OrcaWin Sep 8, 2026
d3d939b
perf: precompute Jira priority and timestamp sorting keys (#19472)
OrcaWin Sep 8, 2026
96c6aa2
perf: parse external automation dates once per run (#19474)
OrcaWin Sep 8, 2026
36d209f
Verify failure causality in PR checks fix prompt before making change…
AmethystLiang Sep 8, 2026
6689463
fix(remote): keep terminal tabs syncing after orphan recovery (#19065)
shaharmor Sep 8, 2026
28d936e
perf(native-chat): bound journal reads during paged catch-up (#19360)
nwparker Sep 8, 2026
ef6ad22
perf(native-chat): preserve historical tool rows while streaming (#19…
nwparker Sep 8, 2026
5b111ae
perf: memoize ancestry when selecting foreground agents (#19502)
OrcaWin Sep 8, 2026
ed88188
fix(terminal): fold-safe CAN/SUB and double-ESC handling in partial-e…
nwparker Sep 8, 2026
6c85e33
perf: lazily index case-insensitive Windows environment keys (#19483)
OrcaWin Sep 8, 2026
1a925ed
perf: select highest usage totals without full sorting (#19490)
OrcaWin Sep 8, 2026
15adbd9
fix(agent-hooks): guard every Windows missing-target fallback before …
nwparker Sep 8, 2026
53233be
perf: count GitLab diff line prefixes without splitting all lines (#1…
OrcaWin Sep 8, 2026
2e19342
fix(terminal): remove host-retired ghost panes in paired remote split…
nwparker Sep 8, 2026
53852c9
feat(terminal): make the contrast floor user-configurable (#10754) (#…
nwparker Sep 8, 2026
98fdbc4
fix(orchestration): file federated worker mail under the coordinator …
Jinwoo-H Sep 8, 2026
d346d6f
fix(orchestration): refuse Task re-open under a live worker; allow st…
Jinwoo-H Sep 8, 2026
ea102a9
fix(i18n): drop orphan TerminalPane.minimumContrast entries that brok…
nwparker Sep 8, 2026
d058da4
Update README downloads badge
github-actions[bot] Sep 8, 2026
12f53da
Remove settled-worker automatic resume and hibernation fences (#19544)
Jinwoo-H Sep 8, 2026
bba68b1
fix(pi): finish the dialog-wait signal on every surface (#19533)
nwparker Sep 8, 2026
6108ce6
Organize activity menu into filter and view sections (#19547)
AmethystLiang Sep 8, 2026
e829bb5
Update README downloads badge
github-actions[bot] Sep 8, 2026
2ba2c90
fix(orchestration): own a worker terminal from creation, not after th…
Jinwoo-H Sep 8, 2026
8f78c28
fix(orchestration): fence worker release on mobile keystrokes (#19337)
Jinwoo-H Sep 8, 2026
4f0e380
fix(native-chat): place effort after model picker (#19617)
brennanb2025 Sep 8, 2026
d7d21b2
Show picker-selected native chat skills as pills (#19616)
brennanb2025 Sep 8, 2026
6b60c23
fix(native-chat): reveal message chrome on keyboard focus, not any fo…
brennanb2025 Sep 8, 2026
12f2c6b
Unify native chat and workspace tab command dispatch (#19621)
brennanb2025 Sep 8, 2026
94a64cf
fix(browser): load newly opened background tabs (#19633)
brennanb2025 Sep 8, 2026
d196942
fix(renderer): align native chat pane layering (#19626)
brennanb2025 Sep 8, 2026
e80fae0
Summarize turn file changes and preserve resolved prompt receipts (#1…
brennanb2025 Sep 9, 2026
c69d4d4
perf: track pane alias singleton or ambiguity without copying buckets…
OrcaWin Sep 9, 2026
86fe80d
perf: preserve store state on unchanged document titles (#19459)
OrcaWin Sep 9, 2026
df8a437
perf: index document history workspace and path identities (#19461)
OrcaWin Sep 9, 2026
96b33d7
perf: index unified tabs for browser palette entries (#19464)
OrcaWin Sep 9, 2026
2c5cd84
perf: append to owned project source lists without repeated copying (…
OrcaWin Sep 9, 2026
814d352
perf: lazily index workspace tabs during terminal binding replay (#19…
OrcaWin Sep 9, 2026
9621660
perf: retire exhausted buckets from host-balanced listings (#19493)
OrcaWin Sep 9, 2026
6a9c5d8
perf: replay pending chat asks with a FIFO cursor (#19496)
OrcaWin Sep 9, 2026
8413a5b
perf: cache same-axis pane subtree weights during equalization (#19500)
OrcaWin Sep 9, 2026
5f2127a
perf: group chat history sequences lazily within result windows (#19501)
OrcaWin Sep 9, 2026
e0cac96
perf: measure sidebar row geometry once before sorting delete anchors…
OrcaWin Sep 9, 2026
de771ae
perf: concatenate only carried JSONL line prefixes (#19506)
OrcaWin Sep 9, 2026
b38c131
perf: index discovered skill IDs and names for batch selection (#19507)
OrcaWin Sep 9, 2026
b68d2c4
perf: skip fuzzy ranking when exact file matches fill the window (#19…
OrcaWin Sep 9, 2026
400f70b
perf: index tab membership when rebasing authoritative sessions (#19510)
OrcaWin Sep 9, 2026
a0ea66a
perf: reuse collators when sorting discovered skills (#19440)
OrcaWin Sep 9, 2026
d7162ef
perf: reuse collators when scanning Warp themes (#19441)
OrcaWin Sep 9, 2026
d872a5a
perf: avoid repeated pending SOCKS payload copies (#19439)
OrcaWin Sep 9, 2026
c3a4154
perf(terminal): avoid quadratic status-marker scans in output bursts …
nwparker Sep 9, 2026
db5df2f
perf: index selected-host SSH leases by PTY (#19467)
OrcaWin Sep 9, 2026
ee2faa5
perf: index selected ancestor coverage during sidebar drag (#19443)
OrcaWin Sep 9, 2026
f0c210a
perf: index Resource Manager labels and accumulated workspace rows (#…
OrcaWin Sep 9, 2026
126a693
perf: drop oversized diagnostic records before retaining serialized t…
OrcaWin Sep 9, 2026
1dcd792
perf: index selected skills when reporting bundle failures (#19481)
OrcaWin Sep 9, 2026
44eb95f
perf: bound tool pairing and avoid unused attribution arrays (#19468)
OrcaWin Sep 9, 2026
f242c99
perf: scope activation inventory to the owning host and workspace (#1…
OrcaWin Sep 9, 2026
6045610
perf: index closed browser page IDs during focus cleanup (#19449)
OrcaWin Sep 9, 2026
8983e02
perf: prune metadata caches only when an entry can expire (#19450)
OrcaWin Sep 9, 2026
782c461
perf: index observable skill installations by locked name (#19451)
OrcaWin Sep 9, 2026
35bbc5c
perf: skip folder-scope construction for separate repository imports …
OrcaWin Sep 9, 2026
8b7b670
perf: validate terminal adoption MRU membership with group sets (#19482)
OrcaWin Sep 9, 2026
4a502d2
perf: index terminal neighbor order and remaining membership (#19453)
OrcaWin Sep 9, 2026
0f4bca2
perf: index usage session breakdowns during aggregation and merge (#1…
OrcaWin Sep 9, 2026
063c1ca
perf: reuse AI-vault path matchers and query and sort keys (#19469)
OrcaWin Sep 9, 2026
f74222d
perf: cache AI-vault project attribution by host and cwd (#19470)
OrcaWin Sep 9, 2026
5f63b85
perf: select checks-panel workspace attribution in one pass (#19471)
OrcaWin Sep 9, 2026
e373c89
perf: cache update timestamps for Linear and Jira result sorting (#19…
OrcaWin Sep 9, 2026
6d2d631
perf: reuse naturally ordered unique Codex trust ranges (#19492)
OrcaWin Sep 9, 2026
2558bf1
perf: count command-line escapes without regex match arrays (#19499)
OrcaWin Sep 9, 2026
eedaf2b
perf: check backfill date cardinality before expanding ranges (#19456)
OrcaWin Sep 9, 2026
98df62d
perf: reuse normalized task-page repository selection (#19454)
OrcaWin Sep 9, 2026
852495d
fix(native-chat): unify launch routing and support structured worker …
brennanb2025 Sep 9, 2026
72befaf
feat(native-chat): show Claude subagent activity on the shared carrie…
brennanb2025 Sep 9, 2026
1c1cb71
fix(orchestration): unify structured-session status across worktree p…
brennanb2025 Sep 9, 2026
210ac1f
fix(native-chat): expand Claude slash commands sent with an attachmen…
brennanb2025 Sep 9, 2026
fe9d538
fix(native-chat): keep collapsible chevrons beside their header text …
brennanb2025 Sep 9, 2026
3a801d2
fix(orchestration): worker-start settles readiness on observed turn s…
brennanb2025 Sep 9, 2026
750e6ff
test(orchestration): pin the Run-required contract for unbound direct…
brennanb2025 Sep 9, 2026
addd9f3
fix(orchestration): accept a missing Run id from older federation coo…
brennanb2025 Sep 9, 2026
d15a6df
Render task checklists with update diffs and a composer progress pane…
brennanb2025 Sep 9, 2026
7197593
fix(lint): preserve deliberate collator benchmark baselines (#19686)
brennanb2025 Sep 9, 2026
2ee4053
fix(native-chat): merge duplicate native-chat-types import (#19698)
Jinwoo-H Sep 9, 2026
0fe132e
fix(orchestration): file mail from terminals in no Run under an unbou…
Jinwoo-H Sep 9, 2026
5868fdc
feat(native-chat): report Codex background tasks in the chat strip (#…
brennanb2025 Sep 9, 2026
acd5014
Unify tab surface selection across workspace activation (#19635)
brennanb2025 Sep 9, 2026
65631e4
refactor(ai-vault): split the session scanner into a transcript reade…
Jinwoo-H Sep 9, 2026
c875941
perf: stop queued metadata work after watcher cancellation (#19446)
OrcaWin Sep 9, 2026
db66ab4
perf(runtime): skip hibernation inventories without completed agents …
nwparker Sep 9, 2026
23f38dd
perf(workspaces): skip unchanged heartbeat subscriber work (#19392)
nwparker Sep 9, 2026
bf1e1b9
perf: probe requested pane keys instead of enumerating records (#19494)
OrcaWin Sep 9, 2026
f1f2d61
perf: resolve current-workspace document addresses before catalog sca…
OrcaWin Sep 9, 2026
069bdae
perf: materialize only the requested recent plugin audit lines (#19498)
OrcaWin Sep 9, 2026
8c18e42
test(ci): replace fixed teardown waits with bounded polls (#19720)
nwparker Sep 9, 2026
91f00b3
perf: stop merging OS-opened files at the pending queue cap (#19508)
OrcaWin Sep 9, 2026
042cc52
perf(terminal): skip plain text between partial escape sequences (#19…
nwparker Sep 9, 2026
1e2ed20
perf(terminal): release oversized backing strings behind pending cont…
nwparker Sep 9, 2026
373a670
perf(terminal): skip ordinary output in preview control scans (#19400)
nwparker Sep 9, 2026
946b1fc
perf(terminal): own retained tail rows so they stop pinning their chu…
nwparker Sep 9, 2026
ed9d761
perf: check tunnel queue capacity before copying frame payloads (#19497)
OrcaWin Sep 9, 2026
b94bcdc
Update README downloads badge
github-actions[bot] Sep 9, 2026
73d0521
Replace the sidebar create dropdown with two direct action buttons (#…
AmethystLiang Sep 9, 2026
7dd183d
fix(native-chat): keep worktree active during chat creation (#19753)
Jinwoo-H Sep 9, 2026
8993cb0
fix(release): prune optional natives before the linux arch floor check
nwparker Sep 8, 2026
9eb7674
fix(release): restore the minified telemetry constant fallback
nwparker Sep 8, 2026
2385291
fix(skills): stop asserting readdir order in the skill root walk test
nwparker Sep 8, 2026
c912eda
fix(browser): restore the Chrome-shaped browser identity (STA-7147) (…
brennanb2025 Sep 10, 2026
f352b6b
release: v1.4.200
github-actions[bot] Sep 11, 2026
194eed4
Merge commit 'f352b6b08d9028ba8b577d6ac8a8247c2a6c9c92' into zpyoung/…
zpyoung Sep 11, 2026
9d7ca41
sync: resolve file ownership for v1.4.200
zpyoung Sep 11, 2026
259efe1
chore(fork-ownership): follow the restored window-wake dependency in …
zpyoung Sep 11, 2026
5982e37
Merge remote-tracking branch 'origin/main' into zpyoung/auto-sync-for…
zpyoung Sep 11, 2026
f72d8ed
fix(sync): meet v1.4.200's composer and focus contracts in the fork's…
zpyoung Sep 11, 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
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
/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.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on:
workflow_dispatch:
inputs:
image-digest:
description: "Immutable relay image digest (sha256: plus 64 lowercase hex characters)"
description: 'Immutable relay image digest (sha256: plus 64 lowercase hex characters)'
required: true
type: string
regional-placement-mode:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ on:
not-before: { required: true, type: string }
rate-per-minute: { required: true, type: string }
preference-max-age-ms: { required: true, type: string }
host-cooldown-ms: { required: true, type: string }
drain-grace-ms: { required: true, type: string }
confirmation: { required: true, type: string }
monitor-run-id: { required: true, type: string }
Expand Down Expand Up @@ -54,6 +55,7 @@ jobs:
NOT_BEFORE: ${{ inputs.not-before }}
RATE_PER_MINUTE: ${{ inputs.rate-per-minute }}
PREFERENCE_MAX_AGE_MS: ${{ inputs.preference-max-age-ms }}
HOST_COOLDOWN_MS: ${{ inputs.host-cooldown-ms }}
DRAIN_GRACE_MS: ${{ inputs.drain-grace-ms }}
CONFIRMATION: ${{ inputs.confirmation }}
MONITOR_RUN_ID: ${{ inputs.monitor-run-id }}
Expand Down Expand Up @@ -128,6 +130,7 @@ jobs:
--expected-control-generation "${EXPECTED_CONTROL_GENERATION}" \
--not-before "${NOT_BEFORE}" --rate-per-minute "${RATE_PER_MINUTE}" \
--preference-max-age-ms "${PREFERENCE_MAX_AGE_MS}" \
--host-cooldown-ms "${HOST_COOLDOWN_MS}" \
--drain-grace-ms "${DRAIN_GRACE_MS}" --confirmation "${CONFIRMATION}" \
| tee "${RUNNER_TEMP}/relay-rehome-control.json"

Expand Down Expand Up @@ -299,6 +302,7 @@ jobs:
--expected-control-generation "${EXPECTED_CONTROL_GENERATION}" \
--not-before "${NOT_BEFORE}" --rate-per-minute "${RATE_PER_MINUTE}" \
--preference-max-age-ms "${PREFERENCE_MAX_AGE_MS}" \
--host-cooldown-ms "${HOST_COOLDOWN_MS}" \
--drain-grace-ms "${DRAIN_GRACE_MS}" --confirmation "${CONFIRMATION}" \
| tee "${RUNNER_TEMP}/relay-rehome-control.json"

Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/cloud-operate-relay-production-rehome.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,11 @@ on:
required: true
default: '86400000'
type: string
host-cooldown-ms:
description: Minimum gap between two rehomes of the same host
required: true
default: '604800000'
type: string
drain-grace-ms:
description: Per-host source drain grace
required: true
Expand Down Expand Up @@ -99,6 +104,7 @@ jobs:
not-before: ${{ inputs.not-before }}
rate-per-minute: ${{ inputs.rate-per-minute }}
preference-max-age-ms: ${{ inputs.preference-max-age-ms }}
host-cooldown-ms: ${{ inputs.host-cooldown-ms }}
drain-grace-ms: ${{ inputs.drain-grace-ms }}
confirmation: ${{ inputs.confirmation }}
monitor-run-id: ${{ inputs.monitor-run-id }}
Expand Down
364 changes: 364 additions & 0 deletions .github/workflows/cloud-push-deploy.yml

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions .github/workflows/e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,7 @@ jobs:
mapfile -t TEST_FILES < <(jq -r '.[] | select(
. != "tests/e2e/ssh-startup-exec-readiness.spec.ts" and
. != "tests/e2e/paired-startup-exec-readiness.spec.ts" and
. != "tests/e2e/ssh-docker-five-pane-input-under-flood.spec.ts" and
. != "tests/e2e/local-ssh-browser-routing.spec.ts" and
. != "tests/e2e/ssh-browser-network-execution-route.docker.unit.test.ts" and
. != "tests/e2e/ssh-localhost.spec.ts" and
Expand Down Expand Up @@ -272,6 +273,7 @@ jobs:
if: >-
inputs.test_files == '' ||
inputs.ssh_source_changed == 'true' ||
contains(inputs.test_files, 'tests/e2e/ssh-docker-five-pane-input-under-flood.spec.ts') ||
contains(inputs.test_files, 'tests/e2e/local-ssh-browser-routing.spec.ts') ||
contains(inputs.test_files, 'tests/e2e/ssh-client-hosted-browser-drop-reconnect.spec.ts') ||
contains(inputs.test_files, 'tests/e2e/ssh-startup-exec-readiness.spec.ts') ||
Expand Down
38 changes: 37 additions & 1 deletion .github/workflows/mobile-android-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -104,11 +104,47 @@ jobs:
--clobber \
android/app/build/outputs/apk/release/*.apk
else
# Why: release tags live on side branches, so GitHub's automatic
# previous-tag detection reaches back several releases; that body
# already exceeds the 125000-character API limit and grows each
# release. Pin the comparison base and cap the size.
notes_file="$RUNNER_TEMP/android-release-notes.md"
previous_tag="$(
gh release list --repo "$GITHUB_REPOSITORY" --limit 200 --json tagName --jq '.[].tagName' \
| grep '^mobile-android-v' | grep -Fxv "$tag" | sort -V | tail -1 || true
)"

if [ -n "$previous_tag" ]; then
# Why: gh writes the JSON error body to stdout on an HTTP error, so a
# non-empty file is not proof of success — gate on exit status.
if ! gh api "repos/$GITHUB_REPOSITORY/releases/generate-notes" -X POST \
-f tag_name="$tag" \
-f target_commitish="$GITHUB_SHA" \
-f previous_tag_name="$previous_tag" \
--jq .body > "$notes_file"; then
: > "$notes_file"
fi
fi
if [ ! -s "$notes_file" ]; then
printf 'Orca Mobile Android %s\n' "$tag" > "$notes_file"
fi
# Why: reuse the desktop release path's character-safe truncation so a
# multi-byte character cannot be split at the cap.
NOTES_FILE="$notes_file" \
NOTES_MODULE="$GITHUB_WORKSPACE/config/scripts/create-draft-release.mjs" \
node --input-type=module -e '
const { readFileSync, writeFileSync } = await import("node:fs")
const { pathToFileURL } = await import("node:url")
const { truncateReleaseBody } = await import(pathToFileURL(process.env.NOTES_MODULE).href)
const file = process.env.NOTES_FILE
writeFileSync(file, truncateReleaseBody(readFileSync(file, "utf8")))
'

gh release create "$tag" \
--repo "$GITHUB_REPOSITORY" \
--title "Orca Mobile Android $tag" \
--prerelease \
--latest=false \
--generate-notes \
--notes-file "$notes_file" \
android/app/build/outputs/apk/release/*.apk
fi
74 changes: 74 additions & 0 deletions .github/workflows/packaged-browser-e2e.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
name: Packaged browser compatibility
on:
workflow_dispatch:
inputs:
ref:
description: Commit SHA or ref to validate (defaults to the selected revision)
type: string
required: false
schedule:
- cron: '20 8 * * 1'
workflow_call:
inputs:
ref:
type: string
required: false
permissions:
contents: read
jobs:
compatibility:
runs-on: ubuntu-latest
timeout-minutes: 25
steps:
- uses: actions/checkout@v6
with:
ref: ${{ inputs.ref || github.sha }}
persist-credentials: false
- name: Install headless tools
run: sudo apt-get update && sudo apt-get install -y build-essential openssh-client python3 ripgrep xvfb zsh openbox x11-utils
- uses: ./.github/actions/install-node-dependencies
with:
native-runtime: electron
- name: Download pinned old release
env:
GH_TOKEN: ${{ github.token }}
run: |
gh release download v1.4.188 --repo stablyai/orca --pattern orca-ide_1.4.188_amd64.deb --dir "$RUNNER_TEMP/old-orca"
python3 - <<'PYVERIFY'
import base64,hashlib,os,pathlib,subprocess
root=pathlib.Path(os.environ['RUNNER_TEMP'])/'old-orca'
package=root/'orca-ide_1.4.188_amd64.deb'
expected='uGONFUDfinYggxcT9ac72wnnlofLQaqasDDeP0HWOSqarBwTi1Ax3khmzKUY3vUnvuYOpSCEmsH4InzLZ2vg6g=='
assert base64.b64encode(hashlib.sha512(package.read_bytes()).digest()).decode()==expected
extracted=root/'extracted'
subprocess.run(['dpkg-deb','-x',str(package),str(extracted)],check=True)
executable=extracted/'opt'/'Orca'/'orca-ide'
assert executable.is_file() and os.access(executable,os.X_OK)
with open(os.environ['GITHUB_ENV'],'a') as env: env.write('ORCA_CROSS_VERSION_PACKAGED_EXECUTABLE='+str(executable)+'\n')
print('Verified old package:',executable)
PYVERIFY
- name: Build current Electron app
env:
VITE_EXPOSE_STORE: 'true'
run: |
pnpm run build:relay
pnpm exec electron-vite build --mode e2e
pnpm run build:web-from-renderer
- name: Run both mixed-version directions
env:
PLAYWRIGHT_JSON_OUTPUT_FILE: test-results/packaged-browser-results.json
run: >-
xvfb-run --auto-servernum bash .github/scripts/e2e-with-window-manager.sh
env SKIP_BUILD=1 ORCA_E2E_FORWARD_APP_LOGS=1
pnpm exec playwright test --config tests/playwright.config.ts
tests/e2e/packaged-mixed-version-browser-placement.spec.ts
--project=electron-headless --workers=1 --retries=0 --repeat-each=3 --reporter=list,json
- name: Require all six compatibility executions
if: always()
run: node config/scripts/verify-packaged-browser-participation.mjs test-results/packaged-browser-results.json
- uses: actions/upload-artifact@v7
if: always()
with:
name: packaged-mixed-version-audit
path: test-results/
retention-days: 3
37 changes: 37 additions & 0 deletions .github/workflows/terminal-ime-e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,3 +70,40 @@ jobs:
path: test-results/
retention-days: 7
if-no-files-found: ignore

linux-wayland:
name: Linux Wayland Hangul terminating digit
runs-on: ubuntu-22.04
timeout-minutes: 25
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- name: Install native build, nested compositor and IME tools
run: >-
sudo apt-get update && sudo apt-get install -y
build-essential python3 fonts-noto-cjk dbus-x11 dconf-gsettings-backend
ibus ibus-hangul gnome-shell gnome-settings-daemon libglib2.0-bin
xdotool xvfb x11-utils imagemagick
- uses: ./.github/actions/install-node-dependencies
with:
native-runtime: electron
- name: Build Electron app for E2E
env:
VITE_EXPOSE_STORE: 'true'
run: |
pnpm run build:relay
pnpm exec electron-vite build --mode e2e
pnpm run build:web-from-renderer
- name: Run native Wayland Hangul terminating digit
env:
SKIP_BUILD: '1'
run: node config/scripts/run-terminal-ibus-hangul-e2e.mjs --nested-wayland
- name: Upload Wayland terminal IME evidence
if: always()
uses: actions/upload-artifact@v7
with:
name: terminal-wayland-ime-evidence
path: test-results/
retention-days: 7
if-no-files-found: error
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@

Monitor and steer your agents from your phone — get notified when an agent finishes and send follow-ups from anywhere.

[iOS App Store](https://apps.apple.com/us/app/orca-ide/id6766130217) · [TestFlight](https://testflight.apple.com/join/YjeGMQBA) · [Android APK 0.0.47](https://github.com/stablyai/orca/releases/download/mobile-android-v0.0.47/app-release.apk) · [Docs →](https://www.onorca.dev/docs/mobile)
[iOS App Store](https://apps.apple.com/us/app/orca-ide/id6766130217) · [TestFlight](https://testflight.apple.com/join/YjeGMQBA) · [Android APK 0.0.48](https://github.com/stablyai/orca/releases/download/mobile-android-v0.0.48/app-release.apk) · [Docs →](https://www.onorca.dev/docs/mobile)

</td>
<td width="50%">
Expand Down Expand Up @@ -230,7 +230,7 @@ yay -S stably-orca-bin
Pair with your desktop app to monitor and steer your agents from your phone.

- **iOS:** [Download on the App Store](https://apps.apple.com/us/app/orca-ide/id6766130217) or [join TestFlight](https://testflight.apple.com/join/YjeGMQBA)
- **Android:** [Download APK 0.0.47](https://github.com/stablyai/orca/releases/download/mobile-android-v0.0.47/app-release.apk) · [Install guide](https://www.onorca.dev/docs/android-apk)
- **Android:** [Download APK 0.0.48](https://github.com/stablyai/orca/releases/download/mobile-android-v0.0.48/app-release.apk) · [Install guide](https://www.onorca.dev/docs/android-apk)

---

Expand Down
4 changes: 2 additions & 2 deletions cloud/apps/relay-fence-broker/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
"typecheck": "tsc -p tsconfig.json --noEmit"
},
"dependencies": {
"@hono/node-server": "^1.19.14",
"hono": "^4.12.27",
"@hono/node-server": "^1.19.17",
"hono": "^4.13.7",
"zod": "^3.25.76"
},
"devDependencies": {
Expand Down
4 changes: 2 additions & 2 deletions cloud/apps/relay-ops/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
"typecheck": "tsc -p tsconfig.json --noEmit"
},
"dependencies": {
"@hono/node-server": "^1.19.14",
"hono": "^4.12.27",
"@hono/node-server": "^1.19.17",
"hono": "^4.13.7",
"zod": "^3.25.76"
},
"devDependencies": {
Expand Down
6 changes: 3 additions & 3 deletions cloud/apps/relay/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@
"typecheck": "tsc -p tsconfig.json --noEmit"
},
"dependencies": {
"@hono/node-server": "^1.19.14",
"@hono/node-server": "^1.19.17",
"@orca-cloud/relay-contract": "workspace:*",
"hono": "^4.12.27",
"hono": "^4.13.7",
"jose": "^6.1.3",
"pg": "^8.22.0",
"tweetnacl": "^1.0.3",
"ws": "^8.18.3",
"ws": "^8.21.3",
"zod": "^3.25.76"
},
"devDependencies": {
Expand Down
8 changes: 7 additions & 1 deletion cloud/apps/relay/src/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -606,8 +606,9 @@ export function createRelayApp(
const source = await operations.assignments.cellDeploymentStatus(
body.data.sourceCellId
)
// Any cell that can be drained can be a rehome source, in either
// direction, so the probe is gated on the protocol and not on a region.
if (
source.region !== RELAY_DEFAULT_REGION ||
!source.runtime ||
source.runtime.cellIncarnation !== body.data.sourceCellIncarnation ||
!source.runtime.ready ||
Expand Down Expand Up @@ -1412,6 +1413,11 @@ const RegionalRehomeControlSchema = z.discriminatedUnion('action', [
.int()
.min(60_000)
.max(30 * 24 * 60 * 60_000),
hostCooldownMs: z
.number()
.int()
.min(60_000)
.max(30 * 24 * 60 * 60_000),
drainGraceMs: z.number().int().min(60_000).max(60 * 60_000),
confirmation: z.enum([
'ENABLE_REGIONAL_REHOMING',
Expand Down
3 changes: 2 additions & 1 deletion cloud/apps/relay/src/assignment-inventory-snapshot.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { RELAY_DEFAULT_REGION } from '@orca-cloud/relay-contract'
import type { RelayDatabase, SqlRow } from './database.js'

export type CellInventorySnapshotRow = {
Expand Down Expand Up @@ -92,7 +93,7 @@ export async function readAssignmentInventorySnapshot(
return {
cells: cellRows.map((row) => ({
cellId: asText(row, 'cell_id'),
region: optionalText(row, 'region') ?? 'us-central1',
region: optionalText(row, 'region') ?? RELAY_DEFAULT_REGION,
admissionState: optionalText(row, 'admission_state') ?? 'unset',
enabled: asInteger(row, 'enabled') === 1,
capacityRequests: asInteger(row, 'capacity_requests'),
Expand Down
Loading
Loading