Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
469 commits
Select commit Hold shift + click to select a range
293c250
test(mobile): move the session closure pin past the structured tool-l…
Jinwoo-H Sep 23, 2026
51c3434
chore(relay): treat Asia cell c30 as a general cell now that it is pr…
Jinwoo-H Sep 23, 2026
1043dc5
fix(relay): stop rehoming hosts off Asia cells until the lock fix lan…
Jinwoo-H Sep 23, 2026
a2a78ab
feat(relay): alert on relay cell table lock convoys (#22446)
Jinwoo-H Sep 23, 2026
ae3d380
fix(relay): lock only the target cell row, last and NOWAIT, in the re…
Jinwoo-H Sep 23, 2026
942d993
fix(editor): map Salesforce Apex extensions to the apex language id (…
bdJohnson72 Sep 23, 2026
8d6fec5
Optimize cloud-verify workflow to scan HEAD instead of all history (#…
AmethystLiang Sep 23, 2026
dac82f6
Update README downloads badge
github-actions[bot] Sep 23, 2026
a375936
feat(agent-launch): let a caller reserve the pane its terminal launch…
brennanb2025 Sep 23, 2026
563dd54
feat(native-chat): show a Codex chat's goal above the composer, and s…
brennanb2025 Sep 23, 2026
641a7f3
fix(native-chat): keep one live tool-run header from a call's start t…
brennanb2025 Sep 23, 2026
a77f87e
feat(sidebar): copy workspace name from context menu (#22338)
AmethystLiang Sep 23, 2026
1116c54
fix(relay): accept production cells past c29 in the regional rehome o…
Jinwoo-H Sep 23, 2026
519bde8
feat(ipynb): render notebooks like a notebook, with seamless click-to…
Jinwoo-H Sep 23, 2026
19e8bf3
fix(ai-vault-search): detach buffered transcript rows (#22545)
OrcaWin Sep 23, 2026
845db9e
fix(native-chat): underline only file links a click can act on (#22370)
brennanb2025 Sep 23, 2026
90f0c5c
test(file-search): pin request-key listings against the real runtime …
AmethystLiang Sep 23, 2026
1866a79
fix: explain Xcode-blocked Git once in the sidebar and rescan on retu…
Jinwoo-H Sep 23, 2026
f1eb191
fix(opencode2): block the pane on every session-owned form (#22548)
nwparker Sep 23, 2026
9cdbc0c
fix(mobile): keep the shell's window insets out of the page WebView (…
Jinwoo-H Sep 23, 2026
60bd1df
feat(native-chat): one shell-environment setting for every structured…
brennanb2025 Sep 23, 2026
7f203ad
fix(browser): only pixel-capturing commands wait for the page to be d…
Jinwoo-H Sep 23, 2026
6847390
fix(ai-vault-search): own buffered transcript rows before they pin th…
nwparker Sep 23, 2026
12a7ffd
test(runtime): stop worker-recovery retries from scanning inside late…
nwparker Sep 23, 2026
069dc8a
feat(agent-launch): let a caller reserve the chat session, and start …
brennanb2025 Sep 23, 2026
5b6a857
fix(mobile): route the bottom drawer's keyboard through the platform …
Jinwoo-H Sep 23, 2026
63866c1
fix(mobile-web): page inputs lose the browser focus ring and hairline…
Jinwoo-H Sep 23, 2026
4bab736
fix(native-chat): dock the task strip on the goal tab (#22530)
brennanb2025 Sep 23, 2026
37820f9
feat(mobile): the page owns its safe area, like a native screen (OTA …
Jinwoo-H Sep 24, 2026
adc0c67
docs: remove duplicate Muse badge from README (#22497)
FumingPower3925 Sep 24, 2026
89817ad
test(mobile): repin the recording corpus to main's tip after #22570 (…
Jinwoo-H Sep 24, 2026
98e5ea3
refactor(tabs): delete the terminal tab's dead adopted-session field …
brennanb2025 Sep 24, 2026
800d33e
feat: name runtime machines (#22094)
brennanb2025 Sep 24, 2026
d438676
fix(opencode-usage): merge a migrated session's two rows per column (…
nwparker Sep 24, 2026
7216d5a
test(runtime): isolate per-repo worktree scan expiry from the shared …
brennanb2025 Sep 24, 2026
80f5aae
feat(agent-status): publish the main agent's own state beside the com…
brennanb2025 Sep 24, 2026
8352752
fix(opencode): give the opencode2 status plugin a distinct id (#22544)
nwparker Sep 24, 2026
f2ac9f2
fix(browser): let pixel capture hold its own page drawn, without the …
Jinwoo-H Sep 24, 2026
4064653
refactor(browser): remove the unused screenshot-prep visibility helpe…
Jinwoo-H Sep 24, 2026
b7a4fee
fix(agents): stop claiming an unconfirmed OpenCode handoff succeeded …
nwparker Sep 24, 2026
c4dfd9d
fix(claude): resume a native chat from its real latest message (#22395)
brennanb2025 Sep 24, 2026
b0ae7d1
fix(opencode2): resolve subagent session lineage so child work stops …
nwparker Sep 24, 2026
57bf732
test(opencode): cover the opencode2 host-env branch and stop inheriti…
nwparker Sep 24, 2026
5802b54
fix(rate-limits): read OpenCode Go usage with the Go API key (#22551)
nwparker Sep 24, 2026
5e3effc
fix(native-chat): show every user message on the message rail, not ju…
brennanb2025 Sep 24, 2026
795b64b
docs(tui-agent-config): correct the OpenCode readiness-budget rationa…
nwparker Sep 24, 2026
128e97f
fix(relay): drain a same-cap cell over 5 minutes, not 2 (#22584)
Jinwoo-H Sep 24, 2026
8ba7f82
feat(ipynb): run notebook cells in a persistent Jupyter kernel (#22581)
Jinwoo-H Sep 24, 2026
3ea15dd
fix(native-chat): keep chats that failed to resume in the status bar …
brennanb2025 Sep 24, 2026
7a4f080
revert: #18790 (orchestration incarnation reap fallback and bundled F…
brennanb2025 Sep 24, 2026
b4d7326
feat(agent-status): combine Codex child work through the shared main-…
brennanb2025 Sep 24, 2026
420fcb3
Update README downloads badge
github-actions[bot] Sep 24, 2026
ca75bc4
fix(orchestration): type a request ahead of pasted dispatch briefs so…
Jinwoo-H Sep 24, 2026
5ba9649
test(terminal): pin Option-composed currency on a punctuation key (#2…
nwparker Sep 24, 2026
b2940a1
fix(file-explorer): toggle folder instantly on name click (#22325)
LesleyMurfin Sep 24, 2026
8ddad49
fix(opencode): retire a subagent's blocker when the root turn ends (#…
nwparker Sep 24, 2026
25d7c21
feat(native-chat): show context window usage in the composer (#22301)
brennanb2025 Sep 24, 2026
ad6cb0e
fix(worktrees): version every catalog publication so a stale listing …
brennanb2025 Sep 24, 2026
122b8c2
fix(terminal): let Linux IMEs keep the candidate key for a preedit th…
nwparker Sep 24, 2026
85642d0
fix(agent-status): count only agent work in stats, and read a Grok ba…
brennanb2025 Sep 24, 2026
060743d
fix(mobile): keep the streamed browser pane flipping on slow phones, …
Jinwoo-H Sep 24, 2026
80e0bee
fix(floating-workspace): keep agent launches from moving the main win…
brennanb2025 Sep 24, 2026
5613c4f
fix(i18n): add missing translations for artifacts and browsing (#22697)
AmethystLiang Sep 24, 2026
9f7f406
test(mobile): repin the RPC recording corpus and session closure afte…
Jinwoo-H Sep 24, 2026
2c2414b
Update README downloads badge
github-actions[bot] Sep 24, 2026
c4e58fa
fix(mobile): restart the streamed browser pane on every return to the…
Jinwoo-H Sep 24, 2026
59d8275
fix(i18n): align ko artifacts search keyword with value override (#22…
AmethystLiang Sep 24, 2026
1985c1b
fix(native-chat): load older messages automatically before the reader…
brennanb2025 Sep 24, 2026
5610b11
feat(ipynb): create a .venv when pip is locked out, and show ipykerne…
Jinwoo-H Sep 24, 2026
9858433
fix(native-chat): record which Codex agent produced each journal row …
brennanb2025 Sep 24, 2026
6cda65f
fix(browser): import empty-value Chromium cookies instead of their do…
Jinwoo-H Sep 24, 2026
8f18930
feat(native-chat): add a hover copy button to sent messages (#22721)
brennanb2025 Sep 24, 2026
f0b3f44
feat(agent-session): let the host own a chat's tab id and let a creat…
brennanb2025 Sep 24, 2026
6ae6ed0
fix(claude): open structured chat without a startup deadline, and mak…
brennanb2025 Sep 24, 2026
29480cd
fix(skills): recognize symlinked provider skill roots (#22606)
aaryanporwal Sep 24, 2026
5e6fcca
fix(native-chat): date a session by its own lifecycle, not its subage…
brennanb2025 Sep 24, 2026
1069bb0
fix(agent-launch): a cwd at the workspace root no longer forces a ter…
brennanb2025 Sep 24, 2026
edbb2a9
docs: update translated Android APK links to 0.0.50 (#22740)
AmethystLiang Sep 25, 2026
7ea0127
feat(search): bundle ripgrep for local, WSL, and SSH search (#22396)
nwparker Sep 25, 2026
9678dfb
fix(pi): stop pi-subagents workflows from pinning a pane on working (…
mmarabel Sep 25, 2026
60b0d01
fix(agent-history): list older Pi sessions in Workspace and Project v…
mmarabel Sep 25, 2026
517ef56
fix(agent-status): end a Claude helper's turn when an API error stops…
brennanb2025 Sep 25, 2026
7a71e20
fix(pi): isolate status ownership in new terminals (#22717)
mmarabel Sep 25, 2026
bf40d35
docs: restore translated README assets reverted by stale APK bump (#2…
Jinwoo-H Sep 25, 2026
1c1b782
fix(daemon): rebase durable checkpoints on the live terminal (#22732)
Jinwoo-H Sep 25, 2026
fe46138
fix(terminal): one process-boundary ground for every known or proven …
Jinwoo-H Sep 25, 2026
c279760
fix(docs): update translated readme asset and WeChat links (#22763)
AmethystLiang Sep 25, 2026
b419b31
test: remove redundant mobile and GitLab checks (#22748)
AmethystLiang Sep 25, 2026
a0e2490
fix(agent-status): a cancel never hides live work (#22476)
brennanb2025 Sep 25, 2026
eb746a6
fix(codex): a Codex native chat that never sent a message reopens aft…
brennanb2025 Sep 25, 2026
58ba75b
feat(agent-status): child work records say what the child is doing, h…
brennanb2025 Sep 25, 2026
f559c05
fix(terminal): ground a program that dies with input modes armed on t…
Jinwoo-H Sep 25, 2026
a05649d
fix(terminal): prove an idle Git Bash prompt through its bin launcher…
Jinwoo-H Sep 25, 2026
2c7609b
fix(terminal): serialize only the visible width after a column shrink…
Jinwoo-H Sep 25, 2026
8fa5883
fix(terminal): stop dropping visible alt-screen output tagged as hidd…
Jinwoo-H Sep 25, 2026
8f7cbad
feat(mobile): name the machine after pairing (#22104)
brennanb2025 Sep 25, 2026
f9356d4
fix(release): run the tag's own skill freshness inventory tests in th…
brennanb2025 Sep 25, 2026
e0144a9
fix(native-chat): show the Codex and Claude model picker the moment a…
brennanb2025 Sep 25, 2026
fec8fe4
fix(native-chat): offer a resume for every chat that was working, and…
brennanb2025 Sep 25, 2026
5c45337
fix(terminal): make Codex restart replace the pane's process instead …
brennanb2025 Sep 25, 2026
67fc894
refactor(orchestration): give structured sessions an orchestration ac…
brennanb2025 Sep 25, 2026
f5d2ce5
fix(native-chat): keep the background-task strip above a pending prom…
brennanb2025 Sep 25, 2026
90801e2
feat(agents): add first-class ZCode harness (#22464)
nwparker Sep 25, 2026
69839c2
feat(zcode): explain a ZCode build that has no terminal UI (#22730)
nwparker Sep 25, 2026
745cde6
fix(feedback): send text-only report when screenshots exceed the uplo…
mmarabel Sep 25, 2026
46079aa
fix(lint): include .mts and .cts in line-limit checks (#22413)
nwparker Sep 25, 2026
c9d421f
fix(mobile): the page's terminal shows its last rows above the comman…
Jinwoo-H Sep 25, 2026
646e9a5
Update README downloads badge
github-actions[bot] Sep 25, 2026
d443320
refactor(native-chat): remove the unused terminal handoff (#22783)
brennanb2025 Sep 25, 2026
8009939
fix(claude): let a Claude chat start again after its root exited with…
brennanb2025 Sep 25, 2026
56dfddc
Show close button for single terminal panes (#22770)
AmethystLiang Sep 25, 2026
9643e16
fix(native-chat): keep an idle chat alive while its subagents or back…
brennanb2025 Sep 25, 2026
c1edd1d
chore(i18n): translate 85 new keys to es/fr/ja/ko/zh (#22746)
AmethystLiang Sep 25, 2026
01ed4b9
fix(desktop): release a native chat when you leave it, so its idle cl…
brennanb2025 Sep 25, 2026
8fb13ed
fix(mobile): keep terminal input working when reopening worktrees (#2…
shaharmor Sep 25, 2026
f59ee6c
Simplify .map().flat() to .flatMap() in onboarding tests (#22917)
AmethystLiang Sep 25, 2026
acf8e67
feat(native-chat): Claude sessions write their subagents into the hos…
brennanb2025 Sep 25, 2026
64704da
feat(feature-tips): one-time tip for agent session search (#22923)
Jinwoo-H Sep 25, 2026
c220d92
fix(codex): Codex 0.157+ starts in Orca-managed homes instead of fail…
OrcaWin Sep 25, 2026
8415031
fix(runtime-environments): don't crash when a server removed via the …
mmarabel Sep 25, 2026
2796a3a
fix(claude): prove a stopped chat's child processes gone when they ex…
brennanb2025 Sep 25, 2026
7d2c399
fix(web): keep Remote Web loading over plain HTTP without crypto.rand…
mmarabel Sep 25, 2026
8c13793
Update README downloads badge
github-actions[bot] Sep 25, 2026
add99c9
fix(native-chat): send typed question answers as structured answers, …
brennanb2025 Sep 25, 2026
570f070
fix(mobile): the page's Live input on Android echoes each letter as t…
Jinwoo-H Sep 26, 2026
6627c65
refactor(agent-session): keep which conversation each chat tab shows …
brennanb2025 Sep 26, 2026
01ce5ed
fix(claude): end a Claude chat on its root's exit even when a descend…
brennanb2025 Sep 26, 2026
18bbf6f
refactor(orchestration): resolve every caller and target to one orche…
brennanb2025 Sep 26, 2026
7782914
fix(mobile): a terminal opens once at the phone's size, on the page a…
Jinwoo-H Sep 26, 2026
8d21fdb
fix(mobile): update fflate for security advisory (#22961)
nwparker Sep 26, 2026
600adba
fix(native-chat): every journal append reaches the chats that are ope…
brennanb2025 Sep 26, 2026
19d472f
fix(native-chat): report a chat's owner from its record, not its runn…
brennanb2025 Sep 26, 2026
e785cac
fix(worktrees): keep failed orphan cleanup retryable (#22409)
nwparker Sep 26, 2026
16784c1
fix(native-chat): name a chat write by its target, not the owner gene…
brennanb2025 Sep 26, 2026
1c2cf12
fix: stop process-tree loops (#22411)
nwparker Sep 26, 2026
8846987
feat(rate-limits): add Cursor usage tracking (#22633)
nwparker Sep 26, 2026
fa018fe
chore(deps): refresh maintained dependencies (#22964)
nwparker Sep 26, 2026
ff74506
fix(native-chat): keep terminal pane chat ownership stable (#22984)
OrcaWin Sep 26, 2026
a00c424
Preserve pending SSH terminal layout edits (#22991)
OrcaWin Sep 26, 2026
c5f33bd
fix(ipynb): run no workspace interpreter until the notebook is truste…
brennanb2025 Sep 26, 2026
02a5594
fix(mobile): give each host field one writer so relay routing can't r…
Jinwoo-H Sep 26, 2026
77bc0d7
fix(editor): highlight scoped dotenv filenames on desktop and mobile …
nwparker Sep 26, 2026
ce2f75e
refactor(mobile): the live input's composing range comes from a platf…
Jinwoo-H Sep 26, 2026
d1eb64e
fix(editor): use the bundled ABAP grammar (#22417)
nwparker Sep 26, 2026
2ed6505
fix(native-chat): preserve current pane ownership through toggles and…
OrcaWin Sep 26, 2026
14087c8
Accept repeated leading BOMs in agent hooks (#22414)
nwparker Sep 26, 2026
7889a25
fix(cli): preserve the WSL distro when adding managed accounts (#22418)
nwparker Sep 26, 2026
9d5591b
fix(jira): bypass collection caches on explicit refresh (#22419)
nwparker Sep 26, 2026
7d4413b
fix(pdf): keep the search counter in sync with selected matches (#22420)
nwparker Sep 26, 2026
18d00cc
fix(projects): refresh stale automatic GitHub icons during enrichment…
nwparker Sep 26, 2026
f851d18
Preserve Kimi config permissions (#22422)
nwparker Sep 26, 2026
094fbef
fix(toast): keep folder errors above standard modal backdrops (#22423)
nwparker Sep 26, 2026
d929bd8
Keep large Windows file identities distinct (#22424)
nwparker Sep 26, 2026
15baf86
fix(agents): honor environment prefixes in generation commands (#22427)
nwparker Sep 26, 2026
27ca6a2
test(mobile): repin RPC goldens to main after #22956's squash (#23046)
Jinwoo-H Sep 26, 2026
d06b43e
fix(tasks): read a malformed saved Linear team selection as sticky-al…
OrcaWin Sep 26, 2026
067975b
fix(native-chat): every lease latch has a way to die (#22820)
brennanb2025 Sep 26, 2026
f6eab38
fix(types): describe command environments independently of Expo globa…
OrcaWin Sep 26, 2026
e13631e
Prioritize workspace opening over replacement checkout preparation (#…
nwparker Sep 26, 2026
aed59a7
chore(i18n): translate 113 new keys to es/fr/ja/ko/zh (#23067)
AmethystLiang Sep 26, 2026
85ac14e
fix(codex): retain runtime MCP entries without losing revocation (#22…
nwparker Sep 26, 2026
58d1ff3
Provide the Orca CLI automatically in managed WSL terminals (#22761)
OrcaWin Sep 26, 2026
457a84d
fix(mobile): label direct paths with the shared Tailscale check (#23039)
Jinwoo-H Sep 26, 2026
f0a3610
test(terminal): re-pin the pane hook-order parity past #23049 (#23090)
Jinwoo-H Sep 26, 2026
82412da
Persist profile state in SQLite with background writes (#22612)
OrcaWin Sep 26, 2026
49d7ed3
fix(native-chat): keep chat visible when detaching its pane (#23096)
OrcaWin Sep 26, 2026
38bcdf7
perf(ci): reduce queue pressure without paid runners (#23053)
OrcaWin Sep 26, 2026
6fc3cdc
Bundle Bun for headless Orca and profile persistence (#22635)
OrcaWin Sep 26, 2026
d9bc757
fix(terminal): a remounted new SSH tab keeps the shell its old pane w…
OrcaWin Sep 26, 2026
df8164f
fix(sidebar): "Hide default branch" hides a folder project's root wor…
OrcaWin Sep 26, 2026
029b5ba
fix(startup): hold desktop activations until the startup window exist…
OrcaWin Sep 26, 2026
80ff6c4
fix(startup): read the install-dir package ACL as SDDL so a repaired …
OrcaWin Sep 26, 2026
4cafa50
fix(windows): reuse shared PowerShell literal quoting at every hand-r…
OrcaWin Sep 26, 2026
9b30c7f
ci: verify mobile disposal and balance unit-test costs (#23114)
OrcaWin Sep 26, 2026
0a5e73e
Leave Open Settings unbound by default (#23136)
nwparker Sep 26, 2026
2afb9a3
fix(terminal): damp park-verdict churn that is too slow to burst (#20…
OrcaWin Sep 26, 2026
d17a176
Reduce redundant CI runs, pnpm uploads, and fixture startups (#23145)
OrcaWin Sep 26, 2026
8b7a2a5
Wait for foreground job readiness before testing Ctrl-Z (#23158)
OrcaWin Sep 26, 2026
d9d5993
fix(markdown): return focus to editor from find bar (#23175)
nwparker Sep 26, 2026
d3434a2
Improve pull request template for issue linking
nwparker Sep 26, 2026
9700030
refactor(pty): make renderer delivery optional for headless runtimes …
OrcaWin Sep 26, 2026
3a081ab
fix(persistence): reclaim Windows profile locks after PID reuse (#23122)
OrcaWin Sep 26, 2026
f24ed20
perf(chat): share matching concurrent transcript reads (#23172)
nwparker Sep 26, 2026
711bacd
perf(editor): skip unchanged draft publications (#23173)
nwparker Sep 26, 2026
d20cb69
Optimize CI follow-up workflows (#23190)
OrcaWin Sep 26, 2026
da6d483
fix(vault): read OpenCode SQLite inside WSL and SSH hosts (#23128)
OrcaWin Sep 26, 2026
0bad8b7
Better add ai notes ui (#21719)
AmethystLiang Sep 26, 2026
0647e6d
fix(i18n): correct duration and turn-status copy across locales (#23243)
AmethystLiang Sep 26, 2026
3990076
Update README downloads badge
github-actions[bot] Sep 26, 2026
a85057e
Simplify filter-flatMap patterns to single flatMap operations (#23242)
AmethystLiang Sep 26, 2026
f4557bf
fix(renderer): release retired store snapshots from selector caches (…
OrcaWin Sep 26, 2026
ba3217f
Cancel abandoned renderer-owned reads (#22986)
nwparker Sep 26, 2026
dd46f51
perf(terminal): avoid intermediate history frame buffers (#23005)
nwparker Sep 26, 2026
1fc0bfe
perf(relay): share concurrent readiness probes (#23012)
nwparker Sep 26, 2026
89d4dd8
perf(terminal): scan synchronized markers in linear work (#23015)
nwparker Sep 26, 2026
148296e
perf(relay): skip abandoned queued control activation (#23029)
nwparker Sep 26, 2026
3edab01
perf(editor): skip unchanged cursor-line store writes (#22983)
nwparker Sep 26, 2026
96c6889
fix: route hook files through their stored repository owner (#23184)
nwparker Sep 26, 2026
8416e8d
refactor(persistence): retire ordinary JSON profile writes (#23202)
OrcaWin Sep 26, 2026
69aa9e7
Release failed filesystem watcher setup records (#22995)
nwparker Sep 26, 2026
753d959
perf(renderer): release unrelated state during cache saves (#23021)
nwparker Sep 26, 2026
60557ba
perf: avoid duplicate base64 decode on SSH uploads (#23093)
nwparker Sep 26, 2026
efb5d24
perf: avoid copying unchanged artifact share records (#23141)
nwparker Sep 26, 2026
b65dbe2
fix: stop retired folder watchers from starting Git upgrades (#23144)
nwparker Sep 26, 2026
10b3d84
perf: build browser settings search catalog once per render (#23155)
nwparker Sep 26, 2026
ecf4c95
perf: reuse Muse usage filters within each snapshot (#23179)
nwparker Sep 26, 2026
8abd25e
perf: reuse target membership within folder lineage filtering (#23185)
nwparker Sep 26, 2026
38e3f0d
fix: preserve conflicting folders when local import creation fails (#…
nwparker Sep 26, 2026
f7354fb
fix: release chunked download resources with their renderer (#23108)
nwparker Sep 26, 2026
37d87a2
fix: close file watcher probes after failed writes (#23124)
nwparker Sep 26, 2026
1a982c2
perf: retire removed worktree head failure markers (#23135)
nwparker Sep 26, 2026
2819faa
fix: reject expired updater feed selections (#23160)
nwparker Sep 26, 2026
8b1ac1d
Release cursor positions with editor tab ownership (#22988)
nwparker Sep 26, 2026
818237b
fix: stop retired relay load connections from rescheduling refreshes …
nwparker Sep 26, 2026
b9f7678
perf(persistence): serialize selective SQLite saves once (#23171)
nwparker Sep 26, 2026
668fa71
Release SQLite transaction queues when startup fails (#22993)
nwparker Sep 26, 2026
ded0c39
perf: reuse fresh selected folder checks on unrelated expiry (#23087)
nwparker Sep 26, 2026
15aa886
fix: stop abandoned local attachment checks after composer unmount (#…
nwparker Sep 26, 2026
681f3ca
perf: stream the packaged browser installer checksum in CI (#23082)
nwparker Sep 26, 2026
7468e9c
release: v1.4.214
github-actions[bot] Sep 26, 2026
eb7cb9e
feat: let users choose JSON or SQLite when profile copies diverge (#2…
OrcaWin Sep 27, 2026
083f583
release: v1.4.215
github-actions[bot] Sep 27, 2026
073cb38
Merge tag 'v1.4.215' into zpyoung/auto-sync-fork-with-upstream-stably…
zpyoung Sep 28, 2026
199f26e
sync: resolve file ownership for v1.4.215
zpyoung Sep 28, 2026
47f8521
fix(sync): adapt the fork's provably-live PTY write to v1.4.215
zpyoung Sep 28, 2026
1bf4b12
fix(sync): drop the OMP test's terminal-owner fence case upstream rem…
zpyoung Sep 28, 2026
f84ee51
fix(sync): re-import helpers upstream dropped but fork lines still call
zpyoung Sep 28, 2026
e975182
fix(heimdall): pass the unified orchestration caller v1.4.215 requires
zpyoung Sep 28, 2026
8d0913c
fix(sync): adapt fork renderer callers to v1.4.215 signatures
zpyoung Sep 28, 2026
5668b56
fix(sync): pass the fork's diff cancellations in upstream's new downl…
zpyoung Sep 28, 2026
74b89ed
lint(sync): route fork randomUUID calls through createBrowserUuid
zpyoung Sep 28, 2026
e0a3c44
fix(sync): follow upstream's tool-line hover group rename in the fork…
zpyoung Sep 28, 2026
c05eb6c
fix(sync): drop the retired root_directory_guard from the e2e gate co…
zpyoung Sep 28, 2026
e1a562c
fix(sync): hold upstream's new max-lines .mts/.cts cases to the fork'…
zpyoung Sep 28, 2026
39c0a45
fix(sync): build the project-group test store on upstream's SQLite ha…
zpyoung Sep 28, 2026
c0cf3b6
fix(sync): give the fork's diff-cancellation tests event-emitting sen…
zpyoung Sep 28, 2026
2fafdb9
fix(terminal-dock): treat a pane leaf without a stable id as undocked
zpyoung Sep 28, 2026
936445c
fix(sync): pass targetCommitish in the fork's changelog draft-release…
zpyoung Sep 28, 2026
0634795
fix(sync): drop merged assertions on workflows and jobs the fork removes
zpyoung Sep 28, 2026
0e40e4d
fix(sync): follow upstream folding tool results into their call rows
zpyoung Sep 28, 2026
55fc06b
test(hosted-review-sitter): profile the fork fix-checks launch in ups…
zpyoung Sep 28, 2026
df71798
fix(sync): read the Ledger-tab test's persisted state from SQLite
zpyoung Sep 28, 2026
971ab03
fix(heimdall): mock orchestrationCallerIdentity in the adapter test
zpyoung Sep 28, 2026
50390b8
fix(sync): adapt upstream's readiness-reuse tests to the fork's PR graph
zpyoung Sep 28, 2026
234a108
fix(sync): point upstream's new feed-lifetime test at the fork's rele…
zpyoung Sep 28, 2026
9f56335
fix(sync): stop the fork live-session test awaiting a pending older page
zpyoung Sep 28, 2026
1d60092
fix(test-sandbox): ship the zip extractor the Electron install step n…
zpyoung Sep 28, 2026
916af7e
chore(sync): declare the new CI-fix seams and budgets
zpyoung Sep 28, 2026
f607ab1
fix(sync): admit the fork cold-start transcript's 8 pre-existing seri…
zpyoung Sep 28, 2026
67fb6a5
fix(ci): backport upstream's focused Playwright file selection (#23270)
zpyoung Sep 28, 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: 5 additions & 11 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -40,27 +40,21 @@
# these carry real CR and CRLF bytes as the terminal emitted them, and line-ending
# normalisation on a Windows checkout would rewrite the evidence the fixture exists to be.
/src/main/runtime/__fixtures__/*.txt -text
/src/main/daemon/__fixtures__/pty-transcripts/*.txt -text
# Generated runtime English subset: compared byte-for-byte by
# verify:localization-runtime-catalog, so a CRLF checkout would fail the gate.
/src/renderer/src/i18n/en-runtime-required.json linguist-generated=true text eol=lf
# Generated method->params catalog: compared byte-for-byte by
# verify:rpc-params-catalog, so a CRLF checkout would fail the gate.
/src/shared/rpc-contract/rpc-params-catalog.generated.ts linguist-generated=true text eol=lf
# Mobile web bundle source. Every text byte here is hashed into an asset digest and
# from there into buildId, so a CRLF checkout produces a different bundle id for the
# same commit (91af2897 vs 9d78435e). The PNG is -text because it must not be touched.
/src/mobile-web/index.html text eol=lf
/src/mobile-web/src/*.ts text eol=lf
/src/mobile-web/src/*.css text eol=lf
/src/mobile-web/src/*.png -text
# Mobile web page source. Same buildId hazard as src/mobile-web above: these bytes are
# hashed into the Phase C bundle, so a CRLF Windows checkout would ship a different
# buildId for identical source. web-entry/ does not exist yet; the pin lands ahead of it.
# Mobile web page source. Every text byte here is hashed into an asset digest and from
# there into buildId, so a CRLF Windows checkout would ship a different bundle id for
# identical source (91af2897 vs 9d78435e, measured on the bundle this replaced).
/mobile/src/** text eol=lf
/mobile/app/** text eol=lf
/mobile/web-entry/** text eol=lf
# The blanket pin above would mark a future binary as text; exempt the asset types an
# RN page actually carries, the same way src/mobile-web exempts its PNG.
# RN page actually carries.
/mobile/src/**/*.png -text
/mobile/src/**/*.jpg -text
/mobile/src/**/*.jpeg -text
Expand Down
28 changes: 26 additions & 2 deletions .github/actions/install-node-dependencies/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,17 +50,41 @@ runs:
uses: actions/setup-node@v6
with:
node-version-file: package.json
cache: pnpm
cache: ${{ github.event_name != 'pull_request' && 'pnpm' || '' }}
cache-dependency-path: ${{ inputs.cache-dependency-path }}
package-manager-cache: false

- name: Setup requested Node.js
id: requested-node
if: inputs.node-version != ''
uses: actions/setup-node@v6
with:
node-version: ${{ inputs.node-version }}
cache: pnpm
cache: ${{ github.event_name != 'pull_request' && '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'
shell: bash
env:
LOCKFILE_HASH: ${{ hashFiles(inputs.cache-dependency-path) }}
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"

# Match setup-node's key and path so existing default-branch stores remain reusable.
- name: Restore pnpm download store without saving
if: github.event_name == 'pull_request'
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: Validate native runtime
shell: bash
Expand Down
32 changes: 32 additions & 0 deletions .github/actions/prepare-git-compatibility/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: Prepare baseline Git compatibility binary
description: Restore or build the pinned Linux Git binary for the compatibility contract.

runs:
using: composite
steps:
# The default-branch warmer shares this key across PRs; a PR save is private to its merge ref.
# Cache eviction remains possible, so keep the checksum-verified cold build below.
- name: Cache baseline Git build
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

# 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
exit 0
fi
curl -fsSL https://www.kernel.org/pub/software/scm/git/git-2.25.5.tar.gz -o "$archive"
echo "41662c52fc16fec4963bfc41075e71f8ead6b5e386797eb6f9a1111ff95a8ddf $archive" \
| sha256sum --check
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
# Object files are no longer needed after linking the cached binary.
find "$source" -name '*.o' -delete
11 changes: 11 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
version: 2
updates:
# Why only ripgrep: the bundled rg ships in every artifact and to SSH remotes, and a bump is a
# one-line pin change (the SSH cache keys on the binary's hash). Other dependencies stay manual.
- package-ecosystem: npm
directory: /
schedule:
interval: monthly
allow:
- dependency-name: '@vscode/ripgrep-universal'
open-pull-requests-limit: 1
3 changes: 2 additions & 1 deletion .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@

## Linked Issue

<!-- Link the issue this PR addresses, there should ALWAYS be one -->
<!-- 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 -->

Fixes #

Expand Down
140 changes: 140 additions & 0 deletions .github/workflows/bun-profile-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
name: Bun profile persistence

on:
pull_request:
paths:
- 'src/**'
- 'config/**'
- 'native/**'
- 'tests/**'
- 'resources/**'
- 'package.json'
- 'pnpm-lock.yaml'
- 'pnpm-workspace.yaml'
- 'tsconfig.json'
- '.npmrc'
- '.pnpmfile.cjs'
- '.github/actions/install-node-dependencies/**'
- '.github/workflows/bun-profile-tests.yml'
workflow_dispatch:

permissions:
contents: read

concurrency:
group: bun-profile-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
changes:
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
timeout-minutes: 5
outputs:
should_run: ${{ steps.scope.outputs.should_run }}
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 2
persist-credentials: false
- uses: ./.github/actions/install-node-dependencies
- name: Detect Bun build and test inputs
id: scope
shell: bash
run: |
# Compare the tested merge with its base, retaining both sides of renames.
if git diff --name-only --no-renames -z HEAD^1 HEAD > "$RUNNER_TEMP/bun-changes"; then
node config/scripts/bun-profile-change-scope.mjs "$RUNNER_TEMP/bun-changes"
else
echo 'should_run=true' >> "$GITHUB_OUTPUT"
fi

persistence:
needs: changes
# Missing/failed detection runs the full matrix; manual runs remain unconditional.
if: ${{ !cancelled() && needs.changes.outputs.should_run != 'false' }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04, ubuntu-24.04-arm, macos-14, macos-15-intel, windows-2022, windows-11-arm]
runs-on: ${{ matrix.os }}
timeout-minutes: 20
env:
ORCA_BACKGROUND_LAUNCH: '1'
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- uses: ./.github/actions/install-node-dependencies
with:
native-runtime: ${{ runner.os == 'Windows' && 'node' || 'none' }}
- name: Build the native Windows process reader
if: runner.os == 'Windows'
run: node config/scripts/build-windows-process-tree-relay-addon.mjs
- run: pnpm build:orcad
- run: pnpm test:bun:profile --artifact
- uses: actions/setup-node@v6
if: runner.arch == 'X64'
with:
node-version: '18'
- name: Verify Node 18 loads and hands off to bundled Bun
if: runner.arch == 'X64'
run: |
node out/orcad/orcad.js --orcad-smoke-load-check
node out/orcad/orcad.js --orcad-profile-state-preflight 00000000-0000-4000-8000-000000000018

linux_glibc_floor:
needs: changes
# Missing/failed detection runs the full matrix; manual runs remain unconditional.
if: ${{ !cancelled() && needs.changes.outputs.should_run != 'false' }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04, ubuntu-24.04-arm]
runs-on: ${{ matrix.os }}
container: ubuntu:20.04
timeout-minutes: 20
env:
ORCA_BACKGROUND_LAUNCH: '1'
steps:
- name: Install Ubuntu 20.04 prerequisites
run: apt-get update && apt-get install -y build-essential ca-certificates git python3 unzip
- uses: actions/checkout@v6
with:
persist-credentials: false
- name: Trust the checked-out workspace
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
- uses: ./.github/actions/install-node-dependencies
- run: pnpm build:orcad
- run: pnpm test:bun:profile --artifact

linux_musl:
needs: changes
# Missing/failed detection runs the full matrix; manual runs remain unconditional.
if: ${{ !cancelled() && needs.changes.outputs.should_run != 'false' }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04, ubuntu-24.04-arm]
runs-on: ${{ matrix.os }}
timeout-minutes: 20
env:
ORCA_BACKGROUND_LAUNCH: '1'
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- name: Verify native Alpine artifact and persistence
run: |
docker run --rm --init -i \
-e ORCA_BACKGROUND_LAUNCH=1 \
-v "$GITHUB_WORKSPACE:/work" -w /work \
node:24-alpine3.23 sh -s <<'BUN_QUALIFICATION'
set -eu
apk add --no-cache bash git libstdc++ python3 make g++
git config --global --add safe.directory /work
npm install -g "$(node -p "require('./package.json').packageManager.split('+')[0]")"
pnpm install --frozen-lockfile --ignore-scripts
pnpm build:orcad
pnpm test:bun:profile --artifact
BUN_QUALIFICATION
65 changes: 65 additions & 0 deletions .github/workflows/ci-cache-warmup.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
name: Warm shared CI caches

on:
schedule:
- cron: '41 * * * *'
workflow_dispatch:
push:
branches: [main]
paths:
- '.github/workflows/ci-cache-warmup.yml'
- '.github/actions/install-node-dependencies/**'
- '.github/actions/prepare-git-compatibility/**'
- 'package.json'
- 'pnpm-lock.yaml'
- 'pnpm-workspace.yaml'
- 'config/tsconfig*.json'
- '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/**'
pull_request:
paths:
- '.github/workflows/ci-cache-warmup.yml'
- '.github/actions/prepare-git-compatibility/**'
- 'config/scripts/ci-cache-warmup-workflow.test.mjs'

permissions:
contents: read

concurrency:
group: ci-cache-warmup-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
warm:
runs-on: ubuntu-latest
timeout-minutes: 10
env:
ORCA_BACKGROUND_LAUNCH: '1'
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false

# Default-branch caches can be restored by every PR; PR caches cannot.
- uses: ./.github/actions/install-node-dependencies
with:
native-runtime: node
node-version: '24'

- uses: ./.github/actions/prepare-git-compatibility

- name: Cache TypeScript incremental state
id: typecheck-cache
uses: actions/cache@v5
with:
path: config/*.tsbuildinfo
key: tsbuildinfo-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml', 'config/tsconfig*.json') }}-${{ github.sha }}
restore-keys: |
tsbuildinfo-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml', 'config/tsconfig*.json') }}-

- name: Refresh TypeScript state for this commit
if: steps.typecheck-cache.outputs.cache-hit != 'true'
run: pnpm run typecheck
Loading
Loading