v2.7.41-preview.20260726
Pre-release
Pre-release
Published to npm as @bitkyc08/opencodex@2.7.41-preview.20260726 with dist-tag preview.
What's Changed
New Features
- feat: quota-aware subagent model fallback chain (#374) by @Wibias in #391
- feat(api-access): expose gateway endpoints and external model catalog by @Wibias in #392
- feat(grok): auto-configure Grok Build and harden strict-client compatibility by @lidge-jun in #403
- feat(oauth): reliability, credential integrity, and diagnostics by @Wibias in #479
Bug Fixes
- fix(ci): silence English translation noise and harden related-issue matches by @Wibias in #458
- fix(update): reclaim configured port after stop instead of hopping by @Wibias in #456
- fix(proxy): stop empty 503 bodies becoming Codex Unknown error (#452) by @Wibias in #463
- fix(gui): react-doctor shared foundations by @Wibias in #466
- fix(gui): restore OpenAI account setup with canonical recovery gates by @Wibias in #469
- fix(gui): clear remaining react-doctor code findings by @Wibias in #480
- fix(xai): declare grok image input so combos are not advertised text-only by @jonathanli12 in #478
- fix(responses): strip max_output_tokens and metadata in forward mode by @elppaaa in #489
- fix(proxy): preserve OpenAI cyber_policy errors end-to-end by @Wibias in #483
- fix(state): recover abandoned response snapshots by @Ingwannu in #502
- fix(usage): keep large dashboard logs responsive by @Ingwannu in #501
- fix(cli): diagnose Orca Codex home mismatch by @Ingwannu in #503
- fix(cli): separate PowerShell recovery commands by @Ingwannu in #505
Chores
- chore(gui): pin react-doctor to 0.9.1 by @Wibias in #465
- refactor(gui): split Combos for react-doctor by @Wibias in #467
- refactor(gui): react-doctor cleanup for Startup/Debug/Storage/Usage by @Wibias in #468
- refactor(gui): react-doctor cleanup for Dashboard by @Wibias in #473
- refactor(gui): react-doctor cleanup for Models by @Wibias in #472
- refactor(gui): react-doctor cleanup for App, Logs, Subagents by @Wibias in #471
- refactor(gui): react-doctor cleanup for Providers by @Wibias in #474
- refactor(gui): split ClaudeCode and ApiKeys for react-doctor by @Wibias in #470
- refactor(gui): react-doctor cleanup for Codex accounts by @Wibias in #475
- chore(gui): document intentional react-doctor policy disables by @Wibias in #481
New Contributors
Commits
- release: v2.7.41-preview.20260726 (19ad2de)
- Merge remote-tracking branch 'origin/dev' into preview (0240ea7)
- fix(test): make the auth-detect fixtures platform-neutral (c426a90)
- Merge pull request #505 from lidge-jun/agent/fix-orca-powershell-separator (9d1bb14)
- docs(devlog): close out the auth-auto unit with the round-5 review disposition (d7cd5e4)
- fix(claude): keep auto reachable and stop reading our own key as user auth (30764e4)
- docs(devlog): record the WP4 hardening audit and its writer-inventory blocker (9be93c6)
- fix(codex): route runtime account writes through the guarded saver (cc746bb)
- docs(claude): explain what auto auth mode decides and when (60981ed)
- fix(config): stop service-time saves from clobbering hand-edited claudeCode (765be53)
- fix(claude): reach plain claude launches when auth mode is auto (7bee15f)
- feat(gui): offer an auto auth mode and explain what the next launch will do (5056415)
- docs(readme): show the four supported clients in a 2x2 gallery (8be0636)
- feat(api): expose the three-state Claude auth mode and its resolution (13d2a34)
- feat(claude): resolve the auth mode from detection and fix the marker ordering (6907663)
- feat(claude): make authMode three-state and migrate legacy subscription intent (0837993)
- feat(claude): detect Claude auth presence with three-valued semantics (e58726a)
- docs(devlog): record the fourth audit round in the phase map (e240f6f)
- docs(devlog): widen the save boundary to request-path config writers (bf5adb6)
- docs(devlog): bind the detector env, own the config baseline, and label the daemon snapshot (4212601)
- docs(devlog): fix the marker ordering and split the auth-auto phases after round 2 (92b83b3)
- docs(devlog): fold the auth-auto audit blockers back into the roadmap (edf1e3d)
- docs(devlog): plan auth-detected auto mode for the Claude connection (ad968e6)
- fix(cli): separate PowerShell recovery commands (a00f1a4)
- Merge pull request #503 from lidge-jun/agent/fix-issue-497-orca-home-diagnostic (94b1437)
- fix(cli): make Orca recovery guidance executable (cf7c30a)
- Merge remote-tracking branch 'origin/dev' into agent/fix-issue-497-orca-home-diagnostic (8efe4f1)
- Merge pull request #501 from lidge-jun/agent/fix-issue-500-usage-cache (5078ffc)
- fix(test): restore CI timeout assertions (63b15e5)
- test(ci): pin split timeout ceilings (79f3daa)
- ci: allow Windows suite to finish (1f3edda)
- Merge remote-tracking branch 'origin/dev' into agent/fix-issue-497-orca-home-diagnostic (2228fe9)
- Merge pull request #502 from lidge-jun/agent/fix-issue-499-stale-state-temps (b9d6d7e)
- fix(usage): reject non-file log paths (42dd815)
- fix(state): contain directory iteration failures (cc1a47b)
- fix(state): cap directory enumeration (88b3ae1)
- fix(cli): harden Orca home diagnostics (071d291)
- fix(state): make stale cleanup race-safe (f5769fd)
- fix(usage): bound dashboard summary caching (6240176)
- fix(usage): preserve read failure diagnostics (6ebf84e)
- fix(cli): diagnose Orca Codex home mismatch (cf26fe3)
- fix(state): recover abandoned response snapshots (2cb135b)
- fix(usage): keep large dashboard logs responsive (3e19534)
- test(grok): resolve the writer-boundary paths cross-platform for Windows CI (911373d)
- fix(docs): claim "opencodex" as the Google site name (f387719)
- feat(gui): give the Grok page per-model switches in the shared collapse chrome (b3d5793)
- feat(cli,docs): surface proxy-down restart guidance and Kiro CLI prerequisite (998ebad)
- feat(grok): add per-model selection state with alias-stable exclusion and guarded re-apply routes (db9ed1a)
- feat(claude): normalize Desktop 3P labels and guard the written model list (12c010c)
- feat(usage): bucket Grok traffic under its own surface, and stop the codex filter swallowing claude-desktop (103d0f7)
- feat(gui,claude): surface the Desktop 1M capability as a read-only chip (964ed28)
- docs(devlog): record the live render evidence for the context fixes (f73faa7)
- fix(gui,claude): show 1M contexts and real native windows on Desktop and Grok (e733fbb)
- docs(devlog): name both native-context consumers in the defect map (439f9c8)
- docs(devlog): verify Grok extra_headers and the native-1M writer gap (7697bd1)
- docs(devlog): correct the defect root causes after adversarial review (25a6c34)
- docs(devlog): root-cause the context, claude-api, tag, and usage defects (e1d71f1)
- fix(providers): recover a config migrated across Alibaba regions (5786e89)
- test(gui): cover the Desktop row disclosure and record its render evidence (ff3429f)
- feat(providers): add a provider-id reference rewriter (8659c3f)
- feat(gui): collapse Desktop model rows to a summary, expanding to the edit controls (d66ef87)
- fix(codex): give users an escape from a stuck quota cooldown (839d671)
- fix(codex): stop the config journal from freezing its first snapshot (c00dbb2)
- docs(devlog): call the rewriter deterministic, not pure — it mutates in place (ae84a2e)
- docs(devlog): 260726 issue loop roadmap — 21 issues triaged, 3 phases at diff level (3057755)
- feat(gui): stack the Claude Desktop families vertically behind collapsible headers (3f4b17a)
- docs(devlog): fold the plan audit back into the model UX roadmap (7e83855)
- docs(devlog): plan the vertical, collapsible model UX for Desktop and Grok (dda9fa3)
- docs(devlog): record newness explicitly instead of inferring it (fb70481)
- docs(devlog): tour is first-run only, and the rescan found the trigger is broken (b448570)
- docs(devlog): record the guided-tour interview decisions and contradiction scan (41ff15f)
- docs(devlog): record the guided-tour draft, deferred to a later release (490557b)
- docs(devlog): design the declarative announcement + onboarding substrate (2a23b33)
- feat(grok): add a read-only Grok status surface to the dashboard (21635c1)
- feat(gui): keep the Claude Desktop lanes navigable as models grow (b2013f6)
- fix(grok): send native context windows so Sol stops reporting 200k (81a6a95)
- fix(gui): keep the locale menu inside the sidebar as locales grow (fdaf2fb)
- fix(claude): stop the Desktop profile parser from rejecting applied-state markers (7e633e7)
- docs(devlog): 260726 GUI/Grok improvement roadmap — 5 items, causes located (233075a)
- Merge pull request #479 from Wibias/feat/oauth-reliability-integrity (923a0e5)
- fix(router): warn when a pinned provider discards a configured baseUrl (1540ad4)
- docs(devlog): 260726 PR rework v2 roadmap — 14 open PRs classified (16be33d)
- Merge pull request #483 from Wibias/fix/cyber-policy-error-fidelity (c91e829)
- Merge pull request #489 from elppaaa/fix/strip-max-output-tokens-forward (9dff083)
- fix(gui): propagate health-only reauth into Providers attention state (af6bd0f)
- test(proxy): add endpoint regressions for model_not_found fidelity (3a2cfb3)
- fix(proxy): force cyber_policy to HTTP 400 over upstream 5xx (7d3bc5f)
- docs(devlog): record the final gate results for the merge hardening unit (1c33fb5)
- test(gui): guard Claude Desktop locale coverage against blank values (5c1dd66)
- fix(cli): surface why a proxy stop failed instead of a bare failure line (6b11e98)
- Merge pull request #478 from jonathanli12/codex/fix-xai-grok-input-modalities (7fbccc8)
- fix(proxy): address cyber_policy review feedback (cfcc4a3)
- Merge pull request #481 from Wibias/fix/react-doctor-policy (33693ce)
- fix(responses): strip max_output_tokens and metadata in forward mode (112b8c6)
- docs: retire the claudedesktop branch from the branch policy (2f3fa58)
- fix(proxy): preserve OpenAI cyber_policy errors end-to-end (eb0ab29)
- test(gui): assert the Claude tab wrapper mounts the stacked ClaudeCode page (3ec8f53)
- Merge branch 'claudedesktop' into dev (0a78672)
- Merge branch 'codex/260726-grok-build-prod' into dev (f6520fc)
- fix(oauth): address CodeRabbit review on PR 479 (fb9b64c)
- fix(oauth): address Codex review on health CLI/GUI paths (b2c5fd3)
- test(gui): align next-session badge assertion with OAuth health (820fbaf)
- fix(oauth): point Codex reauth actions at the dashboard (82e47c0)
- fix(cli): use ocx login in OAuth recovery actions (e445927)
- docs: document OAuth reliability and diagnostics (252ed83)
- test(codex): lock metadata pass-through and non-fabrication (359188c)
- fix(gui): never fall back to raw account id in health UI (51b7c4c)
- feat(gui): surface OAuth account health diagnostics (5cea409)
- feat(cli): add OAuth reliability checks to ocx doctor (62dc52a)
- feat(cli): show OAuth health in ocx status (e4d918f)
- feat(oauth): add shared account health projection (9a5248a)
- feat(oauth): lock and CAS generic provider token refresh (ee90aa9)
- test(oauth): cover forbidden keys in logOAuthEvent (9e5651e)
- feat(oauth): add redacted structured OAuth event logger (c8f3f65)
- feat(privacy): add maskAccountId for OAuth diagnostics (4be7043)
- docs: add OAuth reliability design and implementation plan (9b4f3f9)
- Merge pull request #480 from Wibias/fix/react-doctor-followup (6d8f05f)
- fix(gui): await provider refresh before notes editor closes (a404a45)
- fix(gui): address Codex and CodeRabbit follow-up review (9f9bdd0)
- fix(test): drop assertions for removed unused GUI exports (7a11a1c)
- chore(gui): document intentional react-doctor policy disables (b13f279)
- fix(gui): clear remaining react-doctor code findings (3089791)
- fix(registry): fill per-model modality defaults beneath user overrides (9eb7f0b)
- fix(xai): declare grok image input so combos are not advertised text-only (9441ed3)
- Merge pull request #475 from Wibias/fix/react-doctor-codex-accounts (ac3af3e)
- fix(codex): omit remaining when post-reset WHAM refresh is not fresh (3fcdd96)
- fix(codex): return authoritative remaining after reset-credit consume (23593db)
- fix(gui): make Codex reauth StrictMode-safe and abort stalled polls (fa8c2c7)
- fix(gui): address CodeRabbit findings on Codex account pool (e7ed8fc)
- fix(gui): harden Codex OAuth typing and update seam tests after extract (c40e819)
- fix(gui): address Codex review on OAuth cleanup and reset a11y (8612260)
- refactor(gui): react-doctor cleanup for Codex accounts (84532eb)
- Merge pull request #470 from Wibias/fix/react-doctor-claude-apikeys (62cc39d)
- fix(gui): address remaining CodeRabbit nits on #470 (372877e)
- Merge pull request #474 from Wibias/fix/react-doctor-providers (5e30581)
- fix(gui): keep Claude sidecar Auto as a selectable draft (e404398)
- docs(devlog): 260726 배치 실행 영수증 — 통합 5건, close 5건, 보안보류 리뷰 5건 (bda490d)
- docs(providers): add free-provider directory as inert metadata (#405) (be16c1d)
- Merge pull request #471 from Wibias/fix/react-doctor-logs-subagents-app (7e2cee4)
- feat(minimax): support split reasoning and adaptive thinking (#431) (82a47db)
- fix(gui): resolve ClaudeCode eslint and sidecar Auto persist gap (b2f76a2)
- fix(gui): serialize Subagents save with ref guard and readJsonOrThrow (c9ba752)
- test(gui): close regression gaps in the react-doctor page fixes (#468) (bcaf029)
- fix(ci): harden web-search byte-liveness timing and address #470 review notes (e90379b)
- test(gui): cover Claude toggle and Subagents busy races (3c75294)
- Merge pull request #472 from Wibias/fix/react-doctor-models (4980410)
- Merge pull request #473 from Wibias/fix/react-doctor-dashboard (17f3c71)
- fix(gui): preserve last-good API keys when refresh fails (aafe67b)
- Merge pull request #468 from Wibias/fix/react-doctor-misc-pages (2e5c560)
- fix(kiro): honor native stop reasons and Opus 5 effort (#460) (74ddd96)
- docs(devlog): WP2 A-gate 반영 — #429를 보안 보류로 재분류 (d6ef2f4)
- fix(gui): close Startup/Storage/Usage abort and Debug PUT races (fd5ad59)
- fix(gui): address CodeRabbit findings on Claude toggle, Subagents busy, logs keydown tests (7dad03c)
- test: raise Windows timeout for multi-agent boolean/inline migration (68b8c69)
- fix(gui): point rail delete seam test at extracted Providers CRUD hook (e616590)
- Merge pull request #467 from Wibias/fix/react-doctor-combos (5cb3a11)
- fix(gui): handle undefined JSON bodies in Providers fetch/oauth hooks (e7eb3ab)
- refactor(gui): react-doctor cleanup for Models (d0e7512)
- fix(gui): harden Dashboard poll edge cases after Codex review (7d3aa3a)
- fix(gui): tighten Providers extract types after rebase (333b42e)
- fix(gui): re-split ClaudeCode and ApiKeys after foundations rebase (d0d03be)
- fix(gui): address CodeRabbit Combos a11y and numeric guards (67417f4)
- fix(gui): restore request ownership for misc react-doctor pages (46bef6c)
- fix(gui): harden Subagents empty-body load handling after rebase (e664956)
- refactor(gui): react-doctor cleanup for Providers (45c3482)
- refactor(gui): react-doctor cleanup for Dashboard (8927810)
- refactor(gui): react-doctor cleanup for App, Logs, and Subagents (43d3255)
- refactor(gui): react-doctor cleanup for Startup/Debug/Storage/Usage (57fe3c4)
- docs: clarify Bun CLI requirement for source development (#437) (803807a)
- docs(devlog): 260726 PR close/rework 로드맵 — 11문서 diff-level 계약 (895b0f4)
- fix(gui): keep combo detail draft updater pure under Strict Mode (1b1ec2b)
- Merge pull request #469 from Wibias/fix/issue-443-openai-recovery (b59fc00)
- fix(gui): address CodeRabbit OpenAI recovery follow-ups (077a407)
- fix(gui): address Combos review blockers for clientKey and dialog dismissal (76a0fc1)
- refactor(gui): split Combos workspace for react-doctor (1c2f924)
- Merge pull request #466 from Wibias/fix/react-doctor-foundations (d9e5102)
- fix(gui): defer client-resource store eviction across resubscribe churn (3616d2a)
- fix(gui): scope API auth fetch to same-origin /api and /v1 (afc99ec)
- fix(gui): address remaining CodeRabbit findings on foundations (3566908)
- fix(gui): replace aborted client-resource fetches when subscribers remain (971e056)
- fix(proxy): run DNS guard on disabled OpenAI re-enable (196a6a8)
- fix(gui): abort in-flight client-resource fetches owned by unsubscribers (7b0bcda)
- fix(gui): wipe legacy API token storage and per-subscriber poll fetchers (138751f)
- fix(proxy): tighten canonical OpenAI recovery security gates (fe5648d)
- fix(gui): harden client-resource and fetch-json for review findings (f09ae7f)
- chore: untrack .codexclaw goalplan artifacts (2186b60)
- test(gui): cover Codex Auth OpenAI recovery click journey (b77c43e)
- fix(gui): address Codex review on OpenAI recovery gates (9469d7d)
- fix(gui): gate OpenAI recovery on canonical provider shape (30ddfd8)
- fix(gui): restore OpenAI account setup paths(恢复入口) (cbd3ee0)
- chore: untrack .codexclaw goalplan artifacts (8756daa)
- fix(gui): add react-doctor shared foundations (9c7e922)
- Merge pull request #465 from Wibias/fix/react-doctor-pin (bef0dfb)
- chore(gui): pin react-doctor to 0.9.1 (c03ed0a)
- Merge pull request #463 from Wibias/fix/issue-452-opaque-503 (e0b7458)
- fix(proxy): preserve Retry-After and redact tenant URLs in debug (fc6bc25)
- fix(proxy): only wrap empty passthrough error bodies (fc3870a)
- Merge pull request #392 from Wibias/codex/issue-357-api-access (65c142f)
- fix(proxy): stop surfacing empty 503 bodies as Codex Unknown error (a17e50b)
- fix(gui): document /v1/models auth in German API Access copy (35b344a)
- test(api-access): tighten Messages gate and IPv6 Host coverage (68e7c40)
- fix(gui): address CodeRabbit ApiKeys i18n and UX nits (bb3ce17)
- fix(gui): move ApiKeys helpers out of the component module (55bda3b)
- fix(api-access): gate Messages, classify aliases, and use request host (80eb452)
- Merge remote-tracking branch 'upstream/dev' into codex/issue-357-api-access (47e933d)
- Merge pull request #391 from Wibias/codex/issue-374-subagent-model-fallback (4e5d010)
- merge(dev): resolve ApiKeys conflicts for API access PR (7f071f8)
- fix(subagents): require pool accounts from resolved routes (2fd77d8)
- Merge pull request #456 from Wibias/fix/update-restart-port-reclaim (642093a)
- fix(update): protect live allowlisted listeners from TCP row resets (c49908d)
- fix(subagents): classify fallback nativeness from resolved routes (dc3e500)
- Merge pull request #458 from Wibias/fix/issue-bot-noise (233f3f8)
- fix(ci): treat this/current/present issue as one-sided related attributions (af8711d)
- fix(subagents): preview account before fallback and finalize terminals (19a1d55)
- fix(ci): reject mixed HTTP/errno related failure signatures (a6b0b67)
- test(ci): lock related matcher against issue-number signature collision (6515086)
- fix(ci): address CodeRabbit findings on triage and translation durability (2085017)
- fix(ci): require shared quantifiers to bind to concrete failure tokens (0f645e4)
- fix(ci): reject related matches with distinct failure signatures (5de9a1c)
- test(subagents): use documented native slugs in encrypted fallback coverage (b251999)
- fix(ci): harden triage related matching and translation state safety (c48d45a)
- fix(subagents): settle fallback before normalize and share quota primes (04d6a5b)
- fix(ci): restore marker-only bot comments for English cooldown state (b3ce397)
- fix(ci): delete English control comments only after cache save (27f5e8c)
- fix(subagents): await quota prime, atomic fallback PUT, shared rate-limit health (8f467d2)
- fix(subagents): harden fallback routing for #391 (f7c8654)
- fix(subagents): address follow-up PR #391 review feedback (8cccf02)
- fix(subagents): address PR #391 review feedback (e0eca6a)
- fix(subagents): defer fallback until auth and record tee failures (449223e)
- fix(subagents): harden quota-aware model fallback routing (f5ac7ad)
- feat: quota-aware subagent model fallback chain (#374) (fb1320a)
- fix(ci): store English translation cooldown off the issue timeline. (ebdf864)
- Merge remote-tracking branch 'upstream/dev' into fix/issue-bot-noise (2626650)
- fix(update): never kill arbitrary ocx listeners during port reclaim (82fbe07)
- docs(grok): state what the integration actually does on non-loopback and reload (092dd74)
- fix(lifecycle): keep the Grok fence and the service in agreement on teardown (d736876)
- fix(grok): refuse auto-registration on non-loopback binds (e610760)
- fix(grok): canonicalize both TOML key segments and restore user config byte-for-byte (fbfb3d1)
- docs(devlog): fold A-gate audit into the roadmap — B1 reverts to refusing non-loopback auto-registration (env_key leaks the xAI session token), B5 makes inject injective, 030/040 close the teardown hole and the unsafe tests (9501018)
- docs(devlog): 260726 grok build production roadmap — blocker inventory + upstream source evidence + 5 implementation cycles (b2dc3c3)
- docs(devlog): wp6 receipt — pre-QA smokes (tool-call round-trip 2-layer proof, catalog, reasoning bridge) (644403e)
- docs(site): Grok Build integration guide (125e24f)
- docs(devlog): wp4 plan + receipt (ensure/restart hardening, heartbeat decision) (3e8a4ba)
- fix(cli): restart proceeds past service-manager stop failure (4dd417a)
- feat(grok): deterministic fence on ensure/restart + heartbeat safety regression (568a496)
- docs(devlog): wp3 design + receipt (grok config auto-inject, 4-round review) (c45e1c9)
- fix(grok): decode TOML \uXXXX/\UXXXXXXXX escapes when reserving user aliases (ee37fb5)
- fix(grok): recognize quoted/whitespace-padded TOML model headers for alias reservation (138f9de)
- fix(grok): data-safety hardening for config inject/strip (38a3c89)
- feat(grok): auto-register/unregister opencodex models in Grok Build config (b396508)
- feat(grok): fenced managed-block inject/strip module for ~/.grok/config.toml (dcef3b2)
- fix(usage): preserve raw adapter usage provenance via bridge onUsage callback (0422ce1)
- docs(devlog): wp1 receipt — usage details always-emit verified (3-way grok exit 0) (ed75438)
- fix(usage): always emit token-detail objects for strict Responses/chat clients (9a4d718)
- docs(devlog): grok-build bridge roadmap (a5727c5 pull, smoke matrix, wp1/wp2 plan) (a8c14fc)
- chore: .codexclaw 추적 해제 — gitignore 원래 의도로 복원 (db962fb)
- fix(ci): keep English translation state in bot-owned comments (4deed7f)
- docs(devlog): WP8 실행 영수증 — dev ebc62d1, CI 6/6, PR 8건+이슈 3건 close, 리뷰 11건 (4b80612)
- fix(ci): silence English translation bookkeeping and harden related-issue matches (9cba975)
- Merge remote-tracking branch 'upstream/dev' into fix/update-restart-port-reclaim (5c8ed6f)
- fix(update): harden port reclaim against foreign sockets and fake Windows signals. (772fc66)
- docs(devlog): WP8 A-gate 반영 — #426 STALE 보류, 게시 10건 확정, rebase 완료 문구 (ebc62d1)
- fix(update): reclaim configured port after stop instead of hopping (4feb9ac)
- feat(observability): response-store metrics + BizRouter preset (15dfa27)
- feat(gui): add custom models from provider workspace (#448) (121a351)
- docs(devlog): WP6 A-gate blocker 4건 반영 — source-side live count, required prop, Retry CTA, 테스트 배치 (42ba431)
- fix(models): make switches reflect final visibility (323bb93)
- docs(devlog): WP5 A-gate blocker 3건 반영 — Models.tsx 충돌 해소 계약, 빈 provider 규칙, stale-generation 테스트 (b4b591b)
- fix(codex): reset main runtime state after account switch (03e3f1b)
- docs(devlog): WP4 A-gate 반영 — 호환형 접근 A 확정, 정책 분리표, 2원인 활성화 테스트 (3cde9dd)
- fix(kiro): report context pressure for compaction (fc51700)
- docs(devlog): WP3 A-gate 활성화 공백 2건 반영 — fallback rebuilt estimate 구별, non-stream closure 활성화 (9f026e1)
- fix(responses): validate message content blocks before use (#435) (4cc7f69)
- docs(devlog): WP2 마지막 blocker — 통합 assertion을 Google wire 단독으로 확정 (fcacf6a)
- docs(devlog): WP2 fresh 감사 blocker 3건 반영 — 무효절 명시, 통합테스트에 image/file 활성화, file precedence 보강 (a63dc22)
- docs(devlog): WP2 계획 재설계 — 범위를 PR #436으로 환원, 빈 content 정규화 무효화 (529b020)
- docs(devlog): WP2 A-gate 라운드2 반영 — canonical diff 교체, call-site 정규화, file precedence, Cursor 회귀 (e2555ef)
- docs(devlog): WP2 A-gate blocker 4건 반영 — 빈 content 정규화, file precedence 개정, detail narrowing (43e0e16)
- fix(google): never emit empty or malformed content parts (#420) (74795ad)
- docs(devlog): WP1 A-gate residual 반영 — PRE_APPLY_HEAD 규칙, dev 기준점 갱신, 점유 마커 22건 기록 (6a72a6d)
- docs(devlog): A-gate residual 3건 정리 — sync.ts 경로 교정, 11건 범위, 체크리스트 이동 (cc1d6d4)
- docs(devlog): #426/#431 리뷰 본문 추가 — 게시대상 11건 전량 확보 (159e833)
- docs(devlog): A-gate 라운드2 blocker 반영 — 게시대상 11건 확정, #437 defer, WP6/WP7 게이트 필수화 (18306c2)
- docs(devlog): A-gate blocker 6건 반영 — 기준점 규칙, 보안 정책, PR manifest, 활성화 테스트 (221cf09)
- docs(devlog): 260725 PR/이슈 rework 로드맵 — 9문서 diff-level 계약 (25ae912)
- docs(readme): Claude Code 시연 GIF + 실행 우선 히어로 + X 핸들 (faaaf98)
- fix(api-access): address Codex review on model IDs and endpoint URLs (9a0e695)
- fix(api-access): address review feedback for external catalog page (fa9a05d)
- feat(api-access): expose gateway endpoints and external model catalog (f5e4466)
- fix(i18n): add missing Claude Desktop keys to ja/ru locales (6da54a8)
- fix(i18n): remove stray rebase conflict-marker lines from locale files (ed2ed67)
- Merge branch 'claudedesktop' into dev (418d29b)
- feat(claude): desktop prefer1m + Claude-shaped alias guard (Luna research 260722) (0c092de)
- feat(gui): desktop status bar + effort transparency + health display (bfb90da)
- feat(claude): desktop auto-apply + health monitoring (80cbbc5)
- feat(claude): desktop client surface discrimination in request logging (c675804)
- feat(claude): desktop applied-state fingerprint + transactional write + status endpoint (c046965)
- fix(claude): stabilize desktop apply and legacy aliases (32a9980)
- feat(gui): add Claude Desktop family editor (dd25bf8)
- fix(claude): protect unavailable desktop routes (b832afb)
- docs(claude): explain desktop family routing (03d6af8)
- feat(claude): add desktop family profiles (2f9dca0)
Full Changelog: v2.7.40-preview.20260725...v2.7.41-preview.20260726