Skip to content

Add Traditional Chinese (zh-TW) localization for GUI, README, and docs (resync) - #1440

Merged
Wibias merged 27 commits into
lidge-jun:devfrom
letr1n1ty:feat/zh-tw-localization
Aug 11, 2026
Merged

Add Traditional Chinese (zh-TW) localization for GUI, README, and docs (resync)#1440
Wibias merged 27 commits into
lidge-jun:devfrom
letr1n1ty:feat/zh-tw-localization

Conversation

@letr1n1ty

@letr1n1ty letr1n1ty commented Aug 10, 2026

Copy link
Copy Markdown

Summary

Adds full Traditional Chinese (zh-TW) support for the dashboard language picker, the README, and the docs site — resynced onto the latest dev. This PR supersedes the closed #581.

Traditional Chinese dashboard (real rendered surface, zh-TW locale active):

zh-TW dashboard

  • Taiwan-style zh-TW GUI dictionary (1972 keys, typed 1:1 against the English source).
  • Browser-language auto-detection with zh-TW/zh-Hant → Traditional and the rest of zh → Simplified.
  • /zh-tw Starlight locale with full source parity (36/36 localized page inventory), all pages resynced against current English content.
  • README.zh-TW.md and language links across every README variant.
  • An automated locale key-parity + placeholder guard so stale English placeholders fail the build.

What changed relative to the closed #581

The prior PR was closed on 2026-08-10, landing on dev from July 48d59a8a. dev advanced 2100+ commits since then, including an i18n architecture migration (catalogs.ts registry + LabLocale + a new tr locale). This PR re-hosts zh-TW on the new architecture, resyncs the whole catalog, and brings the docs back to content parity:

  1. i18n architecture migration — zh-TW re-homed on catalogs.ts / lab-translations.ts / status-codes.ts / routing-compatibility-labels.ts / vision-reasoning-labels.ts, with tr wired in everywhere.
  2. zh-TW catalog fully resynced — 352 new keys added since the July sync (integrations.*, routing.*, lab.*, pws.*, accountPool.*, uptime.*, pws.connectionNotApplicable, …) translated to Traditional Chinese; 5 keys retired by dev removed. 1972 ⇔ 1972.
  3. Locale parity infrastructure includes trsync-locale-keys.mjs, the key-set parity guard, and en.ts's header comment all cover Turkish now; every Record<Locale,…> surface has zh-TW and tr.
  4. Docs content parity (not just file inventory) — a deep per-page resync found and fixed real drift: reference/configuration.md and reference/cli.md rewritten as index pages matching the reduced English source; guides/providers.md updated to 79 presets with Cockpit Tools Antigravity import, OAuth reliability, Kiro credential import, A6API credit meter, pool-capacity and rate-limit sections; reference/configuration/routing.md fully retranslated (policy profiles, exact Codex account selectors, request-history analytics, migration); reference/cli/lifecycle.md gained ocx ready and ocx service repair; plus missing sections added across contributing, web-dashboard, server, cli/providers-accounts, sub-agent-surface, combos, claude-code, grok-build, opencode, codex-integration, quickstart, and codex-app-models. 34 of 35 pages now match the English section count exactly (the sole delta is an empty English heading with no content).

Addressing the changes-requested review items

1. Translate the revived API / Subagents / Usage vocabulary — done; the revived workspaces plus the new integrations.*, routing.*, lab.*, pws.*, accountPool.* surfaces are in Traditional Chinese. Nothing was deleted in favor of the branch.

2. Automated locale key-parity checkgui/tests/locale-parity.test.ts has two guards (key-set parity for all locales including tr, and a zh-TW placeholder guard with an intentional allowlist). Both were driven red-once to prove they are not vacuous.

3. GUI tests + production build + docs build /zh-tw + rendered language-switch smoke test

  • bun run test (root) — 10791 pass / 7 skip / 0 fail (the one flake, server-xai-header-parity, passes in isolation and is unrelated).
  • bun run typecheck — 0 errors.
  • bun run privacy:scan — passed.
  • bun test (gui) — 759 pass / 0 fail (136 files), including locale-parity, i18n placeholder-contract, and the rewritten language-switch test.
  • bun run build:gui — production build succeeded.
  • docs-site build — 265 pages; all 36 /zh-tw/ pages render lang="zh-TW" with Traditional Chinese titles.
  • gui/tests/zh-tw-language-switch.test.tsx now mounts a real LanguageProvider surface and flips the locale through the actual language <Select> UI on the same mounted root: nav rows go Dashboard→儀表板, Providers→供應商, Subagents→子代理, Usage→用量, Integrations→整合, with no English leakage, and the test asserts localStorage("ocx-lang")==="zh-TW" and document.documentElement.lang==="zh-TW". A second case flips back to Simplified and verifies the picker stays functional.
  • Live GUI smoke (headless Chrome against the production build with ocx-lang=zh-TW) — rendered dashboard nav and providers workspace in Traditional Chinese; screenshot above.

4. Translation quality — follows the repository's established zh-TW conventions (供應商, 帳號, 任務, 閾值, 冷卻, 容錯移轉, 輪詢, 設定檔, 環境變數, 金鑰, 端點, 儀表板) and Taiwan usage (程式, 檔案, 網路, 預設, 權限, 取得, 回傳, 自訂, 標頭, 載入, 重新整理). Brand names, commands, config keys, and API paths stay in English. I can adjust any specific strings a Traditional-Chinese reviewer flags; the placeholder guard makes future drift fail visibly.

Verification matrix

  • git rev-list --count origin/dev...HEAD = ahead 24 / behind 0 (fully synced)
  • bun run typecheck — 0 errors
  • bun run test — 10791 pass / 7 skip / 0 fail
  • bun run privacy:scan — passed
  • bun test (gui) — 759 pass / 0 fail
  • bun run build:gui — production build succeeded
  • docs-site build — 265 pages; 36/36 /zh-tw/ localized page inventory
  • Docs content parity — 34/35 pages match English section counts; no stale version/preset strings
  • sync-locale-keys.mjs — all 7 locales up to date; zh-TW ⇔ en 1972 ⇔ 1972
  • Placeholder guard + key-set parity + real-mount language-switch smoke — all green, sabotage-verified
  • Real-surface GUI smoke — headless Chrome, zh-TW locale, screenshot attached

Notes

  • The only root-suite failure in a full run is server-xai-header-parity.test.ts (a timing-sensitive mock-fetch integration test that passes in isolation on macOS and is unrelated to localization); it also flakes on CI independent of this PR.
  • lint:gui fails locally due to a pre-existing ESLint environment issue in this checkout, unrelated to these changes.
  • This is a fork PR, so Cross-platform CI and React Doctor start as action_required — a maintainer must click "Approve and run workflows" once. enforce-target, hygiene, label, resolve-pr, and CodeRabbit pass.

Review readiness checklist

This PR stays in draft until every box below is ticked. Tick all four boxes once the requirements are met:

  • All CI tests are green on my local testing.

  • I pushed my PR to the latest dev commit.

  • I resolved all correct Codex and CodeRabbit findings.

  • My PR is ready for review.

Summary by CodeRabbit

  • New Features
    • Added Traditional Chinese language support across the dashboard, documentation site, status messages, formatting, and language selection.
    • Added comprehensive Traditional Chinese documentation, including installation, guides, references, troubleshooting, benchmark pages, and a complete README.
    • Added localized benchmark labels, navigation, metadata, routing labels, and interface text.
    • Expanded language links across localized README files, including Simplified Chinese navigation improvements.
  • Tests
    • Added locale coverage, translation parity, language-switching, formatting, and validation tests.

letr1n1ty and others added 14 commits July 28, 2026 08:44
Add a full Taiwan Traditional Chinese locale so Chinese users can pick
Simplified or Traditional instead of a single generic "中文" option.

- GUI: new zh-TW dictionary, locale wiring, uptime/token/status formatting
- README: new README.zh-TW.md and language switcher links
- Docs site: zh-tw locale, sidebar labels, landing/frontier copy
- Tests: include zh-TW in locale coverage lists
- Prefer 供應商 for provider wording in Traditional Chinese surfaces

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Point zh-tw docs links at /zh-tw, add missing grok-build and
windows-memory pages, polish GUI/README/frontier copy, and align
Cursor nativeLocalExec plus headless CLI docs with English.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Backfill Auth mode and Desktop sections, account selection, external
provider managers, missing config fields, debug stream labels, and
align the README sidecar bullet with English.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Align how-it-works sidecar steps with multi-backend selection,
fix grok-build manual-recipe heading anchor, escape bare pipes in
the headless CLI table, and use a host-only openai-responses baseUrl
example so /v1 is not doubled.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Keep zh-TW sidebar translations while adding the new opencode guide
entry from upstream, and bring the Traditional Chinese dictionary to
full key parity with en after the dev merge.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Translate the EN-only guides/opencode page so the zh-TW sidebar entry
resolves, addressing the post-merge CodeRabbit finding.
Merge origin/dev (c0ad57a) into feat/zh-tw-localization. Keep zh-TW
README/astro assets, absorb security advisory + account-pause copy, and
add the 13 new codexAuth pause/resume strings to zh-TW.
# Conflicts:
#	gui/tests/apikeys-layout.test.ts
# Conflicts:
#	docs-site/astro.config.mjs
#	docs-site/src/components/Header.astro
#	docs-site/src/components/Landing.astro
#	docs-site/src/data/README-frontier.md
Complete zh-TW docs parity with English source (33/33 pages):
- reference/cli/agents, lifecycle, providers-accounts
- reference/configuration/providers, server
- reference/management-api, proxy-formats
- guides/combos, image-bridge, pi, video-bridge
- getting-started/for-agents
- reference/configuration/agents, routing

All pages render Traditional Chinese with lang="zh-TW"; docs-site
build produces 247 pages; privacy:scan green.
# Conflicts:
#	README.md
#	docs-site/astro.config.mjs
#	gui/src/formatUptime.ts
#	gui/src/i18n/shared.ts
#	gui/src/status-codes.ts
#	readme/README.ja.md
#	readme/README.ko.md
#	readme/README.ru.md
#	readme/README.zh-CN.md
@github-actions

Copy link
Copy Markdown
Contributor

Deterministic PR hygiene checks passed.

@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Changes

The pull request adds Traditional Chinese (zh-TW/zh-tw) support across the GUI, documentation site, frontier data, README navigation, localized README content, locale utilities, and tests.

Traditional Chinese localization

Layer / File(s) Summary
Locale registration and site wiring
docs-site/astro.config.mjs, docs-site/src/components/*, gui/src/i18n/*
Registers Traditional Chinese in site navigation, locale detection, metadata, component translations, GUI catalogs, status messages, and formatting helpers.
Traditional Chinese documentation
docs-site/src/content/docs/zh-tw/*
Adds localized homepage, benchmarks, getting-started pages, guides, references, contributing content, and troubleshooting content.
README and frontier data
README.md, readme/*, docs-site/src/data/*, structure/06_docs-and-release.md
Adds README language links, a Traditional Chinese README, frontier translations, synchronization notes, and the /zh-tw public route.
Validation coverage
gui/tests/*, tests/*
Extends locale coverage, checks translation key parity, tests language switching, and validates Traditional Chinese formatting and OAuth strings.

Estimated code review effort: 4 (Complex) | ~45 minutes

Possibly related PRs

Suggested labels: documentation

Suggested reviewers: ingwannu, lidge-jun, wibias

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 7.14% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The changes satisfy issue #581 by adding zh-TW GUI, README, and docs support, locale validation, language-switch tests, and documentation parity updates.
Out of Scope Changes check ✅ Passed The changes remain within the localization scope of issue #581, including locale navigation, translation helpers, documentation, and related tests.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely summarizes the main change: adding Traditional Chinese localization across the GUI, README, and documentation.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

⏳ DRAFT

  • review readiness checklist open (0/4 boxes ticked).

What to do

  • Tick all four boxes in the PR description once you're done (currently 0/4).

Review readiness checklist

  • ⬜ All CI tests are green on my local testing.
  • ⬜ I pushed my PR to the latest dev commit.
  • ⬜ I resolved all correct Codex and CodeRabbit findings.
  • ⬜ My PR is ready for review.

0/4 boxes ticked.

Automatic draft conversion failed. Please convert this pull request to a draft manually until every box above is ticked.

@github-actions
github-actions Bot marked this pull request as draft August 10, 2026 23:50

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 32

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
gui/src/status-codes.ts (1)

31-41: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Use Taiwan terminology for permission text.

Lines 31 and 41 use 許可權. This is not standard Taiwan terminology. Use 權限 in both descriptions. This keeps the zh-TW catalog consistent with the PR localization objective.

Proposed fix
- "zh-TW": { label: "需要付款", description: "上游供應商因帳單、額度或方案許可權不可用而拒絕了請求。請儲值、更新帳單資訊或切換供應商。" },
+ "zh-TW": { label: "需要付款", description: "上游供應商因帳單、額度或方案權限不可用而拒絕了請求。請儲值、更新帳單資訊或切換供應商。" },

- "zh-TW": { label: "禁止存取", description: "帳號已認證,但無權使用此模型或操作。常見原因是方案/訂閱限制(例如 Ollama Cloud Pro)、組織策略或模型許可權——不一定是 API 金鑰無效。" },
+ "zh-TW": { label: "禁止存取", description: "帳號已認證,但無權使用此模型或操作。常見原因是方案/訂閱限制(例如 Ollama Cloud Pro)、組織策略或模型權限——不一定是 API 金鑰無效。" },
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@gui/src/status-codes.ts` around lines 31 - 41, Replace `許可權` with the
Taiwan-standard term `權限` in both affected `zh-TW` descriptions within the
status-code entries, leaving all other translations unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs-site/src/content/docs/zh-tw/getting-started/installation.md`:
- Around line 35-36: Insert a blank line between the closing fenced code block
and the following ::: marker in the installation documentation, preserving the
existing block content and directive structure.

In `@docs-site/src/content/docs/zh-tw/guides/claude-code.md`:
- Line 29: Add a blank line before the explanatory paragraph beginning with
“你自行匯出的變數始終優先。” so the preceding Markdown table is terminated and the paragraph
is not parsed as a table row.

In `@docs-site/src/content/docs/zh-tw/guides/codex-app-models.md`:
- Around line 103-108: The mode table currently labels the canonical default
mode as “base,” although the CLI and API accept “default.” Rename the “base” row
in the mode table to “default” and keep its existing behavior description
unchanged, so the documented mode names match the accepted literals.

In `@docs-site/src/content/docs/zh-tw/guides/codex-integration.md`:
- Around line 39-43: 更新 OpenAI API key 說明,明確區分模式:沒有可用的 forward 憑證時使用 API key,包括
Direct caller 憑證缺失或不可用;Pool 憑證缺失、過期或無效造成的認證失敗則返回 Pool 錯誤,不得回退至付費 API
呼叫。對應調整「OpenAI API key」與「兩者都沒有」段落,保持與影像路由行為一致。

In `@docs-site/src/content/docs/zh-tw/guides/image-bridge.md`:
- Line 12: Update the configuration link in the image bridge guide’s
introductory text to target the generated fragment for the existing “設定”
heading, or add and use an explicit stable anchor supported by the docs
renderer; ensure the link resolves correctly.

In `@docs-site/src/content/docs/zh-tw/guides/model-routing.md`:
- Around line 6-14: Update the routing rules in model-routing.md to document
that the reserved combo/<id> namespace is resolved before ordinary provider
routing, adding it as the first rule. Preserve the existing provider/model rule
for non-combo model IDs.

In `@docs-site/src/content/docs/zh-tw/guides/pi.md`:
- Around line 50-57: 在「合併,絕不替換」的 caution 區塊中,將 JSON fenced code block 的結束標記與
`:::caution` 關閉標記分隔開;在結束反引號後加入一個空白行,保留現有指令與說明內容不變。

In `@docs-site/src/content/docs/zh-tw/guides/providers.md`:
- Around line 34-35: Update the `forward` entry in the providers guide to
describe forwarding only the allowlisted Codex authentication headers, rather
than forwarding them “as-is.” Preserve the provider ID, `authMode` values,
configuration keys, and all other technical identifiers exactly.
- Line 77: Update the Kiro row in the Providers guide so the shell pipe no
longer appears as a raw table delimiter; move the complete install command
outside the table or use a renderer-safe representation that displays the exact
command. Preserve the provider ID, URL, CLI commands, and all other localized
content exactly.

In `@docs-site/src/content/docs/zh-tw/guides/sidecars.md`:
- Line 116: Replace the internal TODO in the sidecars guide with user-facing
documentation describing the current Sidecar settings navigation and save
behavior, reusing the documented GUI and /api/sidecar-settings details from
web-dashboard.md; if GUI support is unavailable, clearly state that
configuration is supported only through config.json.
- Around line 77-79: Update the remote HTTPS image-fetching description in the
sidecars guide to say it is handled by the configured backend rather than
specifically by OpenAI, while preserving the existing scheme and data-size
constraints.

In `@docs-site/src/content/docs/zh-tw/guides/video-bridge.md`:
- Line 76: Update the 費用 note in the video bridge guide to remove the
unsupported 480p/720p pricing and use xAI’s model-based rates: $0.05/second for
grok-imagine-video and $0.08/second for grok-imagine-video-1.5. Link the current
xAI pricing documentation, or omit numeric estimates if linking is not
appropriate.

In `@docs-site/src/content/docs/zh-tw/guides/web-dashboard.md`:
- Around line 56-64: Update the caution text in the Sub-agent delegation section
to remove the claim that v2 never applies overrides or that all v2 subagents
inherit the parent model. Describe the scoped behavior documented by the
sub-agent interface: v2 guidance may override model and reasoning_effort for
fork_turns set to "none" or partial forks, while full-history forks inherit the
parent model; retain the clarification that this is not general agent-side
cross-model routing.

In `@docs-site/src/content/docs/zh-tw/reference/adapters.md`:
- Around line 85-87: Insert a blank line between the paragraph ending with「供
web-search loop 使用。」and the subsection heading「### 完成與原生 stop reason」to satisfy
the Markdown heading-spacing requirement.
- Line 2: Translate the visible frontmatter title in the zh-tw adapter reference
page from “Adapters” to the repository’s Taiwan term “轉接器”. Preserve all
technical literals, including ProviderAdapter, adapter IDs, endpoint paths, auth
modes, and model IDs.

In `@docs-site/src/content/docs/zh-tw/reference/architecture.md`:
- Line 12: Update the opening fenced code block in the architecture
documentation to specify the text language tag, using ```text for the module
tree diagram so it satisfies the markdown lint requirement.

In `@docs-site/src/content/docs/zh-tw/reference/cli.md`:
- Line 242: Update the `ocx account` command listings in `cli.md` and
`providers-accounts.md` to include all dispatcher-supported public commands: add
`login`, `reauth`, `code`, `cancel`, `reset-credits`, `alias`, `priority`,
`clear-cooldown`, `import`, and `main` where appropriate. Add corresponding
descriptions consistent with the command implementations in
`src/cli/account.ts`, and keep both documentation pages’ command lists aligned.

In `@docs-site/src/content/docs/zh-tw/reference/cli/agents.md`:
- Line 84: In the no-scope `ocx debug` description, replace `用量` with `用法` so it
matches the documented CLI behavior in the corresponding reference. Leave the
surrounding provider and usage-debug defaults unchanged.
- Around line 64-65: Escape the internal option separators in the inline command
examples for `ocx logs` and `ocx usage` by replacing each command-argument `|`
with `\|`, while preserving the table’s column separator and all command syntax.

In `@docs-site/src/content/docs/zh-tw/reference/configuration.md`:
- Around line 126-128: Add the text language identifier to the fenced code block
containing x-opencodex-api-key, changing the fence from an untyped block to a
text- or http-tagged block while preserving its contents.
- Around line 34-39: Align the configuration documentation across
configuration.md and agents.md by documenting syncCodexSubagentDefaults,
subagentModelFallback, and subagentModelFallbackPollMs, and add the fallback
placeholder to the injectionPrompt description. Update the role fallback
guidance in agents.md to use subagentModelFallbackByModel instead of
model_fallback, reflecting the supported key and its actual precedence from the
configuration and doctor logic. Keep both pages consistent and note that newer
Codex versions reject model_fallback in role files.

In `@docs-site/src/content/docs/zh-tw/reference/configuration/routing.md`:
- Around line 12-25: Synchronize both referenced sections of
docs-site/src/content/docs/zh-tw/reference/configuration/routing.md with the
current routing contract: add routingProfiles and document policy/<id>
resolution first, then exact <account-selector>/<native-openai-model> routes
before combo resolution; in the native alias section, document nativeAlias: true
as the exception for supported bare native aliases and require displayName for
that mode.

In `@docs-site/src/content/docs/zh-tw/troubleshooting/windows-memory.md`:
- Around line 24-26: Update the RSS watchdog, `ocx doctor`, and `GET
/api/system/memory` documentation to describe observed memory as the maximum of
RSS, external memory, and arrayBuffers, not RSS alone. Ensure both CLI and API
descriptions explain or expose this same calculation so users can correctly
identify native-memory retention when any counter is highest.
- Line 37: Update the Windows memory troubleshooting instructions to tell users
with an already installed service to run `ocx service repair` after setting
`OPENCODEX_BUN_PATH`; clarify that `ocx service install` only creates the
durable service definition and does not update an existing one, while keeping
the same-shell requirement.

In `@docs-site/src/data/frontier-i18n.ts`:
- Around line 398-414: Update the zh-TW sourceNote entries for
`frontier.board.aa-intelligence-index.sourceNote` and
`frontier.board.frontiercode.sourceNote` to preserve the English provenance
qualifications: headline totals only match where noted, chart segment splits are
approximate, and FrontierCode’s version, date, mergeability definition, and
Best/All reasoning-mode scope remain explicit. In
`frontier.board.program-bench.sourceNote`, replace `擴充套件排行榜` with `擴展排行榜` or
equivalent while preserving the rest of the meaning.

In `@gui/scripts/sync-locale-keys.mjs`:
- Line 11: Add "tr" to the locale lists used by sync-locale-keys.mjs
(gui/scripts/sync-locale-keys.mjs:11), locale-parity.test.ts
(gui/tests/locale-parity.test.ts:3), and en.ts (gui/src/i18n/en.ts:1) so Turkish
participates in synchronization, parity checks, and runtime locale selection.

In `@gui/tests/locale-parity.test.ts`:
- Line 3: Update the LOCALES constant in the locale parity test to include the
registered "tr" locale, ensuring the existing parity check validates Turkish
alongside every other runtime locale.

In `@gui/tests/zh-tw-language-switch.test.tsx`:
- Around line 49-95: Update the language-switch test around LanguageProvider and
Probe to mount one real localized application component, then trigger the locale
selector or provider locale-change action from the initial English state and
assert the same mounted surface updates to zh-TW labels. Remove reliance on
resetting navigator.language between independent server renders, and verify the
visible English labels are replaced after the in-place switch.

In `@readme/README.zh-TW.md`:
- Line 1: Update the README title from h3 to h1, and add the text language
identifier to the fenced code blocks beginning at lines 43 and 387, preserving
their contents.
- Line 28: Update the language navigation line in README.zh-TW.md to include a
link to README.tr.md, matching the placement and formatting used by README.md
and README.zh-CN.md while preserving the existing language links.
- Around line 2-3: Update the README title text in the centered introductory
paragraph to replace the translated prose phrase “provider 代理” with “供應商代理”,
while preserving any English “provider” usages that are identifiers or required
technical literals.
- Around line 384-385: In the remote-access installation instruction, remove the
duplicated “請在” by changing the second occurrence before `ocx service install`
to “在”, while preserving the rest of the sentence.

---

Outside diff comments:
In `@gui/src/status-codes.ts`:
- Around line 31-41: Replace `許可權` with the Taiwan-standard term `權限` in both
affected `zh-TW` descriptions within the status-code entries, leaving all other
translations unchanged.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 858614b7-b23f-4ef5-85ed-151fd3d0e593

📥 Commits

Reviewing files that changed from the base of the PR and between 7b377ce and 80d10cb.

📒 Files selected for processing (80)
  • README.md
  • docs-site/astro.config.mjs
  • docs-site/src/components/FrontierBoards.astro
  • docs-site/src/components/Header.astro
  • docs-site/src/components/Landing.astro
  • docs-site/src/components/SiteJsonLd.astro
  • docs-site/src/content/docs/zh-tw/benchmarks/coding.mdx
  • docs-site/src/content/docs/zh-tw/benchmarks/frontend.mdx
  • docs-site/src/content/docs/zh-tw/benchmarks/index.mdx
  • docs-site/src/content/docs/zh-tw/benchmarks/intelligence.mdx
  • docs-site/src/content/docs/zh-tw/benchmarks/security.mdx
  • docs-site/src/content/docs/zh-tw/benchmarks/terminal.mdx
  • docs-site/src/content/docs/zh-tw/contributing.md
  • docs-site/src/content/docs/zh-tw/contributing/pr-quality.md
  • docs-site/src/content/docs/zh-tw/getting-started/for-agents.md
  • docs-site/src/content/docs/zh-tw/getting-started/how-it-works.mdx
  • docs-site/src/content/docs/zh-tw/getting-started/installation.md
  • docs-site/src/content/docs/zh-tw/getting-started/quickstart.md
  • docs-site/src/content/docs/zh-tw/guides/claude-code.md
  • docs-site/src/content/docs/zh-tw/guides/codex-app-models.md
  • docs-site/src/content/docs/zh-tw/guides/codex-integration.md
  • docs-site/src/content/docs/zh-tw/guides/combos.md
  • docs-site/src/content/docs/zh-tw/guides/grok-build.md
  • docs-site/src/content/docs/zh-tw/guides/image-bridge.md
  • docs-site/src/content/docs/zh-tw/guides/integrations.md
  • docs-site/src/content/docs/zh-tw/guides/model-ordering.md
  • docs-site/src/content/docs/zh-tw/guides/model-routing.md
  • docs-site/src/content/docs/zh-tw/guides/opencode.md
  • docs-site/src/content/docs/zh-tw/guides/pi.md
  • docs-site/src/content/docs/zh-tw/guides/providers.md
  • docs-site/src/content/docs/zh-tw/guides/routing-profile-editor.md
  • docs-site/src/content/docs/zh-tw/guides/sidecars.md
  • docs-site/src/content/docs/zh-tw/guides/sub-agent-surface.md
  • docs-site/src/content/docs/zh-tw/guides/video-bridge.md
  • docs-site/src/content/docs/zh-tw/guides/web-dashboard.md
  • docs-site/src/content/docs/zh-tw/index.mdx
  • docs-site/src/content/docs/zh-tw/reference/adapters.md
  • docs-site/src/content/docs/zh-tw/reference/architecture.md
  • docs-site/src/content/docs/zh-tw/reference/cli.md
  • docs-site/src/content/docs/zh-tw/reference/cli/agents.md
  • docs-site/src/content/docs/zh-tw/reference/cli/lifecycle.md
  • docs-site/src/content/docs/zh-tw/reference/cli/providers-accounts.md
  • docs-site/src/content/docs/zh-tw/reference/configuration.md
  • docs-site/src/content/docs/zh-tw/reference/configuration/agents.md
  • docs-site/src/content/docs/zh-tw/reference/configuration/providers.md
  • docs-site/src/content/docs/zh-tw/reference/configuration/routing.md
  • docs-site/src/content/docs/zh-tw/reference/configuration/server.md
  • docs-site/src/content/docs/zh-tw/reference/management-api.md
  • docs-site/src/content/docs/zh-tw/reference/proxy-formats.md
  • docs-site/src/content/docs/zh-tw/troubleshooting/windows-memory.md
  • docs-site/src/data/README-frontier.md
  • docs-site/src/data/frontier-i18n.ts
  • gui/scripts/sync-locale-keys.mjs
  • gui/src/components/QuotaBars.tsx
  • gui/src/format-tokens.ts
  • gui/src/i18n/catalogs.ts
  • gui/src/i18n/en.ts
  • gui/src/i18n/lab-translations.ts
  • gui/src/i18n/routing-compatibility-labels.ts
  • gui/src/i18n/shared.ts
  • gui/src/i18n/vision-reasoning-labels.ts
  • gui/src/i18n/zh-TW.ts
  • gui/src/status-codes.ts
  • gui/tests/apikeys-layout.test.ts
  • gui/tests/claude-auth-mode-badge.test.ts
  • gui/tests/claude-desktop-locale.test.ts
  • gui/tests/grok-page.test.ts
  • gui/tests/locale-parity.test.ts
  • gui/tests/subagents-classic.test.ts
  • gui/tests/usage-grok-filter.test.ts
  • gui/tests/usage-layout.test.ts
  • gui/tests/zh-tw-language-switch.test.tsx
  • readme/README.ja.md
  • readme/README.ko.md
  • readme/README.ru.md
  • readme/README.zh-CN.md
  • readme/README.zh-TW.md
  • structure/06_docs-and-release.md
  • tests/dashboard-uptime.test.ts
  • tests/oauth-tos-warning.test.ts

Comment thread docs-site/src/content/docs/zh-tw/getting-started/installation.md
Comment thread docs-site/src/content/docs/zh-tw/guides/claude-code.md
Comment thread docs-site/src/content/docs/zh-tw/guides/codex-app-models.md Outdated
Comment thread docs-site/src/content/docs/zh-tw/guides/codex-integration.md Outdated
Comment thread docs-site/src/content/docs/zh-tw/guides/image-bridge.md Outdated
Comment thread gui/tests/zh-tw-language-switch.test.tsx Outdated
Comment thread readme/README.zh-TW.md
Comment thread readme/README.zh-TW.md Outdated
Comment thread readme/README.zh-TW.md Outdated
Comment thread readme/README.zh-TW.md Outdated
Captured the real dashboard surface (providers workspace) with the
zh-TW locale active — nav shows 儀表板/供應商/模型/子代理/整合, language
picker shows 繁體中文, and the providers copy is fully translated.
@letr1n1ty
letr1n1ty marked this pull request as ready for review August 11, 2026 00:23
@github-actions
github-actions Bot marked this pull request as draft August 11, 2026 00:23
@letr1n1ty
letr1n1ty marked this pull request as ready for review August 11, 2026 00:24
@github-actions
github-actions Bot marked this pull request as draft August 11, 2026 00:25
…aiwan terms, docs drift resync

- sync-locale-keys.mjs / locale-parity / en.ts header now include tr
- zh-tw-language-switch test mounts a real LanguageProvider surface and
  flips locale through the actual Select UI (same DOM, persistence, lang)
- zh-TW.ts/README zh-TW term fixes: 獲取→取得, 請求頭→標頭, provider 代理→供應商代理
- README language rows gain Türkçe/繁體中文 cross-links
- routing.md fully retranslated (policy profiles, exact account selectors,
  analytics, migration)
- providers.md gains Cockpit import, OAuth reliability, Kiro import, A6API,
  pool capacity, rate limits; presets 50→79
- lifecycle.md gains ocx ready + ocx service repair
Deep content-sync pass found and fixed real drift beyond file parity:
- configuration.md, cli.md: old full-text pages rewritten as index pages
  matching the reduced English source (4/4 sections each)
- contributing.md: +Branches/Pull requests/Project maintainers/preset evidence
- web-dashboard.md: +Sign-in/star-consent sections
- server.md: +local clients that cannot receive the token
- cli/providers-accounts.md: +ocx account priority/main
- sub-agent-surface/combos/claude-code/grok-build/opencode/codex-integration:
  missing sections added
- quickstart: 79 presets, current release wording
- codex-app-models: desktop remote-allowlist limitation + current coverage
Verified: docs build 265 pages, 34/35 files match en section count (sole
delta is an empty en heading), no stale v2.7.1/50-preset strings, no bare
internal links missing /zh-tw/.
@letr1n1ty
letr1n1ty marked this pull request as ready for review August 11, 2026 04:41
@github-actions
github-actions Bot marked this pull request as draft August 11, 2026 04:42

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (4)
readme/README.zh-TW.md (2)

139-139: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Use the localized GUI button label.

The zh-TW README instructs users to click "Add Provider", but the localized GUI action is shown as 新增供應商 in the PR objective. Users following the Traditional Chinese interface will not see the English label.

Proposed fix
-1. 點選 **"Add Provider"**。
+1. 點選 **「新增供應商」**(英文介面為 **"Add Provider"**)。
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@readme/README.zh-TW.md` at line 139, Update the instruction near the
localized GUI action to replace the English label “Add Provider” with the
Traditional Chinese label “新增供應商”, preserving the existing formatting and
meaning.

116-116: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Translate remaining provider prose to 供應商.

Lines 116, 125, 140, and 235 use English provider in translated prose. Keep provider only for identifiers, adapter names, commands, URLs, or exact technical labels. Replace these prose occurrences with 供應商.

This is the same terminology issue previously raised for the title, but additional occurrences remain. The PR objective specifies Taiwan-style terminology such as 供應商.

Also applies to: 125-125, 140-140, 235-235

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@readme/README.zh-TW.md` at line 116, Update the remaining translated prose
occurrences of “provider” in the README, including the entries around lines 116,
125, 140, and 235, to use “供應商”. Preserve “provider” only where it is part of an
identifier, adapter name, command, URL, or exact technical label.
docs-site/src/content/docs/zh-tw/reference/cli/providers-accounts.md (1)

61-72: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Include the documented subcommands in the usage synopsis.

Line 62 omits priority and main, although this page documents ocx account priority at Lines 166-189 and ocx account main at Lines 191-235. Users who follow the synopsis will not discover these commands.

Proposed fix
-Usage: ocx account <list|current|use|refresh|auto-switch|login|reauth|code|cancel|remove|add-key|reset-credits> ...
+Usage: ocx account <list|current|use|refresh|auto-switch|priority|main|login|reauth|code|cancel|remove|add-key|reset-credits> ...

As per path instructions: user-facing docs must stay in sync with actual CLI/API behavior.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs-site/src/content/docs/zh-tw/reference/cli/providers-accounts.md` around
lines 61 - 72, Update the `ocx account` usage synopsis to include the documented
`priority` and `main` subcommands alongside the existing command list, keeping
the synopsis synchronized with the commands described later on the page.

Source: Path instructions

docs-site/src/content/docs/zh-tw/getting-started/installation.md (1)

34-34: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Use an npm-supported script approval command.

@bitkyc08/opencodex@2.12.0 depends on bun@1.3.14, whose postinstall script is node install.js. However, npm 11.12.1 reports Unknown cli config "--allow-scripts" for lines 31 and 34, so these commands do not enable the Bun script. Document the supported npm version and command, or replace this fallback with the supported approval flow.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs-site/src/content/docs/zh-tw/getting-started/installation.md` at line 34,
Update the installation command in the getting-started documentation to use
npm’s supported script-approval flow instead of the unrecognized --allow-scripts
option. Document the required npm version and supported command so Bun’s
postinstall script is enabled, and update both affected installation examples
consistently.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs-site/src/content/docs/zh-tw/guides/codex-app-models.md`:
- Line 115: Update the sentence in the Codex app models guide so the phrase
`只有未被遮蔽的原生列可以切換` uses natural passive wording, replacing it with
`只有未被遮蔽的原生列可供切換` or `只有未被遮蔽的原生列可以被切換`; leave the surrounding text unchanged.

In `@docs-site/src/content/docs/zh-tw/guides/opencode.md`:
- Around line 58-59: In the zh-TW OpenCode guide, add a blank line between the
closing fenced block and the admonition terminator `:::`. In the localized
Providers guide, revise the `authMode: "forward"` description to state that only
allowlisted Codex authentication headers are forwarded, while preserving the
`openai-responses` adapter. Complete the A6API failure sentence so it clearly
states that malformed, negative, or inconsistent totals produce no report rather
than a misleading quota entry.

In `@docs-site/src/content/docs/zh-tw/guides/providers.md`:
- Line 206: Update the A6API quota-probing sentence to complete the invalid
billing-total behavior, explicitly stating that malformed, negative, or
internally inconsistent totals produce no misleading entry or report. Preserve
the surrounding description of sending active keys only to the standard host and
rejecting redirects.

In `@docs-site/src/content/docs/zh-tw/reference/cli.md`:
- Line 15: Convert the four level-two headings in the CLI documentation,
including “命令家族” and the headings at the other reported locations, from ATX
syntax to the configured setext heading style. Preserve each heading’s text and
level, using the appropriate setext underline for level two.
- Around line 1-5: Remove the leading blank line before the YAML front matter in
the CLI reference document so the opening delimiter starts at line 1, preserving
the existing title and description metadata.

In `@docs-site/src/content/docs/zh-tw/reference/cli/lifecycle.md`:
- Line 169: Update both plain-text output code fences in the lifecycle
documentation to specify the text language tag, changing each opening fence to
```text to resolve MD040 while leaving the fenced content unchanged.

In `@docs-site/src/content/docs/zh-tw/reference/configuration.md`:
- Around line 1-5: Remove the leading blank line before the frontmatter in the
configuration documentation so the opening `---` delimiter is the first
character of the file, preserving the existing `title` and `description`
metadata.

In `@gui/tests/zh-tw-language-switch.test.tsx`:
- Around line 58-97: Update setupDom and teardownDom to snapshot each global in
domGlobals with Object.getOwnPropertyDescriptor(globalThis, key), then restore
the exact descriptor or delete the property when no descriptor existed. Remove
previousLanguage and the afterEach restoration of navigator.language; only
modify testWindow.navigator.language during setup.

---

Outside diff comments:
In `@docs-site/src/content/docs/zh-tw/getting-started/installation.md`:
- Line 34: Update the installation command in the getting-started documentation
to use npm’s supported script-approval flow instead of the unrecognized
--allow-scripts option. Document the required npm version and supported command
so Bun’s postinstall script is enabled, and update both affected installation
examples consistently.

In `@docs-site/src/content/docs/zh-tw/reference/cli/providers-accounts.md`:
- Around line 61-72: Update the `ocx account` usage synopsis to include the
documented `priority` and `main` subcommands alongside the existing command
list, keeping the synopsis synchronized with the commands described later on the
page.

In `@readme/README.zh-TW.md`:
- Line 139: Update the instruction near the localized GUI action to replace the
English label “Add Provider” with the Traditional Chinese label “新增供應商”,
preserving the existing formatting and meaning.
- Line 116: Update the remaining translated prose occurrences of “provider” in
the README, including the entries around lines 116, 125, 140, and 235, to use
“供應商”. Preserve “provider” only where it is part of an identifier, adapter name,
command, URL, or exact technical label.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 29d60639-93f9-4d7c-8f85-0a9dd26c05db

📥 Commits

Reviewing files that changed from the base of the PR and between 80d10cb and 6ab2698.

⛔ Files ignored due to path filters (1)
  • assets/zh-tw-providers.png is excluded by !**/*.png
📒 Files selected for processing (33)
  • docs-site/src/content/docs/zh-tw/contributing.md
  • docs-site/src/content/docs/zh-tw/getting-started/how-it-works.mdx
  • docs-site/src/content/docs/zh-tw/getting-started/installation.md
  • docs-site/src/content/docs/zh-tw/getting-started/quickstart.md
  • docs-site/src/content/docs/zh-tw/guides/claude-code.md
  • docs-site/src/content/docs/zh-tw/guides/codex-app-models.md
  • docs-site/src/content/docs/zh-tw/guides/codex-integration.md
  • docs-site/src/content/docs/zh-tw/guides/combos.md
  • docs-site/src/content/docs/zh-tw/guides/grok-build.md
  • docs-site/src/content/docs/zh-tw/guides/model-ordering.md
  • docs-site/src/content/docs/zh-tw/guides/opencode.md
  • docs-site/src/content/docs/zh-tw/guides/pi.md
  • docs-site/src/content/docs/zh-tw/guides/providers.md
  • docs-site/src/content/docs/zh-tw/guides/sidecars.md
  • docs-site/src/content/docs/zh-tw/guides/sub-agent-surface.md
  • docs-site/src/content/docs/zh-tw/guides/web-dashboard.md
  • docs-site/src/content/docs/zh-tw/reference/adapters.md
  • docs-site/src/content/docs/zh-tw/reference/architecture.md
  • docs-site/src/content/docs/zh-tw/reference/cli.md
  • docs-site/src/content/docs/zh-tw/reference/cli/lifecycle.md
  • docs-site/src/content/docs/zh-tw/reference/cli/providers-accounts.md
  • docs-site/src/content/docs/zh-tw/reference/configuration.md
  • docs-site/src/content/docs/zh-tw/reference/configuration/routing.md
  • docs-site/src/content/docs/zh-tw/reference/configuration/server.md
  • docs-site/src/content/docs/zh-tw/reference/management-api.md
  • docs-site/src/content/docs/zh-tw/reference/proxy-formats.md
  • gui/scripts/sync-locale-keys.mjs
  • gui/src/i18n/en.ts
  • gui/src/i18n/zh-TW.ts
  • gui/tests/locale-parity.test.ts
  • gui/tests/zh-tw-language-switch.test.tsx
  • readme/README.tr.md
  • readme/README.zh-TW.md

Comment thread docs-site/src/content/docs/zh-tw/guides/codex-app-models.md Outdated
Comment thread docs-site/src/content/docs/zh-tw/guides/opencode.md
Comment thread docs-site/src/content/docs/zh-tw/guides/providers.md Outdated
Comment thread docs-site/src/content/docs/zh-tw/reference/cli.md
Comment thread docs-site/src/content/docs/zh-tw/reference/cli.md
Comment thread docs-site/src/content/docs/zh-tw/reference/cli/lifecycle.md
Comment thread docs-site/src/content/docs/zh-tw/reference/configuration.md
Comment thread gui/tests/zh-tw-language-switch.test.tsx
- installation.md: blank line after fenced block before admonition
- image-bridge.md: fix #configuration anchor to the translated #設定
- pi.md: blank line between fence and admonition close
- adapters.md: translate page title (Adapters → 轉接器); blank line
  before subsection heading
- windows-memory.md: sync observed-memory (max of RSS/external/arrayBuffers)
  and use ocx service repair for existing services
- codex-app-models.md: natural passive wording (可供切換)
- README.zh-TW.md: drop duplicated 請在

Other CodeRabbit findings were reviewed and intentionally left aligned
with the English source (table pipe escapes, v1/base/v2 labels, xAI
pricing note, TODO comments, h3 README hero) or are obsolete since the
pages were rewritten.
@letr1n1ty
letr1n1ty marked this pull request as ready for review August 11, 2026 05:56
@github-actions
github-actions Bot marked this pull request as draft August 11, 2026 05:56
@letr1n1ty
letr1n1ty marked this pull request as ready for review August 11, 2026 05:58
@github-actions
github-actions Bot marked this pull request as draft August 11, 2026 05:59
- providers.md: Nous Portal OAuth preset (8 OAuth presets), ocx login nous,
  nous table row + refresh note
- sub-agent-surface.md: catalog-trust section (fresh/not_running/stale/unknown)
- claude-code.md: thinking disabled maps to reasoning:{effort:none}; tool_choice
  hosted WebSearch entry
- reference/configuration/providers.md: noStructuredOutputModels field
- reference/proxy-formats.md: structured-output translation paragraph

Re-merge onto dev 0c17052 (was 38 commits behind; gate blocked readiness).
@letr1n1ty
letr1n1ty marked this pull request as ready for review August 11, 2026 06:14

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs-site/src/content/docs/zh-tw/guides/sub-agent-surface.md`:
- Around line 194-197: 澄清 stale 與 unknown 狀態下的行為:更新鄰近表格說明與段落,明确指出 opencodex
不會新增或覆寫模型指引,但會保留既有的磁碟衍生宣稱,包括偏好模型、roster、fallback 與自訂指引。
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 6576b564-4491-4427-b3cf-d8a5c861b92d

📥 Commits

Reviewing files that changed from the base of the PR and between 65962bd and a0d47ad.

📒 Files selected for processing (5)
  • docs-site/src/content/docs/zh-tw/guides/claude-code.md
  • docs-site/src/content/docs/zh-tw/guides/providers.md
  • docs-site/src/content/docs/zh-tw/guides/sub-agent-surface.md
  • docs-site/src/content/docs/zh-tw/reference/configuration/providers.md
  • docs-site/src/content/docs/zh-tw/reference/proxy-formats.md

Comment thread docs-site/src/content/docs/zh-tw/guides/sub-agent-surface.md Outdated
@github-actions
github-actions Bot marked this pull request as draft August 11, 2026 06:20
stale/unknown states do not add or overwrite opencodex-authored guidance,
consistent with the withholding paragraph below.
@letr1n1ty
letr1n1ty marked this pull request as ready for review August 11, 2026 06:22
@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

@github-actions[bot] The pull request is marked ready for review. I will review the changes.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Tip

For best results, initiate chat on the files or code changes.

@github-actions[bot] Acknowledged. The PR is marked ready for review, and the review has already been triggered.

You are interacting with an AI system.

@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Tip

For best results, initiate chat on the files or code changes.

@github-actions[bot] Noted. The PR is ready for review, and the CodeRabbit review is already in progress.

You are interacting with an AI system.

@Wibias Wibias left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Requesting changes for one remaining test-isolation bug on the current head.

gui/tests/zh-tw-language-switch.test.tsx snapshots only the values of the globals it replaces, then recreates those globals with new Object.defineProperty descriptors during teardown. That does not restore the original property descriptors: omitted descriptor fields default to false, so writability/enumerability/accessor semantics can be changed for document, window, navigator, localStorage, and IS_REACT_ACT_ENVIRONMENT for later tests. The separate navigator.language restoration has the same problem.

Please capture the complete original PropertyDescriptor for each replaced global and for navigator.language, then restore those descriptors exactly (or delete the property when it was originally absent). Add/adjust the regression so teardown proves the original descriptors are restored, not only the original values.

The zh-TW production wiring itself looks sound. This request is specifically about leaving shared test globals in a mutated state after this new smoke test runs.

Also note that the PR is currently one commit behind dev, so the readiness claim that it is fully synced should be refreshed before merge.

document: { configurable: true, value: testWindow.document },
window: { configurable: true, value: testWindow },
navigator: { configurable: true, value: testWindow.navigator },
localStorage: { configurable: true, value: testWindow.localStorage },

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This saves only the current values, but teardown later reconstructs the globals with new descriptors. Object.defineProperty(..., { configurable: true, value }) defaults omitted descriptor fields such as writable and enumerable to false, and it cannot restore an accessor descriptor. Please snapshot Object.getOwnPropertyDescriptor(globalThis, k) for every replaced global and restore the exact original descriptor (or delete when originally absent). Do the same for navigator.language, which is currently restored by value only.

@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Tip

For best results, initiate chat on the files or code changes.

@github-actions[bot] Acknowledged. The PR is ready for review. The reported quality gates and hygiene checks passed.

You are interacting with an AI system.

@github-actions
github-actions Bot marked this pull request as draft August 11, 2026 07:35
@Wibias
Wibias marked this pull request as ready for review August 11, 2026 08:17

@Wibias Wibias left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving. zh-TW is re-hosted on the current i18n architecture with key parity, placeholder guards, docs content parity, and the language-switch teardown now restores original browser global descriptors. The macOS CI red is an unrelated Cursor blob-ID ceiling timeout flake, not localization.

@Wibias

Wibias commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

Thanks @letr1n1ty — this was useful because it brings Traditional Chinese back as a first-class locale after the i18n architecture migration, instead of leaving Taiwan/zh-Hant users stuck on Simplified or stale July translations. The resync (1972-key GUI catalog, /zh-tw docs parity, README, auto-detect, and locale-parity guards) makes zh-TW maintainable on current dev rather than another abandoned fork of #581.

Merging now.

@Wibias
Wibias merged commit 20c5131 into lidge-jun:dev Aug 11, 2026
23 of 26 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants