Orca를 사용해주시고 계속 지원해주셔서 감사합니다! ❤️
이 패치는 9월 30일 일일 빌드와 main에서 선택된 수정사항으로 빌드되었습니다. 그 이후에 main에 적용된 Pull Request는 이 빌드에 포함되지 않습니다.
간단한 요약
Codex 터미널: Codex 탭이 다른 Codex 탭과 동일한 백그라운드 서버를 공유하게 되면, 이제 해당 탭의 맨 위에 공지가 나타납니다. 해당 서버에서 한 탭을 닫으면 다른 탭이 종료될 수 있으며 에이전트 상태가 잘못될 수 있습니다. 공지는 수정 옵션을 제공하여 공유를 끄고 실행하는 정확한 명령어를 표시합니다. 업데이트 전에 열린 터미널에서는 대신 새 터미널을 열도록 제안합니다. 평문 fish 탭에서 codex를 입력하면 이제 zsh와 bash에서와 마찬가지로 Codex를 자신의 서버에서 실행합니다. 터미널을 열 때 더 이상 Orca의 상태 훅을 ~/.codex에서 제거하지 않습니다. Orca는 더 이상 폴더의 신뢰 항목을 Codex의 config.toml에 두 번째로 복사하지 않습니다. 이는 모든 codex 명령이 작동하지 않도록 했으며, 이미 작성된 복사본을 정리합니다. 백그라운드 Codex 사용 현황 확인은 더 이상 Codex의 업데이트 프롬프트에서 "지금 업데이트"를 클릭하여 Codex를 손상시키지 않습니다. Codex는 또한 베어 저장소의 작업 트리에서 신뢰 프롬프트 없이 시작됩니다. Codex 창은 더 이상 입력 중에 약 1초 동안 응답하지 않습니다.
에이전트를 위한 폴더 신뢰: Orca가 폴더에서 Claude Code, Codex, Cursor, Copilot, Qoder 또는 Antigravity를 시작할 때, 이제 에이전트의 "이 폴더를 신뢰하시겠습니까?"라는 질문에 미리 답합니다. Orchestration 워커, 자동화 및 휴대폰에서 시작된 에이전트는 더 이상 해당 프롬프트에서 대기하지 않습니다. 설정 → 에이전트 → "Orca가 에이전트를 시작할 때 폴더 신뢰"에서 이를 끌 수 있습니다.
에이전트 상태: 여러 OpenCode 2 창이 열려 있으면, 각 창은 다른 창의 상태가 아닌 자신의 작업 중, 완료 상태를 표시합니다. Windows에서 Claude Code 상태는 Claude가 Windows PowerShell 5.1에서 훅을 실행할 때 다시 작동합니다. Codex 행은 Codex가 탭 이름을 바꾼 후에도 Codex가 실행되는 동안 사이드바에 유지됩니다. 새로 시작된 Hermes는 바쁨이 아닌 준비 상태로 표시됩니다.
네이티브 채팅(실험 버전): 에이전트가 작업 중일 때 전송하는 메시지는 이제 데스크톱과 휴대폰의 메시지 상자 위에 카드로 대기합니다. 조종하여 실행 중인 턴으로 이동하거나, 수정하거나, 삭제할 수 있습니다. 그 외에는 턴이 끝날 때 전송됩니다. 하위 에이전트의 작업이 대화에 섞이지 않고 자신의 섹션에 나타납니다. /compact는 자신의 행을 가지며, 완료되지 않은 /clear는 더 이상 채팅을 잠그지 않습니다. 중지가 더 빨리 응답하며 더 이상 거짓 "취소가 확인되지 않음"을 표시하지 않습니다. 원격 Orca 서버에 연결되어 있을 때 텍스트 붙여넣기가 작동합니다.
Orchestration: 워커의 "완료" 보고서는 더 이상 대화가 압축된 후 거부되지 않습니다. Orca에 일시적으로 연결할 수 없으면, 보고서는 약 2분 동안 재시도되지 않으므로 손실됩니다. worker-abandon은 이제 매번 행(stuck) 워커를 정산합니다.
파일 및 편집기: 새 제목 없는 노트를 저장한 후 탭을 닫으면 Orca가 삭제했습니다. 저장된 노트는 이제 유지됩니다. 리치 Markdown 편집기를 클릭해도 더 이상 파일의 맨 위로 이동하지 않습니다. 열린 파일이 시스템의 밝은 모드와 어두운 모드로 전환됩니다. 스파스 체크아웃이 파일 탐색기를 작업하는 폴더에서 엽니다.
터미널: download (1).png와 같이 괄호나 공백이 있는 파일 이름의 이미지는 이제 드래그할 때 에이전트에 첨부됩니다. 드래그된 파일을 건너뛰면, 공지에서 그 이유를 설명합니다. 많은 탭이 열려 있으면, 현재 탭이 탭 막대의 가장자리에서 표시됩니다. Codex 및 Claude Code와 같은 프로그램은 이제 늦게 시작되거나 백그라운드에서 시작될 때 올바른 색상을 가집니다.
Linux 및 Windows: Hyprland, sway, river 및 niri에서 Orca는 이제 키링이 실행 중이고 잠금 해제되어 있을 때 저장된 API 키와 토큰을 암호화합니다. 자격 증명이 암호화 없이 저장되면, 설정에서 이제 옆에 경고를 표시합니다. Windows에서 orca 명령은 이제 네이티브 프로그램입니다. 안티바이러스가 이전 것을 계속 삭제했기 때문입니다. Visual C++ 재배포 가능 파일 없이 실행됩니다. 설치 프로그램은 더 이상 앱 아카이브 내에 Orca의 릴레이 파일의 중복 복사본을 포함하지 않습니다.
이미 열려 있는 터미널: 새 색상 응답 및 fish 탭의 codex 설정은 업데이트 후에 열린 터미널에 적용됩니다. 이미 열려 있는 터미널은 새 터미널을 열 때까지 이전 동작을 유지합니다.
알려진 문제
ARM의 Windows: ARM64 패키지는 x64 orca.exe 명령 줄 도구를 제공합니다. ARM의 Windows 11은 에뮬레이션에서 실행합니다. ARM의 Windows 10은 실행할 수 없으므로 orca 명령이 작동하지 않습니다(#24094).
OpenCode 2: 업데이트 전에 이미 실행 중이던 OpenCode 2 창은 OpenCode에서 다시 시작할 때까지 상태를 표시하지 않을 수 있습니다. 이 업데이트 후 Orca를 다운그레이드하면, 중복된 OpenCode 상태 플러그인이 남습니다. opencode run이 종료된 후, 그 창은 "완료"를 계속 표시할 수 있습니다. 수정사항이 #24472에서 대기 중입니다.
Codex: 업그레이드 후 Codex 시작은 Codex가 Orca의 새 상태 훅을 승인할 때까지 Orca의 관리형 Codex 홈을 사용합니다. ~/.codex를 사용하는 재개된 창은 최대 30초 동안 일시 중지될 수 있습니다(#23552).
Claude 폴더 신뢰: 폴더 사전 신뢰는 기본적으로 켜집니다(설정 → 에이전트 → "Orca가 에이전트를 시작할 때 폴더 신뢰"). Alpine WSL에서 Orca는 필요한 파일 권한을 복사할 수 없으므로 Claude가 대신 자신의 신뢰 프롬프트를 표시합니다(#23744).
제품 경험
Codex & orchestration
Codex 탭이 서버 공유 시 경고하고, Codex 설정 및 훅이 더 이상 손상되지 않으며, orchestration 워커 보고서가 더 안정적으로 전달됩니다.
- feat(terminal): warn when a typed Codex joins Codex's shared server (STA-9051) by @Jinwoo-H in #24217
- feat(terminal): point an old terminal's Codex shared-server banner at a new terminal (STA-9051) by @Jinwoo-H in #24501
- fix(terminal): give plain fish tabs Orca's codex function without changing fish's startup by @Jinwoo-H in #24284
- fix(codex): opening a terminal no longer strips Codex hooks from the real ~/.codex by @brennanb2025 in #23552
- fix(codex): recognise Codex's quoted spellings in config.toml, and repair Orca's duplicates (#22592) by @brennanb2025 in #23958
- fix(codex): trust the worktree Codex starts in, not a guessed repo root by @Jinwoo-H in #23937
- fix(rate-limits): stop driving a hidden Codex TUI to read usage by @brennanb2025 in #23806
- fix(codex): start short-lived Codex app-servers on Windows without cmd.exe by @brennanb2025 in #23830
- fix(orchestration): accept worker reports without the dispatch capability by @Jinwoo-H in #23982
- fix(orchestration): stop minting and printing the dispatch capability by @Jinwoo-H in #23994
- fix(orchestration): worker-abandon settles a stuck worker and records who did it by @Jinwoo-H in #23983
- fix(orchestration): retry worker_done while the Orca runtime is briefly unreachable by @Jinwoo-H in #23984
Agents & agent integrations
Orca가 에이전트를 시작할 때 폴더를 사전 신뢰하고, OpenCode 2, Windows의 Claude, Hermes가 상태를 올바르게 보고하며, 온보딩이 기술 설치에 집중합니다.
- feat(agents): pre-trust the folder wherever Orca starts an agent by @brennanb2025 in #23744
- fix(claude): stop Orca making a WSL user's ~/.claude.json world-readable by @brennanb2025 in #23973
- fix(opencode): report OpenCode 2 status from each pane's own TUI by @brennanb2025 in #23722
- fix(claude): run Windows hooks without shell operators by @brennanb2025 in #23944
- fix(runtime): treat Hermes session start as idle, not a running turn by @nwparker in #24064
- fix(onboarding): build the agent step around skills, not CLI registration by @Jinwoo-H in #22720
Native chat
실험 버전 구조화된 채팅은 턴 중 메시지를 편집 가능한 카드로 대기시키고, 하위 에이전트에 자신의 섹션을 제공하며, Stop, /compact, /clear, 붙여넣기를 더 안정적으로 처리합니다.
- feat(native-chat): hold mid-turn messages in a host-owned queue by @brennanb2025 in #23726
- feat(native-chat): mid-turn messages wait as editable cards above the composer by @brennanb2025 in #23731
- refactor(native-chat): a subagent's rows live in its own section, not in the parent's conversation by @brennanb2025 in #23752
- fix(claude): a restarted provider continues the subagent roster earlier runs journaled by @brennanb2025 in #23758
- fix(native-chat): turn facts come from the turn record, and /compact is a message the chat sends by @brennanb2025 in #23059
- fix(native-chat): an unfinished /clear or refused Codex rewind no longer locks the chat by @brennanb2025 in #23524
- fix(native-chat): a failed turn ends on its error instead of folding it by @brennanb2025 in #23679
- fix(codex): a Codex Stop is the interrupt alone, so it no longer says "Cancellation was not confirmed" by @brennanb2025 in #23850
- fix(codex): say a full Stop wait can overrun quit's eviction budget, and unref its timer by @brennanb2025 in #23859
- fix(claude): a Stop naming the running turn acts at once, and a Stop in the gap is no longer lost by @brennanb2025 in #23861
- fix(claude): a queued message Claude withdrew is settled from Claude's own cancelled event by @brennanb2025 in #23862
- fix(codex): log a late reply to a timed-out request instead of showing it in the chat by @brennanb2025 in #23893
- Fix Chat UI paste intake and pane routing by @brennanb2025 in #23784
- fix(chat): decode Claude pastes and report terminal delivery uncertainty by @brennanb2025 in #23788
- feat(native-chat): resuming interrupted chats runs in the status bar by @brennanb2025 in #23778
- feat(native-chat): one structured-chat journal database per host, owned by one process by @brennanb2025 in #23613
Terminal
Codex 창이 입력 중에 더 이상 응답하지 않고, 프로그램이 올바른 색상을 얻으며, 드래그된 파일이 첨부되거나 건너뛴 이유를 설명합니다.
- fix(terminal): release xterm's DEC 2026 render hold instead of waiting out its 1s timeout by @nwparker in #23920
- fix(terminal): the terminal's owner answers colour queries for the terminal's whole life by @brennanb2025 in #23925
- fix(terminal): attach dropped images whose filenames need shell quoting by @mmarabel in #23707
- Show skip reasons in terminal drop upload reports by @AmethystLiang in #23951
- fix(terminal): removing a workspace prunes that workspace's close records by @brennanb2025 in #23683
Mobile app & paired clients
휴대폰이 턴 중 메시지 카드를 받고, 휴대폰 스와이프가 더 이상 이스케이프 텍스트를 입력하지 않으며, 휴대폰에서 시작된 에이전트가 채팅 또는 터미널 선택을 따르고, 알림 서비스가 더 많은 휴대폰 알림을 전달합니다.
- feat(mobile): mid-turn messages wait as cards above the phone composer by @brennanb2025 in #23736
- fix(terminal): keep the mouse report format in desktop pane snapshots so phone swipes never type escape text by @brennanb2025 in #23943
- fix(mobile): start + menu, quick command and diff-note agents through agent.launch by @brennanb2025 in #22954
- fix(mobile): stop a closing phone stream from ending the terminal or chat feed that replaced it by @brennanb2025 in #22939
- fix(mobile): the update-mobile wall opens the exact release by @Jinwoo-H in #23789
- fix(mobile): count opening a cached page generation as use; cache six hosts by @Jinwoo-H in #23780
- fix(push): give the push gateway six database connections per instance by @Jinwoo-H in #24026
- fix(push): run twelve delivery drains instead of four by @Jinwoo-H in #24038
- fix(push): size the claim-attempt budget from the drain count by @Jinwoo-H in #24040
Browser
휴대폰 크기 사전 설정이 있는 브라우저 탭은 항상 실제로 적용된 크기의 ID를 보고합니다.
- fix(browser): a tab's phone identity follows the viewport actually applied by @brennanb2025 in #23812
Tabs & sidebar
현재 탭이 스크롤하는 탭 막대에서 표시 유지되고, 실행 중인 Codex가 사이드바 행을 유지합니다.
- fix(tab-bar): keep the active tab visible when the tab strip scrolls by @AmethystLiang in #24010
- fix(sidebar): an agent's row stays while it runs, whatever its tab title by @brennanb2025 in #23948
Editor & files
저장된 제목 없는 노트가 유지되고, Markdown 클릭이 더 이상 맨 위로 이동하지 않으며, 열린 파일이 밝은 모드와 어두운 모드를 따르고, 스파스 체크아웃이 유용한 폴더에서 엽니다.
Saved credentials
더 많은 Linux 데스크톱에서 저장된 API 키와 토큰이 암호화되며, 설정은 암호화 없이 저장된 자격 증명에 대해 경고합니다.
- fix(secrets): seal credentials on Linux desktops Chromium cannot detect by @nwparker in #24035
- fix(secrets): stop telling Linux users to install a keyring they already run by @nwparker in #24013
- feat(secrets): warn in Settings when a credential is stored unencrypted by @nwparker in #24048
Windows & packaging
Windows orca 명령은 이제 안티바이러스가 계속 플래그 지정한 맬웨어를 더 이상 닮지 않는 네이티브 프로그램이며 추가 Microsoft 런타임 없이 실행됩니다. 앱은 또한 릴레이 파일의 중복 복사본 없이 제공됩니다.
- fix(windows): replace the managed CLI launcher with a native one by @nwparker in #24094
- fix(windows): link the CLI launcher's C runtime statically so orca.exe runs without the VC++ Redistributable by @Jinwoo-H in #24484
- fix(packaging): stop shipping the relay bundles inside app.asar by @nwparker in #24027
Reliability & performance
작업 트리를 추가하거나 제거할 때 해당 프로젝트만 재검색하고, 더 적은 git 호출이 앱을 차단합니다.
- perf(git): relist only the repo whose worktrees changed, and stop blocking main on sync git by @nwparker in #23998
Tests, CI & maintenance
릴리스 빌드가 다시 원격 측정 검사를 통과하고, WeChat 커뮤니티 링크가 현재 그룹을 가리키며, 실패할 수 없는 많은 테스트가 제거되었습니다.
- fix(release): accept the build identity as a later declarator in the minified telemetry check by @Jinwoo-H in #24219
- refactor(shared): bring constants.ts back under the max-lines limit by @brennanb2025 in #23923
- docs(wechat): point community QR code at group 11 by @AmethystLiang in #24050
- fix(native-chat): main's draft-queue tests follow #23524's /clear (fixes main) by @brennanb2025 in #23940
- test(e2e): stop main's static analysis failing on the tab strip test by @brennanb2025 in #24052
- test(mobile): record RPC goldens without a pinned commit, and check recorded requests against the desktop's params rules by @brennanb2025 in #23732
- test(claude): run the real Claude CLI tests only when opted in by @brennanb2025 in #23702
- test: unit tests can no longer write a developer's real agent or Orca settings by @brennanb2025 in #23979
- test: open, seed and read the agent-session record store through one test harness by @brennanb2025 in #23986
- test(e2e): let the completed-worker fake Codex answer the --help probe by @Jinwoo-H in #24033
- Set iceCandidatePoolSize to 0 in WebRTC egress probe by @AmethystLiang in #23991
- test: stop testing private internals through exports no caller needs by @nwparker in #23829
- test: drop private-internal and boundary-census tests with behavioral owners by @nwparker in #23941
- test: retire private-predicate duplicates in the renderer by @nwparker in #23945
- test: retire the last private-predicate duplicates in the leaked-internals sweep by @nwparker in #23949
- test: stop restating internal tuning constants, keep the ones that are contracts by @nwparker in #23950
- test: remove mock echoes and duplicate contracts that only reading finds by @nwparker in #23953
- test: retire browser and cookie-import cases their siblings already own by @nwparker in #23957
- test: retire renderer pane and completion-cadence cases siblings already own by @nwparker in #23961
- test: retire cases whose predicates never read the varied input by @nwparker in #23965
- test: retire native-chat cases their fixtures or predicates neutralize by @nwparker in #23968
- test: delete a suite that tested only itself, and trim browser-pane duplicates by @nwparker in #23971
- test: delete the source-grep tests an earlier detector's regex missed by @nwparker in #23976
- test: retire hook and installer cases whose guards or arithmetic cannot fail by @nwparker in #23981
- test: retire ai-vault cases whose inputs the scanner never reads by @nwparker in #23992
- test: retire codex cases whose setup is inert or whose name outruns its input by @nwparker in #23996
- test: retire cli cases that re-run a contract the sibling already owns by @nwparker in #24000
- test: retire relay, preload and shared cases that re-prove an owned contract by @nwparker in #24007
- test: retire src/main cases that replay a contract their owner already proves by @nwparker in #24025
- test: retire src/main/runtime cases that re-prove an owned contract by @nwparker in #24043
- test: retire renderer cases whose input cannot reach the behavior they name by @nwparker in #24065
- test: retire mobile, cloud, config and e2e cases their input cannot reach by @nwparker in #24077
- test: retire long-tail cases whose input cannot reach the behavior they name by @nwparker in #24101
- test: retire duplicate cases that replay an owner across a re-export or provider shim by @nwparker in #24114
- test: retire backlog cases that assert a shim, a literal, or an unread branch by @nwparker in #24120
- test: close the disclosed reading gap in agent-hooks, claude and store slices by @nwparker in #24126
- test: retire long-tail cases whose assertion is decided by the test itself by @nwparker in #24132
- test: retire cases whose named dimension the production signature cannot express by @nwparker in #24139
- test: retire cases whose fixture decides the outcome it asserts by @nwparker in #24144
- test: retire cases subsumed by an honestly-named neighbour by @nwparker in #24150
New Contributors
Full Changelog: v1.4.218...v1.4.219