Repository navigation
fix(service-settings): translate Data Lifecycle settings; AI & Knowledge help in business words - #28139
Conversation
…d locale The Data Lifecycle page is objectql's lifecycleSettingsManifest, and no bundle carried a settings.lifecycle entry, so its hub card and every field read English under zh-CN, ja-JP and es-ES. - Add settings.lifecycle (title, description, each key's label and help) to the zh-CN, ja-JP and es-ES settings bundles, in the terms the Setup sidebar and the object lifecycle forms already use. - The coverage test now checks every manifest whose copy the bundle carries: the bundled slate plus the hosted platform manifests another package registers into the same hub (objectql's lifecycle), so the lifecycle namespace is declared, not exempted. - The Setup/hub parity test drops HUB_UNTRANSLATED: every hub page must carry a translated title in each shipped locale. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016WV4d1Np3hU7RQnA13YZcL
…ords The help on Setup -> Settings -> AI & Embedder and Knowledge named the env vars a saved key or model stands in for, the trace object, the embedding call and the knowledge source's config path, in en, zh-CN, ja-JP and es-ES. - Rewrite those strings in the manifests (the English fallback) and in the four packs the way the Authentication / Feature Flags / Mail help was rewritten: a saved key or gateway model is used instead of the one in the server configuration; traces, batch size, indexing defaults and over-fetch say what they do. Code spans around model examples become plain text; the examples stay. - The business-words pin now sweeps the ai and knowledge namespaces too, with teeth cases for the strings this was filed for. No key, default, option or validation changes. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016WV4d1Np3hU7RQnA13YZcL
📓 Docs Drift CheckThis PR changes 1 package(s): 2 hand-written doc(s) NAME something this change touched and may need an implementation-accuracy re-verification:
⛔ 1 release-owned page(s) also name something this change touched. These are read-only:
What this run could not see
Coarse fallback — 9 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): Which tree this was computed onThis run read A worktree cut from an older # while this PR is open — GitHub drops the merge commit once it closes
git fetch origin 4c8b92bba4dc8c897f9e6025c7309e65c03c3868 && git checkout 4c8b92bba4dc8c897f9e6025c7309e65c03c3868
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 121d1a5ffbf716bf1c3fc56e17f6eafe9fff804d 66e91af7948cb2eb3f1ee00569c5f6e3e7ae3a1f && git checkout -B drift-repro 121d1a5ffbf716bf1c3fc56e17f6eafe9fff804d && git merge --no-ff 66e91af7948cb2eb3f1ee00569c5f6e3e7ae3a1f
node scripts/docs-audit/affected-docs.mjs --json 121d1a5ffbf716bf1c3fc56e17f6eafe9fff804d
|
|
domain:server#4 · os-elon-musk · session_016WV4d1Np3hU7RQnA13YZcL 维护者速读
席位意见:ACCEPT。 席位核对Head-sha:
|
domain:server#4 · os-elon-musk · session_016WV4d1Np3hU7RQnA13YZcL
Fixes #28064
Fixes #28069
What changes
#28064: the Data Lifecycle settings page is translated
settings.lifecycleis added to the zh-CN, ja-JP and es-ES files ofsettingsBuiltinTranslations(packages/services/service-settings/src/translations/). It covers the title, the description, and each key's label and help (enabled,retention_overrides,quotas,quota_defaults,growth_alert_rows).数据生命周期/データライフサイクル/Ciclo de vida de los datos).enkeeps falling back to the manifest literals, as it does forsms.settings-translation-coverage.test.tsnow checks every manifest whose copy this bundle carries: the bundled manifests plus a named list of hosted platform manifests.lifecycleSettingsManifest.lifecycleand that no namespace is declared twice.setup-nav-hub-parity.test.tsdropsHUB_UNTRANSLATED. Its per-locale test is now "every hub page carries a translated title", so the sidebar-vs-hub label comparison also runs for Data Lifecycle.translations/index.tsdocblock names the hosted namespace.#28069: AI & Embedder and Knowledge help is in business words
This applies the treatment #28063 gave Authentication / Feature Flags / Mail. The manifest literals (the English fallback) and the en / zh-CN / ja-JP / es-ES packs change together:
OPENAI_API_KEY" (andANTHROPIC_API_KEY,GOOGLE_GENERATIVE_AI_API_KEY,AI_GATEWAY_MODEL). The settings manifest has no per-field docs-link slot, so, as in fix(service-settings): Settings help in business words; Country is a picker that shows names and stores the code #28063, the env var names leave the help entirely. They stay in the code comment beside the Reset action and in the deployment docs.sys_ai_trace.embed().KnowledgeSource.adapterConfig).topK × overFetch, no "JS-side").IDataEngine(manifest and zh-CN).provider/model,openai/gpt-4o,default) become plain text or quotes. The examples stay, because they are what the administrator types.settings-help-business-words.pin.test.tsnow sweepsaiandknowledgeas well asauth,feature_flagsandmail. It adds teeth cases for the strings settings: AI & Embedder and Knowledge help still name env vars,sys_ai_traceand code calls (#27521 row 2 remainder) #28069 was filed for, plus a negative case showing that model examples are not flagged.No key, default, option or validation changes in either part.
packages/objectqlis untouched. There are twopatchchangesets for@objectstack/service-settings.Why
#28064: Setup → All Settings → Data Lifecycle read English under zh-CN, ja-JP and es-ES: the card title, its description and every field. Every other settings page and the sidebar entry for this page were translated.
lifecycleSettingsManifest, and no bundle carriedsettings.lifecycle.*.#28069: the help under AI & Embedder and Knowledge read like code comments in all four languages. It named env vars, the trace object, a code call and a config path that an administrator can neither see nor change from this page. Triage ruled that the help says what the setting does in business words. It is the remainder of #27521 row 2, whose other pages #28063 fixed.
Verification
All readings are against the worktree at
origin/main8cb8c7f4plus the two commits (273efdc1,b4c0a258).setup-nav-hub-parity.test.tswith the exception list emptiedexpected [ 'lifecycle' ] to deeply equal []settings-translation-coverage.test.ts, new test with the lifecycle entries removedzh-CN/ja-JP/es-ES covers settings.lifecyclenamespace:lifecyclesettings-help-business-words.pin.test.tssweepingaiandknowledge, against the old helpai.keys.openai_api_key.help → env var or error code: OPENAI_API_KEY,ai.trace_enabled.description → … sys_ai_trace,knowledge.indexing.description → camelCase code identifier: adapterConfig@objectstack/service-settingspnpm test@objectstack/service-settingspnpm typecheck.tsfilescheck:adr-0087-registration,check:changeset-fixed,check:empty-changeset,check:doc-authoring,check:cross-package-test-inputscheck-commit-card-trailers --range origin/main..HEADNo test outside
service-settingspinned the old AI or Knowledge help:git grepfor each replaced phrase finds only releasedCHANGELOG.mdentries.维护者速读
settings.lifecycle.*translations) #28064:在内置设置翻译包的 zh-CN / ja-JP / es-ES 中补上「数据生命周期」页(settings.lifecycle)的标题、描述和 5 个字段的 label 与 help。覆盖测试把 objectql 的lifecycleSettingsManifest列为“托管清单”,纳入同一覆盖规则。对齐测试删除HUB_UNTRANSLATED。sys_ai_traceand code calls (#27521 row 2 remainder) #28069:「AI 与嵌入」和「知识库」的帮助文字改成业务用语(清单与四个语言包同步),不再出现环境变量名、sys_ai_trace、embed()、KnowledgeSource.adapterConfig、topK × overFetch。业务用语钉子测试扩展到这两个命名空间。settings-translation-coverage.test.ts的hostedManifests(规则是否合理)。manifests/ai.manifest.ts中 API Key 的新说法「用于代替服务器配置中设定的密钥」。settings-help-business-words.pin.test.ts新增的命名空间与 teeth 用例。pnpm --filter @objectstack/service-settings test。或者把控制台切到中文、日文或西班牙文,打开 设置 → 数据生命周期 / AI / 知识库,看标题与帮助。Clause-②: no
Metadata-protocol: none
🤖 Generated with Claude Code
https://claude.ai/code/session_016WV4d1Np3hU7RQnA13YZcL