You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* feat(i18n): make action resultDialog copy translatable (schema slot + resolver + platform bundles)
The one-shot secret-reveal dialogs (create-user temporary password, 2FA
backup codes, OAuth client secrets) always rendered hardcoded English:
the translation protocol had no slot for Action.resultDialog, so neither
the bundles nor any resolver could localize the dialog's title,
description, acknowledge button, or field labels.
- spec: add ActionResultDialogTranslationSchema and hang it off object
`_actions`, `globalActions`, and the object-first `_actions` node.
`fields` is keyed by the LITERAL result-field path ("user.email") —
keys may contain dots, resolvers index the record directly. New
resolveActionResultDialog overlay resolver, wired into translateAction.
- cli: `os i18n extract` emits resultDialog.title/description/acknowledge
and resultDialog.fields.<path> entries (dotted paths stay one segment).
- platform-objects: fill the en / zh-CN / ja-JP / es-ES bundles for all
six shipped resultDialogs (sys_user create_user + set_user_password,
sys_two_factor enable + regenerate backup codes, sys_oauth_application
register + rotate secret).
Client-side rendering lands in objectui (@object-ui/i18n
actionResultDialog + result-dialog handlers). Verified end-to-end against
a live showcase instance: the create-user and set-password dialogs render
fully localized in zh-CN.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(ci): escape NUL separator in extract test; regenerate translation reference doc
- The dots-preserved assertion in i18n-extract.test.ts embedded two raw
NUL bytes (0x00) as join separators, tripping the raw-NUL-byte guard --
use the unicode escape sequence instead (byte-identical at runtime).
- Regenerate content/docs/references/system/translation.mdx for the new
resultDialog translation node (gen:schema + gen:docs).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* chore(spec): record ActionResultDialogTranslation additions in the API surface snapshot
Additive only (4 new exports, 0 breaking) -- the resultDialog translation
schema/type and its slots on the action translation nodes.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
|**fields**|`Record<string, string>`| optional | Result field labels keyed by the literal field path declared in the action metadata (keys may contain dots) |
40
+
41
+
26
42
---
27
43
28
44
## AppTranslationBundle
@@ -110,7 +126,7 @@ Translation data for a single object
description: "Save the client_secret now — it is shown only once and cannot be recovered. You can rotate it later if it leaks.",
1329
+
acknowledge: "I have saved the client secret",
1330
+
fields: {
1331
+
"client.client_id": "Client ID",
1332
+
"client.client_secret": "Client Secret"
1333
+
}
1290
1334
}
1291
1335
},
1292
1336
rotate_client_secret: {
1293
1337
label: "Rotate Client Secret",
1294
-
confirmText: "Rotate this OAuth client's secret? The previous secret will stop working immediately and any integrations using it will break until they are updated with the new secret. The new secret is shown only once."
1338
+
confirmText: "Rotate this OAuth client's secret? The previous secret will stop working immediately and any integrations using it will break until they are updated with the new secret. The new secret is shown only once.",
1339
+
resultDialog: {
1340
+
title: "Client secret rotated",
1341
+
description: "Save the new secret now — it is shown only once. Update every integration before the previous secret's grace period ends.",
0 commit comments