Skip to content

fix(i18n): use the Pi form's own term for the zh-TW duplicate-key message - #7187

Merged
farion1231 merged 1 commit into
farion1231:mainfrom
ntdatt812:fix/zh-tw-provider-key-term
Sep 22, 2026
Merged

farion1231 merged 1 commit into
farion1231:mainfrom
ntdatt812:fix/zh-tw-provider-key-term

Conversation

@ntdatt812

Copy link
Copy Markdown
Contributor

Follow-up to your nit on #6768 — thank you for flagging it, you were right.

In zh-TW the Pi form labels the field 供應商識別碼 and says 供應商識別碼為必填 when it is empty, but the duplicate message I added said 供應商標識 — the term Hermes, OpenCode and OpenClaw use for their field. One form, two names for the same thing.

Checking the other three locales, they all keep the label and both messages on a single term, so zh-TW was the only one that split:

locale label required duplicate
en Provider key Provider key is required This provider key already exists
ja プロバイダーキー プロバイダーキーを入力してください このプロバイダーキーは既に存在します
zh 供应商标识 供应商标识不能为空 该供应商标识已存在
zh-TW 供應商識別碼 供應商識別碼為必填 該供應商標識已存在

So this is not a new convention, just zh-TW joining the one already there.

hermes.form.providerKeyDuplicate carries the same sentence and is deliberately untouched — its own label is 供應商標識, so it is already self-consistent. The string appears twice in the file; only the pi.form one is changed.

Verification

vitest run tests/config/managementListLocales.test.ts — 7/7.

Full unit suite: 1085/1087. The two failures are tests/integration/App.test.tsx cases that fail identically on main without this change; they pass when that file is run on its own, so they look order-dependent rather than related.

One note in case it saves you time later: my first full-suite run with this change showed a third App.test.tsx failure (duplicates openclaw providers…). Re-running gave the same two as the baseline, and that test does not touch i18n at all — it drives switch-openclaw / duplicate test ids. It looks flaky rather than real, but I would rather mention it than quietly drop it.

prettier --check clean.

…sage

Follow-up to the nit on farion1231#6768. In zh-TW the Pi form labels the field
供應商識別碼 and says 供應商識別碼為必填 when it is empty, but the
duplicate message I added said 供應商標識 — the term Hermes, OpenCode and
OpenClaw use for their own field. One form, two names for the same thing.

The other three locales already keep the label and both messages on one
term, so this makes zh-TW match the pattern rather than introduce one:

  en     Provider key / Provider key is required / This provider key already exists
  ja     プロバイダーキー / プロバイダーキーを入力してください / このプロバイダーキーは既に存在します
  zh     供应商标识 / 供应商标识不能为空 / 该供应商标识已存在
  zh-TW  供應商識別碼 / 供應商識別碼為必填 / 該供應商標識已存在  <- the odd one out

hermes.form.providerKeyDuplicate carries the same sentence and is left
alone: its own label is 供應商標識, so it is already consistent.

Verified: managementListLocales 7/7. Full unit suite 1085/1087, the same
two App.test.tsx integration cases failing before and after.
@github-actions github-actions Bot added frontend Frontend (React/TypeScript) i18n Internationalization (zh/en/ja) labels Sep 7, 2026
@farion1231

Copy link
Copy Markdown
Owner

@codex review

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 8, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-08T02:07:00.659530Z 62458dc Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Breezy!

Reviewed commit: 62458dc896

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Copy link
Copy Markdown
Owner

Thanks @ntdatt812 for following up and making the Pi form's zh-TW terminology consistent! The change looks good. I verified that only the intended translation changed; all 10 relevant locale and error-translation tests pass, and Prettier is clean. Thanks also for the detailed verification notes.

@farion1231
farion1231 merged commit de970c1 into farion1231:main Sep 22, 2026
5 checks passed
Alex-lsky pushed a commit to Alex-lsky/cc-switch that referenced this pull request Sep 26, 2026
…sage (farion1231#7187)

Follow-up to the nit on farion1231#6768. In zh-TW the Pi form labels the field
供應商識別碼 and says 供應商識別碼為必填 when it is empty, but the
duplicate message I added said 供應商標識 — the term Hermes, OpenCode and
OpenClaw use for their own field. One form, two names for the same thing.

The other three locales already keep the label and both messages on one
term, so this makes zh-TW match the pattern rather than introduce one:

  en     Provider key / Provider key is required / This provider key already exists
  ja     プロバイダーキー / プロバイダーキーを入力してください / このプロバイダーキーは既に存在します
  zh     供应商标识 / 供应商标识不能为空 / 该供应商标识已存在
  zh-TW  供應商識別碼 / 供應商識別碼為必填 / 該供應商標識已存在  <- the odd one out

hermes.form.providerKeyDuplicate carries the same sentence and is left
alone: its own label is 供應商標識, so it is already consistent.

Verified: managementListLocales 7/7. Full unit suite 1085/1087, the same
two App.test.tsx integration cases failing before and after.
kettybluce pushed a commit to kettybluce/cc-switch that referenced this pull request Oct 5, 2026
…sage (farion1231#7187)

Follow-up to the nit on farion1231#6768. In zh-TW the Pi form labels the field
供應商識別碼 and says 供應商識別碼為必填 when it is empty, but the
duplicate message I added said 供應商標識 — the term Hermes, OpenCode and
OpenClaw use for their own field. One form, two names for the same thing.

The other three locales already keep the label and both messages on one
term, so this makes zh-TW match the pattern rather than introduce one:

  en     Provider key / Provider key is required / This provider key already exists
  ja     プロバイダーキー / プロバイダーキーを入力してください / このプロバイダーキーは既に存在します
  zh     供应商标识 / 供应商标识不能为空 / 该供应商标识已存在
  zh-TW  供應商識別碼 / 供應商識別碼為必填 / 該供應商標識已存在  <- the odd one out

hermes.form.providerKeyDuplicate carries the same sentence and is left
alone: its own label is 供應商標識, so it is already consistent.

Verified: managementListLocales 7/7. Full unit suite 1085/1087, the same
two App.test.tsx integration cases failing before and after.

(cherry picked from commit de970c1)
tunecc added a commit to tunecc/cc-switch that referenced this pull request Oct 5, 2026
feat: gate dev panel behind dev-only env flag

chore(comet): archive ccs-sidebar-panels-visibility change

fix: apply skills visibility guard to hermes branch toolbar button

feat: include prompts in sidebar panel visibility settings

fix: persist visibleSidebarPanels setting in backend AppSettings

style: use compact pill toggles for sidebar panel visibility

feat: add sidebar panel visibility switches to settings

feat: add sidebar panel visibility settings and wire into toolbar buttons

chore(comet): archive ccs-home-model-display change

fix(fork): read grokbuild api key from config TOML in quick switch dialog

feat(fork): align model badge with upstream extractModelBadge

feat(fork): show current model badge and quick-switch entry on provider cards

feat(fork): add model quick switch dialog

feat(fork): add provider model read/write utils with tests

chore(comet): archive ccs-model-search-port change

feat(i18n): add model search picker keys for all locales

feat(form): port SearchableModelPicker from upstream for searchable model selection

chore(comet): archive ccs-claude-form-layout change

- Move change artifacts to docs/openspec/changes/archive/2026-08-19-ccs-claude-form-layout/
- Sync claude-form-layout spec to main specs
- Annotate design doc as archived
- Add verification report

fix(i18n): update advanced options hint, add ja/zh-TW toggle-all, drop dead apiFormatHint key

fix(form): correct 1M toggle-all alignment direction (ml-1)

fix(form): align 1M toggle-all checkbox with row checkboxes

refactor(form): move api format select into EndpointField rightSlot

fix(form): widen api format select to fit option text

feat(form): add 1M toggle-all checkbox in model mapping header

feat(form): move api format select next to endpoint input

chore(comet): archive ccs-provider-presets-trim change

- Move change artifacts to docs/openspec/changes/archive/2026-08-19-ccs-provider-presets-trim/
- Sync provider-presets-visibility spec to main specs
- Annotate design doc as archived
- Add verification report

docs(fork): add presets-trim files to rebase whitelist

test(fork): mock IS_FORK_BUILD false in unit tests for upstream-form semantics

feat(fork): wire official preset filter into provider forms

feat(fork): add hidden field to preset interfaces

feat(fork): add official preset allowlist and filter util

chore(comet): archive ccs-fork-scaffolding change

- Move change artifacts to docs/openspec/changes/archive/2026-08-18-ccs-fork-scaffolding/
- Sync fork-build-identity spec to main specs
- Annotate design doc as archived
- Add verification report

feat(fork): add dev config with isolated identifier and config dir

docs(fork): complete rebase whitelist with all fork-touched files

fix(fork): guard setTitle with isTauri in test/non-tauri env

fix(fork): define __CCS_FORK_BUILD__ in vitest config

feat(fork): add DevPanel and settings footer entry

feat(fork): set macOS window title to CC Switch (Fork) on startup

feat(fork): inject __CCS_FORK_BUILD__ compile-time constant

feat(fork): bump version to 3.19.2-fork.1 and rename product to CC Switch (Fork)

docs(fork): add upstream rebase workflow and ignore tool artifacts

fix(proxy): accept the whole grok-4.x (x>=5) family in the reasoning-effort whitelist (#7369)

Replace the verbatim grok-4.5 / grok-4.6 entries in supports_reasoning_effort with a rule that parses the grok-4.x minor version and accepts x >= 5, mirroring the existing GPT-5+ rule. This covers grok-4.7 (released 2026-09-21), whose reasoning effort was previously dropped on the Claude -> Chat, Claude -> Responses and Codex Responses -> Chat conversion paths, and lets future releases pass without another whitelist edit. The grok-build-* family is retained for saved providers.

Co-authored-by: allenxu09 <[email protected]>
docs(release): add v3.20.4 release notes

chore(release): v3.20.4

feat(pricing): add Grok 4.7 and GLM-5.3-FlashX

Both confirmed against the vendors' official pricing pages (docs.x.ai,
docs.z.ai) and match models.dev. Grok 4.7 records the base (<200K) tier
like 4.5/4.6.

fix(i18n): remove outdated OpenCode Go referral offer

fix: add SudoCode.chat alternate API endpoint

feat(settings): add a GitHub star prompt to the About card

Downloads and updates now go through ccswitch.io, so users no longer
pass through the GitHub repo and rarely star it. Surface the ask where
they still look: between the app title and the action buttons.

- Show a one-line prompt in the primary color that opens the repo,
  followed by a pointer toward the GitHub button
- Move the GitHub button to the front of the row so the pointer lands
  on it, tint it with the primary color (kept below the solid "check
  for updates" action), and add a slowly spinning star that stops
  under prefers-reduced-motion
- Add settings.starPrompt to all four locales

feat(presets): add Soshow aggregator presets

Add non-sponsor presets for Soshow Model Market (maas.so-show.com) across
Claude Code, Claude Desktop, Codex, OpenCode, OpenClaw, Hermes and Pi, plus
its icon.

- Claude Code sets CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS, which the vendor's
  Model API doc requires for the Claude protocol, and points the Haiku tier at
  claude-sonnet-5 since the market offers no Haiku model.
- Claude Desktop declares only the sonnet/opus routes: direct mode cannot map
  models, so passthroughRoutes() would expose a Haiku route that 404s.
- Codex uses native Responses at /v1. The route is not in the vendor docs but
  exists (unknown paths return 404, /v1/responses returns 401 without a key).
- OpenCode, OpenClaw, Hermes and Pi use the Anthropic protocol with the two
  Claude models, matching the vendor's OpenClaw guide.
- Gemini CLI is skipped: the native generateContent routes return 404.

fix(ci): stabilize frontend tests and verify renderer build

fix(mcode): refresh provider state after removal (#7578)

Co-authored-by: thisTom <[email protected]>
fix(lib): reset skip_taskbar before window.show() across entry points (#6348)

5处 window.show() 调用中 4处没有在 show() 前重置 Windows 的 skip_taskbar,导致以下场景出现窗口可见但不在任务栏、点最小化后窗口消失的 bug:

- single_instance handler (lib.rs:360-361):当原进程因 silent_startup / 关闭到托盘等处于 skip_taskbar(true) 状态时,从快捷方式/开始菜单唤起已运行实例触发。

- handle_deeplink_url 的 focus_main_window 分支 (lib.rs:256):通过 ccswitch:// URL 唤起时。

- DB 恢复流程 (lib.rs:556):数据库版本不匹配时显示恢复界面。

- RunEvent::Opened 处理器 (lib.rs:1803):系统接收到 deep-link URL 时。

修复后的行为与 tray.rs::h