Skip to content

Commit 8bcffc3

Browse files
committed
docs: correct the hand-written pages that still taught the retired keys (#4667)
The generated `content/docs/references/**` pages regenerate themselves; these six sites are hand-written and had to be read. - `ui/apps.mdx` documented `homePageId` in the property table, named it in the prose explaining why nav `id` is required, and authored it in the worked example. The same table also still advertised `objects`, `apis` and `mobileNavigation` — three keys #4142 retired, whose rows had outlived them. All four rows go; leaving a table that documents keys the schema now rejects is the docs half of the same defect this campaign exists to remove. - `ui/translations.mdx` had already noticed the problem — it listed `validationMessages` under "Current boundaries" as having no runtime consumer — but described it as a gap to be filled rather than a key to stop writing. Rewritten to point at `object.validations[].message`. - `protocol/kernel/i18n-standard.mdx` authored the group in its worked bundle and named it in the coverage-checking prose. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E5CYr5SDwe85gH2Jr5KSgu
1 parent d49fbc8 commit 8bcffc3

3 files changed

Lines changed: 11 additions & 11 deletions

File tree

content/docs/protocol/kernel/i18n-standard.mdx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,6 @@ const zh: TranslationData = {
193193
pages: { landing: { title: '欢迎' } },
194194
globalActions: { export_csv: { label: '导出 CSV' } },
195195
messages: { 'common.save': '保存' },
196-
validationMessages: { 'discount_limit': '折扣不能超过40%' },
197196
};
198197
```
199198

@@ -841,7 +840,7 @@ options: { 'Direct Mail': '直邮' } // ❌ keyed by the label — never resolv
841840
options: { 'direct-mail': '直邮' } // ❌ a variant spelling of the value
842841
```
843842

844-
`messages`, `validationMessages`, `settings`, `settingsCommon` and
843+
`messages`, `settings`, `settingsCommon` and
845844
`metadataForms` are **not** checked: their keys are owned by application code,
846845
plugins, and the platform's own metadata-type registry rather than by this
847846
stack's metadata, so there is no set of legal names to resolve against.

content/docs/ui/apps.mdx

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,6 @@ const crmApp = {
5050
| `navigation` | `NavigationItem[]` | optional | Navigation tree |
5151
| `branding` | `AppBranding` | optional | Visual customization |
5252
| `requiredPermissions` | `string[]` | optional | Required permissions to access |
53-
| `homePageId` | `string` | optional | ID of the navigation item to serve as the landing page |
54-
| `objects` | `unknown[]` | optional | Objects belonging to this app |
55-
| `apis` | `unknown[]` | optional | Custom APIs belonging to this app |
56-
| `mobileNavigation` | `object` | optional | Mobile-specific navigation |
5753

5854
## Navigation Items
5955

@@ -181,7 +177,8 @@ label — the only keys it accepts are `type`, an optional `id`, and an optional
181177

182178
All navigation items **except `separator`** share these base properties. Every
183179
item **must** declare a unique `id` (lowercase `snake_case`) — it is required by
184-
the schema and is referenced by `homePageId` and `mobileNavigation.bottomNavItems`.
180+
the schema, and it is what `order` sorts and what the landing page resolves to
181+
(the first item, since `homePageId` was removed in 17.0.0 — see below).
185182
(On a `separator`, `id` is optional and the remaining properties below are
186183
rejected — a divider has nothing to label, gate, or badge.)
187184

@@ -286,7 +283,9 @@ const projectApp = {
286283
],
287284

288285
requiredPermissions: ['pm_access'],
289-
homePageId: 'nav_home',
286+
// No `homePageId`: the landing page IS the first navigation item (by `order`),
287+
// and the ROOT landing follows `isDefault`. The key was removed in 17.0.0 (#4667)
288+
// because nothing ever read it.
290289
};
291290
```
292291

content/docs/ui/translations.mdx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -235,9 +235,11 @@ up-to-date bundle re-extracts byte-identically.
235235

236236
Honest limits worth knowing before you plan around them:
237237

238-
- **`validationMessages` has no runtime consumer today.** The schema accepts it
239-
and the coverage tooling counts it, but nothing reads it back — validation
240-
errors are not translated through bundles yet.
238+
- **Validation messages are not translated through bundles.** The
239+
`validationMessages` group was removed in 17.0.0 (#4667): it had no runtime
240+
consumer, so a translated rule message was stored and never shown. Author the
241+
message on the rule itself (`object.validations[].message`), which the engine
242+
returns on every rejected write.
241243
- **No ICU MessageFormat** — plural/gender formatting isn't available;
242244
interpolation is always simple `{variable}` substitution.
243245
- **Runtime authoring is process-wide.** The authored layer is synced across all

0 commit comments

Comments
 (0)