prepareCompaction()가 compaction.prepare 루프 단계로 실행되므로, 긴 브랜치에서 콜드 토큰 순회로 인해 발생하는 ui.loop-blocked 정지가 "unknown" 대신 컴팩션을 원인으로 표시합니다 (#15027, #18867 by @wolfiesch)gemini-decision-1)용 google-decisions 판단 API를 추가했습니다. 텍스트와 이미지 입력을 지원합니다 (#19060 by @kevcube)oauth.accessById()와 oauth.accessAll()이 성공 시 반환하는 OAuthAccessResolution 결과에 apiKey를 추가했습니다. 이는 해당 계정의 일반 요청에 사용되는 키로, 구조화된 자격 증명을 쓰는 프로바이더에서는 accessToken과 다릅니다 (#19030 by @Xytronix)ToolCallLoopGuard에 선택적 exemptionAlias를 추가하여, 전송 호출이 exemptTools에서 실제 디스패치된 도구 이름과 매칭될 수 있도록 했습니다 (#18860)liquid-systemone 판단 API를 추가했습니다. 전송 전에 Liquid의 10,000개 32×32 패치 요청 한도를 넘는 이미지 세트를 거부합니다 (#18076, #18100 by @SuperUserA)nace-systemone 판단 API를 추가했습니다. Drex의 최상위 images 데이터 URL로 이미지를 전송하며, 판단 텍스트에 포함된 Drex가 거부하는 base64 이미지, 오디오, 비디오, PDF 데이터 URL은 설명으로 대체합니다 (#18950 by @alphastorm)serve --clients)이 요청의 출처, 비용 부담 주체, 게이트웨이의 프로바이더 접근 경로를 더 이상 설정할 수 없습니다. 채팅 라우트는 요청 헤더, userProfileId, initiatorOverride, metadata, serviceTier, cacheRetention 및 기타 게이트웨이 전용 옵션을 제거하며, 게이트웨이 토큰은 이를 그대로 유지합니다 (#19067 by @alphastorm)/v1/pi/stream이 다른 채팅 라우트는 받는 taskBudget, include, anthropicPrefixMismatchBehavior를 누락하던 문제를 수정했습니다 (#19067 by @alphastorm)mistral-medium-3, mistral-small-2503, codestral-2) 요청을 수정했습니다 (#19010, #19022 by @yuzu-octopus)xhigh 사고 수준을 전송하도록 추가했습니다.~/.aws가 디렉터리가 아닌 파일일 때 ENOTDIR: not a directory, stat '~/.aws/credentials' 오류로 omp가 시작되지 않던 문제를 수정했습니다 (#19083 by @iamshatter)google/gemini-decision-1, GEMINI_API_KEY)을 추가했습니다. 사용하려면 judge 역할에 할당하세요 (#19060 by @kevcube)drex-max-v1.1, drex-max-finance, drex-v2.0 판단 모델과 /login nace(NACE_API_KEY)를 포함하여 Nace(nace)를 추가했습니다 (#18950 by @alphastorm)gemini-4-hydrogen)을 추가했습니다. 네이티브 Google 전송 방식에서 low, medium, high, xhigh 사고 수준을 지원합니다.alibaba-token-plan/qwen4-max-preview(별칭 qwen4.0-max-preview 포함)에서 컨텍스트 및 출력 한도, 이미지 입력, 사고 수준이 표시되지 않던 문제를 수정했습니다 (#18986).mistral-medium-3, mistral-small-2503, codestral-2)이 첫 번째 자사 Gemini 엔드포인트로 잘못 라우팅되던 문제를 수정했습니다. 이제 ADC 인증과 OpenAI 형식의 본문으로 publishers/mistralai raw-predict 엔드포인트를 사용합니다 (#19010, #19022 by @yuzu-octopus)./login liquid(LIQUID_API_KEY)와 d1.1, d1-ultra 판단 모델을 포함하여 Liquid AI(liquid)를 추가했습니다 (#18076, #18100 by @SuperUserA)secrets.yml의 정규식 규칙이 이제 선형 시간으로 네이티브 실행되는 Rust regex 패턴입니다. 룩어라운드와 역참조는 더 이상 지원되지 않으며, (?P<secret>…) 그룹이 가릴 부분을 표시합니다(주변 텍스트는 컨텍스트로 유지됨). \d, \w, \s는 유니코드를 인식합니다. 컴파일되지 않는 정규식 규칙은 건너뛰는 대신 파일명과 항목을 명시한 오류와 함께 시작을 중단합니다. (?<=password=)\S+는 password=(?P<secret>\S+)로 마이그레이션하세요. 자세한 내용은 docs/secrets.md를 참조하세요 (#18965 by @H4vC)GitHubToken_correctHorseStapleBattery). $$ 구분자는 없어졌으며, 모델이 실제 값을 쓴 곳에서는 트랜스크립트에 실제 값이 표시됩니다. 이 변경 이전에 저장된 세션의 기존 $$NAME_HASH:CASE$$ 형식 플레이스홀더는 모델이 복사해 넣은 도구 호출을 포함하여 그대로 텍스트로 남습니다. 작동하는 플레이스홀더를 사용하려면 새 세션을 시작하세요 (#19014 by @H4vC)friendlyName은 작성된 그대로 모델에 표시되며, 자체 비밀을 그대로 풀어 쓴 경우에만 제거됩니다 (#19014 by @H4vC)withAppleFm = false로 빌드한 Nix가 더 이상 호스트의 Xcode로 Apple Foundation Models 브리지를 컴파일하지 않습니다 (#18911)ask는 질문만 표시하던 방식 대신, 각 프롬프트를 폼의 주변 단락, 목록, 서식 있는 블록, 표와 함께 표시합니다 (#18927)judge 역할용 Gemini Decision 1 판단 모델(google/gemini-decision-1)을 추가했으며, models.yml이 google-decisions API를 허용합니다 (#19060 by @kevcube)ssh:// 호스트 목록, ssh:// 자동 완성, /ssh list가 이제 ~/.ssh/config와 /etc/ssh/ssh_config의 Host 별칭(Include 따라감)을 포함합니다. 이름이 겹치면 ssh.json 항목이 우선합니다.find.verifyModel을 추가했습니다. 이 모델 선택기의 판단 모델은 find의 단락 검증만 담당하며, 파일명과 스케치 순위는 계속 judge 역할에서 처리합니다 (#19006 by @alphastorm)omp bench --account를 추가했습니다. 또한 거부된 우선순위 요청을 조용히 표준 속도로 벤치마크하지 않고 보고합니다.waitForFunction 호출이 더 이상 Puppeteer의 내부 ARIA 쿼리 바인딩을 페이지 스크립트에 노출하지 않습니다 (#18883 by @will-bogusz)computer 실행은 이제 이를 보유한 앱을 명시하고, 사용자의 Escape와 타이핑이 실행이 끝날 때까지 보이지 않는다는 안내 메모로 시작합니다. 이전에는 capabilities()가 여전히 globalEscape: true를 보고하는 동안 아무 안내도 없었습니다 (#18982 by @will-bogusz)computer 실행은 잠금 또는 연결이 끊긴 세션, 또는 보안 데스크톱이 캡처와 입력으로 앱 상태를 확인하지 못하게 할 때 그 이유를 설명합니다 (#18947 by @will-bogusz)wait이나 요소 press 오버로드에서 사용되지 않는 키도 포함하며, 유효한 키와 가능성 있는 철자 교정을 안내합니다 (#18753 by @will-bogusz)visible/hidden 형식과 함께 state: "attached" | "detached" | "visible" | "hidden"을 허용합니다. 라이브 스냅샷 참조와 탐색을 가로지르는 대기도 포함하며, 알 수 없는 옵션, 잘못된 값, 충돌하는 가시성 플래그는 무시하지 않고 거부합니다. 프레임 대기 시간 초과는 같은 실행에서 나중에도 계속 잡을 수 있습니다. Tern과 cmux 탭은 변경되지 않습니다 (#18924 by @will-bogusz)waitForFunction 호출이 이전 대기 이후 "Waiting failed"로 거부하는 대신 탐색을 넘어서 다시 활성화됩니다 (#18884 by @will-bogusz)tab.hover와 요소 핸들의 hover()는 이제 클릭과 마찬가지로 요소가 나타나기를 기다리며, 나타나지 않으면 그 이유(및 선택자의 일치 개수)와 함께 실패합니다. 이전에는 Puppeteer의 "Node is either not clickable or not an Element"로 즉시 실패했습니다 (#18750 by @will-bogusz)tab.console() 또는 tab.errors()의 결과를 배열로 다루면, slice is not a function 대신 .entries를 읽으라는 메시지와 함께 실패하며, 브라우저 문서에 { entries, nextSeq, dropped } 형태가 명시됩니다 (#18738 by @will-bogusz)tab.observe() 결과(tab.run()을 통해 반환된 전체 관찰 결과 포함, 임의의 elements 배열을 가진 객체는 제외) 또는 JavaScript Eval 셀의 마지막 값으로 남은 결과는, 처음 100개 뒤에 ... N more items를 붙이던 방식 대신 모든 요소를 한 줄씩 표시합니다. 반환 이후 변경된 관찰 결과(프로토타입의 인플레이스 편집 포함)는 모든 요소를 포함한 일반 inspect 출력으로 표시됩니다 (#18772 by @will-bogusz)secrets.yml 정규식 규칙은 선행 리터럴이 없는 텍스트를 건너뜁니다. 이로써 대규모 세션에서 리댁션 비용이 요청당 17–55ms에서 약 1ms로 줄었고, 로드 후 첫 요청은 2–4배 빨라졌습니다.read, edit, find만 가리키며, 추론 형식, AST, 하위 에이전트 한도 지침은 제거되었습니다(ast_edit/ast_grep은 자신의 요약에서 선호를 밝힙니다). 워크플로, 전달, 중요 규칙은 더 짧아졌고 서로 반복하지 않습니다. Spotlight의 도구 결과 형태 설명은 끝의 단락 대신 Tool I/O 아래의 짧은 목록이 되었고, xd:// 장치는 기본 이름으로 나열됩니다.edit.modelVariants가 첫 번째 일치 대신 가장 긴 일치 모델 패턴을 선택합니다. 따라서 openai/gpt-5 같은 구체적인 키는 설정 순서와 무관하게 gpt보다 우선합니다 (#17835 by @DeprecatedLuke)~/.o2/lib/abkit/ABHost, Windows에서는 ABHost.exe, Tern도 사용하는 위치. 또는 browser.webkitPath 설정이나 PI_BROWSER_WEBKIT_PATH), 브라우저 탭이 관리형 Chromium 대신 omp 자체의 헤드리스 WebKit 엔진에서 열립니다. 페이지에는 자동화 플래그가 없는 보이고 포커스된 창이 표시되며, 기본 탭은 페이지에서 omp 스크립트를 실행하지 않습니다(콘솔, 오류, 요청 로그는 엔진에서 제공). route, 위치/로케일/오프라인 에뮬레이션, vitals, reactEnable은 호출될 때만 페이지 코드를 추가합니다. 응답 본문은 이 엔진에서 사용할 수 없습니다. 엔진이 뷰어를 제공하지 않는 곳에서 headed 탭은 여전히 Chromium으로 열리며, 엔진을 시작할 수 없을 때는 그 이유를 밝히고 Chromium이 대신합니다. app: "chromium"은 한 번의 열기에 대해 Chromium을 선택하고, app: "webkit"은 WebKit을 요구합니다(headed: true이면 그 탭은 창에서 열림). browser.webkit 설정 또는 PI_BROWSER_WEBKIT=0으로 끌 수 있습니다. macOS에서 이 엔진은 WebGL, WebGPU, 무음 비디오 및 오디오 재생, Web Audio, WebRTC, WebAuthn, 게임패드, Web Share를 지원하며, TLS 핸드셰이크, HTTP/2 설정, 요청 헤더는 Safari가 보내는 것과 동일합니다.app: "webkit"을 위해 WebKit 엔진인 ABKit이 없을 때 omp가 build.stencil.so에서 ~/.o2/lib/abkit으로 다운로드합니다(빌드의 SHA-256으로 검증). 열기 작업에서 브라우저가 설치되어 있지 않으면 Chrome for Testing보다 먼저 다운로드합니다. 다운로드가 실패하면 해당 열기는 Chromium에 머물며 그 이유를 알려줍니다.task 도구 설명은 이제 전달 규칙(결과 자동 전달, wait, 미검증 completed)만 나열합니다. read proc://, write proc://<id>/kill, 작업 만료, write agent:// 참조는 세션의 첫 spawn 결과와 함께 제공됩니다.ask.timeout 설정, README, RPC 스키마 문서는 이제 ask 도구를 옵션을 자동 선택하는 질문 선택기가 아니라, 시간 초과 시 현재 값을 제출하는 HTML 폼으로 설명합니다.bash 도구 설명은 내장 셸의 프로세스 내 빌트인을 다시 셸에서 직접 나열하므로, 모든 PI_DISABLE_* 스위치와 플랫폼을 따릅니다.read 선택자와 proc://, ssh://, issue:///pr://의 하위 경로 문법은 더 이상 모든 요청에 포함되지 않습니다. 모델이 필요할 때 xd://read/sources와 xd://read/urls에서 읽으며, read가 꺼져 있으면 인라인으로 유지됩니다./browser visible과 /browser headless가 이제 다음 열기를 기다리지 않고 omp WebKit 탭의 창을 한꺼번에 표시하거나 숨깁니다. 엔진이 뷰어를 제공하는 곳(macOS)에서는 각 탭이 사용자가 클릭, 스크롤, 입력할 수 있는 자체 창을 얻습니다. headed: true 또는 browser.headless를 끄면 탭은 Chromium으로 보내지지 않고 창과 함께 WebKit에 머뭅니다. Chromium 탭은 다음 열기에서 모드가 바뀝니다.observe, 선택자, 클릭, 입력, 요소 읽기, 대기가 더 이상 페이지에서 스크립트를 실행하지 않습니다. 엔진이 요소를 찾고(프레임과 닫힌 shadow root 전체 포함), 모든 동작은 해결된 지점에서의 신뢰된 입력입니다. type은 클릭이 놓은 캐럿 위치에 입력하며, text/ 선택자는 대소문자를 무시합니다.tab.clickAt용 좌표 배율). 이전에는 바이트 크기와 형식을 담은 네 줄이었습니다. browser.open은 이제 탭, 요청한 URL과 다르게 도착한 페이지(탐색의 정규화된 URL 비교 사용), 제목을 한 줄로 보고합니다 (#18776 by @will-bogusz)select 요청에 initialIndex, selectionMarker, checkedIndices, markableCount가 포함되어, 호스트가 사용자가 무심코 토글하지 않도록 ask 체크박스 옵션 중 이미 선택된 항목을 표시할 수 있습니다 (#18929 by @andrebrait)watchFiles: false를 설정하면 자체 감시기를 유지합니다.catch 안의 print(e.stack)은 여전히 모든 프레임을 보여줍니다 (#18775 by @will-bogusz)compact()에 전달합니다. 기존에는 compact()가 auto 형태 설정으로 이를 다시 계산했습니다. 사전 점검은 트랜스크립트를 두 번 대신 한 번만 스캔하고, compaction.snapcompact 루프 단계로 실행되며, 렌더링 전에 이벤트 루프에 양보합니다 (#15689, #18867 by @wolfiesch)session.rewrite 루프 단계로 실행되므로, 그로 인한 정지가 ui.loop-blocked 로그에 귀속됩니다 (#15027, #18867 by @wolfiesch):raw를 쓴 read는 개요화, 압축, 접힘, 잘림이 적용된 렌더링 대신 선택된 바이트를 그대로 반환합니다 (#18713 by @eggpeat);/, 경로 read는 하나의 호출로 처리됩니다. 각 부분은 그 read만 단독으로 수행했을 때와 같은 형태가 되며(:raw 부분은 그대로 유지되는 개요화 소스 파일), 다른 부분에 이미 표시되었다는 이유로 접히지 않고, 안내 메모가 원본을 여는 하나의 추적 기록이 됩니다 (#18713 by @eggpeat)openai-codex, google-antigravity, google-gemini-cli 프로바이더에서 콜드 또는 오래된 캐시일 때 잘못 발생하던 알 수 없는 모델 폴백 경고를 수정했습니다. 비활성화된 콜드 캐시 프로바이더가 폴백 경고를 미루는 현상을 막았고, 지연된 카탈로그 로드가 완료되었거나 실패한 탐색 상태를 덮어쓰지 않도록 했습니다 (#19017 by @PGupta-Git)ask HTML 폼의 "Other" 텍스트 상자가 이제 별도의 중복 질문이 아니라 라디오/체크박스 질문 안에 표시됩니다 (#19028)bash 도구의 백그라운드 작업(&), 서브셸, 명령 치환이 부모 셸이 시작 이후 변경한 내용을 보던 문제를 수정했습니다. 이제 bash처럼 시작 당시의 변수, 위치 매개변수($1, $@), 함수, 별칭, 셸 옵션을 유지합니다 (#19072 by @H4vC; #18990 by @alphastorm에서 보고됨)tab.run 안의 page.evaluate, evaluateHandle, $eval, $$eval, waitForFunction이 null이나 undefined 대신 tab.evaluate와 마찬가지로 페이지 고유의 전역 변수와 커스텀 요소를 볼 수 있습니다. 대기는 간결한 메서드를 지원하고, 페이지 측 간격으로 폴링하며, 잘못된 폴링 옵션을 거부하고, 중단 사유를 보존하며, 취소 시 폴링을 멈춥니다. 늦게 도착한 결과는 폐기합니다 (#18751 by @will-bogusz)omp bench --account, omp dry-balance --bench, 보안 스캔이, API 키가 구조화된 자격 증명인 프로바이더(GitHub Copilot, Gemini CLI, Antigravity, Snowflake)에 원시 액세스 토큰을 보내던 문제를 수정했습니다. 이제 일반 요청과 같은 키를 보냅니다 (#19030 by @Xytronix)PUT의 본문이 범위 바로 바깥의 줄을 반복하고 범위를 그 외에는 바꾸지 않을 때, 이제 그 복사본을 추가합니다. 이전에는 자동 복구된 경계 에코를 보고하면서도 아무 작업도 하지 않았습니다 (#18234 by @eggpeat)omp --help가 --tools가 받는 도구 이름을 기본 활성화와 선택 사항으로 나누어 나열합니다. 브라우저와 컴퓨터 사용은 eval 기능으로 문서화됩니다 (#19064 by @nibblebot)judge 역할용 Liquid AI 판단 모델(liquid/d1.1, liquid/d1-ultra)을 추가했습니다. 이미지는 Liquid의 요청당 패치 예산에 맞게 크기가 조정됩니다 (#18076, #18100 by @SuperUserA)judge 역할용 Nace Drex 판단 모델(nace/drex-max-v1.1, nace/drex-max-finance, nace/drex-v2.0)을 추가했습니다. Drex Max 이미지 판단도 포함합니다 (#18950 by @alphastorm)find.hitThreshold 설정을 추가했습니다(0 초과 1 이하, 설정하지 않으면 0.2 유지). 이는 검증된 단락이 find와 omp find에서 파일을 보고하거나 범위를 나열하기 위해 필요한 확률입니다. 이로써 TypeSafe Jev 이외의 판단 모델도 해당 모델의 보정에 맞는 기준값에서 실행할 수 있습니다 (#18963 by @alphastorm)StaleRef 거부를 설명합니다. 여기에는 새 참조와, 부분 창 읽기에서 얻은 약한 역할-및-레이블 복구 후보가 포함됩니다 (#18892 by @will-bogusz)UserIntervened 이후 창을 다시 읽도록 안내합니다. 이때 사용자의 입력을 되돌리거나 그 위에 재생하지 않습니다 (#18784 by @will-bogusz)computer 도구의 인수 전환 type이 Windows에서 Chrome처럼 키를 천천히 읽는 앱에서 텍스트 끝을 잃지 않으며, 텍스트는 전송되었지만 앱이 읽는 것을 확인하지 못했을 때 출력에서 이를 알려줍니다 (#19037 by @will-bogusz)agent://all 브로드캐스트를 보낸 뒤 wait이 "Nothing to wait for"를 반환하던 문제를 수정했습니다. 이제 직접 응답을 기다립니다 (#18976 by @alphastorm)todo 또는 /todo를 통해서만 완료로 표시됩니다 (#18975 by @alphastorm)Failed to bind extension … <inline-0>을 기록하고, 하위 에이전트가 Warp에 별도 세션으로 보고하던 문제를 수정했습니다. 워커 스레드가 로드할 수 없는 SDK 인라인 확장은 이제 이름을 밝힌 경고를 한 번만 기록합니다 (#18980 by @alphastorm)ls 빌트인에서 숫자가 아닌 -T/--tabsize 값(이전에는 작업 디렉터리를 나열하던 ls -laT dir 등)과, 뒤에 숫자가 아닌 문자가 붙은 범위 초과 -w/--width 값이 이제 종료 코드 2로 실패합니다 (#18985 by @alphastorm)read JSON 쿼리(archive.tar:member.json?q=.x)가 not found inside archive로 실패하던 문제를 수정했습니다. 리터럴 ?가 포함된 멤버 이름과 멤버 또는 쿼리 출력의 줄 선택자는 그대로 유지됩니다 (#18970 by @alphastorm)chmod +x)에서 #! 스크립트가 실행 가능하지 않다는 write LSP 진단 경고(Ruff EXE001 등)를 수정했습니다 (#18978 by @alphastorm)edit이 apply_patch 모드를 쓸 때의 xd://apply_patch 등)에 대해 read xd://<tool>과 write xd://<tool>이 이제 도구 문서를 반환하고, 도구의 승인 등급으로 실행되며, No such tool로 실패하지 않습니다 (#18977 by @alphastorm)data 페이로드를 expected object, received string으로 거부하던 yield 문제를 수정했습니다. 이제 디코딩된 필드 위반 사항을 보고합니다 (#18971 by @alphastorm)github run_watch가 로그를 사용할 수 없다고 표시하던 문제를 수정했습니다. 최신 및 이전 GitHub CLI(gh) 릴리스 모두에서 일반 텍스트 로그를 반환합니다 (#18968 by @alphastorm)lsp.formatOnWrite(또는 편집기의 저장 시 포맷) 이후 edit 결과가, 포맷된 파일의 [path#TAG] 아래에 전송된 줄을 표시하던 문제를 수정했습니다. 이제 결과는 작성된 줄을 보여주며 편집기를 탓하지 않습니다 (#18998)xd:// 장치 호출(테스트 러너, 원격 명령, 확장 장치)과 proc:// 서비스 stdin 또는 모드 쓰기에서, 파일이 변경되기 전에 prewalk가 더 저렴한 모델로 넘어가던 문제를 수정했습니다 (#19002)typescript-native)이 더 이상 자체 파일 감시기를 실행하지 않습니다. omp가 등록한 파일을 감시하고 omp 외부에서 이루어진 변경도 포함해 보고합니다. 이로써 Linux에서는 다른 도구의 편집을 인식하여 오래된 진단을 유지하지 않으며, ovnfs 체크아웃 같은 네트워크 드라이브에서는 감시기가 더 이상 루프에 빠져 드라이브의 파일 서버를 바쁘게 만들고 그 위의 모든 체크아웃을 멈추게 하지 않습니다. 다른 서버는 watchFiles 서버 설정으로 옵트인합니다 (#18964 by @H4vC)mv나 패키지 설치 후에도 서버가 오래되거나 누락된 파일을 유지하지 않습니다.분량 관계로 이후 내용은 번역에서 제외했습니다. 전체 내용은 위 원문 링크에서 확인하세요.