Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
954 commits
Select commit Hold shift + click to select a range
e493795
Improve disconnected server recovery copy (#11827)
brennanb2025 Jul 31, 2026
139f756
Add recursive sleep actions for workspace descendants (#11810)
OrcaWin Jul 31, 2026
f56e6ad
fix(ssh): recover orphaned relay install locks (#9828) (#10207)
rodboev Jul 31, 2026
676964b
ci: run only changed e2e specs on pull requests (#11834)
nwparker Jul 31, 2026
9bf05b0
Prevent Agent sleep while orchestration dispatch is active (#11808)
brennanb2025 Jul 31, 2026
adc56a7
feat(workspaces): add Slack emoji aliases (#11837)
nwparker Jul 31, 2026
3c05e03
Revert "feat(workspaces): add Slack emoji aliases (#11837)" (#11843)
nwparker Aug 1, 2026
e79304c
feat(workspaces): add Korean flag shortcode (#11845)
nwparker Aug 1, 2026
1a0a1ce
fix(i18n): correct mistranslation of Grace/grace period in Chinese (#…
fsdwen Aug 1, 2026
a53c5d3
fix(mobile): stop serving a pre-write host-list snapshot to loads iss…
brennanb2025 Aug 1, 2026
5738d61
fix(workspaces): guarantee Korean flag kr shortcode (#11858)
nwparker Aug 1, 2026
377b580
Restyle voice dictation feature tip (#11842)
brennanb2025 Aug 1, 2026
33ad64b
fix(runtime): bound persisted graph hydration (#11832)
OrcaWin Aug 1, 2026
072133f
fix(preflight): route landing banner through the runtime-aware prefli…
croakingtoad Aug 1, 2026
402e492
fix(codex): keep persistent panes logged in after home routing (#11720)
brennanb2025 Aug 1, 2026
c09a2ee
fix(mobile): open resume workspace route reliably (#11876)
Jinwoo-H Aug 1, 2026
ed00ab0
fix(ssh): restore relay ownership after app restart (#11860)
brennanb2025 Aug 1, 2026
4c03cdf
fix(mobile): mount host before opening tasks (#11853)
brennanb2025 Aug 1, 2026
6e7ceaf
perf(mobile): avoid unchanged worktree catalog payloads (#11735)
nwparker Aug 1, 2026
c8a22ad
fix(terminal): make snapshot capability lookup async (#11881)
OrcaWin Aug 1, 2026
278a4b2
fix(terminal): close async capability review gaps (#11887)
nwparker Aug 1, 2026
ad1e58d
chore: declutter top-level repo layout (#11890)
AmethystLiang Aug 1, 2026
96c954f
chore: remove force-added design docs from docs/ (#11891)
AmethystLiang Aug 1, 2026
340faaa
fix(workspaces): use the emojibase shortcode preset for emoji suggest…
nwparker Aug 1, 2026
c2e3d13
fix(mobile): focus Kimi terminal input after touch (#11865)
brennanb2025 Aug 1, 2026
169ec8f
fix(mobile): refresh folder workspace catalog (#11767)
brennanb2025 Aug 1, 2026
edb5607
ci: block new root-level entries (#11903)
nwparker Aug 1, 2026
3a70078
fix(daemon): prevent PAM rejection restart cascades (#11911)
nwparker Aug 1, 2026
e531e79
fix(relay): chunk fs.changed notifications to fit the client frame ca…
nwparker Aug 1, 2026
c79b859
fix(browser): prevent window.close guest crashes (#11910)
nwparker Aug 1, 2026
76a2317
fix(persistence): stop blocking backup rotation (#11916)
nwparker Aug 1, 2026
1f307af
fix(terminal): preserve follow output through streaming refocus (#11915)
nwparker Aug 1, 2026
33c14bc
fix(ssh): fall back to OpenSSH for FIDO2 keys (#11913)
nwparker Aug 1, 2026
16c5526
fix(daemon): cover in-flight sleep in PAM watch (#11921)
nwparker Aug 1, 2026
5c0195a
Bound remote watcher fan-out and defer File Explorer refreshes (#11908)
AmethystLiang Aug 1, 2026
b04c695
fix(runtime): drop stale local agent rows from worktree.ps after tab …
brennanb2025 Aug 1, 2026
786d704
fix(win32): suppress Command Prompt window on IDE launches (#11907)
AmethystLiang Aug 1, 2026
036b1e7
fix(terminal): add replacement policies for repeated same-handle stre…
AmethystLiang Aug 1, 2026
36cc849
fix(terminal): stop the active-terminal repair loop from tripping Rea…
nwparker Aug 1, 2026
1542082
test(terminal): release-gate duplicate PTY renderer restore (#11947)
nwparker Aug 1, 2026
2b44e9e
fix(updater): notarize hourly macOS builds so TCC grants survive upda…
nwparker Aug 1, 2026
0520604
chore: condense code comments (#12008)
AmethystLiang Aug 1, 2026
a07427e
fix(ssh, relay): keep remote sessions alive through reconnects and ba…
AmethystLiang Aug 1, 2026
c5c10e1
Fix POSIX path coalescing and file explorer watch regressions (#12004)
AmethystLiang Aug 1, 2026
a7d769e
Watcher explorer relay regressions (#12012)
AmethystLiang Aug 1, 2026
2f104d8
Tier GitHub PR lookup polling to prevent quota exhaustion (#12013)
AmethystLiang Aug 1, 2026
38e0381
release: v1.4.164-rc.0
github-actions[bot] Aug 1, 2026
8fc892d
fix(i18n): add missing Editor Font Family translations for es, ja, ko…
qiuyongjin Aug 1, 2026
e0f597a
Update README downloads badge
github-actions[bot] Aug 2, 2026
dbfffa6
Add first user prompt to AI Vault session history row (#12006)
AmethystLiang Aug 2, 2026
de75003
fix(P1-C): gate FIDO2 system-SSH transport on an OpenSSH binary (#12029)
AmethystLiang Aug 2, 2026
8ab85c9
fix(quit): stop durable state writes from parking the main thread on …
nwparker Aug 2, 2026
9db4cde
fix(windows): keep browser close marker URL absolute (#12038)
nwparker Aug 2, 2026
742024b
release: v1.4.164-rc.1
github-actions[bot] Aug 2, 2026
4f963fd
fix(browser): remove unsafe window close bypass (#12040)
nwparker Aug 2, 2026
a20d822
fix(agent-status): preserve Claude background work (#11838)
nwparker Aug 2, 2026
4be4d10
release: v1.4.164-rc.2
github-actions[bot] Aug 2, 2026
6e2a88c
perf(worktrees): avoid redundant fetch during deletion (#11918)
nwparker Aug 2, 2026
ced4a2a
fix(P1-D): bound hosted-review in-flight lookups so a wedged provider…
AmethystLiang Aug 2, 2026
ce5b639
fix(P1-B): recover SSH targets and remote file watchers after a netwo…
AmethystLiang Aug 2, 2026
f820f40
Update AGENTS.md
nwparker Aug 2, 2026
25fefa4
fix(P1-A): async SSH consumer-recovery persistence and detach on fail…
AmethystLiang Aug 2, 2026
5c7fba5
chore: ask issue reporters to write in English (#12066)
nwparker Aug 2, 2026
2f73775
fix(terminal): bound fullscreen atlas recovery (#12061)
OrcaWin Aug 2, 2026
db69cd9
fix(agent-status): clear Claude question indicator after Escape (#12064)
nwparker Aug 2, 2026
2fe655d
Pr 9364 update (#11684)
AmethystLiang Aug 2, 2026
1e9963d
chore(lint): enable safe performance guard rules (#12073)
nwparker Aug 2, 2026
711491b
fix(agent-status): restore status in reused terminal panes (#12074)
nwparker Aug 2, 2026
1562f12
fix(P1-D): coalesce remote-ref probes, TTL negatives, and bound unset…
AmethystLiang Aug 2, 2026
73c5009
chore(dead-code): drop ~2k lines of unreachable exports and orphan mo…
nwparker Aug 2, 2026
714bcbe
fix(relay): make desktop control lifecycle provable and self-healing …
Jinwoo-H Aug 2, 2026
3172002
fix(sidebar): preserve manual order during refresh (#12072)
Jinwoo-H Aug 2, 2026
a14ada1
fix(test): restore Azure DevOps and Bitbucket remote-url probe assert…
nwparker Aug 2, 2026
673d7ca
refactor(relay): collapse the duplicated FrameDecoder into one shared…
nwparker Aug 2, 2026
e58c051
fix(terminal): trust Pi CSI-u Shift+Enter on Windows (#9703) (#11769)
itisvincent Aug 2, 2026
006ce9d
fix(dev): split the confirmation dialog so Fast Refresh can accept it…
nwparker Aug 2, 2026
4a76565
fix(terminal): bound paired-client renderer work (#12081)
OrcaWin Aug 2, 2026
1e545f9
fix(speech): coalesce model download progress churn on the Settings/V…
nwparker Aug 2, 2026
0d38053
fix(i18n): localize status labels in settings and stats (#11826)
smwbev Aug 2, 2026
3f8654c
fix(editor): make lazy-chunk recovery actually reload instead of bein…
nwparker Aug 2, 2026
5390224
fix(relay): declare reconnection to the director's verified fast lane…
Jinwoo-H Aug 2, 2026
5e9186f
chore(mobile): import the shared marine-creature corpus instead of mi…
nwparker Aug 2, 2026
4842738
feat(updater): add an adhoc release channel for branch builds (#12051)
nwparker Aug 2, 2026
60e6a19
refactor(worktrees): reuse the shared push-target helpers on the SSH …
nwparker Aug 2, 2026
07bd574
refactor(usage): share the Codex/OpenCode scan fold behind a provider…
nwparker Aug 2, 2026
0ae9174
refactor(github): extract shared GitHubItemDialog/PullRequestPage cod…
nwparker Aug 2, 2026
98ae8e4
Allow clearing all agents from AI Vault session history filter (#12128)
AmethystLiang Aug 2, 2026
56ab5fd
fix(tasks): make GitHub pagination honest — cap unreachable pages, su…
brennanb2025 Aug 2, 2026
99b94a3
docs(tasks): trim the search-window error pattern comment (#12130)
AmethystLiang Aug 2, 2026
0c28936
fix(browser): keep browser tabs rendering across worktree switches (S…
brennanb2025 Aug 2, 2026
c443bc0
fix(mobile): correct OMP icon gradient stop (#11650)
brennanb2025 Aug 2, 2026
b07dce7
fix(mobile): improve secondary text contrast (#11651)
brennanb2025 Aug 2, 2026
2efc6e5
fix(mobile): stop support modules from registering as routes (#11652)
brennanb2025 Aug 2, 2026
3c329c4
release: v1.4.165-rc.0
github-actions[bot] Aug 2, 2026
7c71670
feat(voice): allow selecting a microphone for dictation (#12119)
zhigang1992 Aug 2, 2026
040734b
fix(sidebar): show collapse chevron on pinned section headers (#12147)
nwparker Aug 2, 2026
ccb5850
fix(cmd-j): center palette row icons on the first text line (#12144)
brennanb2025 Aug 3, 2026
1685b96
fix(workspace-cleanup): read reflog timestamps to avoid git maintenan…
AmethystLiang Aug 3, 2026
d426e35
fix(gitlab): count diff lines whose content begins with -- or ++ (#12…
YuriNachos Aug 3, 2026
8c5371e
fix(worktrees): respect Windows shell for setup runners (#6967)
rodboev Aug 3, 2026
95c431f
fix(orchestration): worker-start launches the configured agent CLI, n…
OrcaWin Aug 3, 2026
3658165
chore(audit): pin the dead-code audit to knip@5.88.1 (#12165)
brennanb2025 Aug 3, 2026
a000839
Add first prompt to agent session history rows (#12085)
AmethystLiang Aug 3, 2026
45a78e1
feat(editor): preserve PDF scroll position across tab switches (#12163)
AmethystLiang Aug 3, 2026
a20165a
fix(browser): import __Host- cookies host-only so Chromium keeps them…
brennanb2025 Aug 3, 2026
bcf7d1d
fix(codex): execute accepted account-switch restarts for unmounted pa…
brennanb2025 Aug 3, 2026
1e46121
fix(codex): make quota probes credential-safe (#12145)
brennanb2025 Aug 3, 2026
525ffc5
fix(worktree): stop the PTY gate from permanently wedging workspace r…
OrcaWin Aug 3, 2026
922268a
fix(native-chat): stop clipping assistant text blocks at the tool-pre…
brennanb2025 Aug 3, 2026
616d224
docs: add WeChat group 7 QR with overflow guidance
AmethystLiang Aug 3, 2026
6f28c11
docs: drop WeChat group 5/6 QRs; keep group 7 only
AmethystLiang Aug 3, 2026
4481b9b
Keep your New Linear and Jira creation drafts after an accidental dis…
brennanb2025 Aug 3, 2026
565ef63
feat(ssh): open the host add/edit form in a modal dialog (STA-3067) (…
AmethystLiang Aug 3, 2026
5887b36
fix(updater): recover Linux .deb/.rpm installs that fail escalation (…
AmethystLiang Aug 3, 2026
f3e087e
fix(updater): use channel display labels in mac-only error (#12175)
brennanb2025 Aug 3, 2026
c9a37f5
fix(ai-vault): label preview prompt honestly (#12178)
brennanb2025 Aug 3, 2026
8b311ae
fix(browser): preserve tab zoom across parent-drift webview repair (#…
brennanb2025 Aug 3, 2026
b4d9ae4
fix(mobile): deliver the agent launch command when a create settles o…
brennanb2025 Aug 3, 2026
153acf3
feat(crash-reports): add byte attribution to renderer memory highwate…
brennanb2025 Aug 3, 2026
aa03e24
fix(mobile): gate native chat approval card on a paused agent (STA-31…
brennanb2025 Aug 3, 2026
93a2ad8
fix(browser): bound retained webview guests across worktree switches …
brennanb2025 Aug 3, 2026
db53252
Route terminal links based on pane ownership, not global state (#12233)
AmethystLiang Aug 3, 2026
d48cac7
fix(onboarding): run skill setup in the configured Windows runtime (#…
OrcaWin Aug 3, 2026
18dbcf0
fix(tabs): restore Cmd/Ctrl+Shift+T tab positions (#12236)
nwparker Aug 3, 2026
3d68212
fix(mobile): surface worktree catalog failures instead of silent 0 wo…
brennanb2025 Aug 3, 2026
1dbf55e
Stop reporting supported Linux hosts as an unsupported remote platfor…
nwparker Aug 3, 2026
f3c824b
fix(terminal): expand environment variables in Windows PATH (#11987)
siddqamar Aug 3, 2026
9e42b5f
fix(terminal): clear stale Windows IME modifiers (#12259)
OrcaWin Aug 3, 2026
8af6876
fix(terminal): distinguish IME Process keys from Enter
kunsanglee Aug 3, 2026
ca9562c
fix(terminal): block IME-owned Process shortcuts
nwparker Aug 3, 2026
ad0a70a
fix(terminal): require press-time evidence before synthesizing an IME…
dogfooter8750 Aug 1, 2026
bacdf3a
fix(terminal): keep press evidence per Enter press, not per code
dogfooter8750 Aug 2, 2026
a565532
style(terminal): keep IME ownership rationale concise
OrcaWin Aug 3, 2026
173abf8
test(terminal): replay the native Windows IME Shift shape
dogfooter8750 Aug 3, 2026
8e9640c
fix(terminal): stop cancelled IME compositions replaying stale preedit
Him188 Aug 1, 2026
339045b
fix(runtime): coalesce concurrent host terminal focus (#11841)
nwparker Aug 3, 2026
6f7a30a
test(terminal): preserve Windows IME Shift commits (#12276)
OrcaWin Aug 3, 2026
f82d410
fix(terminal): flush Hangul syllables before the next composition (#1…
OrcaWin Aug 3, 2026
035d8c2
fix(terminal): preserve macOS Korean composition (#12280)
nwparker Aug 3, 2026
caf6add
test(terminal): cover leading Korean vowels (#12282)
nwparker Aug 3, 2026
40d5f36
fix(native-chat): adopt IME deletions at composition end (#12281)
OrcaWin Aug 3, 2026
e08eba6
test(terminal): cover live macOS Korean syllable flush (#12284)
AmethystLiang Aug 3, 2026
128e3e3
fix(packaging): prune non-target native binaries (#12174)
OrcaWin Aug 3, 2026
cd68a8b
fix: preserve live agent PTYs through graph hydration (#11789)
OrcaWin Aug 3, 2026
34291f0
fix(runtime): skip unchanged worktrees when publishing mobile session…
OrcaWin Aug 3, 2026
866bcda
fix(terminal): recover degraded daemon spawn routing (#12277)
brennanb2025 Aug 3, 2026
814b87c
fix(sidebar): route project adds to the intended host, not the global…
PannenetsF Aug 3, 2026
2c6a9d1
fix(browser): recover embedded guests after lifecycle loss (#11717)
OrcaWin Aug 3, 2026
056c2d9
fix(runtime): bind mobile WS listener to loopback until pairing (STA-…
brennanb2025 Aug 3, 2026
e25381c
fix(relay): tolerate cell clock skew in pairing invite expiry validat…
OrcaWin Aug 3, 2026
b04bd82
release: v1.4.168-rc.0
github-actions[bot] Aug 3, 2026
d3c34c7
fix(mobile): redial when the app resumes mid-dial (#12344)
Jinwoo-H Aug 3, 2026
a4944f5
fix(orchestration): retain update settlement authority (#12336)
Jinwoo-H Aug 3, 2026
e5174a4
fix(terminal): reattach panes across daemon protocol upgrade (#12351)
OrcaWin Aug 3, 2026
17df980
release: v1.4.168-rc.1
github-actions[bot] Aug 3, 2026
7de40ff
fix(terminal): stop keyboard effect re-registering on every pane rend…
brennanb2025 Aug 3, 2026
031115b
test(ssh): freeze FrameDecoder clock in framing unit tests (#12356)
AmethystLiang Aug 3, 2026
25213ec
test(terminal): harden daemon upgrade adoption (#12353)
OrcaWin Aug 3, 2026
ea68d97
Optimize worktree parent picker: conditional mount, virtualization, l…
AmethystLiang Aug 3, 2026
5941c6c
Improve send comments to ai (#12150)
AmethystLiang Aug 3, 2026
a7282fe
Fix Codex launch draft delivery after delayed setup (#12347)
brennanb2025 Aug 3, 2026
d7fe9d6
fix(ai-vault): support session scanning in SSH worktrees (#11004)
AmethystLiang Aug 3, 2026
13f033f
chore(daemon): disambiguate audit observations (#12343)
brennanb2025 Aug 3, 2026
98e8d1c
fix(terminal): reconcile status after escape interrupt (#12345)
brennanb2025 Aug 4, 2026
f4b2b78
feat(orchestration): coordinator-driven release of settled worker ter…
brennanb2025 Aug 4, 2026
0ea3c9c
fix(renderer): drive agent working spinner on the compositor (STA-332…
brennanb2025 Aug 4, 2026
9ec4907
fix(agent-status): restore hydrated nonterminal statuses as unconfirm…
brennanb2025 Aug 4, 2026
637c7e9
Add SSH config host picker to add-host dialog (#12334)
AmethystLiang Aug 4, 2026
0586bab
fix(mobile): bound terminal viewport resubscribe loop with backoff (S…
brennanb2025 Aug 4, 2026
c9c1683
fix(ci): seed the adhoc release repo so releases can be tagged (#12375)
nwparker Aug 4, 2026
8ab7d8a
fix(updater): base dev builds on published tags, not main's package.j…
nwparker Aug 4, 2026
ce8b778
perf(runtime): withhold unchanged mobile snapshots from the graph pay…
OrcaWin Aug 4, 2026
c4ae923
fix(ci): vet the adhoc build ref before running it with release secre…
brennanb2025 Aug 4, 2026
73e7df7
fix(browser): track guest recency across kill-switch off, release dow…
brennanb2025 Aug 4, 2026
e39cdb8
perf(agent-status): coalesce live status bursts into one render pass …
brennanb2025 Aug 4, 2026
9e5bd5f
fix(worktrees): fence SSH worktree deletion PTY teardown to the ownin…
brennanb2025 Aug 4, 2026
194e1a8
fix(persistence): make the renderer unload checkpoint durably flush b…
brennanb2025 Aug 4, 2026
64b81cd
perf(runtime): memoize mobile snapshots for mounted terminal worktree…
brennanb2025 Aug 4, 2026
a69ca6d
fix(ui): always show Onboarding and Restart Orca in Help (#12379)
AmethystLiang Aug 4, 2026
c052ca1
fix(gitlab): expire project-ref negatives instead of caching them for…
brennanb2025 Aug 4, 2026
0db12fe
fix(runtime): deliver subscription close when retiring a remote trans…
OrcaWin Aug 4, 2026
49dc113
Fix terminal corruption after restored snapshot replay (#12363)
brennanb2025 Aug 4, 2026
a7ed5a4
fix(mobile): render Mermaid diagrams in MobileMarkdown (#11185)
innocarpe Aug 4, 2026
026ed92
fix(mobile): keep main-buffer TUI footer above the iOS keyboard (#9178)
shaharmor Aug 4, 2026
79d3c84
fix(runtime): attribute destructive close requests (#12238)
bbingz Aug 4, 2026
50594c5
Stop the Windows Orca CLI from crashing when the environment carries …
nwparker Aug 4, 2026
9a97e73
test(e2e): pick the board marquee start point from live geometry (#12…
brennanb2025 Aug 4, 2026
a6b14eb
fix(terminal): reset stale mouse tracking on cold restore (#12101); s…
nwparker Aug 4, 2026
3d6d6dd
fix(orchestration): scope agent lineage to its owning run (#11203)
Jaeyoung22 Aug 4, 2026
9ba293c
fix(mobile): keep relay runtime recovery alive without direct connect…
OrcaWin Aug 4, 2026
5bd2f59
fix(runtime): open files from sibling workspaces (#11369)
Turtle-Hwan Aug 4, 2026
e43bd6c
fix(worktrees): preserve folder PTY owner scope (#12429)
brennanb2025 Aug 4, 2026
086a5d6
fix(browser): rerun guest retention after veto release (#12430)
brennanb2025 Aug 4, 2026
ba83a71
fix(terminal): apply the running-process close confirmation to every …
nwparker Aug 4, 2026
0927b9c
fix(gitlab): load pipeline job traces in the Checks side panel (#7732…
nwparker Aug 4, 2026
e59a319
fix(sidebar): keep each project's entry-point workspace visible under…
nwparker Aug 4, 2026
dc0cb18
feat(repo-icon): expand the project emoji picker (#7989) (#12058)
chucoding Aug 4, 2026
dbbeca0
Let a timed-out remote terminal pane reconnect when the host session …
nwparker Aug 4, 2026
ed4d697
fix(app): await durable checkpoints before restart actions (#12433)
brennanb2025 Aug 4, 2026
e8d4818
test(env): keep happy-dom MutationObserver callbacks alive across GC …
nwparker Aug 4, 2026
e8d3043
fix(mobile): stop unrenewed-grace rotation churn and gate cadence gap…
OrcaWin Aug 4, 2026
665b850
fix(relay): revive a dead relay broker without user interaction (#12432)
Jinwoo-H Aug 4, 2026
5a2b329
chore(mobile): bump to 0.0.37 (versionCode 10) (#12365)
OrcaWin Aug 4, 2026
0f052a5
fix(editor): stop Cmd/Ctrl+Shift+T reopening a phantom editor tab (#1…
OrcaWin Aug 4, 2026
bdafe84
fix(browser): keep the chrome inset when a page viewport shell is reb…
OrcaWin Aug 4, 2026
1ef8398
fix(codex): stop a surviving descendant wedging the Codex home proces…
OrcaWin Aug 4, 2026
20a2901
fix(worktree): tell the truth about live PTYs, and offer force for a …
OrcaWin Aug 4, 2026
dbb7804
fix(updater): re-prove the retained Linux package before a privileged…
OrcaWin Aug 4, 2026
141b1f4
fix(runtime): keep the listener on loopback for a "This computer only…
OrcaWin Aug 4, 2026
ed7849e
fix(worktrees): stop silently switching existing Windows setup script…
OrcaWin Aug 4, 2026
401f669
fix(codex): do not silently run the previous account when managed aut…
OrcaWin Aug 4, 2026
fb1259a
fix(mobile): keep cached workspace counts across a transient RPC fail…
OrcaWin Aug 4, 2026
e599d92
fix(editor): stop Close All / Close Others freezing the renderer on l…
OrcaWin Aug 4, 2026
d8e5944
Stop a duplicate headless orca serve from crash-looping and exhaustin…
nwparker Aug 4, 2026
ac7f9a4
fix(pty): require proven absence before retiring a stable pane owner …
OrcaWin Aug 4, 2026
29bfc1e
Fix Windows git/gh attribution wrappers rejecting a piped stdin argum…
nwparker Aug 4, 2026
9f638da
perf(terminal): gate mobile overlay ticks by pane pty affinity (#12419)
brennanb2025 Aug 4, 2026
c498d2d
perf(renderer): index detectedWorktreesByRepo so SSH panes and cards …
brennanb2025 Aug 4, 2026
f6878d6
Show Claude's AskUserQuestion card in desktop Chat when the agent run…
nwparker Aug 4, 2026
b86880a
Keep finished and interrupted agent sessions resumable after sleeping…
nwparker Aug 4, 2026
5f9a5b8
Show "Except default branch" filter only when "Hide sleeping" is on (…
nwparker Aug 4, 2026
96e31e7
Remove a paired computer's deleted projects from every connected devi…
nwparker Aug 4, 2026
8f29f58
Keep showing your workspaces when a project is too slow to answer ins…
nwparker Aug 4, 2026
00867f0
fix(ssh): handle owner displacement and graceful shutdown (#12367)
AmethystLiang Aug 4, 2026
e9cf106
fix(relay): make fenceAndCloseNow stop the liveness safety net (#12482)
Jinwoo-H Aug 4, 2026
e1071f5
Say why an update install failed instead of stalling for three minute…
nwparker Aug 4, 2026
2548b81
Keep the app responsive when security software slows process creation…
nwparker Aug 4, 2026
9058059
Update README downloads badge
github-actions[bot] Aug 4, 2026
7c4c021
docs: update Android APK link to v0.0.37 (#12515)
AmethystLiang Aug 4, 2026
02afd35
fix(sidebar): keep the toolbar labels in the selected UI language (#1…
5Hyeons Aug 4, 2026
17d88e0
fix(i18n): format the stats date with the selected UI language (#12105)
smwbev Aug 4, 2026
439a8c4
fix(plugins): let language packs translate plugin chrome (#12455)
smwbev Aug 4, 2026
4e8f136
fix(i18n): localize the integration card status pills (#12208)
smwbev Aug 4, 2026
6bf3442
fix(i18n): localize the Link Routing description in browser settings …
m-a-king Aug 4, 2026
eed7472
fix(i18n): localize automation contextual tour (#12270)
5Hyeons Aug 4, 2026
1cc84b9
fix(i18n): correct the ko and zh Orca Mobile "New" badge (#10664)
AmethystLiang Aug 4, 2026
5adc5d0
fix(i18n): pin the Orca Mobile "New" badge override and correct ja
nwparker Aug 4, 2026
1b1743c
fix(i18n): translate remaining zh.json strings (#12368)
qiuyongjin Aug 4, 2026
38490ee
fix(i18n): localize browser load-failure and certificate copy (#10672)
MumuTW Aug 4, 2026
d4f2ae1
fix(i18n): correct ja Push/Pull button translations (#12301)
Iris-Fla Aug 4, 2026
705e17a
fix(i18n): correct semantic errors in Korean UI copy (#11169)
kyu4583 Aug 4, 2026
a202d92
fix(localization): stop the repair policy rewriting translated generi…
AnddyAgudelo Aug 4, 2026
aa00110
fix(i18n): repair the stale SshTargetForm ko override
nwparker Aug 4, 2026
f9a5920
fix(i18n): stop repairCatalog crashing on un-bootstrapped locale keys…
Turtle-Hwan Aug 4, 2026
174011d
fix(i18n): format relative times with the configured UI language (#8662)
moseoh Aug 4, 2026
1aa5e7f
fix(i18n): localize the remaining pull-policy and PR-action reasons (…
AmethystLiang Aug 4, 2026
cc9eb9e
fix(i18n/ko): standard loanword transcription and terminology fixes (…
tykimseoul Aug 4, 2026
4734428
fix(i18n): stop the repair policy de-localizing CJK UI labels
nwparker Aug 4, 2026
53501df
fix(terminal): terminate HTTP links on CJK brackets and whitespace
innocarpe Jul 25, 2026
3c294e5
fix(terminal): property-based CJK URL terminators and hostname guard
innocarpe Jul 26, 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.
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,5 @@
/skill-stubs/*.md text eol=lf
/skills/*/SKILL.md text eol=lf
/src/cli/bundled-skill-guides.ts text eol=lf
# Bundled plugin trees are byte-hashed; CRLF checkout would break the pinned hash.
/resources/plugins/** text eol=lf
5 changes: 5 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Product source remains owned by its normal reviewers; localization inputs need focused review.
/src/renderer/src/i18n/locales/ @brennanb2025
/config/scripts/*localization*.mjs @brennanb2025
/config/scripts/*locale*.mjs @brennanb2025
/config/i18next.config.ts @brennanb2025
2 changes: 2 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ body:
value: |
Use this form for Orca bugs. Include enough detail for someone else to reproduce the issue.

Please write your issue in English.

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

Please write your issue in English.

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

- type: textarea
id: details
attributes:
Expand Down
80 changes: 80 additions & 0 deletions .github/actions/install-node-dependencies/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
name: Install Node dependencies
description: Installs the Node toolchain and repository dependencies for Linux CI jobs.

inputs:
native-runtime:
description: Native runtime to prepare after the script-free install (none, node, or electron).
required: false
default: none
node-version:
description: Node.js version override; defaults to the version declared in package.json.
required: false
default: ''

runs:
using: composite
steps:
# setup-node needs pnpm on PATH to locate and restore its store.
- name: Setup pnpm
uses: pnpm/action-setup@v6
with:
run_install: false

- name: Setup Node.js
if: inputs.node-version == ''
uses: actions/setup-node@v6
with:
node-version-file: package.json
cache: pnpm

- name: Setup requested Node.js
if: inputs.node-version != ''
uses: actions/setup-node@v6
with:
node-version: ${{ inputs.node-version }}
cache: pnpm

- name: Validate native runtime
shell: bash
env:
NATIVE_RUNTIME: ${{ inputs.native-runtime }}
run: |
case "$NATIVE_RUNTIME" in
none|node|electron) ;;
*)
echo "::error::native-runtime must be none, node, or electron"
exit 2
;;
esac

# pnpm's bundled gyp_main.py is not executable on fresh Linux runners.
- name: Use external node-gyp
if: inputs.native-runtime != 'none'
shell: bash
run: |
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 dependency install
shell: bash
run: |
if [ -e node_modules ]; then
ls -ld node_modules
rm -rf node_modules
fi

- name: Install dependencies
shell: bash
run: |
pnpm install \
--no-frozen-lockfile \
--prefer-frozen-lockfile=false \
--ignore-scripts
git diff --exit-code package.json pnpm-lock.yaml

- name: Prepare 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"
197 changes: 197 additions & 0 deletions .github/actions/install-signpath-module/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,197 @@
name: Install SignPath PowerShell module
description: >-
Installs the SignPath PowerShell module (Get-SignedArtifact) from PSGallery,
falling back to a pinned, hash-verified nupkg from the gallery CDN when the
gallery's package API is unavailable.

inputs:
fallback-version:
description: Module version fetched directly from the CDN when the gallery API is unreachable.
required: false
default: 4.4.6
fallback-sha256:
description: >-
SHA-256 of the pinned fallback nupkg. The CDN path bypasses the gallery's own
package validation, so this hash is the only integrity check on that route.
required: false
default: 2487357a9a02c7d985baaf9ebd9158b4ce877316a2d9de3a6e9af1b263c0a32d

runs:
using: composite
steps:
- name: Install SignPath PowerShell module
shell: pwsh
env:
SIGNPATH_FALLBACK_VERSION: ${{ inputs.fallback-version }}
SIGNPATH_FALLBACK_SHA256: ${{ inputs.fallback-sha256 }}
run: |
$ErrorActionPreference = 'Stop'
# Why: force TLS 1.2 so gallery downloads work on older hosted images.
[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12

# Why: on some hosted Windows images `Register-PSRepository -Default`
# fails inside the legacy nuget.exe provider with "Missing option value
# for: '-source'", so PSGallery is never registered and the install
# below dies with "No repository with the name 'PSGallery'". PSResourceGet
# (bundled with PowerShell 7.4+) has PSGallery registered by default and
# avoids that code path, so prefer it and fall back to PowerShellGet only
# when it is absent.
$useResourceGet = $null -ne (Get-Command -Name Install-PSResource -ErrorAction SilentlyContinue)

try {
if ($useResourceGet) {
if ($null -eq (Get-PSResourceRepository -Name PSGallery -ErrorAction SilentlyContinue)) {
Register-PSResourceRepository -PSGallery -Trusted
} else {
Set-PSResourceRepository -Name PSGallery -Trusted
}
} else {
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force | Out-Null
if ($null -eq (Get-PSRepository -Name PSGallery -ErrorAction SilentlyContinue)) {
Register-PSRepository -Default -InstallationPolicy Trusted
}
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
}
} catch {
# Why: repository registration also talks to the gallery, so a gallery
# outage can fail here before a single install is attempted. The CDN
# fallback below does not need a registered repository, so keep going.
Write-Warning "PSGallery repository registration failed: $_"
}

$trimChars = [char[]]@([System.IO.Path]::DirectorySeparatorChar, [System.IO.Path]::AltDirectorySeparatorChar)
$documentsRoot = [System.IO.Path]::GetFullPath([Environment]::GetFolderPath('MyDocuments')).TrimEnd($trimChars)
$currentUserModuleRoot = $env:PSModulePath -split [System.IO.Path]::PathSeparator |
Where-Object {
if ([string]::IsNullOrWhiteSpace($_)) {
$false
} else {
$candidate = [System.IO.Path]::GetFullPath($_).TrimEnd($trimChars)
$candidate.StartsWith($documentsRoot, [System.StringComparison]::OrdinalIgnoreCase)
}
} |
Select-Object -First 1

if ([string]::IsNullOrWhiteSpace($currentUserModuleRoot)) {
throw 'Unable to resolve the current-user PowerShell module root from PSModulePath.'
}

$signPathModulePath = Join-Path -Path $currentUserModuleRoot -ChildPath 'SignPath'

function Test-SignPathModule {
Import-Module SignPath -ErrorAction Stop
Get-Command -Name Get-SignedArtifact -Module SignPath -ErrorAction Stop
}

function Remove-SignPathModuleDirectory {
if (Test-Path -LiteralPath $signPathModulePath) {
Write-Warning "Removing current-user SignPath module directory: $signPathModulePath"
Remove-Item -LiteralPath $signPathModulePath -Recurse -Force
}
}

$installed = $false

for ($attempt = 1; $attempt -le 3; $attempt++) {
if ($attempt -eq 2) {
Start-Sleep -Seconds 15
} elseif ($attempt -eq 3) {
Start-Sleep -Seconds 30
}

try {
if ($useResourceGet) {
Install-PSResource -Name SignPath -Version '[4.0.0,5.0.0)' -Repository PSGallery -Scope CurrentUser -TrustRepository -Reinstall -ErrorAction Stop
} else {
Install-Module -Name SignPath -Repository PSGallery -MinimumVersion 4.0.0 -MaximumVersion 4.999.999 -Scope CurrentUser -Force -AllowClobber -ErrorAction Stop
}
Test-SignPathModule
$installed = $true
break
} catch {
Write-Warning "SignPath PowerShell module preflight attempt $attempt failed: $_"
Remove-SignPathModuleDirectory
}
}

# Why: the gallery's package API (OData search + repository metadata) sits
# behind Azure Front Door and has returned 403/502/504 for every install
# attempt during gallery incidents, which hard-failed the whole Windows
# release job. The CDN that serves the nupkg itself is a separate origin
# and stays up through those incidents, so fall back to a pinned version
# fetched straight from it. The hash pin is mandatory: this route skips the
# gallery's package validation, so an unexpected payload must fail loudly.
if (-not $installed) {
$version = $env:SIGNPATH_FALLBACK_VERSION
$expectedHash = $env:SIGNPATH_FALLBACK_SHA256
Write-Warning "PSGallery install failed; falling back to pinned SignPath $version from the gallery CDN."

$nupkg = Join-Path -Path $env:RUNNER_TEMP -ChildPath "signpath-$version.zip"
if (Test-Path -LiteralPath $nupkg) {
Remove-Item -LiteralPath $nupkg -Force
}

# Why two URLs: the /api/v2/package route 302s to the CDN and can serve
# while the OData search endpoint is failing; the CDN URL is the same
# redirect target reached directly when the api host is down entirely.
$sources = @(
"https://www.powershellgallery.com/api/v2/package/SignPath/$version",
"https://cdn.powershellgallery.com/packages/signpath.$version.nupkg"
)

$downloaded = $false
foreach ($source in $sources) {
for ($attempt = 1; $attempt -le 3; $attempt++) {
if ($attempt -gt 1) {
Start-Sleep -Seconds (10 * $attempt)
}

try {
Invoke-WebRequest -Uri $source -OutFile $nupkg -MaximumRedirection 5 -UseBasicParsing -ErrorAction Stop
$actualHash = (Get-FileHash -LiteralPath $nupkg -Algorithm SHA256).Hash
if ($actualHash -ne $expectedHash.ToUpperInvariant()) {
throw "SHA-256 mismatch for $source (expected $expectedHash, got $actualHash)."
}
$downloaded = $true
Write-Host "Downloaded and verified SignPath $version from $source"
break
} catch {
Write-Warning "SignPath CDN download attempt $attempt from $source failed: $_"
if (Test-Path -LiteralPath $nupkg) {
Remove-Item -LiteralPath $nupkg -Force
}
}
}

if ($downloaded) {
break
}
}

if (-not $downloaded) {
throw "Unable to install the SignPath PowerShell module: PSGallery installs failed and the pinned $version nupkg could not be downloaded from any source."
}

Remove-SignPathModuleDirectory
# Why a version-named subdirectory: PowerShell only treats a nested folder
# as a side-by-side module version when the name matches the manifest's
# ModuleVersion, which is what makes `Import-Module SignPath` resolve it.
$versionRoot = Join-Path -Path $signPathModulePath -ChildPath $version
New-Item -ItemType Directory -Path $versionRoot -Force | Out-Null
Expand-Archive -LiteralPath $nupkg -DestinationPath $versionRoot -Force

# Why: strip nupkg packaging entries so only the module files remain.
foreach ($entry in @('_rels', 'package', '[Content_Types].xml', 'SignPath.nuspec')) {
$path = Join-Path -Path $versionRoot -ChildPath $entry
if (Test-Path -LiteralPath $path) {
Remove-Item -LiteralPath $path -Recurse -Force
}
}

$manifest = Join-Path -Path $versionRoot -ChildPath 'SignPath.psd1'
if (-not (Test-Path -LiteralPath $manifest)) {
throw "Pinned SignPath nupkg did not contain SignPath.psd1 at $versionRoot."
}

Test-SignPathModule
}
37 changes: 37 additions & 0 deletions .github/scripts/check-root-directory-entries.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#!/usr/bin/env bash
set -euo pipefail

if [[ $# -ne 2 ]]; then
echo "Usage: $0 <base-sha> <head-sha>" >&2
exit 2
fi

base_sha=$1
head_sha=$2
git rev-parse --verify "${base_sha}^{tree}" >/dev/null
git rev-parse --verify "${head_sha}^{tree}" >/dev/null

declare -A base_entries=()
while IFS= read -r -d '' entry; do
base_entries["$entry"]=1
done < <(git ls-tree -z --name-only "$base_sha")

blocked_entries=()
while IFS= read -r -d '' entry; do
if [[ -z "${base_entries[$entry]+present}" ]]; then
blocked_entries+=("$entry")
fi
done < <(git ls-tree -z --name-only "$head_sha")

if (( ${#blocked_entries[@]} == 0 )); then
echo "Root directory guard passed: no new root-level files or folders."
exit 0
fi

echo "::error title=Root-level additions blocked::New root-level files or folders bloat the GitHub landing page."
echo "Root directory guard failed."
echo "New root-level files or folders are not allowed because they bloat the GitHub landing page."
echo "Move each new entry under an existing top-level directory."
printf 'Blocked entries:\n'
printf ' %s\n' "${blocked_entries[@]}"
exit 1
Loading