[WRONG BRANCH] release: promote 2.47.0-preview.20260908 to preview - #3928
Conversation
chore(release): open dev at 2.47.0 before releasing 2.46.0
… first call Routed models in Codex code mode learned apply_patch argument shape, the marker rule, the isolate import ban and session_id polling only by failing (xai/grok-4.6, 2026-09-07). State them once in exec-tool-result-normalize.ts beside the echo rule and inject at the three existing code-mode sites: shared nudge, Cursor guidance, native routed Responses instructions.
…a host failure string Post-hoc half of the host contract. Exec-bridge results carrying "expects a string input", "The first/last line of the patch must be", or "Unsupported import in exec" gain one recovery line on the native routed Responses, Kiro and Cursor result paths. Responses and Kiro additionally require the verified code-mode catalog; Cursor matches the exact exec name under its opencodex-responses provider and keeps its isError policy. Flat shell bridges, foreign namespaces, whitespace/failed-wrapper grouping and replayed annotations are untouched.
Document the pre-call nested-helper contract and post-hoc host-failure annotation in the transports SoT and the Codex integration guide. This change does not rewrite model JavaScript or patch payloads.
fix(code-mode): state the host contract for nested helpers and annotate host failures
(cherry picked from commit e5bbd79) Co-authored-by: Ingwannu <186453546+Ingwannu@users.noreply.github.com>
`debugProviderDiagnostic` already returns early when provider debug is off, but its argument object is built by the caller first. The Kiro request path therefore ran `new TextEncoder().encode(body).length` over the entire serialized request body on every request, including when diagnostics were disabled, and then discarded the result inside the callee. Wrap the diagnostic call in `isDebugEnabled()` so the details are only constructed when they can actually be emitted. `src/adapters/openai-chat.ts` already guards its diagnostics the same way. The regression asserts that building a request performs no `TextEncoder` encode over the serialized payload while diagnostics are off; it fails without the guard and passes with it. (cherry picked from commit d5d711a) Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com>
… [skip ci] Carries PR #3840 (head 9a21452, 5 commits squashed onto current dev): gpt-6-astra, Grok and MAI models on GitHub Copilot default to the Responses wire instead of Chat Completions, which returned unsupported_api_for_model. Docs scope the per-wire model lists and the discovery fallback test covers legacy overrides. (carried from #3840) Co-authored-by: chilung-cgu <215337896+chilung-cgu@users.noreply.github.com>
…ate reads [skip ci] Resolves the maintainer objection on #3837 (discussion_r3945935220): the shared setup cleared only OCX_DEBUG_FRAMES, so an inherited OCX_DEBUG=1 or a runtime debug override made the encoder-spy test fail legitimately. Snapshot OCX_DEBUG, OCX_DEBUG_FRAMES and the runtime override in beforeEach, clear them, and restore the exact previous values in afterEach. Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com>
(cherry picked from commit 8ef77f7) Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com>
…er marker in the same delta [skip ci] Resolves the unresolved major finding on #3843 (discussion_r3946034145): lastIndexOf selected the later START, its END made the whole-string strip pair the first START with that END, and the malformed text vanished. Walk START-delimited segments independently so a superseded or over-bound span is emitted verbatim and only a bounded trailing span is held for the next delta. Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com>
…ip ci] (cherry picked from commit 73abec9) Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com>
GET and PUT /api/sidecar-settings return webSearch.model/backend/stream flags but omitted webSearch.enabled, so the dashboard could not tell whether the sidecar master switch was off. Serialize the effective value (unset reads as enabled) on both responses. Reimplements #2033 on current dev (the original branch is 1364 commits behind and its test moved to tests/vision/ under the test-layout split). Co-authored-by: louis-tepe <161487332+louis-tepe@users.noreply.github.com>
docs(devlog): make CI completion check fail closed (carry #3532)
fix(copilot): route Responses-only GPT, Grok and MAI models correctly (carry #3840)
fix(kiro): gate request diagnostics behind the debug check (carry #3837)
fix(responses): bound the streaming citation marker span (carry #3843)
fix(providers): refuse keychain restore across provider ownership (carry #3845)
fix(management): expose the effective web-search sidecar enabled state (reimplements #2033)
(cherry picked from commit 0da9f2c) Co-authored-by: terrytan95 <10609214+terrytan95@users.noreply.github.com>
(cherry picked from commit 5d01860) Co-authored-by: terrytan95 <10609214+terrytan95@users.noreply.github.com>
…ption for canonical URLs (cherry picked from commit 3830862) Co-authored-by: hualiny <82697947+hualiny@users.noreply.github.com>
Co-authored-by: hualiny <82697947+hualiny@users.noreply.github.com>
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Team Run ID: ⛔ Files ignored due to path filters (2)
📒 Files selected for processing (260)
📝 WalkthroughWalkthroughThis PR is a large release train combining many independent changes: release-workflow publication gating, SPONSORS.md and README sponsor sections, a code-mode host contract for routed tools, OAuth login cancellation, a model picker order editor, manual model pricing, subagent fallback chains, custom usage time windows, Codex quota auto-refresh improvements, reasoning-effort pinning with translator-budget accounting, the OrcaRouter provider, a citation-marker streaming fix, Mihomo IPv6 outbound handling, and extensive documentation and localization updates. ChangesRelease, Sponsors, and Documentation
Code-mode Host Contract, OAuth Cancellation, and Model Management
Backend Features and Fixes
Estimated code review effort: 5 (Critical) | ~180 minutes Sequence Diagram(s)sequenceDiagram
participant Model as Routed model
participant Adapter as Adapter (Responses/Kiro/Cursor)
participant Host as Codex code-mode host
Adapter->>Model: Inject CODE_MODE_HOST_CONTRACT_SENTENCE
Model->>Host: apply_patch / exec call
Host-->>Adapter: exec result (may contain host failure string)
Adapter->>Adapter: isCodexCodeModeExecResult(toolName, namespace)
alt result matches known host failure marker
Adapter->>Adapter: annotateCodeModeHostFailure appends recovery hint
else no match
Adapter->>Adapter: pass result through unchanged
end
Adapter->>Model: annotated or original exec result
sequenceDiagram
participant GUI as Add-Provider Modal
participant Hook as useAddProviderOAuth
participant Barrier as oauth-cancellation-barrier
participant Server as /api/oauth/login
GUI->>Hook: loginOAuth(provider)
Hook->>Barrier: afterOAuthCancellation(apiBase, provider, start)
Barrier->>Server: POST /api/oauth/login
Server-->>Barrier: login URL / status
Barrier-->>Hook: result
GUI->>Hook: cancelLoginOAuth(provider) (unmount/pagehide/explicit)
Hook->>Barrier: cancelOAuthLogin(apiBase, provider)
Barrier->>Server: POST /api/oauth/login/cancel (keepalive)
Server-->>Barrier: cancellation acknowledged
✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
✅ Deterministic PR hygiene checks passed. |
⏳ DRAFT
What to do
Its title has been prefixed with |
리뷰 · 우선순위 68 / 80이 PR은 2.47.0 릴리스 후보를 diff 가 거대해 보이는 이유는 preview 대비 2.47 트레인 전체(코드모드 호스트 계약, 레인 B/C/D, 스폰서 README/SPONSORS.md, release.yml 레지스트리 스모크 복구, GUI·Usage·Orca 등)가 한꺼번에 보이기 때문입니다. 승격 PR을 파일 단위 기능 리뷰로 다시 까는 대상이 아니라, “후보 SHA·버전선·제외 목록·CI 증거”를 확인하는 출구 리뷰입니다. 워크플로 쪽에서는 경로 PR base=preview / title [WRONG BRANCH] - 게이트 봇의 dev-only 가정과 릴리스 승격 절차가 충돌한다. preview 타깃은 의도된 것이다. 메인테이너의 판단이 필요한 지점
너의 추천 이 댓글은 grok-bot이 작성했습니다 |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Summary
Promote the 2.47.0 release candidate to preview for 2.47.0-preview.20260908. The owner explicitly authorized preview/main promotions and publication after independent Astra PABCD regression validation.
This promotion depends on #3927 landing on dev. The prepared tree matches reviewed candidate 48ab3e1 exactly except package.json version. Dev was moved to 2.48.0 via #3925. Sponsor placement PRs #3914/#3915 are excluded.
Verification
GUI verification (mocked failure path, unchanged component tree)
Checklist
Final candidate recheck: 48ab3e1. Main-relative pinned React Doctor scanned 44 changed files with no issues; independent UI guard review passed 109 tests and two sentinel/cache probes. Browser smoke was refreshed on this exact source with the five fault/retry scenarios plus blank/valid poll input. All displayed screenshots now label the final candidate.
Promotion target-check disposition: enforce-target is expected to reject main/preview because its ALLOWED_BASES contains only dev and its only coded exception is a stacked child. The repository AGENTS.md explicitly permits maintainer release promotions and the owner requested these two targets. As with preceding release PRs #3851/#3852, this is an explicitly authorized admin PR-only promotion exception. The failing target-policy check is NOT reported as passing; all runtime/security/release gates still must pass. No checks, branch protections, or target branches are modified to hide it.
Summary by CodeRabbit
New Features
Bug Fixes
Documentation