@elytracms/studio 0.0.101 → 0.0.102

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/convex/asset-meta-patch.test.ts +7 -27
  2. package/convex/assets.ts +6 -41
  3. package/convex/cms.ts +2 -29
  4. package/convex/delivery.ts +2 -2
  5. package/convex/record-functions.ts +15 -82
  6. package/convex/redirects.ts +11 -116
  7. package/convex/schema.ts +4 -23
  8. package/convex/triggers.ts +7 -14
  9. package/dist/components/ai/ai-chat-panel.js +8 -5
  10. package/dist/components/ai/ai-chat-panel.js.map +1 -1
  11. package/dist/components/ai/translate-skipped.js +1 -0
  12. package/dist/components/ai/translate-skipped.js.map +1 -1
  13. package/dist/components/assets/asset-detail.js +1 -2
  14. package/dist/components/assets/asset-detail.js.map +1 -1
  15. package/dist/components/assets/asset-metadata.d.ts +2 -9
  16. package/dist/components/assets/asset-metadata.js +3 -10
  17. package/dist/components/assets/asset-metadata.js.map +1 -1
  18. package/dist/components/assets/asset-search.js +1 -1
  19. package/dist/components/assets/asset-search.js.map +1 -1
  20. package/dist/components/assets/asset-selection.js +2 -2
  21. package/dist/components/assets/asset-selection.js.map +1 -1
  22. package/dist/components/assets/assets-collection-view-source.d.ts +2 -3
  23. package/dist/components/assets/assets-collection-view-source.js +2 -3
  24. package/dist/components/assets/assets-collection-view-source.js.map +1 -1
  25. package/dist/components/builder/__fixtures__/reuse-race.d.ts +30 -0
  26. package/dist/components/builder/__fixtures__/reuse-race.js +77 -0
  27. package/dist/components/builder/__fixtures__/reuse-race.js.map +1 -0
  28. package/dist/components/builder/composition-field-editor.js +3 -3
  29. package/dist/components/builder/composition-field-editor.js.map +1 -1
  30. package/dist/components/builder/reuse-context.d.ts +2 -1
  31. package/dist/components/builder/reuse-context.js +5 -20
  32. package/dist/components/builder/reuse-context.js.map +1 -1
  33. package/dist/components/builder/reuse.d.ts +18 -11
  34. package/dist/components/builder/reuse.js +12 -14
  35. package/dist/components/builder/reuse.js.map +1 -1
  36. package/dist/components/cms/asset-field.js +1 -3
  37. package/dist/components/cms/asset-field.js.map +1 -1
  38. package/dist/components/cms/cell.d.ts +2 -2
  39. package/dist/components/cms/cell.js +8 -18
  40. package/dist/components/cms/cell.js.map +1 -1
  41. package/dist/components/cms/detail-editor.js +2 -1
  42. package/dist/components/cms/detail-editor.js.map +1 -1
  43. package/dist/components/cms/field-control.js +13 -1
  44. package/dist/components/cms/field-control.js.map +1 -1
  45. package/dist/lib/ai/chat-context.d.ts +6 -2
  46. package/dist/lib/ai/chat-context.js +11 -5
  47. package/dist/lib/ai/chat-context.js.map +1 -1
  48. package/dist/lib/ai/knowledge.d.ts +9 -9
  49. package/dist/lib/ai/knowledge.js +22 -0
  50. package/dist/lib/ai/knowledge.js.map +1 -1
  51. package/dist/lib/ai/tools.d.ts +8 -1
  52. package/dist/lib/ai/tools.js +33 -15
  53. package/dist/lib/ai/tools.js.map +1 -1
  54. package/dist/lib/ai/translate-document.d.ts +8 -1
  55. package/dist/lib/ai/translate-document.js +20 -5
  56. package/dist/lib/ai/translate-document.js.map +1 -1
  57. package/dist/lib/ai/update-fields.js +5 -12
  58. package/dist/lib/ai/update-fields.js.map +1 -1
  59. package/dist/lib/ai/writer-form.d.ts +61 -0
  60. package/dist/lib/ai/writer-form.js +218 -27
  61. package/dist/lib/ai/writer-form.js.map +1 -1
  62. package/dist/lib/assets/upload.d.ts +1 -2
  63. package/dist/lib/assets/upload.js +1 -2
  64. package/dist/lib/assets/upload.js.map +1 -1
  65. package/dist/lib/engine-version.d.ts +1 -1
  66. package/dist/lib/engine-version.js +1 -1
  67. package/dist/lib/engine-version.js.map +1 -1
  68. package/dist/lib/i18n/messages.de.js +9 -1
  69. package/dist/lib/i18n/messages.de.js.map +1 -1
  70. package/dist/lib/i18n/messages.en.d.ts +7 -0
  71. package/dist/lib/i18n/messages.en.js +11 -1
  72. package/dist/lib/i18n/messages.en.js.map +1 -1
  73. package/dist/lib/operations/cms-persistence.d.ts +20 -10
  74. package/dist/lib/operations/cms-persistence.js +11 -3
  75. package/dist/lib/operations/cms-persistence.js.map +1 -1
  76. package/dist/lib/persistence/convex-adapter.js +7 -2
  77. package/dist/lib/persistence/convex-adapter.js.map +1 -1
  78. package/package.json +3 -3
  79. package/convex/asset-alt-migration.test.ts +0 -127
  80. package/convex/redirect-migration.test.ts +0 -205
  81. package/convex/version-kind-stamping.test.ts +0 -118
@@ -1 +1 @@
1
- {"version":3,"file":"messages.en.js","sourceRoot":"","sources":["../../../src/lib/i18n/messages.en.ts"],"names":[],"mappings":"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","sourcesContent":["import { msg } from './types'\nimport type { SourceCatalog } from './types'\n\n/**\n * The engine's built-in **English source catalog** (EC-241) — the source of truth\n * and the ultimate fallback for every studio-chrome string. A consumer adds a\n * language via `defineStudio({ i18n: { locales: { de: deMessages } } })`; a key\n * missing from the active locale falls back to the English `message` here, then to\n * the key itself (a visible fallback + a one-time console signal), never a silent\n * blank.\n *\n * Organised by surface. `common.*` holds generic, reused affordances (buttons,\n * status words); every other namespace maps to one studio surface. Values that come\n * from the project's schema/config (field labels, collection names, component\n * manifests) are NOT here — those are `LocalizedString`s resolved by `resolveLabel`\n * (the separate schema-label axis).\n *\n * Scope honesty (EC-241): this covers the studio's **component chrome**. A handful\n * of `lib/*` label helpers (`persona/labels`, `cms-views` operator labels,\n * `auth-errors`, `clipboard` summaries, core `describeAccept`) and the JSX-chip\n * developer boot hints (backend/workspace gates) are a documented follow-up — they\n * need a message-with-elements splitter beyond the plain-string `translate()`.\n */\nconst MESSAGES = {\n // ─────────────────────────────────────────────────────────────────────────\n // Common — generic, reused across surfaces\n // ─────────────────────────────────────────────────────────────────────────\n 'common.save': msg('Save'),\n 'common.saving': msg('Saving…'),\n 'common.saveChanges': msg('Save changes'),\n 'common.cancel': msg('Cancel'),\n 'common.delete': msg('Delete'),\n 'common.remove': msg('Remove'),\n 'common.add': msg('Add'),\n 'common.edit': msg('Edit'),\n 'common.close': msg('Close'),\n 'common.copy': msg('Copy'),\n 'common.duplicate': msg('Duplicate'),\n 'common.select': msg('Select'),\n 'common.clear': msg('Clear'),\n 'common.apply': msg('Apply'),\n 'common.upload': msg('Upload'),\n 'common.retry': msg('Retry'),\n 'common.discard': msg('Discard'),\n 'common.dismiss': msg('Dismiss'),\n 'common.loading': msg('Loading…'),\n 'common.searchPlaceholder': msg('Search…'),\n 'common.none': msg('None'),\n 'common.required': msg('required', 'Badge on a required field/slot — lowercase.'),\n 'common.optional': msg('optional', 'Badge on an optional slot — lowercase.'),\n 'common.yes': msg('Yes'),\n 'common.no': msg('No'),\n 'common.true': msg('true', 'Boolean value display — the literal on-state word.'),\n 'common.false': msg('false', 'Boolean value display — the literal off-state word.'),\n 'common.backendUnreachable': msg('The persistence backend is unreachable.'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // Built-in navigation views (the section rail)\n // ─────────────────────────────────────────────────────────────────────────\n 'nav.cms.label': msg('Content'),\n 'nav.cms.description': msg('Model collections, fields, and documents.'),\n 'nav.components.label': msg('Components'),\n 'nav.components.description': msg('Browse the registry of primitives and project components.'),\n 'nav.redirects.label': msg('Redirects'),\n 'nav.redirects.description': msg('Create and manage URL redirects (301/302) for this site.'),\n 'nav.assets.label': msg('Assets'),\n 'nav.assets.description': msg('Manage uploaded media and metadata.'),\n 'nav.users.label': msg('Users'),\n 'nav.users.description': msg('Manage who has access to this deployment and their role.'),\n 'nav.settings.label': msg('Settings'),\n 'nav.settings.description': msg('Configure project metadata and locales.'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // Current-user menu (shell header)\n // ─────────────────────────────────────────────────────────────────────────\n 'userMenu.accountMenu': msg('Account menu', 'aria-label on the avatar button that opens the user menu.'),\n 'userMenu.lightMode': msg('Light mode', 'Menu item: switch the studio to the light colour theme.'),\n 'userMenu.darkMode': msg('Dark mode', 'Menu item: switch the studio to the dark colour theme.'),\n 'userMenu.accountSettings': msg('Account settings'),\n 'userMenu.soon': msg('Soon', 'Badge on a feature that is not available yet.'),\n 'userMenu.signOut': msg('Sign out'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // Shell — top bar, section rail, boot/error frames, project chrome\n // ─────────────────────────────────────────────────────────────────────────\n 'shell.allProjects': msg('All projects', 'aria-label on the home/logo link in the top bar.'),\n 'shell.breadcrumb.label': msg('Breadcrumb', 'aria-label on the breadcrumb navigation landmark.'),\n 'shell.nav.label': msg('Sections', 'aria-label on the vertical section rail.'),\n 'shell.sidebar.expand': msg('Expand sidebar'),\n 'shell.sidebar.collapse': msg('Collapse sidebar'),\n 'shell.sidebar.collapseLabel': msg('Collapse', 'Verb label beside the collapse icon on the expanded rail.'),\n 'shell.nav.planned': msg('Planned', 'Tooltip on the status dot of a planned (not-yet-enabled) nav view.'),\n 'shell.nav.collapseView': msg('Collapse {name}', 'aria-label on a parent nav item disclosure; {name} is the view label.'),\n 'shell.nav.expandView': msg('Expand {name}', 'aria-label on a parent nav item disclosure; {name} is the view label.'),\n // EC-690 — the ONE notification-and-issue surface: the header badge and its issues tray.\n 'shell.notices.title': msg('Issues', 'Title (and aria-label) of the issues tray the header badge opens.'),\n 'shell.notices.open': msg('Show issues: {summary}', 'aria-label of the header issues badge; {summary} is shell.notices.none or e.g. \"2 errors, 1 warning\".'),\n 'shell.notices.none': msg('No issues', 'The header badge summary when nothing needs attention.'),\n 'shell.notices.errors.one': msg('{count} error'),\n 'shell.notices.errors.other': msg('{count} errors'),\n 'shell.notices.warnings.one': msg('{count} warning'),\n 'shell.notices.warnings.other': msg('{count} warnings'),\n 'shell.notices.empty': msg('Nothing needs your attention.', 'The issues tray with no notice and no finding.'),\n 'shell.notices.goTo': msg('Go to', 'Link on a finding in the issues tray that opens where it is (a redirect row, a document).'),\n 'shell.notices.dismiss': msg('Dismiss', 'aria-label of the dismiss button on a notice in the issues tray.'),\n 'shell.notices.declaredInProject': msg('in {file}', 'Where a project-config finding is fixed; {file} is the project config file name (elytra.config.ts), untranslated.'),\n 'shell.notices.declaredInStudio': msg('in your defineStudio({…}) config', 'Where a studio-customization finding is fixed; defineStudio is code, untranslated.'),\n 'shell.notices.deploymentSettings': msg('Convex deployment: {settings}', 'Where a deployment finding is fixed; {settings} are environment variable names, untranslated.'),\n 'shell.notices.reservedSource': msg(\n 'An addon publishes findings under \"{source}\", a source name the engine reserves. Rename the source it passes to useNavIssues.',\n 'Error finding: an addon used an engine-reserved source name. {source} and useNavIssues are code, untranslated.',\n ),\n // EC-606 — stored documents whose collection the project no longer declares. One\n // warning at the rail foot; {collections} joins one item message per collection.\n 'shell.nav.orphanedCollections': msg(\n 'Stored documents of collections this project does not declare are hidden from the studio: {collections}. To bring them back, declare the collection in \"{file}\" again (or restore its old id).',\n 'Warning at the rail foot. {collections} is a comma-separated list of shell.nav.orphanedCollections.item / .itemPublished; {file} is the project config file name (elytra.config.ts), untranslated.',\n ),\n 'shell.nav.orphanedCollections.item': msg(\n '\"{collection}\" ({count} stored)',\n 'One entry of shell.nav.orphanedCollections. {collection} is a collection id (an identifier, untranslated); {count} a number of documents.',\n ),\n 'shell.nav.orphanedCollections.itemPublished': msg(\n '\"{collection}\" ({count} stored, {published} published)',\n 'One entry of shell.nav.orphanedCollections when some of its documents are published. {collection} is a collection id (untranslated); {count} and {published} are numbers.',\n ),\n 'shell.sectionState.empty.title': msg('Nothing here yet'),\n 'shell.sectionState.empty.description': msg('This section has no content for the active project.'),\n 'shell.sectionState.loading.description': msg('Fetching the latest state for this section.'),\n 'shell.sectionState.error.title': msg('Something went wrong'),\n 'shell.sectionState.error.description': msg('This section could not be loaded. Try again in a moment.'),\n 'shell.sectionState.unavailable.title': msg('Not available'),\n 'shell.sectionState.unavailable.description': msg('This section is not available for the active project.'),\n 'shell.sectionState.planned.title': msg('Planned'),\n 'shell.sectionState.planned.description': msg('This surface is planned and not yet enabled for this project.'),\n 'shell.sectionState.badge.empty': msg('empty', 'Status badge on the empty section state — lowercase token.'),\n 'shell.sectionState.badge.loading': msg('loading'),\n 'shell.sectionState.badge.error': msg('error'),\n 'shell.sectionState.badge.unavailable': msg('unavailable'),\n 'shell.sectionState.badge.planned': msg('planned'),\n 'shell.projectNotFound.title': msg('Project not found'),\n 'shell.projectNotFound.body': msg('This project doesn’t exist or was deleted. It may only have existed in this session.'),\n 'shell.backToProjects': msg('Back to projects'),\n 'shell.routeNotFound.title': msg('Page not found'),\n 'shell.routeNotFound.body': msg('This studio URL doesn’t resolve to a section.'),\n // EC-717 — the failure notice (the root catch-all and each lazily loaded surface).\n 'shell.failure.module.title': msg(\n 'This part of the studio could not be loaded',\n 'Heading of the notice shown when a lazily loaded part of the studio failed to download.',\n ),\n 'shell.failure.module.body': msg(\n 'Its code failed to download, usually because the dev server rebuilt its dependency cache while this tab was open. Go back to keep working; this part stays unavailable until the page is reloaded.',\n ),\n 'shell.failure.module.restartHint': msg('If reloading does not help, restart the dev server.'),\n 'shell.failure.error.title': msg('Something went wrong', 'Heading of the notice shown when the studio hit an unexpected error.'),\n 'shell.failure.error.body': msg('The studio hit an unexpected error here. Reloading the page usually recovers.'),\n 'shell.failure.back': msg('Back', 'Button on the failure notice: in-app navigation back, without reloading the page.'),\n 'shell.failure.reload': msg('Reload', 'Button on the failure notice: a full page reload.'),\n 'shell.failure.reloadCost': msg(\n 'Reloading empties the playground: everything created or changed in this tab is lost.',\n 'Shown under the Reload button in playground mode only.',\n ),\n 'shell.projectSwitcher.recent': msg('Recent'),\n 'shell.projects': msg('Projects'),\n 'shell.projectSwitcher.browseAll': msg('Browse all projects'),\n 'shell.project.notProvisioned': msg('not provisioned', 'Badge on a configured project with no backend yet.'),\n 'shell.projectList.recent': msg('Recent', 'Section label above recent-project chips (rendered uppercase).'),\n 'shell.projectList.empty.title': msg('No projects'),\n 'shell.projectCard.open': msg('Open project'),\n 'shell.session.loading': msg('Loading project…'),\n 'shell.session.error.title': msg('Couldn’t load this project’s saved state'),\n 'shell.session.error.body': msg('The studio never falls back to sample content against a live backend — your data is safe; retry once the backend is reachable.'),\n 'shell.workspaceGate.issuesLabel': msg(\n 'Workspace config issues',\n 'aria-label on the list of located config issues under a failing deployment-setup check (EC-626).',\n ),\n 'shell.backend.connecting': msg('Connecting to backend…'),\n 'shell.backend.notConfigured.title': msg('Backend not configured'),\n 'shell.backend.unavailable.title': msg('Backend unavailable'),\n 'shell.backend.unavailable.body': msg('The configured Convex deployment did not respond. Your data is safe on the backend — the studio will not switch to local storage.'),\n 'shell.backend.retryConnection': msg('Retry connection'),\n // EC-258 — the unified deployment-setup boot gate.\n 'shell.deploymentSetup.title': msg('Deployment setup'),\n 'shell.deploymentSetup.checking': msg('Checking deployment…'),\n 'shell.deploymentSetup.description': msg(\n 'The studio can’t boot until these are resolved. Fix each item below, then reload.',\n ),\n 'shell.deploymentSetup.issuesLabel': msg(\n 'Deployment setup checks',\n 'aria-label on the list of failing readiness checks.',\n ),\n 'shell.deploymentSetup.fixLabel': msg(\n 'Fix',\n 'Label before a copy-pasteable remediation command on the deployment-setup screen.',\n ),\n 'shell.deploymentSetup.retry': msg('Retry checks'),\n // EC-399 — expected deployment env vars (presence only) on the setup screen.\n 'shell.deploymentSetup.envSection': msg('Deployment environment'),\n 'shell.deploymentSetup.envSectionHint': msg(\n 'Env vars this deployment is expected to carry — presence only, values are never shown. `elytra doctor` checks them definitively.',\n ),\n 'shell.unsavedChanges.title': msg('Unsaved changes'),\n 'shell.unsavedChanges.body': msg('You have unsaved changes. Save them before leaving, or discard them.'),\n 'shell.unsavedChanges.saving': msg('Saving…'),\n 'shell.devLogin.badge': msg('Dev login'),\n 'shell.devLogin.hint': msg('Dev auto-login: the studio signed in automatically from VITE_ELYTRA_DEV_LOGIN (dev builds only). Unset it to test the real sign-in flow.'),\n 'shell.playground.badge': msg('Playground', 'Product term — may stay untranslated.'),\n 'shell.playground.hint': msg('Playground mode: data lives in memory on this device and resets on reload. Nothing is saved to a backend.'),\n // EC-690 — instant-publish health (EC-268), a finding of the issues tray (it was a banner).\n 'shell.deliveryHealth.title': msg('Instant publish not set up', 'Title of the instant-publish health finding.'),\n 'shell.deliveryHealth.missing': msg(\n '{vars} not set on this Convex deployment. Publishes succeed, but the live site won’t update until you set them (see CONNECT.md) and re-push functions. A project that runs no revalidate host declares instantPublish: false in {file}.',\n '{vars} are environment variable names; {file} is elytra.config.ts; instantPublish: false is code — all untranslated.',\n ),\n 'shell.deliveryHealth.unchecked': msg('Instant publish could not be checked: {error}', '{error} is the failed read’s message.'),\n // EC-605 — the role-policy drift finding in the issues tray, for admins (the deployment\n // enforces another role policy than elytra.config.ts declares). The doctor's verdict\n // text (English, technical) follows it.\n 'shell.rolePolicyDrift.title': msg(\n 'This deployment enforces a different role policy than the project declares — permissions may not be what you expect.',\n ),\n\n // ─────────────────────────────────────────────────────────────────────────\n // Customization issues — the section-rail foot (`NavIssues`)\n // ─────────────────────────────────────────────────────────────────────────\n // EC-478 — one key per `CustomizationIssue` message. The producers are\n // `packages/core/src/studio-core/customization.ts` (the EC-236 seam, which\n // cannot import this catalog — hence a key on the issue, not a string),\n // `app-views/default-modules.tsx` (EC-476/477) and `builder/reuse.ts`\n // (EC-467). Every `{var}` is an IDENTIFIER — an entry id, a customization\n // point, a component/collection id — and stays untranslated by design.\n // Each English here MUST stay byte-identical to the `message` its producer\n // prebuilds; `customization-issue-i18n.test.ts` pins that both ways.\n // Grouped by render site rather than by namespace: they are one list, and a\n // half-translated list is the failure EC-478 exists to remove.\n // EC-479 — the project declares nothing for the studio to work with. Produced by\n // `lib/workspace/config-issues.ts`; {file} is the config file name (an identifier).\n 'customization.issue.noCollections': msg(\n 'This project declares no content collections. Add them to \"{file}\" — the studio shows your schema or none, never sample content.',\n 'Config error at the rail foot. {file} is the project config file name (elytra.config.ts), untranslated.',\n ),\n 'customization.issue.duplicateOverrideId': msg(\n 'Duplicate override id \"{id}\" for \"{point}\" — the later one is ignored.',\n 'Config error at the rail foot. {id} is the duplicated entry id, {point} the extension point (e.g. \"sidebar\").',\n ),\n 'customization.issue.unknownOverrideTarget': msg(\n 'Override \"{id}\" for \"{point}\" matches no built-in block to replace.',\n 'Config error at the rail foot. {id} is the override id, {point} the extension point.',\n ),\n 'customization.issue.invalidOverride': msg(\n 'Override \"{id}\" for \"{point}\" is invalid: {reason}',\n 'Config error at the rail foot. {reason} is one of the customization.issue.reason.* messages (or a third-party validator’s English).',\n ),\n // The `{reason}` fills — the engine's own `validate` rejections, phrased to read\n // as the tail of the sentence above (lowercase, no full stop).\n 'customization.issue.reason.rendererNotAComponent': msg(\n 'the renderer is not a component',\n 'Tail of customization.issue.invalidOverride — lowercase, no full stop.',\n ),\n 'customization.issue.reason.viewNoRender': msg(\n 'the view has no render function',\n 'Tail of customization.issue.invalidOverride — lowercase, no full stop.',\n ),\n 'customization.issue.reason.viewNoLabel': msg(\n 'the view has no label',\n 'Tail of customization.issue.invalidOverride — lowercase, no full stop.',\n ),\n // EC-476/477 — an id a builder DERIVED landing on an id that already means\n // something. {label} is the developer's own view label (project data, echoed).\n 'customization.issue.derivedIdBuiltinCollision': msg(\n 'View \"{label}\" for \"{point}\" derives the id \"{id}\" from its label, which is the built-in \"{id}\" view — the built-in is kept and this view is ignored. Pass an explicit id to replace a built-in on purpose.',\n 'Config error at the rail foot (EC-476). {label} is the custom view’s label, {id} the derived id that collides with a built-in view id.',\n ),\n 'customization.issue.derivedIdCollectionCollision': msg(\n 'View id \"{id}\" for \"{point}\" is ambiguous: it joins the collections {collections} with \"-\", and a collection is literally named \"{joined}\" — its own lens derives the same id. Pass an explicit id to this group.',\n 'Config warning at the rail foot (EC-477). {collections} is a quoted, comma-separated id list; {joined} is those ids joined with \"-\".',\n ),\n // EC-467 — the project's reusable-elements declaration (`defineStudio({ reuse })`);\n // EC-728: the only source of the embed (declared, never inferred). \"Reusable elements\"\n // is the product term for the feature; {component}, {relationProp}, {collection},\n // {props} are identifiers.\n 'builder.reuse.config.unknownComponent': msg(\n 'Reusable elements: studio config declares reuse.component \"{component}\", which is not a registered component. Fix the id to name your embed component — until then the reuse gestures are off.',\n ),\n 'builder.reuse.config.noRelationProp': msg(\n 'Reusable elements: the declared embed \"{component}\" has no single-document relation prop, so it cannot point at a reusable document. An embed needs one relation prop with cardinality one.',\n ),\n 'builder.reuse.config.unknownRelationProp': msg(\n 'Reusable elements: the declared embed \"{component}\" has no single-document relation prop named \"{relationProp}\". Its relation props are: {props}.',\n '{props} is a quoted, comma-separated prop-name list.',\n ),\n 'builder.reuse.config.ambiguousRelationProp': msg(\n 'Reusable elements: the declared embed \"{component}\" has {count} single-document relation props ({props}) — add reuse.relationProp to say which one points at the reusable document.',\n '{count} is a number; {props} a quoted, comma-separated prop-name list.',\n ),\n 'builder.reuse.config.unknownCollection': msg(\n 'Reusable elements: \"{component}.{relationProp}\" targets the collection \"{collection}\", which this project does not define.',\n ),\n 'builder.reuse.config.noBlocksField': msg(\n 'Reusable elements: the collection \"{collection}\" behind \"{component}.{relationProp}\" has no blocks (composition) field, so there is nothing for the embed to transclude.',\n ),\n\n // ─────────────────────────────────────────────────────────────────────────\n // Auth / errors\n // ─────────────────────────────────────────────────────────────────────────\n 'auth.signIn': msg('Sign in'),\n // EC-397 — the engine sign-in screen (`SignInView`/`SignInScreen`).\n 'auth.signIn.heading': msg('Sign in to {productName}', 'Sign-in screen heading; {productName} is the product/brand name (default \"Elytra\").'),\n 'auth.signIn.headingCreate': msg('Create your account', 'Sign-in screen heading in create-account mode.'),\n 'auth.signIn.subtext.continue': msg('Continue to {project}.', 'Sign-in subtext; {project} is the active project name (data).'),\n 'auth.signIn.subtext.register': msg('Register on {project}.', 'Create-account subtext; {project} is the active project name (data).'),\n 'auth.signIn.subtext.generic': msg('Use your studio account to continue.', 'Sign-in subtext when no project name is known.'),\n 'auth.signIn.emailLabel': msg('Email', 'Label of the email input on the sign-in form.'),\n 'auth.signIn.emailPlaceholder': msg('you@example.com', 'Placeholder inside the email input — use a locale-typical example address.'),\n 'auth.signIn.passwordLabel': msg('Password', 'Label of the password input on the sign-in form.'),\n 'auth.signIn.submit': msg('Sign in', 'Submit button of the sign-in form.'),\n 'auth.signIn.submitCreate': msg('Create account', 'Submit button in create-account mode.'),\n 'auth.signIn.submitting': msg('Signing in…', 'Submit button while the sign-in request is in flight.'),\n 'auth.signIn.submittingCreate': msg('Creating account…', 'Submit button while the create-account request is in flight.'),\n 'auth.signIn.toggle.firstTime': msg('First time on this backend?', 'Lead-in before the \"Create an account\" link below the form.'),\n 'auth.signIn.toggle.alreadyHave': msg('Already have an account on this backend?', 'Lead-in before the \"Sign in\" link in create-account mode.'),\n 'auth.signIn.toggle.signIn': msg('Sign in', 'Link switching the form from create-account back to sign-in mode.'),\n 'auth.signIn.toggle.createAccount': msg('Create an account', 'Link switching the form to create-account mode.'),\n 'auth.signIn.devAccounts.title': msg('Playground mode — seeded dev accounts', 'Title of the seeded dev-credentials hint (playground mode only; the credential lines are fixtures, not chrome).'),\n // EC-397 — engine-classified sign-in failures (the EC-362/EC-363 reason\n // codes). Each message MUST stay byte-identical to the auth-adapter copy it\n // localizes: `signInErrorMessageKey` (lib/auth-errors.ts) recognizes a\n // failure by exact EN-message match, so a reworded adapter message simply\n // falls back to the raw English until re-synced here —\n // `lib/auth-errors.test.ts` pins the sync against the real classifier.\n 'auth.signIn.error.invalidCredentials': msg('Email or password is incorrect.', 'Wrong password or unknown email on sign-in.'),\n 'auth.signIn.error.invalidCredentialsSignUp': msg('That email or password can’t be used (password too short?).', 'Create-account rejection (invalid email or too-short password).'),\n 'auth.signIn.error.accountExists': msg('An account with this email already exists — sign in instead.'),\n 'auth.signIn.error.deploymentMisconfigured': msg('This deployment can’t sign you in: its auth signing key is not set. Run `npx @convex-dev/auth` against this deployment, then retry. (The deployment-setup check reports the same.)', 'EC-257 remedy: the backend deployment has no auth signing key. Keep the `npx @convex-dev/auth` command verbatim.'),\n 'auth.signIn.error.notInvited': msg('This deployment is invite-only. Ask an admin to invite your email, then create your account.', 'EC-324: sign-up rejected because the email is not on the invite allowlist.'),\n 'auth.signIn.error.tooManyAttempts': msg('Too many failed sign-in attempts — wait a moment, then try again.', 'EC-363: the sign-in rate limit tripped.'),\n 'auth.signIn.error.serverError': msg('Sign-in failed (unexpected server error) — check the deployment logs.', 'Honest generic for an unclassifiable sign-in failure.'),\n 'auth.signIn.error.serverErrorSignUp': msg('Sign-up failed (unexpected server error) — check the deployment logs.', 'Honest generic for an unclassifiable create-account failure.'),\n 'auth.signIn.error.unavailable': msg('Sign-in is currently unavailable.', 'The session could not be established after a successful authentication call.'),\n 'auth.signIn.error.playgroundSignUp': msg('Sign-up isn’t available in playground mode — use the dev credentials below.', 'Playground mode has fixed seeded dev users; there is no registration.'),\n // EC-397 — root-route boot states (`createStudioRootRoute`).\n 'auth.boot.checkingSession': msg('Checking session…', 'Full-screen state while the stored session is restored at boot.'),\n 'error.dismiss': msg('Dismiss error', 'aria-label on the error banner dismiss button.'),\n // EC-403 — the blocking session-expired re-auth overlay\n // (`session-expired-overlay.tsx`), raised app-wide when any operation fails\n // the session-expired predicate; re-auth happens in place, no navigation.\n 'error.sessionExpiredTitle': msg(\"You've been signed out\", 'Heading of the blocking session-expired re-auth overlay.'),\n 'error.sessionExpired': msg(\"You've been signed out, so your latest changes aren't being saved. Sign in again to keep editing — your unsaved changes stay right here.\", 'Body of the blocking session-expired re-auth overlay. Plain language — no auth/transport jargon.'),\n\n // EC-494 — operation failures that cross the OPERATIONS boundary. The producer runs\n // SERVER-SIDE with no locale, so `OperationError`/`OperationIssue` carry a catalog\n // reference on the wire and `OperationErrorBanner` resolves it here. Every `{var}` is\n // an IDENTIFIER (operation name, entity kind, document key, field name) and stays\n // untranslated. Messages the engine does NOT author — Zod diagnostics, persistence\n // taxonomy strings, an authorization hook's `reason` — carry no key and keep their\n // English on purpose (EC-443): a visible English sentence beats a missing key.\n // EC-494 — the error banner's BADGE titles (`persona/labels.ts`), moved off a\n // hard-coded English Record for the same reason EC-443 moved the CMS issue titles:\n // a localized body under an unlocalized badge is the same defect, inverted.\n 'operations.errorLabel.validation': msg(\"Couldn't save\"),\n 'operations.errorLabel.not-found': msg('Not found'),\n 'operations.errorLabel.conflict': msg('Conflict', 'EC-595: a conflict is a revision clash, an existing id, or a strict-reference block — not only \"already exists\".'),\n 'operations.errorLabel.backend-unavailable': msg('Connection problem'),\n 'operations.errorLabel.unauthorized': msg('Not allowed'),\n 'operations.errorLabel.unknown': msg('Something went wrong'),\n 'operations.error.invalidInput': msg('Input for “{operation}” is invalid.', '{operation} is a dotted operation name, e.g. documents.patch.'),\n 'operations.error.notFound': msg('No {entity} found for “{target}”.', '{entity} is a machine kind (project/page/cms-document); {target} is its key.'),\n 'operations.error.conflict': msg('“{target}” conflicts with an existing record.'),\n 'operations.error.revisionConflict': msg('“{target}” changed since you loaded it (now at revision {revision}) — reload it and apply your change again.', 'EC-595: a whole-document write or a publish met a newer revision; {revision} is a number.'),\n 'operations.error.revisionConflictGone': msg('“{target}” no longer exists — it was deleted since you loaded it.'),\n 'operations.error.documentExists': msg('“{target}” already exists — creating a document never overwrites one.', 'EC-578: a create (insert-if-absent) found the id taken.'),\n 'operations.error.singletonExists': msg('“{collection}” already has its document “{target}” — open it instead of creating another.', 'EC-595: two sessions opened an empty singleton; the other one created it first.'),\n 'operations.error.patchConflictOne': msg('{count} change to “{target}” was refused: the same field was changed since you loaded the document.', 'EC-595: per-field refusal; the rest of the save applied.'),\n 'operations.error.patchConflict': msg('{count} changes to “{target}” were refused: the same fields were changed since you loaded the document.'),\n 'operations.error.backendUnavailable': msg('The persistence backend is unavailable.'),\n 'operations.error.unauthorized': msg('Operation “{operation}” was denied by the authorization hook.'),\n 'operations.error.unknown': msg('An unknown operation failure occurred.'),\n 'operations.error.documentSchemaViolation': msg('Document “{collection}:{id}” violates its collection schema.', 'The publish gate rejected the draft; the per-field lines follow beneath it.'),\n 'operations.error.strictReferencesBlockDelete': msg('Cannot delete “{target}”: {count} documents reference it through strict relation fields — {named}{more}. Remove these references first.', '{named} is an identifier list “collection:id” (field); {more} is the andMore fragment or empty.'),\n 'operations.error.strictReferencesBlockDeleteOne': msg('Cannot delete “{target}”: {count} document references it through strict relation fields — {named}. Remove these references first.'),\n 'operations.error.strictReferencesBlockUnpublish': msg('Cannot unpublish “{target}”: {count} documents reference it through strict relation fields — {named}{more}. Remove these references first.'),\n 'operations.error.strictReferencesBlockUnpublishOne': msg('Cannot unpublish “{target}”: {count} document references it through strict relation fields — {named}. Remove these references first.'),\n // EC-589 — the referrer direction of `strict: true`: publish refused while a strict target is missing or unpublished.\n 'operations.error.strictTargetsUnpublishedOne': msg('Document “{target}” cannot be published: a strict relation target is missing or unpublished — publish it first.'),\n 'operations.error.strictTargetsUnpublished': msg('Document “{target}” cannot be published: strict relation targets are missing or unpublished — publish them first.'),\n 'operations.error.publishNeedsLocales': msg('“{target}” cannot be published: its collection declares localized fields ({fields}), and no locale config was given to judge their hidden values in.', 'EC-585: a headless runtime publishing a localized collection without the project locale config; {fields} is a comma-separated list of field names.'),\n 'operations.error.versionNotPinnable': msg('Version {version} of “{target}” was not recorded by a publish, so it cannot be pinned live — restore it into the draft and publish that instead.', 'EC-585: only a version a publish recorded can be re-pinned; {version} is a number.'),\n // EC-648 — changesets: apply blocked by an issue, and the step a changeset refuses because no undo can reverse it.\n 'operations.error.changesetBlocked': msg('Changeset “{changeset}” has blocking validation issues and cannot be applied.', '{changeset} is a changeset id, e.g. cs-0001; the blocking issues follow beneath it.'),\n 'operations.error.changesetDeleteNotReversible': msg('Step {step}: “{target}” cannot be deleted inside a changeset — a delete removes its version history and publication, which no undo can restore. Delete it on its own.', 'EC-648: {step} is the 0-based step number; {target} is the document key collection:id.'),\n 'operations.errorDetail.andMore': msg(', and {count} more', 'Truncation fragment spliced into the strict-reference sentences; keeps its leading comma and space.'),\n\n // EC-494 — content-query errors (`core/content`'s validateWhere/validateSort/\n // validateLimit). Two studio surfaces render them: the filter builder's per-clause\n // line and the canvas listing notice.\n 'content.queryError.nonFilterableField': msg('Field \"{field}\" on \"{collection}\" is not declared filterable.'),\n 'content.queryError.unknownField': msg('Field \"{field}\" does not exist on \"{collection}\".'),\n 'content.queryError.unknownCollection': msg('Collection \"{collection}\" is not defined.'),\n 'content.queryError.filterShape': msg('Filter for \"{field}\" must be a scalar or an operator object.'),\n 'content.queryError.filterNoOperators': msg('Filter for \"{field}\" has no operators.'),\n 'content.queryError.unknownOperator': msg('Unknown filter operator \"{operator}\" on \"{field}\" — the vocabulary is exactly {vocabulary}.', '{vocabulary} is the comma-joined list of operator tokens — identifiers, never translated.'),\n 'content.queryError.operatorInRequiresArray': msg('Operator \"in\" on \"{field}\" requires an array of scalars.'),\n 'content.queryError.operatorRequiresString': msg('Operator \"{operator}\" on \"{field}\" requires a string value.'),\n 'content.queryError.operatorEmptyRequiresBoolean': msg('Operator \"empty\" on \"{field}\" requires a boolean value (true = is empty).'),\n 'content.queryError.operatorRequiresScalar': msg('Operator \"{operator}\" on \"{field}\" requires a scalar value.'),\n 'content.queryError.sortNotFilterable': msg('Sort field \"{field}\" on \"{collection}\" is not declared filterable.'),\n 'content.queryError.sortUnknownField': msg('Sort field \"{field}\" does not exist on \"{collection}\".'),\n 'content.queryError.sortDirection': msg('Sort direction must be \"asc\" or \"desc\".'),\n // EC-660 — THE sort shape (`{ field, direction? }`, strict) judged by validateSort.\n 'content.queryError.sortShape': msg('Sort must be an object { field, direction? }.', 'The braces are code — the literal shape of a sort; keep them and the key names untranslated.'),\n 'content.queryError.sortFieldName': msg('Sort field must be a non-empty field name.'),\n 'content.queryError.sortKeyRenamed': msg('Sort key \"{key}\" is spelled \"{replacement}\".', '{key} is a retired key name (dir), {replacement} the key that replaced it (direction) — identifiers.'),\n 'content.queryError.sortUnknownKey': msg('Sort key \"{key}\" is not read — a sort is { field, direction? }.', 'The braces are code — the literal shape of a sort; keep them and the key names untranslated.'),\n 'content.queryError.limitPositiveInteger': msg('Limit must be a positive integer.'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // CMS — collection list / view bar / filters / cells\n // ─────────────────────────────────────────────────────────────────────────\n // EC-412 — the CMS section landing (`cms-index.tsx`): the collection grid.\n 'cms.index.heading': msg('Content', 'Display heading of the CMS section landing (the collection grid).'),\n 'cms.index.description': msg('Schema-driven collections. Open a collection to browse its documents as a table and edit them in the detail editor.'),\n 'cms.index.fieldCount.one': msg('{count} field', 'Collection-card meta line, shown after the collection id; {count} is the schema field count.'),\n 'cms.index.fieldCount.other': msg('{count} fields', 'Collection-card meta line, shown after the collection id; {count} is the schema field count.'),\n 'cms.index.singleDocument': msg('Single document', 'Note on a singleton collection card (EC-217) — one fixed document instead of a row count.'),\n 'cms.list.new': msg('New', 'Create button on a non-page collection.'),\n 'cms.list.newPage': msg('New page'),\n 'cms.list.newNamed': msg('New {noun}', 'Empty-state create button; {noun} is the singular collection label.'),\n 'cms.list.moreActions': msg('More actions'),\n 'cms.list.rowActionsColumnLabel': msg('Row actions', 'Screen-reader label of the row-action-menu column header (EC-316).'),\n 'cms.list.rowActionsLabel': msg('Actions for {id}', 'Aria-label of one row’s ⋮ action-menu trigger.'),\n 'cms.list.rowAction.open': msg('Open', 'Row-menu item: open the document’s detail editor.'),\n 'cms.list.import': msg('Import…'),\n 'cms.list.export': msg('Export'),\n 'cms.list.forReview': msg('For review', 'Prefix in the collection-shape-drift banner heading.'),\n 'cms.list.count': msg('{count} {noun}', 'Working-set count; {noun} is the collection singular/plural label (data).'),\n 'cms.list.countFiltered': msg('{visible} of {total} {noun}', 'Working-set count when filters hide rows.'),\n 'cms.list.emptyNone': msg('No {noun} yet.', '{noun} is the plural collection label (data), lowercased.'),\n 'cms.list.emptyFiltered': msg('No documents match the current view’s filters.'),\n 'cms.list.selectAll': msg('Select all documents in view'),\n 'cms.list.selectRow': msg(\n 'Select {title}',\n 'Row checkbox. {title} is the document title (data) — never the internal id.',\n ),\n 'cms.list.column.title': msg('Title'),\n 'cms.list.column.state': msg('State'),\n // EC-448 — the fixed leading status-dot column's ICON header carries this as its\n // accessible name (`aria-label`/`title`); no visible text header (it is a glyph).\n 'cms.list.column.statusHeader': msg('Status', 'Accessible label of the status-dot column icon header (EC-448).'),\n 'cms.list.column.url': msg('URL'),\n // EC-445 — reserved date pseudo-columns (participate in the columns model).\n 'cms.list.column.updatedAt': msg('Updated'),\n 'cms.list.column.publishedAt': msg('Published'),\n // EC-346 — the State column's per-row badge (`DocStateBadge`); was hardcoded\n // English. Distinct keys from `cms.editor.draftState`/`publishedState` (title\n // case, editor header) and `cms.filter.state.*`/`cms.reference.*Badge` (filter\n // builder / reference dialog) — same words, different UI contexts (EC-241).\n 'cms.docState.published': msg('published', 'Row State-column badge — lowercase token.'),\n // EC-448 — the third ratified doc-state (published WITH unpublished draft changes).\n // Part of the vocabulary + tone mapping; not fed by the list today (a correct\n // per-row verdict needs the versions pane's snapshot compare).\n 'cms.docState.changed': msg('changed', 'Row status-dot label — published with unpublished changes.'),\n 'cms.docState.draft': msg('draft', 'Row State-column badge — lowercase token.'),\n // EC-479 — a CMS session cannot open without the project's locales: the default\n // locale is the storage key every localized value is written under, so the\n // surface refuses rather than editing in an invented one.\n 'cms.session.noLocales.title': msg(\n 'This project declares no locales',\n 'Heading of the panel replacing the CMS surface when the project has no locale config.',\n ),\n 'cms.session.noLocales.body': msg(\n 'Add a locales list to your project config. The default locale is the key your content is stored under, so the studio will not choose one for you.',\n 'Body of the same panel. Explains why the studio refuses instead of picking a locale.',\n ),\n 'cms.list.view.all': msg('All entries', 'Name of the built-in baseline view.'),\n 'cms.list.unknownCollection': msg('Unknown collection {id}.'),\n 'cms.list.import.noId': msg('(no id)', 'Placeholder id in an import-rejected report.'),\n 'cms.list.display.ariaLabel': msg('Display options'),\n 'cms.list.display.title': msg('Display: layout and columns'),\n 'cms.list.display.layout': msg('Layout'),\n 'cms.list.display.flatList': msg('Flat list'),\n 'cms.list.display.pageHierarchy': msg('Page hierarchy'),\n 'cms.list.display.columns': msg('Columns · first visible is the title'),\n 'cms.list.display.toggleColumn': msg('Toggle column {field}'),\n 'cms.list.display.titleTag': msg('(title)', 'Suffix marking the title column in the column list.'),\n 'cms.list.display.moveColumnUp': msg('Move column {field} up'),\n 'cms.list.display.moveColumnDown': msg('Move column {field} down'),\n 'cms.list.bulk.count': msg('{count} selected'),\n 'cms.list.bulk.publish': msg('Publish'),\n 'cms.list.bulk.unpublish': msg('Unpublish'),\n 'cms.list.bulk.noSettableFields': msg('No filterable scalar fields to set.'),\n 'cms.list.bulk.setField': msg('Set field'),\n 'cms.list.bulk.clearSelection': msg('Clear selection'),\n // EC-494 — the two per-item failure reasons authored studio-side in\n // `bulk-actions.ts`; the rest of a bulk report's reasons are resolved from the\n // catalog reference the operation error now carries.\n 'cms.list.bulk.error.notInSession': msg('Document is no longer in the session.'),\n 'cms.list.bulk.error.notValidToPublish': msg('Document is not valid to publish.'),\n 'cms.list.bulk.set.set': msg('Set', 'Leading word of the “Set <field> to <value>” composer.'),\n 'cms.list.bulk.set.to': msg('to', 'Connector in the “Set <field> to <value>” composer.'),\n 'cms.list.bulk.set.valueAria': msg('Set value'),\n 'cms.list.bulk.set.apply': msg('Apply to selection'),\n 'cms.list.bulk.report.verb.setField': msg('set {field}', 'Action name spliced into the bulk-report summary.'),\n 'cms.list.bulk.report.verb.publish': msg('publish', 'Lowercase action name spliced into the bulk-report summary.'),\n 'cms.list.bulk.report.verb.unpublish': msg('unpublish'),\n 'cms.list.bulk.report.verb.delete': msg('delete'),\n 'cms.list.bulk.report.summary': msg('Bulk {action}: {succeeded} succeeded'),\n 'cms.list.bulk.report.failedSuffix': msg(', {count} failed'),\n 'cms.list.bulk.report.failedBadge': msg('{count} failed'),\n 'cms.list.bulk.report.done': msg('done'),\n 'cms.list.bulk.error.invalidSetField': msg('Set-field is missing its field/value or the collection schema.'),\n 'cms.filter.button': msg('Filter'),\n 'cms.filter.summaryMultiple': msg('{count} filters', 'Chip summary when more than one clause is active.'),\n 'cms.filter.clearAria': msg('Clear filter'),\n 'cms.filter.refineSession': msg('Refine · this session'),\n 'cms.filter.clearAll': msg('Clear all'),\n 'cms.filter.add': msg('Add filter'),\n 'cms.filter.andHint': msg('all conditions must match (AND)'),\n 'cms.filter.fieldAria': msg('Filter field'),\n 'cms.filter.operatorAria': msg('Filter operator'),\n 'cms.filter.remove': msg('Remove filter'),\n // EC-494 — the two clause problems authored studio-side (`cms-views/view-model.ts`).\n // The schema-field ones come from `core/content` and are keyed under content.queryError.*.\n 'cms.filter.issue.stateOperator': msg('State filters support only \"eq\" and \"in\".'),\n 'cms.filter.issue.stateValue': msg('State must be \"draft\" or \"published\".'),\n 'cms.filter.valueAria': msg('Filter value'),\n 'cms.filter.valueListPlaceholder': msg('value, value, …'),\n 'cms.filter.pickRelation': msg('Pick…', 'Placeholder on a relation filter value before a target is picked.'),\n 'cms.filter.state.published': msg('published'),\n 'cms.filter.state.draft': msg('draft'),\n // Operator labels (EC-345) — keyed by operator AND field type in `operatorLabelKey`.\n 'cms.filter.op.contains': msg('contains'),\n 'cms.filter.op.equals': msg('equals', 'Equality operator on text/number fields.'),\n 'cms.filter.op.is': msg('is', 'Equality operator on enum-like fields (boolean/select/relation/asset/state).'),\n 'cms.filter.op.startsWith': msg('starts with'),\n 'cms.filter.op.endsWith': msg('ends with'),\n 'cms.filter.op.isAnyOf': msg('is any of', 'The `in` operator: matches any value in the picked set.'),\n 'cms.filter.op.lessThan': msg('less than'),\n 'cms.filter.op.atMost': msg('at most', 'The ≤ operator on a number field.'),\n 'cms.filter.op.greaterThan': msg('greater than'),\n 'cms.filter.op.atLeast': msg('at least', 'The ≥ operator on a number field.'),\n 'cms.filter.op.on': msg('on', 'Date equality operator (e.g. “Published on”).'),\n 'cms.filter.op.before': msg('before', 'The < operator on a date field.'),\n 'cms.filter.op.onOrBefore': msg('on or before', 'The ≤ operator on a date field.'),\n 'cms.filter.op.after': msg('after', 'The > operator on a date field.'),\n 'cms.filter.op.onOrAfter': msg('on or after', 'The ≥ operator on a date field.'),\n 'cms.filter.op.isEmpty': msg('is empty'),\n 'cms.filter.op.isNotEmpty': msg('is not empty'),\n 'cms.cell.fallbackTitle': msg('Showing {source} (fallback) — no {requested} translation yet. Edit to translate.'),\n 'cms.cell.richText': msg('rich text', 'Placeholder for a rich-text cell whose preview is empty.'),\n 'cms.cell.itemCount.one': msg('{count} item'),\n 'cms.cell.itemCount.other': msg('{count} items'),\n 'cms.cell.object': msg('object', 'Placeholder for a single object cell that has a value.'),\n 'cms.cell.blockCount.one': msg('{count} block'),\n 'cms.cell.blockCount.other': msg('{count} blocks'),\n 'cms.cell.createsVariantTitle': msg('Saving creates the {locale} translation of this field.'),\n 'cms.cell.newVariant': msg('new', 'Suffix on the edit-locale badge when a fresh variant will be created.'),\n 'cms.cell.editAria': msg(\n 'Edit {field} of {title}',\n 'Accessible name of an editable list cell. {field} is the column label, {title} the document title (both data).',\n ),\n\n // ─────────────────────────────────────────────────────────────────────────\n // CMS — document detail editor\n // ─────────────────────────────────────────────────────────────────────────\n 'cms.editor.notFoundTitle': msg('Not found'),\n 'cms.editor.backToList': msg('Back to {label}'),\n 'cms.editor.publishFailed': msg('Publish failed.'),\n 'cms.editor.publishFailedReason': msg('Publish failed: {error}'),\n 'cms.editor.saveFailed': msg('Save failed'),\n 'cms.editor.unsavedChanges': msg('Unsaved changes'),\n 'cms.editor.saved': msg('Saved'),\n // 0.0.42 (round 3): the standalone \"View live\" button is retired — opening the live\n // page now hangs off the header URL row's leaf segment. These strings still drive the\n // leaf's tooltip (open-live target + the published-gating reasons).\n 'cms.editor.openLiveUrl': msg('Open {path}'),\n 'cms.editor.loadingLiveUrl': msg('Loading the live URL…'),\n 'cms.editor.publishToViewLive': msg('Publish to view the live page'),\n 'cms.editor.setFrontendUrlHint': msg('Set frontendUrl in elytra.config.ts to enable'),\n 'cms.editor.publishedReadFailed': msg('Couldn’t load what is published, so live URLs are unknown: {reason}', 'EC-628: the published-pool read failed (never shown as \"not published\"); {reason} is the operation’s error sentence.'),\n 'cms.editor.switchToDraftToPublish': msg('Switch to Draft to publish'),\n 'cms.editor.fixIssuesToPublish.one': msg('Fix {count} issue to publish'),\n 'cms.editor.fixIssuesToPublish.other': msg('Fix {count} issues to publish'),\n 'cms.editor.publishing': msg('Publishing…'),\n 'cms.editor.publishedState': msg('Published'),\n 'cms.editor.publish': msg('Publish'),\n 'cms.editor.moreActions': msg('More actions'),\n 'cms.editor.unpublish': msg('Unpublish'),\n // 0.0.39 — the Publish button is a split button: primary Publish (stay) + a\n // \"Publish & close\" dropdown item (publish, then return to the list). Replaces the\n // retired EC-316 \"Save & close\" (autosave made a bare \"Save\" meaningless).\n 'cms.editor.publishActions': msg('Publish options', 'aria-label for the Publish split-button dropdown trigger.'),\n 'cms.editor.publishAndClose': msg('Publish & close', 'Split-button item: publish the document, then return to the collection list (0.0.39, replaces EC-316 Save & close).'),\n 'cms.editor.saveAndClose': msg('Save & close', 'Header action: save the draft, then return to the collection list (EC-316).'),\n 'cms.editor.duplicateCreated': msg('Duplicate created as a new draft', 'Success toast after duplicating a document (EC-442) — shown as the copy’s editor opens (its title equals the original’s, so this disambiguates).'),\n 'cms.editor.discardDraft': msg('Discard changes', 'Header ⋯-menu item: revert the draft to the published content (EC-316).'),\n 'cms.editor.discardDraftUpToDateHint': msg('The draft matches the published version — nothing to discard.'),\n 'cms.editor.switchToDraftToDiscard': msg('Switch to Draft to discard changes'),\n 'cms.editor.discardDraftTitle': msg('Discard draft changes?'),\n 'cms.editor.discardDraftDescription': msg('This reverts the draft to the currently published content. Your unpublished edits are replaced — a snapshot of them is kept in the version history.'),\n 'cms.editor.discardDraftConfirm': msg('Discard changes'),\n 'cms.editor.discardingDraft': msg('Discarding…'),\n 'cms.editor.draftState': msg('Draft'),\n 'cms.editor.publishToViewPublished': msg('Publish this document to view its published version'),\n 'cms.editor.publishedReadOnlyBanner': msg('Viewing the published version — read-only.'),\n 'cms.editor.switchToDraft': msg('Switch to Draft'),\n 'cms.editor.loadingPublishedVersion': msg('Loading the published version…'),\n 'cms.editor.noPublishedVersion': msg('No published version found for this document.'),\n 'cms.editor.unsavedChangesGuard': msg('You have unsaved changes to this record. Save them before leaving, or discard them.'),\n 'cms.editor.readOnlyBadge': msg('read-only'),\n // EC-318 — connected fields: the per-field localization connection affordance that\n // replaces EC-176's passive \"showing EN\" text. Shown only on a localized field in a\n // non-base locale (never on the base locale, non-localized fields, or read-only).\n 'cms.editor.localeFollowsBase': msg('Follows {base}', 'Connected chip — this field inherits the base-locale value. {base} is the base locale code, e.g. \"EN\".'),\n 'cms.editor.localeFollowsHint': msg('This field follows the {base} value. Type to translate it, or fill from {base} to start from a copy.'),\n 'cms.editor.localeFillFromBase': msg('Fill from {base}', 'Action — copy the base-locale value in as a translation starting point.'),\n 'cms.editor.localeTranslated': msg('Translated', 'Diverged chip — this field owns its own value in the active locale.'),\n 'cms.editor.localeTranslatedHint': msg('Translated for {locale}. Clearing the text reconnects it to the {base} value — an intentionally-empty translation is not supported.'),\n 'cms.editor.localeResetToBase': msg('Reset to {base}', 'Action — discard the translation so the field follows the base locale again.'),\n 'cms.editor.localeResetTitle': msg('Reset to the {base} value?'),\n 'cms.editor.localeResetDescription': msg('This removes the {locale} translation for this field. It will follow the {base} value again until you translate it.'),\n 'cms.editor.localeResetConfirm': msg('Reset to {base}'),\n 'cms.editor.issuesPane': msg('Issues'),\n 'cms.editor.detailsPane': msg('Details'),\n 'cms.editor.servedAt': msg('Served at {path}'),\n 'cms.editor.slugUrlHint': msg('The URL is derived from the slug (and parent) — set a slug to define it.'),\n 'cms.editor.defaultGroup': msg('Fields', 'Title of the implicit fieldset that holds ungrouped fields.'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // CMS — issues pane (validation)\n // ─────────────────────────────────────────────────────────────────────────\n 'cms.issues.none': msg('No issues'),\n 'cms.issues.satisfied': msg('This document satisfies the collection schema.'),\n 'cms.issues.goToField': msg('Go to {field}', 'Jump link on an issue card; {field} is the field’s label.'),\n // EC-443 — issue-card TITLES, one per `CmsIssueCode` (`lib/persona/labels.ts`\n // maps the enum exhaustively onto these keys; adding a code fails typecheck\n // there until it lands here).\n 'cms.issue.duplicate-collection': msg('Duplicate collection'),\n 'cms.issue.duplicate-field': msg('Duplicate field'),\n 'cms.issue.unknown-collection': msg('Unknown collection'),\n 'cms.issue.invalid-collection-config': msg('Invalid collection setup'),\n 'cms.issue.invalid-field-config': msg('Invalid field setup'),\n 'cms.issue.reserved-field-name': msg('Reserved field name'),\n 'cms.issue.prototype-key': msg('Key cannot be stored'),\n 'cms.issue.missing-required-field': msg('Missing required field'),\n 'cms.issue.invalid-field-value': msg('Invalid value'),\n 'cms.issue.invalid-field-value.warning': msg(\n 'Check this value',\n 'Title for a WARNING-severity invalid-field-value issue (EC-507). The value was accepted and stored — e.g. an implausible but legal date year — so \"Invalid value\" would contradict what the editor can see in the field.',\n ),\n 'cms.issue.unknown-relation-target': msg('Missing reference'),\n 'cms.issue.unpublished-relation-target': msg('Unpublished reference'),\n 'cms.issue.cardinality-violation': msg('Wrong number of values'),\n 'cms.issue.unknown-asset': msg('Missing asset'),\n 'cms.issue.asset-without-url': msg('Asset without a file'),\n 'cms.issue.asset-meta-drift': msg(\n 'Unused asset translation',\n 'EC-659: an asset keeps a translated value (e.g. of its alt text) for a field that is no longer translatable — the shared value is shown; the stored translation is kept but not used.',\n ),\n 'cms.issue.duplicate-document': msg('Duplicate entry'),\n 'cms.issue.unknown-locale': msg('Unknown language'),\n 'cms.issue.missing-localized-value': msg('Missing translation'),\n 'cms.issue.route-conflict': msg('Conflicting URL'),\n 'cms.issue.redirect-loop': msg('Redirect loop'),\n 'cms.issue.invalid-redirect': msg('Invalid redirect', 'EC-590/EC-628: a duplicate `from`, or a stored redirect that cannot be read (and is not served).'),\n 'cms.issue.unknown-route-target': msg('Missing page'),\n 'cms.issue.hierarchy-cycle': msg('Page nesting loop'),\n 'cms.issue.document-nesting-depth': msg('Content nested too deeply'),\n 'cms.issue.singleton-document-drift': msg('More than one document'),\n 'cms.issue.duplicate-alias': msg('Slot used twice'),\n 'cms.issue.unknown-alias': msg('Unknown slot'),\n 'cms.issue.unfilled-slot': msg('Empty slot'),\n 'cms.issue.custom-validation': msg('Validation rule'),\n 'cms.issue.hidden-predicate-error': msg('Broken visibility rule'),\n 'cms.issue.unaddressable-url': msg('Unreachable URL'),\n 'cms.issue.unknown-version': msg('Unknown version'),\n 'cms.issue.invalid-stored-document': msg('Unreadable stored document', 'EC-585: a stored row the delivery snapshot shipped is not a valid document, so it is not delivered.'),\n 'cms.issue.props-not-judged': msg('Component settings not checked', 'EC-662: a page was resolved without a component registry, so its component props were delivered unchecked.'),\n // EC-443 — issue-card BODY templates, only for codes whose full body derives\n // from `code` + `path`/`meta` (`issue-copy.ts`); every other code shows the\n // raw English core message (honest fallback).\n 'cms.issueBody.missing-required-field': msg('Required field “{field}” is not filled in.'),\n 'cms.issueBody.missing-localized-value.default': msg(\n 'Required field “{field}” has no value for the default language “{locale}”.',\n ),\n 'cms.issueBody.missing-localized-value.fallback': msg(\n 'Field “{field}” has no value for “{locale}” and no fallback.',\n ),\n 'cms.issueBody.unknown-asset': msg('Field “{field}” references the unknown asset “{asset}”.'),\n 'cms.issueBody.document-nesting-depth.error': msg(\n 'This content nests {depth} levels deep, past the {limit}-level storage limit — split it into smaller linked entries.',\n ),\n 'cms.issueBody.document-nesting-depth.warning': msg(\n 'This content nests {depth} levels deep, approaching the {limit}-level storage limit.',\n ),\n 'cms.issueBody.hierarchy-cycle': msg(\n 'This entry is its own ancestor — the parent chain forms a loop.',\n ),\n\n // ─────────────────────────────────────────────────────────────────────────\n // CMS validation issue BODIES (EC-487)\n //\n // EC-443 localized the issue TITLES (`cms.issue.<code>` above); the bodies were\n // still built as English template literals inside `packages/core`, which cannot\n // import this catalog. EC-478 solved that shape for `CustomizationIssue` by having\n // the producer carry a message KEY; these are the same carriage for\n // `CmsValidationIssue`, so the rail foot, the Issues pane and the for-review lane\n // never mix a German title with an English body.\n //\n // The English here is a SECOND copy of what the producer builds — the tie between\n // them is `lib/persona/cms-issue-i18n.test.ts`, which renders every real producer's\n // issue through this catalog and asserts byte-identity. Interpolated values are\n // IDENTIFIERS (field/collection/route/locale ids, patterns, counts) and stay\n // unlocalized in every language.\n //\n // `cms.issueDetail.*` are FRAGMENTS spliced into the sentences above.\n // ─────────────────────────────────────────────────────────────────────────\n 'cms.issueMessage.duplicateDocument': msg('Duplicate document \"{id}\" in collection \"{collection}\".'),\n 'cms.issueMessage.fieldDetail': msg('Field \"{field}\" {detail}.'),\n 'cms.issueMessage.fieldReason': msg('Field \"{field}\": {reason}'),\n // EC-598 — a config `hidden` predicate threw. {reason} is the thrown message: author\n // prose, kept verbatim (like a `validate` message inside cms.issueMessage.fieldReason).\n 'cms.issueMessage.fieldHiddenPredicateThrew': msg(\n 'The visibility rule of field \"{field}\" threw an error (\"{reason}\"), so the field is shown and validated. Fix the rule in the project config.',\n 'A developer-authored show/hide rule crashed. {field} is a field id, {reason} the error text the rule threw (untranslated).',\n ),\n 'cms.issueMessage.groupHiddenPredicateThrew': msg(\n 'The visibility rule of group \"{group}\" threw an error (\"{reason}\"), so its fields are shown and validated. Fix the rule in the project config.',\n 'A developer-authored show/hide rule of a form section crashed. {group} is the section id, {reason} the error text the rule threw (untranslated).',\n ),\n 'cms.issueMessage.relationUnknownTargetCollection': msg('Relation field \"{field}\" targets unknown collection \"{target}\".'),\n 'cms.issueMessage.relationSingleValued': msg('Relation field \"{field}\" is single-valued but has {count} targets.'),\n 'cms.issueMessage.relationNotAReference': msg('Relation field \"{field}\" holds a value that is not a document reference.'),\n 'cms.issueMessage.relationWrongCollection': msg('Relation field \"{field}\" points at collection \"{got}\" but targets \"{target}\".'),\n 'cms.issueMessage.relationMissingDocument': msg('Relation field \"{field}\" references missing document \"{id}\" in \"{target}\".'),\n 'cms.issueMessage.relationUnpublishedDocument': msg('Relation field \"{field}\" references unpublished document \"{id}\" in \"{target}\" — the published site shows a fallback there.'),\n // EC-589 — a strict relation (field, sub-field or prop) to an unpublished target blocks publishing the referrer.\n 'cms.issueMessage.relationStrictUnpublished': msg('Relation field \"{field}\" is strict: \"{id}\" in \"{target}\" is not published, so this document cannot be published until it is.'),\n 'cms.issueMessage.assetNoAssetCollection': msg('Asset field \"{field}\" requires an asset collection, but none is registered.'),\n 'cms.issueMessage.assetSingleValued': msg('Asset field \"{field}\" is single-valued but has {count} targets.'),\n 'cms.issueMessage.assetExpectsId': msg(\"Asset field \\\"{field}\\\" expects an asset id, or { type: 'asset', id, …per-use fields } — an object needs type: 'asset'.\"),\n 'cms.issueMessage.assetUnknown': msg('Asset field \"{field}\" references unknown asset \"{asset}\".'),\n 'cms.issueMessage.assetNotAccepted': msg('Asset field \"{field}\" accepts only {accept}, but asset \"{asset}\" is {type}.'),\n 'cms.issueMessage.requiredFieldMissing': msg('Required field \"{field}\" is missing.'),\n 'cms.issueMessage.perLocaleMapValue': msg('Field \"{field}\" expects a \"{type}\" value but holds a per-locale map (keys: {keys}) — per-locale values live under the document\\'s \"localized\" bag, never inside a field value.'),\n 'cms.issueMessage.richTextHoldsArray': msg('Rich-text field \"{field}\" expects a rich-text value (\"{ version: 2, content }\") but holds an array.'),\n 'cms.issueMessage.richTextHoldsBareDoc': msg('Rich-text field \"{field}\" expects a rich-text value (\"{ version: 2, content }\") but holds a bare rich-text document missing its \"{ version: 2, content }\" envelope.'),\n 'cms.issueMessage.preConvergenceV1': msg('Field \"{field}\" holds a pre-convergence content shape (the v1 \"{ version, doc }\" envelope) — the engine reads only the converged \"{ version: 2, content }\" sequence. Re-seed this content.'),\n 'cms.issueMessage.preConvergenceBareBlocks': msg('Field \"{field}\" holds a pre-convergence content shape (a bare composition node list) — the engine reads only the converged \"{ version: 2, content }\" sequence. Re-seed this content.'),\n 'cms.issueMessage.preConvergencePlaintext': msg('Field \"{field}\" holds a pre-convergence content shape (legacy plain text) — the engine reads only the converged \"{ version: 2, content }\" sequence. Re-seed this content.'),\n 'cms.issueMessage.gateUnknownCollection': msg('The project declares no collection “{collection}” — there are no rules to publish it by.', 'EC-595 A2 (F23): the publish gate refuses a document of a collection the project config does not declare. {collection} is the collection id.'),\n 'cms.issueMessage.gateAssetLibraryUnready': msg('The asset library could not be read — refusing to publish unverified asset references. Try again.', 'EC-595 A2 (EC-588, ruled 1f): the publish gate could not read the asset library, so a document that references assets is refused instead of published with the asset checks off.'),\n 'cms.issueMessage.gateNoLocales': msg('The project declares no locales — refusing to publish without them.', 'EC-595 A2: the publish gate refuses when the project config declares no locales (the storage key of every localized value).'),\n // EC-595 A2 — the per-field conflict and the thin field presence.\n 'cms.conflict.changedBy': msg('Changed by {name} since you started editing — your text is kept here until you choose.', 'EC-595 A2: a field this session changed was changed by someone else first; the store refused only this field. {name} is a colleague\\'s name, or \"someone else\" / \"you (in another tab)\".'),\n 'cms.conflict.removedBy': msg('Removed by {name} since you started editing — your change has nothing to apply to.', 'EC-595 A2: the element (a canvas block) this session changed was removed by someone else first. {name} as above.'),\n 'cms.conflict.theirs': msg('Theirs: {value}', 'EC-595 A2: a preview of the value now stored in the conflicted field. {value} is the value or a placeholder (\"empty\", \"a structured value\").'),\n 'cms.conflict.takeTheirs': msg('Take theirs', 'EC-595 A2: button — drop your change of this field and show the stored value.'),\n 'cms.conflict.keepMine': msg('Keep mine', 'EC-595 A2: button — write your value of this field again, over theirs, deliberately.'),\n 'cms.conflict.someoneElse': msg('someone else', 'EC-595 A2: {name} when the colleague who changed a field is not known by name.'),\n 'cms.conflict.youInAnotherTab': msg('you (in another tab)', 'EC-595 A2: {name} when the change came from the same user in another browser tab.'),\n 'cms.conflict.empty': msg('(empty)', 'EC-595 A2: {value} when the stored value is empty.'),\n 'cms.conflict.structured': msg('a structured value', 'EC-595 A2: {value} when the stored value is not plain text (an object, a list, rich text).'),\n 'cms.conflict.cellRefused': msg('This field was changed by someone else since you loaded it — their value is shown.', 'EC-595 A2: a table cell or bulk edit refused because the field changed meanwhile; the stored value is kept.'),\n 'cms.conflict.aliasRefused': msg('The slot was changed by someone else since you chose it — theirs is kept. Choose it again to change it.', 'EC-686: a slot (alias) change refused because a colleague changed the slot first. The slot has no field of its own to hold a take-theirs / keep-mine choice, so the stored slot is kept. Shown on the persistence error banner.'),\n 'cms.conflict.unauthored': msg('A change was not saved: it does not say which version of the document it was made on, so it could overwrite a newer change. Reload the document and make it again.', 'EC-647: a write that names no revision it was authored against is refused, never sent at the newest one (it could silently overwrite a colleague). Shown on the persistence error banner.'),\n 'cms.presence.inField': msg('{name} is in this field', 'EC-595 A2 thin presence: another session has this field focused. {name} is their name.'),\n 'cms.presence.inFieldMany': msg('{names} are in this field', 'EC-595 A2 thin presence: several sessions have this field focused. {names} is a comma-separated list of names.'),\n 'cms.presence.someone': msg('Someone', 'EC-595 A2 thin presence: the name of a present session that carries no name.'),\n 'cms.issueMessage.richTextHoldsObject': msg('Rich-text field \"{field}\" expects a rich-text value (\"{ version: 2, content }\") but holds an object with keys \"{keys}\".'),\n 'cms.issueMessage.unknownCollectionForDocument': msg('Document \"{id}\" references unknown collection \"{collection}\".'),\n 'cms.issueMessage.localizedPlainValue': msg('Localized field \"{field}\" holds a plain value in the shared \"values\" bag — expected per-locale values under \"localized.<locale>.{field}\". The plain value serves only as a last-resort fallback.'),\n 'cms.issueMessage.requiredLocalizedMissingDefault': msg('Required localized field \"{field}\" is missing for the default locale \"{locale}\".'),\n 'cms.issueMessage.localizedNoValueNoFallback': msg('Localized field \"{field}\" has no value for locale \"{locale}\" and no fallback.'),\n 'cms.issueMessage.hierarchyCycle': msg('Document \"{id}\" is its own ancestor — the parent chain forms a cycle.'),\n 'cms.issueMessage.nestingDepthError': msg('Document \"{id}\" nests {depth} levels deep, past the backend\\'s {limit}-level per-write limit — even depth-folding at rest cannot rescue a document this deep, so the write cannot be dispatched. Split it into smaller linked documents.'),\n 'cms.issueMessage.nestingDepthWarning': msg('Document \"{id}\" nests {depth} levels deep, approaching the backend\\'s {limit}-level limit. Consider flattening the deepest path before it grows further.'),\n 'cms.issueMessage.propFilterable': msg('Component prop \"{field}\" declares \"filterable\", which only applies to document fields.'),\n 'cms.issueMessage.propUnique': msg('Component prop \"{field}\" declares \"unique\", which only applies across a collection\\'s documents.'),\n 'cms.issueMessage.singletonDrift': msg('Singleton \"{collection}\" has {count} documents — it should have one. Keep the correct document and remove the others to open it directly.'),\n 'cms.issueMessage.unknownAlias.one': msg('A document is assigned the alias \"{alias}\", which is not a declared slot of \"{collection}\" ({declared}). Reassign to a valid slot.'),\n 'cms.issueMessage.unknownAlias.other': msg('{count} documents are assigned the alias \"{alias}\", which is not a declared slot of \"{collection}\" ({declared}). Reassign to a valid slot.'),\n 'cms.issueMessage.duplicateAlias': msg('{count} documents share the alias \"{alias}\" in \"{collection}\". Each slot must be assigned to one document — reassign or clear the duplicates.'),\n 'cms.issueMessage.unfilledSlot': msg('The \"{slot}\" slot of \"{collection}\" has no document yet. Assign one so code that resolves \"{slot}\" finds it.'),\n 'cms.issueMessage.reservedFieldName': msg('Field name \"{field}\" is reserved (the self-describing node discriminator): a field named \"{field}\" may only be a select whose options exclude the engine\\'s node types (reference, asset, block, elytra/*), and this one is a \"{kind}\" field.', 'EC-654: {kind} is a field type identifier (text, object, …); the parenthesised list is code — keep it untranslated.'),\n 'cms.issueMessage.reservedFieldTypeOption': msg('Select field \"{field}\" lists the option \"{option}\", an engine node type — a \"{field}\" of \"{option}\" would read as an engine node (reference, asset, block, elytra/*). Rename the option.', 'EC-654: {option} is the option value as declared; the parenthesised list is code — keep it untranslated.'),\n 'cms.issueMessage.reservedPrototypeFieldName': msg('Field name “{field}” is reserved: no value can be stored under it (a JavaScript object and the Convex store do not keep the key, and every write refuses it). Rename the field.', 'EC-684: {field} is the literal __proto__ (never translate it).'),\n 'cms.issueMessage.reservedPrototypeMemberName': msg('Field name “{field}” is reserved: every JavaScript object already answers to it (a member of Object.prototype), so a lookup by it finds the inherited member where nothing is held. Rename the field.', 'EC-697: {field} is a JavaScript member name such as constructor or toString, and Object.prototype is code (never translate either).'),\n 'cms.issueMessage.prototypeKey': msg('“{key}” cannot be used as a key: neither a JavaScript object nor the Convex store keeps it. Rename it.', 'EC-684: an own key in a value, or a path segment naming it, refused at a write or an import; {key} is the literal __proto__ (never translate it).'),\n 'cms.issueMessage.duplicateSelectOption': msg('Duplicate select option \"{option}\" on field \"{field}\".'),\n 'cms.issueMessage.duplicateObjectField': msg('Duplicate field \"{field}\" in object field \"{parent}\".'),\n 'cms.issueMessage.assetCollectionSingleton': msg('Asset collection \"{collection}\" cannot be a singleton.'),\n 'cms.issueMessage.unknownPresentationBodyField': msg('Collection \"{collection}\" declares presentation body field \"{field}\", which it does not define.'),\n 'cms.issueMessage.duplicateCollectionField': msg('Duplicate field \"{field}\" in collection \"{collection}\".'),\n 'cms.issueMessage.duplicateCollectionId': msg('Duplicate collection id \"{collection}\".'),\n 'cms.issueMessage.unknownLocale': msg('Locale \"{locale}\" is not in the configured locale set.'),\n 'cms.issueMessage.unknownVersion': msg('No version {version} recorded for document \"{id}\".'),\n 'cms.issueMessage.routeConflict': msg('Routes \"{first}\" and \"{second}\" both match the same URLs (pattern \"{pattern}\").'),\n 'cms.issueMessage.redirectLoop': msg('Redirect chain starting at \"{from}\" loops (…{chain}).'),\n 'cms.issueMessage.duplicateRedirect': msg('Redirect from \"{redirectFrom}\" duplicates the redirect from \"{keptFrom}\" — both are \"{from}\" once trailing slashes are ignored. The redirect from \"{keptFrom}\" applies; delete or change this one.'),\n 'cms.issueMessage.redirectUnreadable': msg('Stored redirect {redirect} could not be read and is not served ({reason}).', 'EC-628 (Codex F04): {redirect} is \"id\" (or #index), {reason} the column findings in English.'),\n 'cms.issueMessage.redirectReportUnreadable': msg(\"The deployment reported redirect issue #{index}, which this host cannot read — a redirect is not served; run the site on the deployment's engine version.\", 'EC-628: the delivery snapshot carried a redirect issue the host (an older engine) cannot parse.'),\n 'cms.issueMessage.allDynamicShadowsMount': msg('Route \"{route}\" (\"{pattern}\") has only dynamic segments, so it matches EVERY {depth}-segment URL — hierarchy mount \"{mountRoute}\" (\"{mountPattern}\") is consulted at that depth only where the route resolves no document. Nothing is unconditionally unreachable, but precedence there is decided by CONTENT rather than by the routes: {shadowed} are silently shadowed wherever a composed path collides with {claimed}, and neither side is told. Give the route a static prefix (\"/blog/:slug\") so it claims a namespace instead of a whole depth.'),\n 'cms.issueMessage.mountCannotServe': msg('Hierarchy mount \"{route}\" (\"{pattern}\") can never serve a document: {why}. The resolver skips such a mount silently, so every URL under \"{space}\" 404s with no issue raised.'),\n 'cms.issueMessage.deadCatchAll': msg('Route \"{route}\" (\"{pattern}\") serves nothing in either direction: it ends in a catch-all, so every router drops it, but its prefix has a dynamic segment ({dynamic}), so no hierarchy mount is built for it either. A mount\\'s prefix must be static — declare one mount per locale (`{ pattern: \\'/de/:path*\\', locale: \\'de\\' }`), or drop the route.'),\n 'cms.issueMessage.mountConflict': msg('{opening} — an exact tie, separated only by declaration order, so \"{earlier}\" (collection \"{earlierCollection}\") claims every URL there its own tree resolves, and \"{laterCollection}\" documents at those URLs are unreachable.'),\n 'cms.issueMessage.routeBoundDocumentNotFound': msg('Route-bound document \"{collection}:{id}\" was not found.'),\n 'cms.issueMessage.routeParamNotCaptured': msg('Route \"{route}\" binds its document to URL parameter \":{param}\", which pattern \"{pattern}\" does not capture.'),\n 'cms.issueMessage.collectionNotDefined': msg('Collection \"{collection}\" is not defined.'),\n 'cms.issueMessage.storedDocumentUnreadable': msg('Stored document {document} could not be read and is not delivered ({reason}).', 'EC-585 (Codex F12): {document} is collection:id (or #index), {reason} the schema findings in English.'),\n 'cms.issueMessage.unaddressableLocaleCollision': msg('No URL reaches \"{id}\" in locale \"{locale}\": its address would be \"{url}\", but the first segment \"{segment}\" is a declared locale code, so the site reads that URL as locale \"{segment}\", path \"{readPath}\". Rename that segment — on this document or on the ancestor that owns it — so it does not collide with a locale code.'),\n 'cms.issueDetail.expectsString': msg('expects a string'),\n 'cms.issueDetail.expectsRichText': msg('expects rich-text content (a string or a rich-text value)'),\n 'cms.issueDetail.expectsNumber': msg('expects a number'),\n 'cms.issueDetail.expectsBoolean': msg('expects a boolean'),\n 'cms.issueDetail.expectsIsoDate': msg('expects an ISO 8601 date (e.g. \"2026-09-18\")'),\n 'cms.issueDetail.expectsDate': msg('expects a date (ISO 8601 string or epoch number)'),\n 'cms.issueDetail.valueNotAmongOptions': msg('has value \"{value}\" not among its options'),\n 'cms.issueDetail.expectsObjectList': msg('expects a list of objects'),\n 'cms.issueDetail.expectsObject': msg('expects an object'),\n 'cms.issueDetail.implausibleYear': msg('has the year {year}, which looks unintended (a four-digit year is expected)'),\n 'cms.issueDetail.dateBoundNotADate': msg('declares {bound} `{declared}` on a date field, which is not a date — use an ISO 8601 string such as \"1900-01-01\"'),\n 'cms.issueDetail.earlierThanMin': msg('is earlier than {min}'),\n 'cms.issueDetail.laterThanMax': msg('is later than {max}'),\n 'cms.issueDetail.stringBoundOffDate': msg('declares {bound} \"{declared}\" as a string, which is only meaningful on a date field — use a number'),\n 'cms.issueDetail.shorterThanMinLength': msg('is shorter than min length {min}'),\n 'cms.issueDetail.longerThanMaxLength': msg('is longer than max length {max}'),\n 'cms.issueDetail.doesNotMatchPattern': msg('does not match pattern {pattern}'),\n 'cms.issueDetail.lessThanMin': msg('is less than min {min}'),\n 'cms.issueDetail.greaterThanMax': msg('is greater than max {max}'),\n 'cms.issueDetail.fewerThanMinItems': msg('has fewer than {min} items'),\n 'cms.issueDetail.moreThanMaxItems': msg('has more than {max} items'),\n 'cms.issueDetail.duplicateValue': msg('must be unique across the collection, but document \"{other}\" already has this value'),\n 'cms.issueDetail.duplicateValueForLocale': msg('must be unique across the collection, but document \"{other}\" already has this value for locale \"{locale}\"'),\n 'cms.issueDetail.shadowedRootDocuments': msg('the ROOT documents of \"{collection}\" under \"{space}\"'),\n 'cms.issueDetail.shadowedNestedDocuments': msg('\"{collection}\" documents nested {levels} levels under \"{space}\"'),\n 'cms.issueDetail.claimedBySlug': msg('a \"{collection}\" slug'),\n 'cms.issueDetail.claimedByOwnDocument': msg('the route\\'s own document'),\n 'cms.issueDetail.mountCollectionNotDeclared': msg('collection \"{collection}\" is not declared'),\n 'cms.issueDetail.mountCollectionNotHierarchical': msg('collection \"{collection}\" has no `parent` self-relation, so it has no nested paths to compose'),\n 'cms.issueDetail.mountsSamePath': msg('Hierarchy mounts \"{earlier}\" (\"{earlierPattern}\") and \"{later}\" (\"{laterPattern}\") are both mounted at \"{space}\"'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // CMS — details pane (slot + sidebar fields)\n // ─────────────────────────────────────────────────────────────────────────\n 'cms.details.slot': msg('Slot', 'A named handle the site uses to find a document (e.g. the main menu).'),\n 'cms.details.noSlot': msg('— No slot —'),\n 'cms.details.slotInUse': msg(' — in use', 'Suffix on a slot option already taken by another document.'),\n 'cms.details.slotHint': msg('A stable name the site uses to find this document (e.g. the main menu), instead of which exact entry it is. One document per slot.'),\n 'cms.details.empty': msg('No document properties to set.'),\n // The composed-URL affordance (EC-315 \"hybrid split\") — moved to the detail-editor\n // HEADER under the title in 0.0.42 (round 3); ancestor-document segments link to\n // their editors, static route segments are plain, and the leaf carries the live link.\n 'cms.details.urlCurrent': msg('this page', 'Tooltip on the final URL segment — the document being edited.'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // CMS — import dialog\n // ─────────────────────────────────────────────────────────────────────────\n 'cms.import.title': msg('Import documents'),\n 'cms.import.invalidJson': msg('Input is not valid JSON.'),\n 'cms.import.imported': msg('{count} imported'),\n 'cms.import.rejected': msg('{count} rejected:'),\n 'cms.import.confirm': msg('Import', 'Confirm button in the import dialog.'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // CMS — versions (compare + pane)\n // ─────────────────────────────────────────────────────────────────────────\n 'cms.version.paneLabel': msg('Versions'),\n 'cms.version.compare': msg('Compare'),\n 'cms.version.closeCompare': msg('Close compare'),\n 'cms.version.loadingHistory': msg('Loading version history…'),\n // Shown in the lazy boundary while the version-compare chunk loads (EC-322).\n 'cms.version.loadingCompare': msg('Loading the comparison…'),\n 'cms.version.versionUnavailable': msg('That version is no longer available. Pick another to compare.'),\n 'cms.version.currentDraft': msg('Current draft'),\n 'cms.version.unsavedEdits': msg('unsaved edits'),\n 'cms.version.baseCaption': msg('Base'),\n 'cms.version.compareWithCaption': msg('Compare with'),\n 'cms.version.compareNewer': msg('Compare a newer version'),\n 'cms.version.compareOlder': msg('Compare an older version'),\n 'cms.version.restoreWholeTitle': msg('Restore the whole document to v{version}'),\n 'cms.version.restoreVersion': msg('Restore version'),\n 'cms.version.noDifferences': msg('No differences'),\n 'cms.version.changeSummary.one': msg('{count} change · {unchanged} unchanged'),\n 'cms.version.changeSummary.other': msg('{count} changes · {unchanged} unchanged'),\n 'cms.version.comparingPastVersionsHint': msg(' · comparing two past versions — set “Compare with” to Current draft to restore'),\n 'cms.version.versionsIdentical': msg('These two versions are identical.'),\n 'cms.version.beforeVersion': msg('Before · v{version}'),\n 'cms.version.afterTarget': msg('After · {target}'),\n 'cms.version.restoreField': msg('Restore {field} from v{version}'),\n 'cms.version.restoreFieldLocale': msg('Restore {field} ({locale}) from v{version}'),\n 'cms.version.textUnchanged': msg('Text unchanged — formatting or whitespace differs.'),\n 'cms.version.restoreBlock': msg('Restore this block from v{version}'),\n 'cms.version.nestedContentChanged': msg('Nested content changed.'),\n // EC-593 — where a nested component's diff row sits.\n 'cms.version.nestedInProse': msg('in the text'),\n 'cms.version.nestedIn': msg('inside {path}', '{path} lists component names, e.g. \"Section › Grid\".'),\n 'cms.version.blockAdded': msg('Block added.'),\n 'cms.version.blockRemoved': msg('Block removed.'),\n 'cms.version.emptyValue': msg('empty'),\n 'cms.version.richText': msg('rich text'),\n 'cms.version.itemCount.one': msg('{count} item'),\n 'cms.version.itemCount.other': msg('{count} items'),\n 'cms.version.objectValue': msg('object'),\n 'cms.version.kindNew': msg('new'),\n 'cms.version.kindRemoved': msg('removed'),\n 'cms.version.unpublishedChanges': msg('Unpublished changes'),\n 'cms.version.notPublishedYet': msg('Not published yet'),\n 'cms.version.fixValidationToPublish': msg('Fix the document’s validation issues to publish'),\n 'cms.version.liveUpToDate': msg('The live version is up to date — nothing to publish.'),\n 'cms.version.comparingHint': msg('Comparing v{base} → {target}. Click a version to set it as the base.'),\n 'cms.version.noVersionsYet': msg('No published versions yet.'),\n 'cms.version.baseBadge': msg('Base'),\n 'cms.version.comparedBadge': msg('Compared'),\n 'cms.version.compareWithDraft': msg('Compare this version with the current draft'),\n 'cms.version.compareVersionLabel': msg('Compare v{version}'),\n 'cms.version.rowActionsLabel': msg('Actions for v{version}', 'Aria-label of one version row’s ⋯ action-menu trigger.'),\n 'cms.version.switchToDraftToRestore': msg('Switch to Draft to restore'),\n 'cms.version.restore': msg('Restore'),\n // EC-199 provenance — a subtle marker on versions recorded from AI-authored content.\n 'cms.version.aiAuthored': msg('AI', 'Short badge marking an AI-authored version.'),\n 'cms.version.aiAuthoredTitle': msg('Authored with the AI assistant'),\n\n // EC-317 — descriptor lane, unified/side-by-side toggle, truncation, zebra.\n 'cms.version.fieldColumnHeader': msg('Field'),\n 'cms.version.viewSideBySide': msg('Side by side'),\n 'cms.version.viewUnified': msg('Unified'),\n 'cms.version.viewModeAriaLabel': msg('Diff layout'),\n 'cms.version.unifiedCaption': msg('v{base} → {target}'),\n 'cms.version.showMore': msg('Show more'),\n 'cms.version.showLess': msg('Show less'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // CMS — delete/unpublish reference-confirm dialog\n // ─────────────────────────────────────────────────────────────────────────\n 'cms.reference.documentCount': msg('{count} documents'),\n 'cms.reference.confirmTitle': msg('{action} {subject}?'),\n 'cms.reference.checking': msg('Checking inbound references…'),\n 'cms.reference.checkUnavailable': msg('Inbound references could not be checked — the reference index is unreachable.'),\n 'cms.reference.blocked.one': msg('Blocked: {count} strict reference prevents this. Remove the references below first.'),\n 'cms.reference.blocked.other': msg('Blocked: {count} strict references prevent this. Remove the references below first.'),\n 'cms.reference.notReferenced': msg('Not referenced anywhere.'),\n 'cms.reference.permanentDelete.one': msg('This permanently deletes the document.'),\n 'cms.reference.permanentDelete.other': msg('This permanently deletes the {count} selected documents.'),\n 'cms.reference.canProceed': msg('You can {action} — {summary} will show a fallback until fixed. Each one becomes a visible validation issue.'),\n 'cms.reference.proceedUnavailable': msg('Proceeding is allowed, but affected places cannot be listed right now.'),\n 'cms.reference.proceedAnyway': msg('{action} anyway'),\n 'cms.reference.verb.unpublish': msg('unpublish', 'Lowercase verb spliced into “You can {action} …”.'),\n 'cms.reference.verb.delete': msg('delete'),\n 'cms.reference.placeCount.one': msg('{count} place'),\n 'cms.reference.placeCount.other': msg('{count} places'),\n 'cms.reference.bulkSummary': msg('{count} documents are affected; {places}'),\n 'cms.reference.atLocation': msg('at', 'Connector before a field/location deep-link in an impact row.'),\n 'cms.reference.strictBadge': msg('strict'),\n 'cms.reference.draftBadge': msg('draft'),\n 'cms.reference.publishedBadge': msg('published'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // CMS — field controls / scalar editor\n // ─────────────────────────────────────────────────────────────────────────\n 'cms.field.rendererCrashed': msg('Custom renderer crashed — showing the built-in control.'),\n 'cms.field.noRenderer': msg('No field renderer registered for control “{control}”.'),\n 'cms.field.itemActions': msg('Item actions'),\n 'cms.field.moveUp': msg('Move up'),\n 'cms.field.moveDown': msg('Move down'),\n 'cms.field.collapseAll': msg('Collapse all'),\n 'cms.field.expandAll': msg('Expand all'),\n 'cms.field.noItems': msg('No items'),\n 'cms.field.dragToReorder': msg('Drag to reorder'),\n 'cms.field.addItem': msg('Add item'),\n 'cms.field.value': msg('Value', 'Default aria-label for the scalar value editor.'),\n 'cms.field.valuePlaceholder': msg('value'),\n 'cms.field.colour': msg('Colour', 'aria-label on the colour-swatch field control.'),\n // EC-315 — the smart slug / URL-segment control.\n 'cms.field.slug.regenerate': msg('Regenerate the slug', 'Tooltip on the ↻ button that re-derives the slug from its source field.'),\n 'cms.field.slug.taken': msg('Already used by “{title}”', 'Inline warning when the slug collides with another document.'),\n 'cms.field.slug.takenGeneric': msg('This slug is already in use.', 'Inline warning when a custom uniqueness check reports the slug is taken.'),\n // EC-691 — a page an explicit route binds answers only at that route's address.\n 'cms.field.slug.routedComposesChildren': msg(\n 'This page’s address is {path}. Its slug only composes the paths of its child pages.',\n 'Hint under the slug control of a page an explicit route binds (e.g. Home at /): the slug is not an address of its own.',\n ),\n\n // ─────────────────────────────────────────────────────────────────────────\n // CMS — relation picker\n // ─────────────────────────────────────────────────────────────────────────\n 'cms.relation.change': msg('Change'),\n 'cms.relation.openTitle': msg('Open {title}'),\n 'cms.relation.pick': msg('Pick'),\n 'cms.relation.pickTitle.one': msg('Pick a related document'),\n 'cms.relation.pickTitle.many': msg('Pick related document'),\n 'cms.relation.fromCollection': msg('From {collection}'),\n 'cms.relation.selectMultipleHint': msg('select multiple'),\n 'cms.relation.noDocuments': msg('No documents in {collection}.'),\n 'cms.relation.selectedCount': msg('{count} selected'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // CMS — asset field + asset picker\n // ─────────────────────────────────────────────────────────────────────────\n 'cms.asset.rejected.one': msg('“{name}” skipped — only {types} allowed here.'),\n 'cms.asset.rejected.other': msg('{count} files skipped — only {types} allowed here.'),\n 'cms.asset.dropToUpload': msg('Drop to upload'),\n 'cms.asset.selectOrDrop': msg('Select or drop an image'),\n 'cms.asset.selectAsset': msg('Select an asset'),\n 'cms.asset.altLabel': msg('Alt:', 'Inline label prefixing an image’s alt text.'),\n 'cms.asset.notSet': msg('not set'),\n 'cms.asset.imageOptions.title': msg('Image options'),\n 'cms.asset.imageOptions.description': msg('What belongs to this use of the image, apart from what is true of the image everywhere.'),\n 'cms.asset.imageOptions.placementTitle': msg('In this place', 'Image options dialog: the section of per-use (placement) fields, e.g. a caption.'),\n 'cms.asset.imageOptions.placementHint': msg('Only this use of the image — another page can show it differently.'),\n 'cms.asset.imageOptions.assetTitle': msg('About this image', 'Image options dialog: the section of the asset’s own facts (alt text, credit, focal point).'),\n 'cms.asset.imageOptions.assetHint': msg('Applies everywhere this image is used — a change here changes every use.'),\n 'cms.asset.imageOptions.whereUsed': msg('Where it is used'),\n 'cms.asset.replaceFile': msg('Replace file', 'Asset action: upload new bytes into the SAME asset — every use shows the new file.'),\n 'cms.asset.replacing': msg('Replacing…'),\n 'cms.asset.replaceWrongKind': msg('“{name}” not used — a replacement must be {types}, like the current file.'),\n 'cms.asset.replaceSaveFirst': msg('Save or discard the metadata changes first.'),\n 'cms.asset.replacedCheckFocal': msg('The file was replaced — check that the focal point still frames the subject.'),\n 'cms.asset.focalPoint': msg('Focal point'),\n 'cms.asset.resetToCentre': msg('Reset to centre'),\n 'cms.asset.focalPointHint': msg('Click or drag on the image to set the focal point used when it’s cropped.'),\n 'cms.asset.noMetaFields': msg('No editable metadata fields are declared on the asset collection. Add fields (e.g. {code1}, {code2}) to it in code.'),\n 'cms.asset.pickTitle': msg('Pick an asset'),\n 'cms.asset.pickDescription': msg('Select from the project’s asset library.'),\n 'cms.asset.noProject': msg('The asset library needs a project — this CMS session has none.'),\n 'cms.asset.restoreDialogSize': msg('Restore dialog size'),\n 'cms.asset.maximizeDialog': msg('Maximize dialog'),\n 'cms.asset.searchPlaceholder': msg('Search assets…'),\n 'cms.asset.loading': msg('Loading assets…'),\n 'cms.asset.loadError': msg('Assets failed to load.'),\n 'cms.asset.noMatches': msg('No assets match your search.'),\n 'cms.asset.empty': msg('No assets yet — drop files here or use Upload.'),\n 'cms.asset.noAltText': msg('No alt text'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // Assets rail (EC-319: the universal list + grid/list toggle + detail surface)\n // ─────────────────────────────────────────────────────────────────────────\n 'assets.error.loadFailed': msg('Assets failed to load'),\n 'assets.loading': msg('Loading assets…'),\n 'assets.uploads.heading': msg('Uploads'),\n 'assets.upload.phase.queued': msg('queued'),\n 'assets.upload.phase.preparing': msg('preparing'),\n 'assets.upload.phase.uploading': msg('uploading'),\n 'assets.upload.phase.confirming': msg('saving metadata'),\n 'assets.upload.phase.done': msg('done'),\n 'assets.upload.phase.failed': msg('failed'),\n 'assets.upload.attempt': msg('attempt {count}'),\n 'assets.upload.dismissLabel': msg('Dismiss upload'),\n 'assets.viewToggle.groupLabel': msg('List or grid view'),\n 'assets.viewToggle.list': msg('List view'),\n 'assets.viewToggle.grid': msg('Grid view'),\n 'assets.detail.metadataHeading': msg('Metadata'),\n 'assets.detail.noFileUrl': msg('This asset has no file to serve — it renders as an empty image everywhere it is used. Replace the file.'),\n 'assets.detail.metaDriftNotLocalized': msg(\n 'Old translations are stored for {fields}, but the field is no longer translatable — every page shows its shared value. Saving the field removes them.',\n 'EC-659: {fields} lists field names with the locales holding an old translation, e.g. “alt (de, fr)”.',\n ),\n 'assets.detail.metaDriftUndeclared': msg(\n 'Translated values are stored for {fields}, which this asset collection does not declare — they are not used anywhere.',\n 'EC-659: {fields} lists stored field names with their locales, e.g. “caption (de)”.',\n ),\n 'assets.references.buttonLabel': msg('References'),\n 'assets.references.title': msg('Used by — {name}'),\n 'assets.references.description': msg('Everything referencing this asset, with deep links to the exact field or node.'),\n 'assets.delete.raceError.one': msg('Asset is now referenced in {count} place — reopen to review.'),\n 'assets.delete.raceError.other': msg('Asset is now referenced in {count} places — reopen to review.'),\n 'assets.delete.title': msg('Delete {filename}?'),\n 'assets.delete.description': msg('Removes the stored bytes and the metadata record. This cannot be undone.'),\n 'assets.delete.checking': msg('Checking references…'),\n 'assets.delete.inUse.one': msg('In use in {count} place'),\n 'assets.delete.inUse.other': msg('In use in {count} places'),\n 'assets.delete.brokenWarning': msg('Deleting will leave these references broken — they will surface as validation issues.'),\n 'assets.delete.noReferences': msg('No references found. Safe to delete.'),\n 'assets.delete.confirmAnyway': msg('Delete anyway'),\n 'assets.focalPoint.noPreview': msg('No image preview — upload or pick an image asset to set a focal point.'),\n 'assets.focalPoint.setLabel': msg('Set focal point'),\n // Generate previews — EC-400 thumbnail backfill maintenance action.\n 'assets.generatePreviews.button': msg('Generate previews'),\n 'assets.generatePreviews.hint': msg(\n 'Downscale existing images to lighter preview thumbnails, cutting egress. Skips assets that already have one.',\n ),\n 'assets.generatePreviews.running': msg('Generating previews… {done}/{total}'),\n 'assets.generatePreviews.done': msg('Generated {count} previews'),\n 'assets.generatePreviews.none': msg('Previews already up to date'),\n 'assets.generatePreviews.cancelled': msg('Cancelled — {count} generated'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // Users (section)\n // ─────────────────────────────────────────────────────────────────────────\n 'users.checkingAccess': msg('Checking access…'),\n 'users.restrictedTitle': msg('Admins only'),\n 'users.restrictedBody': msg('Managing users and roles requires the admin role on this deployment. Ask an admin to grant you access.'),\n 'users.loadFailed': msg('Users failed to load'),\n 'users.loading': msg('Loading users…'),\n // Built-in users rail — its schema labels resolve through the catalog (msgLabel),\n // so a consumer's translation catalog localizes the rail with no per-rail override.\n 'users.rail.label': msg('Users'),\n 'users.rail.labelSingular': msg('user', 'Singular noun for one users-rail row, e.g. in a header.'),\n 'users.field.name.label': msg('Name'),\n 'users.field.email.label': msg('Email'),\n 'users.field.role.label': msg('Role'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // Invites (EC-324) — invite-based onboarding, admin action in the users rail\n // ─────────────────────────────────────────────────────────────────────────\n 'invites.invite': msg('Invite user'),\n 'invites.pending': msg('Pending:', 'Label before the list of pending invite chips.'),\n 'invites.dialogTitle': msg('Invite a user'),\n 'invites.dialogBody': msg('They join by creating an account with this email. Open sign-up is closed — only invited emails can register.'),\n 'invites.emailLabel': msg('Email'),\n 'invites.roleLabel': msg('Role'),\n 'invites.send': msg('Send invite'),\n 'invites.sending': msg('Sending…'),\n 'invites.sent': msg('Invited {email}.', 'Toast after an invite is created; {email} is the invitee.'),\n 'invites.revoked': msg('Revoked the invite for {email}.'),\n 'invites.revokeAria': msg('Revoke the invite for {email}', 'aria-label on the revoke (×) button of an invite chip.'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // Account settings (EC-240 H-tail) — the member's OWN record + credentials\n // ─────────────────────────────────────────────────────────────────────────\n 'account.loading': msg('Loading your account…'),\n 'account.loadFailed': msg('Your account failed to load'),\n 'account.notMemberTitle': msg('No access yet'),\n 'account.notMemberBody': msg('You are signed in but not yet a member of this deployment. Ask an admin to grant you a role.'),\n // Account rail schema labels resolve through the catalog (msgLabel), like the users rail.\n 'account.rail.label': msg('Account', 'Header label for the account-settings surface.'),\n 'account.rail.labelSingular': msg('account'),\n 'account.field.name.label': msg('Name'),\n 'account.field.avatar.label': msg('Avatar URL'),\n 'account.field.avatar.hint': msg('A link to your profile image.'),\n 'account.field.email.label': msg('Email'),\n 'account.field.role.label': msg('Role'),\n 'account.security.title': msg('Sign-in & security'),\n 'account.security.method': msg('You sign in with your email and password.'),\n 'account.password.current': msg('Current password'),\n 'account.password.new': msg('New password'),\n 'account.password.confirm': msg('Confirm new password'),\n 'account.password.change': msg('Change password'),\n 'account.password.changing': msg('Changing…'),\n 'account.password.changed': msg('Your password has been changed.'),\n 'account.password.mismatch': msg('The new passwords don’t match.'),\n // EC-412 — engine-classified change-password failures. Each message MUST stay\n // byte-identical to the auth-adapter copy it localizes:\n // `changePasswordErrorMessageKey` (lib/auth-errors.ts) recognizes a failure by\n // exact EN-message match (the EC-397 sign-in pattern), so a reworded adapter\n // message falls back to the raw English until re-synced here —\n // `lib/auth-errors.test.ts` pins the sync against the real classifier.\n 'account.password.error.notSignedIn': msg('You are not signed in.', 'Change-password attempt without a live session.'),\n 'account.password.error.currentIncorrect': msg('Your current password is incorrect.'),\n 'account.password.error.weakPassword': msg('Choose a stronger password (at least 8 characters).'),\n 'account.password.error.tooManyAttempts': msg('Too many failed attempts — wait a moment, then try again.', 'EC-377: the current-password verification rate limit tripped.'),\n 'account.password.error.deploymentMisconfigured': msg('This deployment can’t change your password: its auth signing key is not set. Run `npx @convex-dev/auth`.', 'The backend deployment has no auth signing key. Keep the `npx @convex-dev/auth` command verbatim.'),\n 'account.password.error.serverError': msg('Password change failed (unexpected server error) — check the deployment logs.', 'Honest generic for an unclassifiable change-password failure.'),\n 'account.password.error.playgroundUnsupported': msg('Password change isn’t available in playground mode.', 'Playground mode has fixed seeded dev users; credentials can’t change.'),\n // EC-416 — engine-classified update-profile failures (the identity form's\n // save, `self-account-view-source.ts` → `AuthAdapter.updateProfile`). The\n // `not-authenticated` reason reuses `account.password.error.notSignedIn`\n // above (byte-identical adapter constant); `updateProfile` is NOT richly\n // classified like change-password, so every other failure collapses to one\n // generic `unavailable` message plus the playground `unsupported` refusal.\n 'account.profile.error.unavailable': msg('Profile update is currently unavailable.', 'Honest generic for an unclassifiable update-profile failure (EC-416) — the users:updateProfile mutation never throws a coded error like change-password.'),\n 'account.profile.error.playgroundUnsupported': msg('Profile editing isn’t available in playground mode.', 'Playground mode has fixed seeded dev users; identity fields can’t change.'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // Redirects (section)\n // ─────────────────────────────────────────────────────────────────────────\n // EC-616 — a generic record rail (`nav.rail(kind)`); `{label}` is the rail's label.\n 'records.loadFailed': msg('{label} failed to load', 'A record rail failed to load; {label} is the rail name, e.g. \"Submissions\".'),\n 'records.loading': msg('Loading {label}…', '{label} is the rail name, e.g. \"Submissions\".'),\n 'records.untitled': msg('(new {label})', 'Title of an unsaved new record; {label} is the singular record noun, e.g. \"redirect\".'),\n 'redirects.loadFailed': msg('Redirects failed to load'),\n 'redirects.loading': msg('Loading redirects…'),\n // Built-in redirects rail — schema labels via the catalog (msgLabel), see above.\n 'redirects.rail.label': msg('Redirects'),\n 'redirects.rail.labelSingular': msg('redirect', 'Singular noun for one redirect row, e.g. in a header.'),\n 'redirects.field.from.label': msg('From'),\n 'redirects.field.to.label': msg('To'),\n 'redirects.field.permanent.label': msg('Permanent (301)'),\n 'redirects.field.enabled.label': msg('Enabled'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // References panel\n // ─────────────────────────────────────────────────────────────────────────\n 'references.title': msg('References'),\n 'references.hintOutbound': msg('What this entry points at — click to jump to the target, or to the exact field.'),\n 'references.emptyOutbound': msg('No outbound references.'),\n 'references.usedBy': msg('Used by'),\n 'references.hintInbound': msg('Everything referencing this entry — click to jump to the exact field or node.'),\n 'references.emptyInbound': msg('Not referenced anywhere.'),\n 'references.loading': msg('Loading references…'),\n 'references.loadFailed': msg('References failed to load'),\n 'references.indexUnreachable': msg('The reference index is unreachable.'),\n 'references.sectionLoadError': msg('Couldn’t load this section: {error}'),\n 'references.locationPrefix': msg('at', 'Prefix before a reference’s location label.'),\n 'references.badgeDraft': msg('draft'),\n 'references.badgePublished': msg('published'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // Components registry browser\n // ─────────────────────────────────────────────────────────────────────────\n 'components.detail.notFound.title': msg('Component not found'),\n 'components.detail.notFound.body': msg('No component is registered with id {id}.'),\n 'components.detail.notFound.back': msg('Back to components'),\n 'components.detail.allComponents': msg('All components'),\n 'components.status.valid': msg('valid'),\n 'components.status.incompatible': msg('incompatible'),\n 'components.status.invalid': msg('invalid'),\n 'components.status.aria': msg('Status: {status}'),\n 'components.status.description.valid': msg('Manifest is registered and an implementation is wired up.'),\n 'components.status.description.incompatible': msg('Manifest is registered but no implementation is available — the renderer will show a fallback.'),\n 'components.status.description.invalid': msg('The registry reported a structured issue for this component.'),\n 'components.index.title': msg('Component registry'),\n 'components.index.subtitle': msg('Browse the platform primitives and this project’s components. Select one to inspect its manifest, edit props against a live preview, and see where it is used.'),\n 'components.index.stat.total': msg('Components'),\n 'components.index.stat.totalHint': msg('{primitives} base · {projects} project'),\n 'components.index.stat.valid': msg('Valid'),\n 'components.index.stat.needAttention': msg('Need attention'),\n 'components.index.stat.needAttentionHint': msg('{incompatible} incompatible · {invalid} invalid'),\n 'components.index.pickHint': msg('Pick a component from the list to open its detail view — a live editable preview, the prop & slot manifest, and where it is used.'),\n 'components.index.byCategory': msg('By category'),\n 'components.index.guide.title': msg('Registering & extending components'),\n 'components.index.guide.badge': msg('for developers'),\n 'components.index.guide.intro': msg('Components are code, owned by your repo. Register a manifest (prop schemas, defaults, inspector controls, slots, and preview fixtures) and the studio browses, inspects, and previews it. These guides, in the Elytra engine repository’s docs, cover the details:'),\n 'components.index.guide.doc.authoring': msg('How to declare and register a component so the studio can browse, inspect, and preview it.'),\n 'components.index.guide.doc.components': msg('The guide’s components chapter: the manifest + implementation pair, registering the list, fixtures, reusable elements, styling.'),\n 'components.index.guide.doc.guide': msg('The guide’s overview and chapter index: setup, the config API, delivery, the CLI and environment reference.'),\n 'components.index.guide.namespaceNote': msg('Components are the list in your config, with ids you choose (Heading, site.Hero). Elytra’s own components are the opt-in @elytracms/components package — list them, a subset, or none.'),\n 'components.taxonomy.uncategorized': msg('Uncategorized'),\n 'components.detail.tab.preview': msg('Preview'),\n 'components.detail.tab.manifest': msg('Manifest'),\n 'components.preview.reset': msg('Reset state'),\n 'components.preview.resetProps': msg('Reset props'),\n 'components.preview.edited': msg('edited'),\n 'components.preview.incompatibleNote': msg('No implementation is wired up — the renderer is showing its fallback.'),\n 'components.preview.serverOnlyTitle': msg('Server-only component'),\n 'components.preview.serverOnlyBody': msg('This component is not client-renderable, so it can’t run in the live preview. It still renders in your delivery frames.'),\n 'components.preview.slotsNote': msg('Slot content in the preview follows the selected state. Full slot editing happens in a document’s canvas — transfer this combination into one with “Use in document…”.'),\n 'components.preview.unavailableTitle': msg('Preview unavailable', 'Shown in place of a component preview that threw while rendering.'),\n 'components.preview.propNeedsDocument': msg('Editable in a document — no workspace context in the component preview.', 'Hint under an asset/relation/object prop control in the read-only component preview.'),\n 'components.transfer.action': msg('Use in document…'),\n 'components.transfer.title': msg('Use “{name}” in a document'),\n 'components.transfer.description': msg('Create a new draft, or add to an existing document’s blocks field, then open it.'),\n 'components.transfer.intoField': msg('into'),\n 'components.transfer.newDocument': msg('New {collection} document'),\n 'components.transfer.orExisting': msg('or add to an existing document'),\n 'components.transfer.noTargets': msg('No document field can receive this component.'),\n 'components.fieldInspector.props': msg('Props'),\n 'components.fieldInspector.noProps': msg('This component declares no editable props.'),\n 'components.fieldInspector.slots': msg('Slots'),\n 'components.fieldInspector.noSlots': msg('This component has no slots.'),\n 'components.fieldInspector.inline': msg('inline'),\n 'components.fieldInspector.default': msg('default'),\n 'components.fieldInspector.allows': msg('allows'),\n 'components.fixtureRunner.statesAria': msg('Preview states'),\n 'components.preview.breakpointAria': msg('Preview width'),\n 'components.browser.searchPlaceholder': msg('Search components…'),\n 'components.browser.searchAria': msg('Search components'),\n 'components.browser.namespaceAria': msg('Filter by namespace'),\n 'components.browser.all': msg('All'),\n 'components.browser.primitives': msg('Primitives'),\n 'components.browser.project': msg('Project'),\n 'components.browser.noMatchQuery': msg('No components match “{query}”.'),\n 'components.browser.noMatchFilters': msg('No components match the selected filters.'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // Settings\n // ─────────────────────────────────────────────────────────────────────────\n 'settings.identity.title': msg('Identity'),\n 'settings.identity.name': msg('Name'),\n 'settings.identity.urlKey': msg('URL key'),\n 'settings.locales.title': msg('Locales'),\n 'settings.locales.configuredCount': msg('{count} configured'),\n 'settings.locales.configured': msg('Configured locales'),\n 'settings.locales.defaultSuffix': msg(' · default'),\n 'settings.environments.title': msg('Environments & export'),\n 'settings.environments.label': msg('Environments'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // App-views shell\n // ─────────────────────────────────────────────────────────────────────────\n 'appViews.singleton.opening': msg('Opening {label}…'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // Builder / canvas\n // ─────────────────────────────────────────────────────────────────────────\n // Shown in the lazy boundary while the page-builder canvas chunk loads (EC-322).\n 'builder.canvas.loading': msg('Loading the page builder…'),\n 'builder.blocksPanel.title': msg('Insert block'),\n 'builder.blocksPanel.addsInto': msg('Adds into {destination}.'),\n 'builder.blocksPanel.searchPlaceholder': msg('Search blocks…'),\n 'builder.blocksPanel.searchAria': msg('Search blocks'),\n 'builder.blocksPanel.layoutHelpers': msg('layout helpers'),\n 'builder.blocksPanel.noAllowed': msg('No allowed components match.'),\n 'builder.blocksPanel.noMatch': msg('No components match “{query}”.'),\n 'builder.blocksPanel.insertTileAria': msg('Insert {title} — {variant}'),\n 'builder.blocksPanel.copyExactAria': msg('Copy exact configuration — {title} ({variant})'),\n 'builder.blocksPanel.copyExactConfiguration': msg('Copy exact configuration'),\n 'builder.blocksPanel.previewFailed': msg('Preview failed: {error}'),\n // EC-439: one tile per component; a 2+-fixture component gets a variants chip + flyout.\n 'builder.blocksPanel.insertComponentAria': msg('Insert {title}'),\n 'builder.blocksPanel.variantCount': msg('{count} variants', 'Compact chip on a component tile; count is always ≥ 2.'),\n 'builder.blocksPanel.variantsAria': msg('Show {count} variants of {title}'),\n 'builder.blocksPanel.variantsHeading': msg('Variants'),\n 'builder.blocksPanel.variantIssuesHint': msg('Some variants have validation issues.'),\n 'builder.pageTree.title': msg('Page tree'),\n 'builder.pageTree.addChild': msg('Add child'),\n 'builder.pageTree.moreActions': msg('More actions'),\n 'builder.pageTree.moveUp': msg('Move up'),\n 'builder.pageTree.moveDown': msg('Move down'),\n 'builder.clipboard.paste': msg('Paste'),\n 'builder.clipboard.cut': msg('Cut'),\n 'builder.clipboard.writeError': msg('Could not write to the clipboard: {detail}'),\n 'builder.clipboard.rootCannotBeCut': msg('The page root cannot be cut.'),\n 'builder.clipboard.copied': msg('Copied {label}'),\n 'builder.clipboard.cutNotice': msg('Cut {label}'),\n 'builder.clipboard.pastedInto': msg('{summary} · into {destination}'),\n 'builder.clipboard.notAllowed': msg(\n '{component} cannot be pasted into {destination} — the slot does not allow it.',\n '{component} is the pasted root’s short component name (e.g. “Hero”); {destination} is “Parent · slot” (e.g. “Section · body”).',\n ),\n // EC-554 — the composition FIELD's top-level `allow` refuses the pasted root.\n 'builder.clipboard.notAllowedByField': msg(\n '{component} cannot be pasted at the top level of \"{field}\" — the field does not allow it.',\n '{component} is the pasted root’s short component name (e.g. “Container”); {field} is the composition field’s label (e.g. “Canvas”).',\n ),\n 'builder.clipboard.issueComponent': msg('component'),\n // EC-584 — a refused placement: the builder reducer ran the one placement judge and\n // left the composition unchanged. Shown above the canvas (and for a refused paste).\n 'builder.placement.notAllowedByField': msg(\n '{component} is not allowed at the top level of \"{field}\" — the field does not allow it. Nothing changed.',\n '{component} is the component’s short name (e.g. “Hero”); {field} is the composition field’s label (e.g. “Canvas”).',\n ),\n 'builder.placement.notAllowedInSlot': msg(\n '{component} is not allowed in {destination} — the slot does not allow it. Nothing changed.',\n '{component} is the component’s short name; {destination} is “Parent · slot” (e.g. “Section · body”).',\n ),\n 'builder.placement.serverOnly': msg(\n '{component} renders on the server only and cannot be placed on the canvas. Nothing changed.',\n 'EC-191: a component declared clientRenderable: false — usable in page/layout code, not in an editor composition.',\n ),\n 'builder.placement.dismiss': msg('Dismiss'),\n // EC-494 — the engine-built clipboard failures (`core/clipboard`), which carry a\n // catalog ref because that subpath may not import this catalog, plus the studio-side\n // paste diff and its summary (translated in place — it already holds the locale).\n 'builder.clipboard.error.corruptJson': msg('Clipboard content is not valid JSON: {detail}', '{detail} is the JS parser’s own diagnostic — untranslated prose, kept verbatim.'),\n 'builder.clipboard.error.notEnvelope': msg('Clipboard content is not an Elytra fragment envelope.'),\n 'builder.clipboard.error.foreignFormat': msg('Clipboard content is not an Elytra fragment (expected format \"{expected}\").'),\n 'builder.clipboard.error.versionNewer': msg('Fragment version {version} is newer than this studio supports (version {supported}).'),\n 'builder.clipboard.error.versionUnsupported': msg('Fragment version {version} is not supported (this studio reads version {supported}).'),\n 'builder.clipboard.error.invalidPayload': msg('Clipboard fragment violates the fragment schema.'),\n 'builder.clipboard.error.nodeNotFound': msg('No node \"{nodeId}\" exists in the composition.'),\n 'builder.clipboard.error.fixtureNotFound': msg('Component \"{component}\" declares no fixture named \"{fixture}\".'),\n 'builder.clipboard.issue.missingComponent': msg('Component \"{componentId}\" is not registered in this project.'),\n 'builder.clipboard.summary.pasted': msg('Pasted'),\n 'builder.clipboard.summary.pastedWith': msg('Pasted — {parts}', '{parts} is the comma-joined list of the summary fragments below.'),\n 'builder.clipboard.summary.componentMissingOne': msg('{count} component missing'),\n 'builder.clipboard.summary.componentsMissing': msg('{count} components missing'),\n 'builder.reuse.makeReusable': msg('Make reusable'),\n 'builder.reuse.detachToCopy': msg('Detach to copy'),\n 'builder.reuse.defaultElementName': msg('Reusable element'),\n 'builder.reuse.madeReusablePublished': msg('Made “{name}” reusable and published it.'),\n 'builder.reuse.madeReusablePublishFailed': msg('Made “{name}” reusable, but publishing failed — publish it from its document.'),\n 'builder.reuse.madeReusableDraft': msg('Made “{name}” reusable (draft) — publish it to show on live pages.'),\n // EC-728 — Undo of \"Make reusable\" restored the block; the reusable document it created\n // stays, and the notice names it and why. {name} is the reusable's name (project data).\n 'builder.reuse.undoKeptPublished': msg('Undone — the reusable element “{name}” stays: it is published.'),\n 'builder.reuse.undoKeptEdited': msg('Undone — the reusable element “{name}” stays: it was edited since it was made.'),\n 'builder.reuse.undoKeptReferenced': msg('Undone — the reusable element “{name}” stays: it is embedded elsewhere.'),\n 'builder.reuse.undoKeptFailed': msg('Undone — the reusable element “{name}” stays: it could not be removed. Delete it from its collection if you do not need it.'),\n 'builder.reuse.noTargetToDetach': msg('This element has no target to detach.'),\n 'builder.reuse.noContentToDetach': msg('The referenced element has no content to detach.'),\n 'builder.reuse.detachedToCopy': msg('Detached to an editable copy — the live link is broken.'),\n 'builder.reuse.makeReusableDescription': msg('Moves the selected block into a new reusable element and embeds it here. The same element can then be embedded on any page. Publish it now to keep the section visible everywhere, or save it as a draft to keep editing first.'),\n 'builder.reuse.nameLabel': msg('Name'),\n 'builder.reuse.namePlaceholder': msg('Reservation CTA', 'Example placeholder in the reusable-name input.'),\n 'builder.reuse.saveDraft': msg('Save Draft'),\n 'builder.reuse.publish': msg('Publish'),\n 'builder.inspector.emptySelection': msg('Select a node in the tree or canvas to edit its properties.'),\n 'builder.inspector.title': msg('Inspector'),\n 'builder.inspector.unknownComponent': msg('unknown component'),\n 'builder.inspector.noManifest': msg('No manifest is registered for this component, so its props can’t be edited.'),\n 'builder.inspector.props': msg('Props'),\n 'builder.inspector.noEditableProps': msg('No editable props.'),\n 'builder.inspector.slots': msg('Slots'),\n 'builder.inspector.slotsHint': msg('Add or reorder slot children from the page tree.'),\n 'builder.inspector.propertiesPane': msg('Properties'),\n 'builder.inspector.invalidJson': msg('Invalid JSON'),\n 'builder.layout.title': msg('Layout'),\n 'builder.layout.direction': msg('Direction'),\n 'builder.layout.vertical': msg('Vertical'),\n 'builder.layout.horizontal': msg('Horizontal'),\n 'builder.layout.columns': msg('Columns'),\n 'builder.layout.columnCount.one': msg('{count} column'),\n 'builder.layout.columnCount.other': msg('{count} columns'),\n 'builder.layout.gap': msg('Gap'),\n 'builder.layout.alignment': msg('Alignment'),\n 'builder.layout.onPhones': msg('On phones'),\n 'builder.layout.stack': msg('Stack'),\n 'builder.layout.keepColumns': msg('Keep columns'),\n 'builder.layout.gapStep.hairline': msg('Hairline'),\n 'builder.layout.gapStep.extraSmall': msg('Extra small'),\n 'builder.layout.gapStep.small': msg('Small'),\n 'builder.layout.gapStep.medium': msg('Medium'),\n 'builder.layout.gapStep.large': msg('Large'),\n 'builder.layout.gapStep.extraLarge': msg('Extra large'),\n 'builder.layout.gapStep.huge': msg('Huge'),\n 'builder.layout.align.start': msg('Start'),\n 'builder.layout.align.center': msg('Center'),\n 'builder.layout.align.end': msg('End'),\n 'builder.layout.align.stretch': msg('Stretch'),\n 'builder.canvas.pagePreview': msg('Page preview'),\n 'builder.canvas.reusableUnpublishedTitle': msg('This reusable element isn’t published yet'),\n 'builder.canvas.reusableMissingTitle': msg('This reusable element is missing'),\n 'builder.canvas.reusableUnpublishedHint': msg('Publish it to show it here and on live pages — or open it from the Properties panel to keep editing.'),\n 'builder.canvas.reusableMissingHint': msg('Open the embed’s “Element” in the Properties panel to fix the reference.'),\n // EC-460: a listing block whose declared query is invalid against the schema\n // shows a visible in-canvas notice instead of a silent empty grid.\n 'builder.canvas.listingInvalidTitle': msg('This listing can’t run:'),\n 'builder.canvas.viewportPreviewAria': msg('{label} preview'),\n 'builder.canvas.viewportWidthTitle': msg('{label} width'),\n 'builder.canvas.breakpointsIssueLabel': msg('breakpoints'),\n 'builder.canvas.undo': msg('Undo'),\n 'builder.canvas.redo': msg('Redo'),\n 'builder.canvas.insert': msg('Insert'),\n // In-canvas \"+\" insertion affordances at block boundaries (EC-405).\n 'builder.canvas.insertBefore': msg('Insert block before'),\n 'builder.canvas.insertAfter': msg('Insert block after'),\n 'builder.canvas.insertInto': msg('Insert block inside'),\n // Canvas-theme classification notices (EC-414 AD-D) — dev-only, never blocking.\n 'builder.canvasTheme.legacyNotice': msg(\n 'This project’s canvas.css still bundles the studio design system with the site theme (the legacy merged shape). Point canvas.css at your site’s own full-Tailwind theme entry instead — see the theming guide (docs/theming.md). Everything keeps working meanwhile.',\n 'Dev-only migration pointer when the canvas stylesheet is the pre-EC-414 merged build.',\n ),\n 'builder.canvasTheme.stylesheetErrorNotice': msg(\n 'The canvas stylesheet failed to load — blocks render unstyled. Check the studio’s canvas.css build.',\n ),\n 'builder.canvasTheme.noThemeTokensNotice': msg(\n 'The canvas stylesheet defines no theme tokens. Make canvas.css import your site’s full-Tailwind theme entry (see docs/theming.md).',\n ),\n 'builder.canvasTheme.noStylesheetNotice': msg(\n 'No canvas stylesheet is configured — blocks render unstyled. The app must supply one via setCanvasStylesheetUrl (the create-elytra template wires this).',\n ),\n // Mixed-sequence honesty notice (EC-549 interim): a blocks value carrying\n // typography items the canvas cannot render yet must SAY so — count + pointer,\n // never silence (EC-500 D3's canvas contract, scope item 3).\n // EC-549 — a typography run of a canvas value (loose prose between blocks): selected,\n // edited in the inspector's rich-text editor, deleted like a block. It replaced the\n // count-only `builder.composition.preservedNotice`.\n 'builder.run.title': msg('Text', 'Inspector title for a selected run of loose prose (paragraphs, quotes, lists) between blocks.'),\n 'builder.run.items': msg('{count} item(s)', '{count} is the number of typography items (paragraphs, headings, quotes…) in the run.'),\n 'builder.run.hint': msg(\n 'Written text between the blocks — edit it here; it keeps its place between the blocks and publishes as it reads.',\n ),\n 'builder.run.delete': msg('Delete text'),\n 'builder.spacing.gapAfterChild': msg('Gap after child {index}'),\n 'builder.richText.toolbarLabel': msg('Text formatting'),\n 'builder.richText.linkPlaceholder': msg('https://… (empty removes)'),\n 'builder.richText.linkUrl': msg('Link URL'),\n 'builder.richText.set': msg('Set'),\n 'builder.richText.applyLink': msg('Apply link'),\n 'builder.richText.bold': msg('Bold'),\n 'builder.richText.italic': msg('Italic'),\n 'builder.richText.link': msg('Link'),\n 'builder.richText.removeLink': msg('Remove link'),\n 'builder.richText.unlink': msg('Unlink'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // CMS rich-text editor (EC-314) — the TipTap field editor\n // ─────────────────────────────────────────────────────────────────────────\n 'richText.placeholder': msg('Write something…'),\n // Shown in the lazy boundary while the TipTap editor chunk loads (EC-322).\n 'richText.loading': msg('Loading editor…'),\n 'richText.bold': msg('Bold'),\n 'richText.italic': msg('Italic'),\n 'richText.underline': msg('Underline'),\n 'richText.strike': msg('Strikethrough'),\n 'richText.code': msg('Inline code'),\n 'richText.paragraph': msg('Paragraph'),\n 'richText.heading': msg('Heading {level}'),\n 'richText.bulletList': msg('Bulleted list'),\n 'richText.orderedList': msg('Numbered list'),\n 'richText.blockquote': msg('Quote'),\n 'richText.codeBlock': msg('Code block'),\n 'richText.horizontalRule': msg('Divider'),\n 'richText.fontSize.label': msg('Font size'),\n 'richText.fontSize.small': msg('Small'),\n 'richText.fontSize.normal': msg('Normal'),\n 'richText.fontSize.large': msg('Large'),\n 'richText.fontSize.xlarge': msg('Extra large'),\n 'richText.undo': msg('Undo'),\n 'richText.redo': msg('Redo'),\n 'richText.link.add': msg('Link'),\n 'richText.link.remove': msg('Remove link'),\n 'richText.link.external': msg('External URL'),\n 'richText.link.externalPlaceholder': msg('https://…'),\n 'richText.link.document': msg('Link to a document'),\n 'richText.link.documentSearch': msg('Search documents…'),\n 'richText.link.documentEmpty': msg('No documents match.'),\n 'richText.link.apply': msg('Apply'),\n 'richText.image.add': msg('Image'),\n 'richText.embed.add': msg('Embed component'),\n 'richText.embed.badge': msg('Embed'),\n 'richText.embed.unknown': msg('Unknown component'),\n 'richText.embed.empty': msg('No components available to embed.'),\n 'richText.embed.editProps': msg('Edit settings'),\n 'richText.embed.editTitle': msg('Edit {name}'),\n 'richText.embed.noProps': msg('This component has no editable settings.'),\n 'richText.embed.blocksNote': msg('Nested content areas are edited on the canvas, not here.'),\n 'richText.carrier.unknown': msg('Unknown content block:'),\n 'richText.slash.text': msg('Text'),\n 'richText.slash.empty': msg('No matching blocks'),\n 'richText.slash.componentsGroup': msg('Components'),\n // EC-388/EC-431 — expand the editing surface (the centered stage for long prose).\n 'richText.expand.expand': msg('Expand editor'),\n 'richText.expand.collapse': msg('Collapse editor'),\n 'richText.expand.title': msg('Rich text'),\n // EC-436 — the stage title when the field label is in reach; {field} is the\n // field's resolved display label. Parameterized so translations control word order.\n 'richText.expand.titleWithField': msg(\n '{field} — Rich text',\n 'Title of the expanded rich-text editor; {field} is the resolved field label.',\n ),\n 'richText.expand.editingInSheet': msg('Editing in the expanded view — click to return'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // EC-199 — AI assistant chat panel + creation flow\n // ─────────────────────────────────────────────────────────────────────────\n 'ai.panel.title': msg('Assistant'),\n 'ai.panel.toggle': msg('Toggle the AI assistant'),\n 'ai.panel.close': msg('Close the assistant'),\n 'ai.panel.loading': msg('Loading the assistant…'),\n 'ai.panel.working': msg('Working…'),\n 'ai.panel.placeholder': msg('Ask the assistant to create content…'),\n 'ai.panel.send': msg('Send'),\n 'ai.panel.emptyTitle': msg('Create content with AI'),\n 'ai.panel.emptyHint': msg(\n 'Describe what you want to create — for example, “Write a blog post about our new opening hours.” The assistant drafts it for you to review.',\n ),\n 'ai.panel.unavailable': msg('The assistant is not available in this project.'),\n // EC-334/EC-380 — new-conversation affordance\n 'ai.panel.newConversation': msg('New conversation'),\n 'ai.step.search': msg('Looked up {collection} — {count} found', 'Tool status line. {count} is a number.'),\n 'ai.step.searchRunning': msg('Searching {collection}…'),\n 'ai.step.listAssets': msg('Browsed assets — {count} found'),\n 'ai.step.listAssetsRunning': msg('Browsing assets…'),\n 'ai.step.getDocument': msg('Read the document'),\n 'ai.step.getDocumentRunning': msg('Reading the document…'),\n 'ai.step.drafting': msg('Drafting the {collection}…'),\n 'ai.step.translating': msg('Translating {completed} of {total}…', '{completed}/{total} are numbers.'),\n 'ai.step.translatingDoc': msg('Translating the document…'),\n 'ai.step.translateNothing': msg('Nothing to translate — every language is already filled.'),\n // EC-378 — the updateFields edit flow\n 'ai.step.updatingDoc': msg('Proposing changes to the document…'),\n 'ai.step.updateNoChange': msg('No changes needed — the values already match.'),\n 'ai.proposal.title': msg('Proposed {collection}'),\n 'ai.proposal.reviewHint': msg('Review the draft, then apply it or discard it.'),\n 'ai.proposal.apply': msg('Apply as draft'),\n 'ai.proposal.discard': msg('Discard'),\n 'ai.proposal.applied': msg('Applied as draft'),\n 'ai.proposal.discarded': msg('Discarded'),\n 'ai.proposal.discardedNote': msg('This proposal was discarded.'),\n 'ai.proposal.open': msg('Open document'),\n 'ai.proposal.unavailable': msg('This proposal can no longer be shown.'),\n 'ai.proposal.diffBefore': msg('Empty'),\n 'ai.proposal.diffAfter': msg('Proposed'),\n 'ai.proposal.diffUnified': msg('Proposed content'),\n // EC-382 — the expandable review surface (a roomy full-height sheet).\n 'ai.proposal.expandReview': msg('Expand review'),\n 'ai.proposal.collapseReview': msg('Close review'),\n 'ai.error.route': msg('The assistant is unavailable right now. Please try again.'),\n 'ai.error.routeNotMounted': msg(\n 'No assistant route is mounted at {endpoint} — the request was answered by the page instead of the AI route. Check the host’s route mount; on a dev server the studio build output may be missing.',\n 'EC-514: the AI route answered with HTML (or another non-route shape) at the configured path — a developer-facing deploy/dev defect, not a provider outage. {endpoint} is the route path, e.g. /api/ai.',\n ),\n 'ai.error.generic': msg('Something went wrong. Please try again.'),\n 'ai.error.applyFailed': msg('The draft could not be applied.'),\n 'ai.error.applyInvalid': msg(\n 'The proposal no longer fits the current document: {issues}',\n 'Shown when a re-validation at apply time finds errors the apply would introduce (the document changed since the proposal was built). {issues} is a short list of issue messages.',\n ),\n 'ai.error.stepCap': msg(\n 'The assistant stopped after {max} tool steps. Send a follow-up message to continue.',\n 'EC-334 per-turn step cap. {max} is a number.',\n ),\n // EC-332 — full-document translation (header action + chat tool)\n 'ai.translate.action': msg('Translate document'),\n 'ai.translate.tooltip': msg('Fill empty translations with AI'),\n 'ai.translate.dialogTitle': msg('Translate document'),\n 'ai.translate.dialogDescription': msg(\n 'Fill empty locale values from {base} using AI. Existing translations are never overwritten.',\n '{base} is a language name, e.g. English.',\n ),\n 'ai.translate.targetsLabel': msg('Target languages'),\n 'ai.translate.scopeLabel': msg('What to translate'),\n 'ai.translate.fillMissing': msg('Fill missing translations only'),\n 'ai.translate.retranslateAll': msg('Re-translate everything'),\n 'ai.translate.retranslateSoon': msg('Coming soon'),\n 'ai.translate.confirm': msg('Translate'),\n 'ai.translate.preparing': msg('Preparing translation…'),\n 'ai.translate.progress': msg('Translating {completed} of {total}…', '{completed}/{total} are numbers.'),\n 'ai.translate.applying': msg('Saving translations…'),\n 'ai.translate.nothing': msg('Everything is already translated — there is nothing to fill.'),\n 'ai.translate.applied': msg('Filled {count} translations across {locales} languages.', '{count}/{locales} are numbers.'),\n 'ai.translate.cancelled': msg('Translation cancelled — partial results were kept on the draft.'),\n 'ai.translate.failed': msg('Translation failed. Please try again.'),\n 'ai.translate.close': msg('Close'),\n 'ai.translate.proposalTitle': msg('Translation of {collection}'),\n 'ai.translate.diffBefore': msg('Current'),\n 'ai.translate.diffAfter': msg('Translated'),\n // EC-593 — what a translation run could not translate is reported, never skipped silently.\n 'ai.translate.skippedTitle': msg('Not translated ({count})', '{count} is a number.'),\n 'ai.translate.skipped.unreadable': msg('its stored value could not be read'),\n 'ai.translate.skipped.notReturned': msg('the assistant returned no text for it'),\n 'ai.translate.skipped.structureChanged': msg(\n 'the translation lost formatting, links or embedded items — the original was kept',\n ),\n // EC-378 — the update (edit-existing) proposal\n 'ai.update.proposalTitle': msg('Changes to {collection}'),\n 'ai.update.diffBefore': msg('Current'),\n 'ai.update.diffAfter': msg('Proposed'),\n // EC-715 — what an AI create left empty, listed on its proposal card\n 'ai.create.unfilledTitle': msg('Left empty ({count})', '{count} is a number.'),\n 'ai.create.unfilled.empty': msg('the draft gave it no value'),\n 'ai.create.unfilled.noCandidates': msg('nothing the assistant searched for fits it'),\n 'ai.create.unfilled.dropped': msg('an id the assistant had not searched for was removed'),\n // EC-591 — canvas notices for roles nobody in the project's component list fills.\n // A role names what the canvas needs from the list; a missing one switches its\n // gesture off, and these say so instead of leaving a dead affordance.\n 'builder.roles.noStack': msg(\n 'This canvas needs a component that fills the \"layout.stack\" role — the field’s blocks are laid out inside it — and this project’s components have none. List one in your config’s components (for example Stack from @elytracms/components).',\n '\"layout.stack\" is a role identifier from the component manifest — keep it verbatim.',\n ),\n 'builder.roles.noGrid': msg(\n 'No component fills the \"layout.grid\" role, so dropping a block beside another (side-by-side columns) is off.',\n '\"layout.grid\" is a role identifier from the component manifest — keep it verbatim.',\n ),\n 'builder.roles.noText': msg(\n 'No component fills the \"text\" role, so the seeded layout presets (Stack, Grid) are off.',\n '\"text\" is a role identifier from the component manifest — keep it verbatim.',\n ),\n // EC-591 / ratified 2f — an absent prop shows empty; the manifest default is a hint.\n 'builder.inspector.unset': msg('Not set', 'An inspector prop with no value — the component uses its own default.'),\n 'builder.inspector.unsetWithHint': msg(\n 'Not set (default: {hint})',\n '{hint} is the manifest default shown as a suggestion, e.g. \"vertical\" or \"2\".',\n ),\n // EC-586 / EC-581 (wave-0092, zone A) — canonical values and the per-FieldType definition\n 'cms.issueMessage.nonCanonicalValue': msg('Field \"{field}\" is stored in a non-canonical form for a \"{type}\" field — it was written past the write path that stores one form per field type. It still reads correctly; saving the document again stores the canonical form.'),\n 'cms.issueMessage.propsNotJudged': msg('The component props in field \"{field}\" were not judged: the page was resolved without a component registry, so they are delivered as stored and their issues are not reported.'),\n 'cms.issueMessage.assetHoldsUrl': msg('Asset field \"{field}\" holds a URL — an asset value is a library asset, never a URL. Upload the image to the library and pick it, or put an external image’s address in the component’s URL prop (the Image’s “Image URL”).'),\n // EC-584 — the AllowList parse (config load / registration).\n 'cms.issueMessage.emptyAllow': msg('Field \"{field}\" declares an empty \"allow\" — a list permits exactly the ids it names, so an empty one permits nothing. Omit \"allow\" for the type\\'s default vocabulary, or list the component ids.'),\n 'cms.issueMessage.unknownAllowComponent': msg('Field \"{field}\" allows \"{component}\", which is not a component of this project — check the id, or remove it from \"allow\".', '{component} is the component id as declared in the field\\'s allow list.'),\n 'cms.issueMessage.blocksNotTopLevel': msg('Field \"{field}\" is a \"blocks\" field inside an object — a blocks field is top-level only (a canvas inside a repeater breaks the form, the validator positions and the delivery type). Declare another top-level blocks field, or give a component a blocks prop (a slot).'),\n 'cms.issueMessage.placementKeyReserved': msg('Asset field \"{asset}\" declares the per-use sub-field \"{field}\", a name the asset itself owns — it would never reach a component (the asset\\'s own \"{field}\" wins). Rename it; an image\\'s alt, credit or AI fact belongs on the asset collection.'),\n 'cms.issueMessage.placementNotScalar': msg('Asset field \"{asset}\" declares the per-use sub-field \"{field}\" of type \"{type}\" — a placement holds data about this use of the image (a caption, a layout), never a reference or rich text.'),\n 'cms.issueMessage.sourceNotOnAssetCollection': msg('Field \"{field}\" declares source \"{source}\" — an embedded-metadata source fills a top-level field of the asset collection only.'),\n 'cms.issueMessage.sourceTypeMismatch': msg('Field \"{field}\" declares source \"{source}\", which cannot fill a \"{type}\" field (every source fills text; iptc:digitalSourceType also a boolean).'),\n 'cms.issueMessage.uniqueNotTopLevel': msg('Sub-field \"{field}\" declares \"unique\" — uniqueness is judged across a collection\\'s documents, so it applies to top-level fields only.'),\n 'cms.issueMessage.localizedOnProp': msg('Component prop \"{field}\" declares \"localized\" — a localized value is stored per locale under the document, so only a top-level document field can be localized (localize the field that holds the composition).'),\n 'cms.issueMessage.localizedOnSubField': msg('Sub-field \"{field}\" declares \"localized\" — a localized value is stored per locale under the document, so only a top-level field can be localized (localize the field that holds it).'),\n 'cms.issueMessage.ruleNotApplicable': msg('Field \"{field}\" declares \"{rule}\", which a \"{type}\" field cannot keep.'),\n 'cms.issueMessage.ruleNotApplicableUnlessMultiple': msg('Field \"{field}\" declares \"{rule}\", which a single \"{type}\" field cannot keep — on a \"multiple\" field it counts items.'),\n 'cms.issueMessage.boundNotAnInstant': msg('Field \"{field}\" declares {rule} {declared} on a date field, which is not a date — use an ISO 8601 string such as \"1900-01-01\".'),\n 'cms.issueMessage.boundNotANumber': msg('Field \"{field}\" declares {rule} {declared} as a string — the bounds of a \"{type}\" field are numbers (only a date field takes an ISO date as a bound).'),\n 'cms.issueMessage.invalidPattern': msg('Field \"{field}\" declares the pattern \"{pattern}\", which is not a valid regular expression.'),\n 'cms.issueMessage.defaultNotOfType': msg('Field \"{field}\" declares a default of {value}, which is not a \"{type}\" value.'),\n 'cms.issueDetail.fewerPlainTextCharacters': msg('has fewer than {min} plain-text characters'),\n 'cms.issueDetail.morePlainTextCharacters': msg('has more than {max} plain-text characters'),\n 'content.queryError.operatorNotForType': msg('Operator \"{operator}\" does not apply to \"{field}\", a \"{type}\" field.'),\n 'content.queryError.operandType': msg('Operator \"{operator}\" on \"{field}\" got {value}, which is not a {operand} — \"{field}\" is a \"{type}\" field.'),\n} satisfies SourceCatalog\n\n/**\n * The engine's built-in English source catalog (see the module docblock). Typed as\n * {@link SourceCatalog} (the open index signature) so runtime lookups by arbitrary\n * string key stay valid; the literal key set lives in {@link MessageKey}.\n */\nexport const EN_MESSAGES: SourceCatalog = MESSAGES\n\n/** Every key in the EN source catalog (EC-398) — the literal union derived from the object above. */\nexport type MessageKey = keyof typeof MESSAGES\n\n/**\n * A translation catalog **typed against the EN key set** (EC-398): partial (any key\n * omitted falls back to the English source at runtime), and an unknown or stale key\n * fails typecheck. Engine-shipped locale catalogs (`@elytracms/studio/locales/de`)\n * and consumer overrides (`{ ...deMessages, 'some.key': '…' }`) are authored against\n * this; the accepting seam (`StudioI18nConfig.locales`) stays the plain\n * `MessageCatalog` — the type is for authoring, not a runtime gate.\n */\nexport type TranslationCatalog = Partial<Record<MessageKey, string>>\n"]}
1
+ {"version":3,"file":"messages.en.js","sourceRoot":"","sources":["../../../src/lib/i18n/messages.en.ts"],"names":[],"mappings":"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","sourcesContent":["import { msg } from './types'\nimport type { SourceCatalog } from './types'\n\n/**\n * The engine's built-in **English source catalog** (EC-241) — the source of truth\n * and the ultimate fallback for every studio-chrome string. A consumer adds a\n * language via `defineStudio({ i18n: { locales: { de: deMessages } } })`; a key\n * missing from the active locale falls back to the English `message` here, then to\n * the key itself (a visible fallback + a one-time console signal), never a silent\n * blank.\n *\n * Organised by surface. `common.*` holds generic, reused affordances (buttons,\n * status words); every other namespace maps to one studio surface. Values that come\n * from the project's schema/config (field labels, collection names, component\n * manifests) are NOT here — those are `LocalizedString`s resolved by `resolveLabel`\n * (the separate schema-label axis).\n *\n * Scope honesty (EC-241): this covers the studio's **component chrome**. A handful\n * of `lib/*` label helpers (`persona/labels`, `cms-views` operator labels,\n * `auth-errors`, `clipboard` summaries, core `describeAccept`) and the JSX-chip\n * developer boot hints (backend/workspace gates) are a documented follow-up — they\n * need a message-with-elements splitter beyond the plain-string `translate()`.\n */\nconst MESSAGES = {\n // ─────────────────────────────────────────────────────────────────────────\n // Common — generic, reused across surfaces\n // ─────────────────────────────────────────────────────────────────────────\n 'common.save': msg('Save'),\n 'common.saving': msg('Saving…'),\n 'common.saveChanges': msg('Save changes'),\n 'common.cancel': msg('Cancel'),\n 'common.delete': msg('Delete'),\n 'common.remove': msg('Remove'),\n 'common.add': msg('Add'),\n 'common.edit': msg('Edit'),\n 'common.close': msg('Close'),\n 'common.copy': msg('Copy'),\n 'common.duplicate': msg('Duplicate'),\n 'common.select': msg('Select'),\n 'common.clear': msg('Clear'),\n 'common.apply': msg('Apply'),\n 'common.upload': msg('Upload'),\n 'common.retry': msg('Retry'),\n 'common.discard': msg('Discard'),\n 'common.dismiss': msg('Dismiss'),\n 'common.loading': msg('Loading…'),\n 'common.searchPlaceholder': msg('Search…'),\n 'common.none': msg('None'),\n 'common.required': msg('required', 'Badge on a required field/slot — lowercase.'),\n 'common.optional': msg('optional', 'Badge on an optional slot — lowercase.'),\n 'common.yes': msg('Yes'),\n 'common.no': msg('No'),\n 'common.true': msg('true', 'Boolean value display — the literal on-state word.'),\n 'common.false': msg('false', 'Boolean value display — the literal off-state word.'),\n 'common.backendUnreachable': msg('The persistence backend is unreachable.'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // Built-in navigation views (the section rail)\n // ─────────────────────────────────────────────────────────────────────────\n 'nav.cms.label': msg('Content'),\n 'nav.cms.description': msg('Model collections, fields, and documents.'),\n 'nav.components.label': msg('Components'),\n 'nav.components.description': msg('Browse the registry of primitives and project components.'),\n 'nav.redirects.label': msg('Redirects'),\n 'nav.redirects.description': msg('Create and manage URL redirects (301/302) for this site.'),\n 'nav.assets.label': msg('Assets'),\n 'nav.assets.description': msg('Manage uploaded media and metadata.'),\n 'nav.users.label': msg('Users'),\n 'nav.users.description': msg('Manage who has access to this deployment and their role.'),\n 'nav.settings.label': msg('Settings'),\n 'nav.settings.description': msg('Configure project metadata and locales.'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // Current-user menu (shell header)\n // ─────────────────────────────────────────────────────────────────────────\n 'userMenu.accountMenu': msg('Account menu', 'aria-label on the avatar button that opens the user menu.'),\n 'userMenu.lightMode': msg('Light mode', 'Menu item: switch the studio to the light colour theme.'),\n 'userMenu.darkMode': msg('Dark mode', 'Menu item: switch the studio to the dark colour theme.'),\n 'userMenu.accountSettings': msg('Account settings'),\n 'userMenu.soon': msg('Soon', 'Badge on a feature that is not available yet.'),\n 'userMenu.signOut': msg('Sign out'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // Shell — top bar, section rail, boot/error frames, project chrome\n // ─────────────────────────────────────────────────────────────────────────\n 'shell.allProjects': msg('All projects', 'aria-label on the home/logo link in the top bar.'),\n 'shell.breadcrumb.label': msg('Breadcrumb', 'aria-label on the breadcrumb navigation landmark.'),\n 'shell.nav.label': msg('Sections', 'aria-label on the vertical section rail.'),\n 'shell.sidebar.expand': msg('Expand sidebar'),\n 'shell.sidebar.collapse': msg('Collapse sidebar'),\n 'shell.sidebar.collapseLabel': msg('Collapse', 'Verb label beside the collapse icon on the expanded rail.'),\n 'shell.nav.planned': msg('Planned', 'Tooltip on the status dot of a planned (not-yet-enabled) nav view.'),\n 'shell.nav.collapseView': msg('Collapse {name}', 'aria-label on a parent nav item disclosure; {name} is the view label.'),\n 'shell.nav.expandView': msg('Expand {name}', 'aria-label on a parent nav item disclosure; {name} is the view label.'),\n // EC-690 — the ONE notification-and-issue surface: the header badge and its issues tray.\n 'shell.notices.title': msg('Issues', 'Title (and aria-label) of the issues tray the header badge opens.'),\n 'shell.notices.open': msg('Show issues: {summary}', 'aria-label of the header issues badge; {summary} is shell.notices.none or e.g. \"2 errors, 1 warning\".'),\n 'shell.notices.none': msg('No issues', 'The header badge summary when nothing needs attention.'),\n 'shell.notices.errors.one': msg('{count} error'),\n 'shell.notices.errors.other': msg('{count} errors'),\n 'shell.notices.warnings.one': msg('{count} warning'),\n 'shell.notices.warnings.other': msg('{count} warnings'),\n 'shell.notices.empty': msg('Nothing needs your attention.', 'The issues tray with no notice and no finding.'),\n 'shell.notices.goTo': msg('Go to', 'Link on a finding in the issues tray that opens where it is (a redirect row, a document).'),\n 'shell.notices.dismiss': msg('Dismiss', 'aria-label of the dismiss button on a notice in the issues tray.'),\n 'shell.notices.declaredInProject': msg('in {file}', 'Where a project-config finding is fixed; {file} is the project config file name (elytra.config.ts), untranslated.'),\n 'shell.notices.declaredInStudio': msg('in your defineStudio({…}) config', 'Where a studio-customization finding is fixed; defineStudio is code, untranslated.'),\n 'shell.notices.deploymentSettings': msg('Convex deployment: {settings}', 'Where a deployment finding is fixed; {settings} are environment variable names, untranslated.'),\n 'shell.notices.reservedSource': msg(\n 'An addon publishes findings under \"{source}\", a source name the engine reserves. Rename the source it passes to useNavIssues.',\n 'Error finding: an addon used an engine-reserved source name. {source} and useNavIssues are code, untranslated.',\n ),\n // EC-606 — stored documents whose collection the project no longer declares. One\n // warning at the rail foot; {collections} joins one item message per collection.\n 'shell.nav.orphanedCollections': msg(\n 'Stored documents of collections this project does not declare are hidden from the studio: {collections}. To bring them back, declare the collection in \"{file}\" again (or restore its old id).',\n 'Warning at the rail foot. {collections} is a comma-separated list of shell.nav.orphanedCollections.item / .itemPublished; {file} is the project config file name (elytra.config.ts), untranslated.',\n ),\n 'shell.nav.orphanedCollections.item': msg(\n '\"{collection}\" ({count} stored)',\n 'One entry of shell.nav.orphanedCollections. {collection} is a collection id (an identifier, untranslated); {count} a number of documents.',\n ),\n 'shell.nav.orphanedCollections.itemPublished': msg(\n '\"{collection}\" ({count} stored, {published} published)',\n 'One entry of shell.nav.orphanedCollections when some of its documents are published. {collection} is a collection id (untranslated); {count} and {published} are numbers.',\n ),\n 'shell.sectionState.empty.title': msg('Nothing here yet'),\n 'shell.sectionState.empty.description': msg('This section has no content for the active project.'),\n 'shell.sectionState.loading.description': msg('Fetching the latest state for this section.'),\n 'shell.sectionState.error.title': msg('Something went wrong'),\n 'shell.sectionState.error.description': msg('This section could not be loaded. Try again in a moment.'),\n 'shell.sectionState.unavailable.title': msg('Not available'),\n 'shell.sectionState.unavailable.description': msg('This section is not available for the active project.'),\n 'shell.sectionState.planned.title': msg('Planned'),\n 'shell.sectionState.planned.description': msg('This surface is planned and not yet enabled for this project.'),\n 'shell.sectionState.badge.empty': msg('empty', 'Status badge on the empty section state — lowercase token.'),\n 'shell.sectionState.badge.loading': msg('loading'),\n 'shell.sectionState.badge.error': msg('error'),\n 'shell.sectionState.badge.unavailable': msg('unavailable'),\n 'shell.sectionState.badge.planned': msg('planned'),\n 'shell.projectNotFound.title': msg('Project not found'),\n 'shell.projectNotFound.body': msg('This project doesn’t exist or was deleted. It may only have existed in this session.'),\n 'shell.backToProjects': msg('Back to projects'),\n 'shell.routeNotFound.title': msg('Page not found'),\n 'shell.routeNotFound.body': msg('This studio URL doesn’t resolve to a section.'),\n // EC-717 — the failure notice (the root catch-all and each lazily loaded surface).\n 'shell.failure.module.title': msg(\n 'This part of the studio could not be loaded',\n 'Heading of the notice shown when a lazily loaded part of the studio failed to download.',\n ),\n 'shell.failure.module.body': msg(\n 'Its code failed to download, usually because the dev server rebuilt its dependency cache while this tab was open. Go back to keep working; this part stays unavailable until the page is reloaded.',\n ),\n 'shell.failure.module.restartHint': msg('If reloading does not help, restart the dev server.'),\n 'shell.failure.error.title': msg('Something went wrong', 'Heading of the notice shown when the studio hit an unexpected error.'),\n 'shell.failure.error.body': msg('The studio hit an unexpected error here. Reloading the page usually recovers.'),\n 'shell.failure.back': msg('Back', 'Button on the failure notice: in-app navigation back, without reloading the page.'),\n 'shell.failure.reload': msg('Reload', 'Button on the failure notice: a full page reload.'),\n 'shell.failure.reloadCost': msg(\n 'Reloading empties the playground: everything created or changed in this tab is lost.',\n 'Shown under the Reload button in playground mode only.',\n ),\n 'shell.projectSwitcher.recent': msg('Recent'),\n 'shell.projects': msg('Projects'),\n 'shell.projectSwitcher.browseAll': msg('Browse all projects'),\n 'shell.project.notProvisioned': msg('not provisioned', 'Badge on a configured project with no backend yet.'),\n 'shell.projectList.recent': msg('Recent', 'Section label above recent-project chips (rendered uppercase).'),\n 'shell.projectList.empty.title': msg('No projects'),\n 'shell.projectCard.open': msg('Open project'),\n 'shell.session.loading': msg('Loading project…'),\n 'shell.session.error.title': msg('Couldn’t load this project’s saved state'),\n 'shell.session.error.body': msg('The studio never falls back to sample content against a live backend — your data is safe; retry once the backend is reachable.'),\n 'shell.workspaceGate.issuesLabel': msg(\n 'Workspace config issues',\n 'aria-label on the list of located config issues under a failing deployment-setup check (EC-626).',\n ),\n 'shell.backend.connecting': msg('Connecting to backend…'),\n 'shell.backend.notConfigured.title': msg('Backend not configured'),\n 'shell.backend.unavailable.title': msg('Backend unavailable'),\n 'shell.backend.unavailable.body': msg('The configured Convex deployment did not respond. Your data is safe on the backend — the studio will not switch to local storage.'),\n 'shell.backend.retryConnection': msg('Retry connection'),\n // EC-258 — the unified deployment-setup boot gate.\n 'shell.deploymentSetup.title': msg('Deployment setup'),\n 'shell.deploymentSetup.checking': msg('Checking deployment…'),\n 'shell.deploymentSetup.description': msg(\n 'The studio can’t boot until these are resolved. Fix each item below, then reload.',\n ),\n 'shell.deploymentSetup.issuesLabel': msg(\n 'Deployment setup checks',\n 'aria-label on the list of failing readiness checks.',\n ),\n 'shell.deploymentSetup.fixLabel': msg(\n 'Fix',\n 'Label before a copy-pasteable remediation command on the deployment-setup screen.',\n ),\n 'shell.deploymentSetup.retry': msg('Retry checks'),\n // EC-399 — expected deployment env vars (presence only) on the setup screen.\n 'shell.deploymentSetup.envSection': msg('Deployment environment'),\n 'shell.deploymentSetup.envSectionHint': msg(\n 'Env vars this deployment is expected to carry — presence only, values are never shown. `elytra doctor` checks them definitively.',\n ),\n 'shell.unsavedChanges.title': msg('Unsaved changes'),\n 'shell.unsavedChanges.body': msg('You have unsaved changes. Save them before leaving, or discard them.'),\n 'shell.unsavedChanges.saving': msg('Saving…'),\n 'shell.devLogin.badge': msg('Dev login'),\n 'shell.devLogin.hint': msg('Dev auto-login: the studio signed in automatically from VITE_ELYTRA_DEV_LOGIN (dev builds only). Unset it to test the real sign-in flow.'),\n 'shell.playground.badge': msg('Playground', 'Product term — may stay untranslated.'),\n 'shell.playground.hint': msg('Playground mode: data lives in memory on this device and resets on reload. Nothing is saved to a backend.'),\n // EC-690 — instant-publish health (EC-268), a finding of the issues tray (it was a banner).\n 'shell.deliveryHealth.title': msg('Instant publish not set up', 'Title of the instant-publish health finding.'),\n 'shell.deliveryHealth.missing': msg(\n '{vars} not set on this Convex deployment. Publishes succeed, but the live site won’t update until you set them (see CONNECT.md) and re-push functions. A project that runs no revalidate host declares instantPublish: false in {file}.',\n '{vars} are environment variable names; {file} is elytra.config.ts; instantPublish: false is code — all untranslated.',\n ),\n 'shell.deliveryHealth.unchecked': msg('Instant publish could not be checked: {error}', '{error} is the failed read’s message.'),\n // EC-605 — the role-policy drift finding in the issues tray, for admins (the deployment\n // enforces another role policy than elytra.config.ts declares). The doctor's verdict\n // text (English, technical) follows it.\n 'shell.rolePolicyDrift.title': msg(\n 'This deployment enforces a different role policy than the project declares — permissions may not be what you expect.',\n ),\n\n // ─────────────────────────────────────────────────────────────────────────\n // Customization issues — the section-rail foot (`NavIssues`)\n // ─────────────────────────────────────────────────────────────────────────\n // EC-478 — one key per `CustomizationIssue` message. The producers are\n // `packages/core/src/studio-core/customization.ts` (the EC-236 seam, which\n // cannot import this catalog — hence a key on the issue, not a string),\n // `app-views/default-modules.tsx` (EC-476/477) and `builder/reuse.ts`\n // (EC-467). Every `{var}` is an IDENTIFIER — an entry id, a customization\n // point, a component/collection id — and stays untranslated by design.\n // Each English here MUST stay byte-identical to the `message` its producer\n // prebuilds; `customization-issue-i18n.test.ts` pins that both ways.\n // Grouped by render site rather than by namespace: they are one list, and a\n // half-translated list is the failure EC-478 exists to remove.\n // EC-479 — the project declares nothing for the studio to work with. Produced by\n // `lib/workspace/config-issues.ts`; {file} is the config file name (an identifier).\n 'customization.issue.noCollections': msg(\n 'This project declares no content collections. Add them to \"{file}\" — the studio shows your schema or none, never sample content.',\n 'Config error at the rail foot. {file} is the project config file name (elytra.config.ts), untranslated.',\n ),\n 'customization.issue.duplicateOverrideId': msg(\n 'Duplicate override id \"{id}\" for \"{point}\" — the later one is ignored.',\n 'Config error at the rail foot. {id} is the duplicated entry id, {point} the extension point (e.g. \"sidebar\").',\n ),\n 'customization.issue.unknownOverrideTarget': msg(\n 'Override \"{id}\" for \"{point}\" matches no built-in block to replace.',\n 'Config error at the rail foot. {id} is the override id, {point} the extension point.',\n ),\n 'customization.issue.invalidOverride': msg(\n 'Override \"{id}\" for \"{point}\" is invalid: {reason}',\n 'Config error at the rail foot. {reason} is one of the customization.issue.reason.* messages (or a third-party validator’s English).',\n ),\n // The `{reason}` fills — the engine's own `validate` rejections, phrased to read\n // as the tail of the sentence above (lowercase, no full stop).\n 'customization.issue.reason.rendererNotAComponent': msg(\n 'the renderer is not a component',\n 'Tail of customization.issue.invalidOverride — lowercase, no full stop.',\n ),\n 'customization.issue.reason.viewNoRender': msg(\n 'the view has no render function',\n 'Tail of customization.issue.invalidOverride — lowercase, no full stop.',\n ),\n 'customization.issue.reason.viewNoLabel': msg(\n 'the view has no label',\n 'Tail of customization.issue.invalidOverride — lowercase, no full stop.',\n ),\n // EC-476/477 — an id a builder DERIVED landing on an id that already means\n // something. {label} is the developer's own view label (project data, echoed).\n 'customization.issue.derivedIdBuiltinCollision': msg(\n 'View \"{label}\" for \"{point}\" derives the id \"{id}\" from its label, which is the built-in \"{id}\" view — the built-in is kept and this view is ignored. Pass an explicit id to replace a built-in on purpose.',\n 'Config error at the rail foot (EC-476). {label} is the custom view’s label, {id} the derived id that collides with a built-in view id.',\n ),\n 'customization.issue.derivedIdCollectionCollision': msg(\n 'View id \"{id}\" for \"{point}\" is ambiguous: it joins the collections {collections} with \"-\", and a collection is literally named \"{joined}\" — its own lens derives the same id. Pass an explicit id to this group.',\n 'Config warning at the rail foot (EC-477). {collections} is a quoted, comma-separated id list; {joined} is those ids joined with \"-\".',\n ),\n // EC-467 — the project's reusable-elements declaration (`defineStudio({ reuse })`);\n // EC-728: the only source of the embed (declared, never inferred). \"Reusable elements\"\n // is the product term for the feature; {component}, {relationProp}, {collection},\n // {props} are identifiers.\n 'builder.reuse.config.unknownComponent': msg(\n 'Reusable elements: studio config declares reuse.component \"{component}\", which is not a registered component. Fix the id to name your embed component — until then the reuse gestures are off.',\n ),\n 'builder.reuse.config.noRelationProp': msg(\n 'Reusable elements: the declared embed \"{component}\" has no single-document relation prop, so it cannot point at a reusable document. An embed needs one relation prop with cardinality one.',\n ),\n 'builder.reuse.config.unknownRelationProp': msg(\n 'Reusable elements: the declared embed \"{component}\" has no single-document relation prop named \"{relationProp}\". Its relation props are: {props}.',\n '{props} is a quoted, comma-separated prop-name list.',\n ),\n 'builder.reuse.config.ambiguousRelationProp': msg(\n 'Reusable elements: the declared embed \"{component}\" has {count} single-document relation props ({props}) — add reuse.relationProp to say which one points at the reusable document.',\n '{count} is a number; {props} a quoted, comma-separated prop-name list.',\n ),\n 'builder.reuse.config.unknownCollection': msg(\n 'Reusable elements: \"{component}.{relationProp}\" targets the collection \"{collection}\", which this project does not define.',\n ),\n 'builder.reuse.config.noBlocksField': msg(\n 'Reusable elements: the collection \"{collection}\" behind \"{component}.{relationProp}\" has no blocks (composition) field, so there is nothing for the embed to transclude.',\n ),\n\n // ─────────────────────────────────────────────────────────────────────────\n // Auth / errors\n // ─────────────────────────────────────────────────────────────────────────\n 'auth.signIn': msg('Sign in'),\n // EC-397 — the engine sign-in screen (`SignInView`/`SignInScreen`).\n 'auth.signIn.heading': msg('Sign in to {productName}', 'Sign-in screen heading; {productName} is the product/brand name (default \"Elytra\").'),\n 'auth.signIn.headingCreate': msg('Create your account', 'Sign-in screen heading in create-account mode.'),\n 'auth.signIn.subtext.continue': msg('Continue to {project}.', 'Sign-in subtext; {project} is the active project name (data).'),\n 'auth.signIn.subtext.register': msg('Register on {project}.', 'Create-account subtext; {project} is the active project name (data).'),\n 'auth.signIn.subtext.generic': msg('Use your studio account to continue.', 'Sign-in subtext when no project name is known.'),\n 'auth.signIn.emailLabel': msg('Email', 'Label of the email input on the sign-in form.'),\n 'auth.signIn.emailPlaceholder': msg('you@example.com', 'Placeholder inside the email input — use a locale-typical example address.'),\n 'auth.signIn.passwordLabel': msg('Password', 'Label of the password input on the sign-in form.'),\n 'auth.signIn.submit': msg('Sign in', 'Submit button of the sign-in form.'),\n 'auth.signIn.submitCreate': msg('Create account', 'Submit button in create-account mode.'),\n 'auth.signIn.submitting': msg('Signing in…', 'Submit button while the sign-in request is in flight.'),\n 'auth.signIn.submittingCreate': msg('Creating account…', 'Submit button while the create-account request is in flight.'),\n 'auth.signIn.toggle.firstTime': msg('First time on this backend?', 'Lead-in before the \"Create an account\" link below the form.'),\n 'auth.signIn.toggle.alreadyHave': msg('Already have an account on this backend?', 'Lead-in before the \"Sign in\" link in create-account mode.'),\n 'auth.signIn.toggle.signIn': msg('Sign in', 'Link switching the form from create-account back to sign-in mode.'),\n 'auth.signIn.toggle.createAccount': msg('Create an account', 'Link switching the form to create-account mode.'),\n 'auth.signIn.devAccounts.title': msg('Playground mode — seeded dev accounts', 'Title of the seeded dev-credentials hint (playground mode only; the credential lines are fixtures, not chrome).'),\n // EC-397 — engine-classified sign-in failures (the EC-362/EC-363 reason\n // codes). Each message MUST stay byte-identical to the auth-adapter copy it\n // localizes: `signInErrorMessageKey` (lib/auth-errors.ts) recognizes a\n // failure by exact EN-message match, so a reworded adapter message simply\n // falls back to the raw English until re-synced here —\n // `lib/auth-errors.test.ts` pins the sync against the real classifier.\n 'auth.signIn.error.invalidCredentials': msg('Email or password is incorrect.', 'Wrong password or unknown email on sign-in.'),\n 'auth.signIn.error.invalidCredentialsSignUp': msg('That email or password can’t be used (password too short?).', 'Create-account rejection (invalid email or too-short password).'),\n 'auth.signIn.error.accountExists': msg('An account with this email already exists — sign in instead.'),\n 'auth.signIn.error.deploymentMisconfigured': msg('This deployment can’t sign you in: its auth signing key is not set. Run `npx @convex-dev/auth` against this deployment, then retry. (The deployment-setup check reports the same.)', 'EC-257 remedy: the backend deployment has no auth signing key. Keep the `npx @convex-dev/auth` command verbatim.'),\n 'auth.signIn.error.notInvited': msg('This deployment is invite-only. Ask an admin to invite your email, then create your account.', 'EC-324: sign-up rejected because the email is not on the invite allowlist.'),\n 'auth.signIn.error.tooManyAttempts': msg('Too many failed sign-in attempts — wait a moment, then try again.', 'EC-363: the sign-in rate limit tripped.'),\n 'auth.signIn.error.serverError': msg('Sign-in failed (unexpected server error) — check the deployment logs.', 'Honest generic for an unclassifiable sign-in failure.'),\n 'auth.signIn.error.serverErrorSignUp': msg('Sign-up failed (unexpected server error) — check the deployment logs.', 'Honest generic for an unclassifiable create-account failure.'),\n 'auth.signIn.error.unavailable': msg('Sign-in is currently unavailable.', 'The session could not be established after a successful authentication call.'),\n 'auth.signIn.error.playgroundSignUp': msg('Sign-up isn’t available in playground mode — use the dev credentials below.', 'Playground mode has fixed seeded dev users; there is no registration.'),\n // EC-397 — root-route boot states (`createStudioRootRoute`).\n 'auth.boot.checkingSession': msg('Checking session…', 'Full-screen state while the stored session is restored at boot.'),\n 'error.dismiss': msg('Dismiss error', 'aria-label on the error banner dismiss button.'),\n // EC-403 — the blocking session-expired re-auth overlay\n // (`session-expired-overlay.tsx`), raised app-wide when any operation fails\n // the session-expired predicate; re-auth happens in place, no navigation.\n 'error.sessionExpiredTitle': msg(\"You've been signed out\", 'Heading of the blocking session-expired re-auth overlay.'),\n 'error.sessionExpired': msg(\"You've been signed out, so your latest changes aren't being saved. Sign in again to keep editing — your unsaved changes stay right here.\", 'Body of the blocking session-expired re-auth overlay. Plain language — no auth/transport jargon.'),\n\n // EC-494 — operation failures that cross the OPERATIONS boundary. The producer runs\n // SERVER-SIDE with no locale, so `OperationError`/`OperationIssue` carry a catalog\n // reference on the wire and `OperationErrorBanner` resolves it here. Every `{var}` is\n // an IDENTIFIER (operation name, entity kind, document key, field name) and stays\n // untranslated. Messages the engine does NOT author — Zod diagnostics, persistence\n // taxonomy strings, an authorization hook's `reason` — carry no key and keep their\n // English on purpose (EC-443): a visible English sentence beats a missing key.\n // EC-494 — the error banner's BADGE titles (`persona/labels.ts`), moved off a\n // hard-coded English Record for the same reason EC-443 moved the CMS issue titles:\n // a localized body under an unlocalized badge is the same defect, inverted.\n 'operations.errorLabel.validation': msg(\"Couldn't save\"),\n 'operations.errorLabel.not-found': msg('Not found'),\n 'operations.errorLabel.conflict': msg('Conflict', 'EC-595: a conflict is a revision clash, an existing id, or a strict-reference block — not only \"already exists\".'),\n 'operations.errorLabel.backend-unavailable': msg('Connection problem'),\n 'operations.errorLabel.unauthorized': msg('Not allowed'),\n 'operations.errorLabel.unknown': msg('Something went wrong'),\n 'operations.error.invalidInput': msg('Input for “{operation}” is invalid.', '{operation} is a dotted operation name, e.g. documents.patch.'),\n 'operations.error.notFound': msg('No {entity} found for “{target}”.', '{entity} is a machine kind (project/page/cms-document); {target} is its key.'),\n 'operations.error.conflict': msg('“{target}” conflicts with an existing record.'),\n 'operations.error.revisionConflict': msg('“{target}” changed since you loaded it (now at revision {revision}) — reload it and apply your change again.', 'EC-595: a whole-document write or a publish met a newer revision; {revision} is a number.'),\n 'operations.error.revisionConflictGone': msg('“{target}” no longer exists — it was deleted since you loaded it.'),\n 'operations.error.documentExists': msg('“{target}” already exists — creating a document never overwrites one.', 'EC-578: a create (insert-if-absent) found the id taken.'),\n 'operations.error.singletonExists': msg('“{collection}” already has its document “{target}” — open it instead of creating another.', 'EC-595: two sessions opened an empty singleton; the other one created it first.'),\n 'operations.error.patchConflictOne': msg('{count} change to “{target}” was refused: the same field was changed since you loaded the document.', 'EC-595: per-field refusal; the rest of the save applied.'),\n 'operations.error.patchConflict': msg('{count} changes to “{target}” were refused: the same fields were changed since you loaded the document.'),\n 'operations.error.backendUnavailable': msg('The persistence backend is unavailable.'),\n 'operations.error.unauthorized': msg('Operation “{operation}” was denied by the authorization hook.'),\n 'operations.error.unknown': msg('An unknown operation failure occurred.'),\n 'operations.error.documentSchemaViolation': msg('Document “{collection}:{id}” violates its collection schema.', 'The publish gate rejected the draft; the per-field lines follow beneath it.'),\n 'operations.error.strictReferencesBlockDelete': msg('Cannot delete “{target}”: {count} documents reference it through strict relation fields — {named}{more}. Remove these references first.', '{named} is an identifier list “collection:id” (field); {more} is the andMore fragment or empty.'),\n 'operations.error.strictReferencesBlockDeleteOne': msg('Cannot delete “{target}”: {count} document references it through strict relation fields — {named}. Remove these references first.'),\n // EC-739 — an UNREFERENCED delete (a cleanup, e.g. Make reusable's Undo): refused by a reference of any strictness.\n 'operations.error.referencesBlockDelete': msg('Cannot delete “{target}”: {count} documents reference it — {named}{more}. This delete runs only while nothing references it.', '{named} is an identifier list “collection:id” (field); {more} is the andMore fragment or empty.'),\n 'operations.error.referencesBlockDeleteOne': msg('Cannot delete “{target}”: {count} document references it — {named}. This delete runs only while nothing references it.'),\n 'operations.error.strictReferencesBlockUnpublish': msg('Cannot unpublish “{target}”: {count} documents reference it through strict relation fields — {named}{more}. Remove these references first.'),\n 'operations.error.strictReferencesBlockUnpublishOne': msg('Cannot unpublish “{target}”: {count} document references it through strict relation fields — {named}. Remove these references first.'),\n // EC-589 — the referrer direction of `strict: true`: publish refused while a strict target is missing or unpublished.\n 'operations.error.strictTargetsUnpublishedOne': msg('Document “{target}” cannot be published: a strict relation target is missing or unpublished — publish it first.'),\n 'operations.error.strictTargetsUnpublished': msg('Document “{target}” cannot be published: strict relation targets are missing or unpublished — publish them first.'),\n 'operations.error.publishNeedsLocales': msg('“{target}” cannot be published: its collection declares localized fields ({fields}), and no locale config was given to judge their hidden values in.', 'EC-585: a headless runtime publishing a localized collection without the project locale config; {fields} is a comma-separated list of field names.'),\n 'operations.error.versionNotPinnable': msg('Version {version} of “{target}” was not recorded by a publish, so it cannot be pinned live — restore it into the draft and publish that instead.', 'EC-585: only a version a publish recorded can be re-pinned; {version} is a number.'),\n // EC-648 — changesets: apply blocked by an issue, and the step a changeset refuses because no undo can reverse it.\n 'operations.error.changesetBlocked': msg('Changeset “{changeset}” has blocking validation issues and cannot be applied.', '{changeset} is a changeset id, e.g. cs-0001; the blocking issues follow beneath it.'),\n 'operations.error.changesetDeleteNotReversible': msg('Step {step}: “{target}” cannot be deleted inside a changeset — a delete removes its version history and publication, which no undo can restore. Delete it on its own.', 'EC-648: {step} is the 0-based step number; {target} is the document key collection:id.'),\n 'operations.errorDetail.andMore': msg(', and {count} more', 'Truncation fragment spliced into the strict-reference sentences; keeps its leading comma and space.'),\n\n // EC-494 — content-query errors (`core/content`'s validateWhere/validateSort/\n // validateLimit). Two studio surfaces render them: the filter builder's per-clause\n // line and the canvas listing notice.\n 'content.queryError.nonFilterableField': msg('Field \"{field}\" on \"{collection}\" is not declared filterable.'),\n 'content.queryError.unknownField': msg('Field \"{field}\" does not exist on \"{collection}\".'),\n 'content.queryError.unknownCollection': msg('Collection \"{collection}\" is not defined.'),\n 'content.queryError.filterShape': msg('Filter for \"{field}\" must be a scalar or an operator object.'),\n 'content.queryError.filterNoOperators': msg('Filter for \"{field}\" has no operators.'),\n 'content.queryError.unknownOperator': msg('Unknown filter operator \"{operator}\" on \"{field}\" — the vocabulary is exactly {vocabulary}.', '{vocabulary} is the comma-joined list of operator tokens — identifiers, never translated.'),\n 'content.queryError.operatorInRequiresArray': msg('Operator \"in\" on \"{field}\" requires an array of scalars.'),\n 'content.queryError.operatorRequiresString': msg('Operator \"{operator}\" on \"{field}\" requires a string value.'),\n 'content.queryError.operatorEmptyRequiresBoolean': msg('Operator \"empty\" on \"{field}\" requires a boolean value (true = is empty).'),\n 'content.queryError.operatorRequiresScalar': msg('Operator \"{operator}\" on \"{field}\" requires a scalar value.'),\n 'content.queryError.sortNotFilterable': msg('Sort field \"{field}\" on \"{collection}\" is not declared filterable.'),\n 'content.queryError.sortUnknownField': msg('Sort field \"{field}\" does not exist on \"{collection}\".'),\n 'content.queryError.sortDirection': msg('Sort direction must be \"asc\" or \"desc\".'),\n // EC-660 — THE sort shape (`{ field, direction? }`, strict) judged by validateSort.\n 'content.queryError.sortShape': msg('Sort must be an object { field, direction? }.', 'The braces are code — the literal shape of a sort; keep them and the key names untranslated.'),\n 'content.queryError.sortFieldName': msg('Sort field must be a non-empty field name.'),\n 'content.queryError.sortKeyRenamed': msg('Sort key \"{key}\" is spelled \"{replacement}\".', '{key} is a retired key name (dir), {replacement} the key that replaced it (direction) — identifiers.'),\n 'content.queryError.sortUnknownKey': msg('Sort key \"{key}\" is not read — a sort is { field, direction? }.', 'The braces are code — the literal shape of a sort; keep them and the key names untranslated.'),\n 'content.queryError.limitPositiveInteger': msg('Limit must be a positive integer.'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // CMS — collection list / view bar / filters / cells\n // ─────────────────────────────────────────────────────────────────────────\n // EC-412 — the CMS section landing (`cms-index.tsx`): the collection grid.\n 'cms.index.heading': msg('Content', 'Display heading of the CMS section landing (the collection grid).'),\n 'cms.index.description': msg('Schema-driven collections. Open a collection to browse its documents as a table and edit them in the detail editor.'),\n 'cms.index.fieldCount.one': msg('{count} field', 'Collection-card meta line, shown after the collection id; {count} is the schema field count.'),\n 'cms.index.fieldCount.other': msg('{count} fields', 'Collection-card meta line, shown after the collection id; {count} is the schema field count.'),\n 'cms.index.singleDocument': msg('Single document', 'Note on a singleton collection card (EC-217) — one fixed document instead of a row count.'),\n 'cms.list.new': msg('New', 'Create button on a non-page collection.'),\n 'cms.list.newPage': msg('New page'),\n 'cms.list.newNamed': msg('New {noun}', 'Empty-state create button; {noun} is the singular collection label.'),\n 'cms.list.moreActions': msg('More actions'),\n 'cms.list.rowActionsColumnLabel': msg('Row actions', 'Screen-reader label of the row-action-menu column header (EC-316).'),\n 'cms.list.rowActionsLabel': msg('Actions for {id}', 'Aria-label of one row’s ⋮ action-menu trigger.'),\n 'cms.list.rowAction.open': msg('Open', 'Row-menu item: open the document’s detail editor.'),\n 'cms.list.import': msg('Import…'),\n 'cms.list.export': msg('Export'),\n 'cms.list.forReview': msg('For review', 'Prefix in the collection-shape-drift banner heading.'),\n 'cms.list.count': msg('{count} {noun}', 'Working-set count; {noun} is the collection singular/plural label (data).'),\n 'cms.list.countFiltered': msg('{visible} of {total} {noun}', 'Working-set count when filters hide rows.'),\n 'cms.list.emptyNone': msg('No {noun} yet.', '{noun} is the plural collection label (data), lowercased.'),\n 'cms.list.emptyFiltered': msg('No documents match the current view’s filters.'),\n 'cms.list.selectAll': msg('Select all documents in view'),\n 'cms.list.selectRow': msg(\n 'Select {title}',\n 'Row checkbox. {title} is the document title (data) — never the internal id.',\n ),\n 'cms.list.column.title': msg('Title'),\n 'cms.list.column.state': msg('State'),\n // EC-448 — the fixed leading status-dot column's ICON header carries this as its\n // accessible name (`aria-label`/`title`); no visible text header (it is a glyph).\n 'cms.list.column.statusHeader': msg('Status', 'Accessible label of the status-dot column icon header (EC-448).'),\n 'cms.list.column.url': msg('URL'),\n // EC-445 — reserved date pseudo-columns (participate in the columns model).\n 'cms.list.column.updatedAt': msg('Updated'),\n 'cms.list.column.publishedAt': msg('Published'),\n // EC-346 — the State column's per-row badge (`DocStateBadge`); was hardcoded\n // English. Distinct keys from `cms.editor.draftState`/`publishedState` (title\n // case, editor header) and `cms.filter.state.*`/`cms.reference.*Badge` (filter\n // builder / reference dialog) — same words, different UI contexts (EC-241).\n 'cms.docState.published': msg('published', 'Row State-column badge — lowercase token.'),\n // EC-448 — the third ratified doc-state (published WITH unpublished draft changes).\n // Part of the vocabulary + tone mapping; not fed by the list today (a correct\n // per-row verdict needs the versions pane's snapshot compare).\n 'cms.docState.changed': msg('changed', 'Row status-dot label — published with unpublished changes.'),\n 'cms.docState.draft': msg('draft', 'Row State-column badge — lowercase token.'),\n // EC-479 — a CMS session cannot open without the project's locales: the default\n // locale is the storage key every localized value is written under, so the\n // surface refuses rather than editing in an invented one.\n 'cms.session.noLocales.title': msg(\n 'This project declares no locales',\n 'Heading of the panel replacing the CMS surface when the project has no locale config.',\n ),\n 'cms.session.noLocales.body': msg(\n 'Add a locales list to your project config. The default locale is the key your content is stored under, so the studio will not choose one for you.',\n 'Body of the same panel. Explains why the studio refuses instead of picking a locale.',\n ),\n 'cms.list.view.all': msg('All entries', 'Name of the built-in baseline view.'),\n 'cms.list.unknownCollection': msg('Unknown collection {id}.'),\n 'cms.list.import.noId': msg('(no id)', 'Placeholder id in an import-rejected report.'),\n 'cms.list.display.ariaLabel': msg('Display options'),\n 'cms.list.display.title': msg('Display: layout and columns'),\n 'cms.list.display.layout': msg('Layout'),\n 'cms.list.display.flatList': msg('Flat list'),\n 'cms.list.display.pageHierarchy': msg('Page hierarchy'),\n 'cms.list.display.columns': msg('Columns · first visible is the title'),\n 'cms.list.display.toggleColumn': msg('Toggle column {field}'),\n 'cms.list.display.titleTag': msg('(title)', 'Suffix marking the title column in the column list.'),\n 'cms.list.display.moveColumnUp': msg('Move column {field} up'),\n 'cms.list.display.moveColumnDown': msg('Move column {field} down'),\n 'cms.list.bulk.count': msg('{count} selected'),\n 'cms.list.bulk.publish': msg('Publish'),\n 'cms.list.bulk.unpublish': msg('Unpublish'),\n 'cms.list.bulk.noSettableFields': msg('No filterable scalar fields to set.'),\n 'cms.list.bulk.setField': msg('Set field'),\n 'cms.list.bulk.clearSelection': msg('Clear selection'),\n // EC-494 — the two per-item failure reasons authored studio-side in\n // `bulk-actions.ts`; the rest of a bulk report's reasons are resolved from the\n // catalog reference the operation error now carries.\n 'cms.list.bulk.error.notInSession': msg('Document is no longer in the session.'),\n 'cms.list.bulk.error.notValidToPublish': msg('Document is not valid to publish.'),\n 'cms.list.bulk.set.set': msg('Set', 'Leading word of the “Set <field> to <value>” composer.'),\n 'cms.list.bulk.set.to': msg('to', 'Connector in the “Set <field> to <value>” composer.'),\n 'cms.list.bulk.set.valueAria': msg('Set value'),\n 'cms.list.bulk.set.apply': msg('Apply to selection'),\n 'cms.list.bulk.report.verb.setField': msg('set {field}', 'Action name spliced into the bulk-report summary.'),\n 'cms.list.bulk.report.verb.publish': msg('publish', 'Lowercase action name spliced into the bulk-report summary.'),\n 'cms.list.bulk.report.verb.unpublish': msg('unpublish'),\n 'cms.list.bulk.report.verb.delete': msg('delete'),\n 'cms.list.bulk.report.summary': msg('Bulk {action}: {succeeded} succeeded'),\n 'cms.list.bulk.report.failedSuffix': msg(', {count} failed'),\n 'cms.list.bulk.report.failedBadge': msg('{count} failed'),\n 'cms.list.bulk.report.done': msg('done'),\n 'cms.list.bulk.error.invalidSetField': msg('Set-field is missing its field/value or the collection schema.'),\n 'cms.filter.button': msg('Filter'),\n 'cms.filter.summaryMultiple': msg('{count} filters', 'Chip summary when more than one clause is active.'),\n 'cms.filter.clearAria': msg('Clear filter'),\n 'cms.filter.refineSession': msg('Refine · this session'),\n 'cms.filter.clearAll': msg('Clear all'),\n 'cms.filter.add': msg('Add filter'),\n 'cms.filter.andHint': msg('all conditions must match (AND)'),\n 'cms.filter.fieldAria': msg('Filter field'),\n 'cms.filter.operatorAria': msg('Filter operator'),\n 'cms.filter.remove': msg('Remove filter'),\n // EC-494 — the two clause problems authored studio-side (`cms-views/view-model.ts`).\n // The schema-field ones come from `core/content` and are keyed under content.queryError.*.\n 'cms.filter.issue.stateOperator': msg('State filters support only \"eq\" and \"in\".'),\n 'cms.filter.issue.stateValue': msg('State must be \"draft\" or \"published\".'),\n 'cms.filter.valueAria': msg('Filter value'),\n 'cms.filter.valueListPlaceholder': msg('value, value, …'),\n 'cms.filter.pickRelation': msg('Pick…', 'Placeholder on a relation filter value before a target is picked.'),\n 'cms.filter.state.published': msg('published'),\n 'cms.filter.state.draft': msg('draft'),\n // Operator labels (EC-345) — keyed by operator AND field type in `operatorLabelKey`.\n 'cms.filter.op.contains': msg('contains'),\n 'cms.filter.op.equals': msg('equals', 'Equality operator on text/number fields.'),\n 'cms.filter.op.is': msg('is', 'Equality operator on enum-like fields (boolean/select/relation/asset/state).'),\n 'cms.filter.op.startsWith': msg('starts with'),\n 'cms.filter.op.endsWith': msg('ends with'),\n 'cms.filter.op.isAnyOf': msg('is any of', 'The `in` operator: matches any value in the picked set.'),\n 'cms.filter.op.lessThan': msg('less than'),\n 'cms.filter.op.atMost': msg('at most', 'The ≤ operator on a number field.'),\n 'cms.filter.op.greaterThan': msg('greater than'),\n 'cms.filter.op.atLeast': msg('at least', 'The ≥ operator on a number field.'),\n 'cms.filter.op.on': msg('on', 'Date equality operator (e.g. “Published on”).'),\n 'cms.filter.op.before': msg('before', 'The < operator on a date field.'),\n 'cms.filter.op.onOrBefore': msg('on or before', 'The ≤ operator on a date field.'),\n 'cms.filter.op.after': msg('after', 'The > operator on a date field.'),\n 'cms.filter.op.onOrAfter': msg('on or after', 'The ≥ operator on a date field.'),\n 'cms.filter.op.isEmpty': msg('is empty'),\n 'cms.filter.op.isNotEmpty': msg('is not empty'),\n 'cms.cell.fallbackTitle': msg('Showing {source} (fallback) — no {requested} translation yet. Edit to translate.'),\n 'cms.cell.richText': msg('rich text', 'Placeholder for a rich-text cell whose preview is empty.'),\n 'cms.cell.itemCount.one': msg('{count} item'),\n 'cms.cell.itemCount.other': msg('{count} items'),\n 'cms.cell.object': msg('object', 'Placeholder for a single object cell that has a value.'),\n 'cms.cell.blockCount.one': msg('{count} block'),\n 'cms.cell.blockCount.other': msg('{count} blocks'),\n 'cms.cell.createsVariantTitle': msg('Saving creates the {locale} translation of this field.'),\n 'cms.cell.newVariant': msg('new', 'Suffix on the edit-locale badge when a fresh variant will be created.'),\n 'cms.cell.editAria': msg(\n 'Edit {field} of {title}',\n 'Accessible name of an editable list cell. {field} is the column label, {title} the document title (both data).',\n ),\n\n // ─────────────────────────────────────────────────────────────────────────\n // CMS — document detail editor\n // ─────────────────────────────────────────────────────────────────────────\n 'cms.editor.notFoundTitle': msg('Not found'),\n 'cms.editor.backToList': msg('Back to {label}'),\n 'cms.editor.publishFailed': msg('Publish failed.'),\n 'cms.editor.publishFailedReason': msg('Publish failed: {error}'),\n 'cms.editor.saveFailed': msg('Save failed'),\n 'cms.editor.unsavedChanges': msg('Unsaved changes'),\n 'cms.editor.saved': msg('Saved'),\n // 0.0.42 (round 3): the standalone \"View live\" button is retired — opening the live\n // page now hangs off the header URL row's leaf segment. These strings still drive the\n // leaf's tooltip (open-live target + the published-gating reasons).\n 'cms.editor.openLiveUrl': msg('Open {path}'),\n 'cms.editor.loadingLiveUrl': msg('Loading the live URL…'),\n 'cms.editor.publishToViewLive': msg('Publish to view the live page'),\n 'cms.editor.setFrontendUrlHint': msg('Set frontendUrl in elytra.config.ts to enable'),\n 'cms.editor.publishedReadFailed': msg('Couldn’t load what is published, so live URLs are unknown: {reason}', 'EC-628: the published-pool read failed (never shown as \"not published\"); {reason} is the operation’s error sentence.'),\n 'cms.editor.switchToDraftToPublish': msg('Switch to Draft to publish'),\n 'cms.editor.fixIssuesToPublish.one': msg('Fix {count} issue to publish'),\n 'cms.editor.fixIssuesToPublish.other': msg('Fix {count} issues to publish'),\n 'cms.editor.publishing': msg('Publishing…'),\n 'cms.editor.publishedState': msg('Published'),\n 'cms.editor.publish': msg('Publish'),\n 'cms.editor.moreActions': msg('More actions'),\n 'cms.editor.unpublish': msg('Unpublish'),\n // 0.0.39 — the Publish button is a split button: primary Publish (stay) + a\n // \"Publish & close\" dropdown item (publish, then return to the list). Replaces the\n // retired EC-316 \"Save & close\" (autosave made a bare \"Save\" meaningless).\n 'cms.editor.publishActions': msg('Publish options', 'aria-label for the Publish split-button dropdown trigger.'),\n 'cms.editor.publishAndClose': msg('Publish & close', 'Split-button item: publish the document, then return to the collection list (0.0.39, replaces EC-316 Save & close).'),\n 'cms.editor.saveAndClose': msg('Save & close', 'Header action: save the draft, then return to the collection list (EC-316).'),\n 'cms.editor.duplicateCreated': msg('Duplicate created as a new draft', 'Success toast after duplicating a document (EC-442) — shown as the copy’s editor opens (its title equals the original’s, so this disambiguates).'),\n 'cms.editor.discardDraft': msg('Discard changes', 'Header ⋯-menu item: revert the draft to the published content (EC-316).'),\n 'cms.editor.discardDraftUpToDateHint': msg('The draft matches the published version — nothing to discard.'),\n 'cms.editor.switchToDraftToDiscard': msg('Switch to Draft to discard changes'),\n 'cms.editor.discardDraftTitle': msg('Discard draft changes?'),\n 'cms.editor.discardDraftDescription': msg('This reverts the draft to the currently published content. Your unpublished edits are replaced — a snapshot of them is kept in the version history.'),\n 'cms.editor.discardDraftConfirm': msg('Discard changes'),\n 'cms.editor.discardingDraft': msg('Discarding…'),\n 'cms.editor.draftState': msg('Draft'),\n 'cms.editor.publishToViewPublished': msg('Publish this document to view its published version'),\n 'cms.editor.publishedReadOnlyBanner': msg('Viewing the published version — read-only.'),\n 'cms.editor.switchToDraft': msg('Switch to Draft'),\n 'cms.editor.loadingPublishedVersion': msg('Loading the published version…'),\n 'cms.editor.noPublishedVersion': msg('No published version found for this document.'),\n 'cms.editor.unsavedChangesGuard': msg('You have unsaved changes to this record. Save them before leaving, or discard them.'),\n 'cms.editor.readOnlyBadge': msg('read-only'),\n // EC-318 — connected fields: the per-field localization connection affordance that\n // replaces EC-176's passive \"showing EN\" text. Shown only on a localized field in a\n // non-base locale (never on the base locale, non-localized fields, or read-only).\n 'cms.editor.localeFollowsBase': msg('Follows {base}', 'Connected chip — this field inherits the base-locale value. {base} is the base locale code, e.g. \"EN\".'),\n 'cms.editor.localeFollowsHint': msg('This field follows the {base} value. Type to translate it, or fill from {base} to start from a copy.'),\n 'cms.editor.localeFillFromBase': msg('Fill from {base}', 'Action — copy the base-locale value in as a translation starting point.'),\n 'cms.editor.localeTranslated': msg('Translated', 'Diverged chip — this field owns its own value in the active locale.'),\n 'cms.editor.localeTranslatedHint': msg('Translated for {locale}. Clearing the text reconnects it to the {base} value — an intentionally-empty translation is not supported.'),\n 'cms.editor.localeResetToBase': msg('Reset to {base}', 'Action — discard the translation so the field follows the base locale again.'),\n 'cms.editor.localeResetTitle': msg('Reset to the {base} value?'),\n 'cms.editor.localeResetDescription': msg('This removes the {locale} translation for this field. It will follow the {base} value again until you translate it.'),\n 'cms.editor.localeResetConfirm': msg('Reset to {base}'),\n 'cms.editor.issuesPane': msg('Issues'),\n 'cms.editor.detailsPane': msg('Details'),\n 'cms.editor.servedAt': msg('Served at {path}'),\n 'cms.editor.slugUrlHint': msg('The URL is derived from the slug (and parent) — set a slug to define it.'),\n 'cms.editor.defaultGroup': msg('Fields', 'Title of the implicit fieldset that holds ungrouped fields.'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // CMS — issues pane (validation)\n // ─────────────────────────────────────────────────────────────────────────\n 'cms.issues.none': msg('No issues'),\n 'cms.issues.satisfied': msg('This document satisfies the collection schema.'),\n 'cms.issues.goToField': msg('Go to {field}', 'Jump link on an issue card; {field} is the field’s label.'),\n // EC-443 — issue-card TITLES, one per `CmsIssueCode` (`lib/persona/labels.ts`\n // maps the enum exhaustively onto these keys; adding a code fails typecheck\n // there until it lands here).\n 'cms.issue.duplicate-collection': msg('Duplicate collection'),\n 'cms.issue.duplicate-field': msg('Duplicate field'),\n 'cms.issue.unknown-collection': msg('Unknown collection'),\n 'cms.issue.invalid-collection-config': msg('Invalid collection setup'),\n 'cms.issue.invalid-field-config': msg('Invalid field setup'),\n 'cms.issue.reserved-field-name': msg('Reserved field name'),\n 'cms.issue.prototype-key': msg('Key cannot be stored'),\n 'cms.issue.missing-required-field': msg('Missing required field'),\n 'cms.issue.invalid-field-value': msg('Invalid value'),\n 'cms.issue.invalid-field-value.warning': msg(\n 'Check this value',\n 'Title for a WARNING-severity invalid-field-value issue (EC-507). The value was accepted and stored — e.g. an implausible but legal date year — so \"Invalid value\" would contradict what the editor can see in the field.',\n ),\n 'cms.issue.unknown-relation-target': msg('Missing reference'),\n 'cms.issue.unpublished-relation-target': msg('Unpublished reference'),\n 'cms.issue.cardinality-violation': msg('Wrong number of values'),\n 'cms.issue.unknown-asset': msg('Missing asset'),\n 'cms.issue.asset-without-url': msg('Asset without a file'),\n 'cms.issue.asset-meta-drift': msg(\n 'Unused asset translation',\n 'EC-659: an asset keeps a translated value (e.g. of its alt text) for a field that is no longer translatable — the shared value is shown; the stored translation is kept but not used.',\n ),\n 'cms.issue.duplicate-document': msg('Duplicate entry'),\n 'cms.issue.unknown-locale': msg('Unknown language'),\n 'cms.issue.missing-localized-value': msg('Missing translation'),\n 'cms.issue.route-conflict': msg('Conflicting URL'),\n 'cms.issue.redirect-loop': msg('Redirect loop'),\n 'cms.issue.invalid-redirect': msg('Invalid redirect', 'EC-590/EC-628: a duplicate `from`, or a stored redirect that cannot be read (and is not served).'),\n 'cms.issue.unknown-route-target': msg('Missing page'),\n 'cms.issue.hierarchy-cycle': msg('Page nesting loop'),\n 'cms.issue.document-nesting-depth': msg('Content nested too deeply'),\n 'cms.issue.singleton-document-drift': msg('More than one document'),\n 'cms.issue.duplicate-alias': msg('Slot used twice'),\n 'cms.issue.unknown-alias': msg('Unknown slot'),\n 'cms.issue.unfilled-slot': msg('Empty slot'),\n 'cms.issue.custom-validation': msg('Validation rule'),\n 'cms.issue.hidden-predicate-error': msg('Broken visibility rule'),\n 'cms.issue.unaddressable-url': msg('Unreachable URL'),\n 'cms.issue.unknown-version': msg('Unknown version'),\n 'cms.issue.invalid-stored-document': msg('Unreadable stored document', 'EC-585: a stored row the delivery snapshot shipped is not a valid document, so it is not delivered.'),\n 'cms.issue.props-not-judged': msg('Component settings not checked', 'EC-662: a page was resolved without a component registry, so its component props were delivered unchecked.'),\n // EC-443 — issue-card BODY templates, only for codes whose full body derives\n // from `code` + `path`/`meta` (`issue-copy.ts`); every other code shows the\n // raw English core message (honest fallback).\n 'cms.issueBody.missing-required-field': msg('Required field “{field}” is not filled in.'),\n 'cms.issueBody.missing-localized-value.default': msg(\n 'Required field “{field}” has no value for the default language “{locale}”.',\n ),\n 'cms.issueBody.missing-localized-value.fallback': msg(\n 'Field “{field}” has no value for “{locale}” and no fallback.',\n ),\n 'cms.issueBody.unknown-asset': msg('Field “{field}” references the unknown asset “{asset}”.'),\n 'cms.issueBody.document-nesting-depth.error': msg(\n 'This content nests {depth} levels deep, past the {limit}-level storage limit — split it into smaller linked entries.',\n ),\n 'cms.issueBody.document-nesting-depth.warning': msg(\n 'This content nests {depth} levels deep, approaching the {limit}-level storage limit.',\n ),\n 'cms.issueBody.hierarchy-cycle': msg(\n 'This entry is its own ancestor — the parent chain forms a loop.',\n ),\n\n // ─────────────────────────────────────────────────────────────────────────\n // CMS validation issue BODIES (EC-487)\n //\n // EC-443 localized the issue TITLES (`cms.issue.<code>` above); the bodies were\n // still built as English template literals inside `packages/core`, which cannot\n // import this catalog. EC-478 solved that shape for `CustomizationIssue` by having\n // the producer carry a message KEY; these are the same carriage for\n // `CmsValidationIssue`, so the rail foot, the Issues pane and the for-review lane\n // never mix a German title with an English body.\n //\n // The English here is a SECOND copy of what the producer builds — the tie between\n // them is `lib/persona/cms-issue-i18n.test.ts`, which renders every real producer's\n // issue through this catalog and asserts byte-identity. Interpolated values are\n // IDENTIFIERS (field/collection/route/locale ids, patterns, counts) and stay\n // unlocalized in every language.\n //\n // `cms.issueDetail.*` are FRAGMENTS spliced into the sentences above.\n // ─────────────────────────────────────────────────────────────────────────\n 'cms.issueMessage.duplicateDocument': msg('Duplicate document \"{id}\" in collection \"{collection}\".'),\n 'cms.issueMessage.fieldDetail': msg('Field \"{field}\" {detail}.'),\n 'cms.issueMessage.fieldReason': msg('Field \"{field}\": {reason}'),\n // EC-598 — a config `hidden` predicate threw. {reason} is the thrown message: author\n // prose, kept verbatim (like a `validate` message inside cms.issueMessage.fieldReason).\n 'cms.issueMessage.fieldHiddenPredicateThrew': msg(\n 'The visibility rule of field \"{field}\" threw an error (\"{reason}\"), so the field is shown and validated. Fix the rule in the project config.',\n 'A developer-authored show/hide rule crashed. {field} is a field id, {reason} the error text the rule threw (untranslated).',\n ),\n 'cms.issueMessage.groupHiddenPredicateThrew': msg(\n 'The visibility rule of group \"{group}\" threw an error (\"{reason}\"), so its fields are shown and validated. Fix the rule in the project config.',\n 'A developer-authored show/hide rule of a form section crashed. {group} is the section id, {reason} the error text the rule threw (untranslated).',\n ),\n 'cms.issueMessage.relationUnknownTargetCollection': msg('Relation field \"{field}\" targets unknown collection \"{target}\".'),\n 'cms.issueMessage.relationSingleValued': msg('Relation field \"{field}\" is single-valued but has {count} targets.'),\n 'cms.issueMessage.relationNotAReference': msg('Relation field \"{field}\" holds a value that is not a document reference.'),\n 'cms.issueMessage.relationWrongCollection': msg('Relation field \"{field}\" points at collection \"{got}\" but targets \"{target}\".'),\n 'cms.issueMessage.relationMissingDocument': msg('Relation field \"{field}\" references missing document \"{id}\" in \"{target}\".'),\n 'cms.issueMessage.relationUnpublishedDocument': msg('Relation field \"{field}\" references unpublished document \"{id}\" in \"{target}\" — the published site shows a fallback there.'),\n // EC-589 — a strict relation (field, sub-field or prop) to an unpublished target blocks publishing the referrer.\n 'cms.issueMessage.relationStrictUnpublished': msg('Relation field \"{field}\" is strict: \"{id}\" in \"{target}\" is not published, so this document cannot be published until it is.'),\n 'cms.issueMessage.assetNoAssetCollection': msg('Asset field \"{field}\" requires an asset collection, but none is registered.'),\n 'cms.issueMessage.assetSingleValued': msg('Asset field \"{field}\" is single-valued but has {count} targets.'),\n 'cms.issueMessage.assetExpectsId': msg(\"Asset field \\\"{field}\\\" expects an asset id, or { type: 'asset', id, …per-use fields } — an object needs type: 'asset'.\"),\n 'cms.issueMessage.assetUnknown': msg('Asset field \"{field}\" references unknown asset \"{asset}\".'),\n 'cms.issueMessage.assetNotAccepted': msg('Asset field \"{field}\" accepts only {accept}, but asset \"{asset}\" is {type}.'),\n 'cms.issueMessage.requiredFieldMissing': msg('Required field \"{field}\" is missing.'),\n 'cms.issueMessage.perLocaleMapValue': msg('Field \"{field}\" expects a \"{type}\" value but holds a per-locale map (keys: {keys}) — per-locale values live under the document\\'s \"localized\" bag, never inside a field value.'),\n 'cms.issueMessage.richTextHoldsArray': msg('Rich-text field \"{field}\" expects a rich-text value (\"{ version: 2, content }\") but holds an array.'),\n 'cms.issueMessage.richTextHoldsBareDoc': msg('Rich-text field \"{field}\" expects a rich-text value (\"{ version: 2, content }\") but holds a bare rich-text document missing its \"{ version: 2, content }\" envelope.'),\n 'cms.issueMessage.preConvergenceV1': msg('Field \"{field}\" holds a pre-convergence content shape (the v1 \"{ version, doc }\" envelope) — the engine reads only the converged \"{ version: 2, content }\" sequence. Re-seed this content.'),\n 'cms.issueMessage.preConvergenceBareBlocks': msg('Field \"{field}\" holds a pre-convergence content shape (a bare composition node list) — the engine reads only the converged \"{ version: 2, content }\" sequence. Re-seed this content.'),\n 'cms.issueMessage.preConvergencePlaintext': msg('Field \"{field}\" holds a pre-convergence content shape (legacy plain text) — the engine reads only the converged \"{ version: 2, content }\" sequence. Re-seed this content.'),\n 'cms.issueMessage.untaggedSequenceComponent': msg('Field \"{field}\" holds the component \"{component}\" (node \"{node}\") without its \"elytra/component\" tag in a content list — the engine reads only tagged components there, so the whole value renders its invalid-content fallback. It was written past the write path; save the field again through the editor or re-seed it.'),\n 'cms.issueMessage.gateUnknownCollection': msg('The project declares no collection “{collection}” — there are no rules to publish it by.', 'EC-595 A2 (F23): the publish gate refuses a document of a collection the project config does not declare. {collection} is the collection id.'),\n 'cms.issueMessage.gateAssetLibraryUnready': msg('The asset library could not be read — refusing to publish unverified asset references. Try again.', 'EC-595 A2 (EC-588, ruled 1f): the publish gate could not read the asset library, so a document that references assets is refused instead of published with the asset checks off.'),\n 'cms.issueMessage.gateNoLocales': msg('The project declares no locales — refusing to publish without them.', 'EC-595 A2: the publish gate refuses when the project config declares no locales (the storage key of every localized value).'),\n // EC-595 A2 — the per-field conflict and the thin field presence.\n 'cms.conflict.changedBy': msg('Changed by {name} since you started editing — your text is kept here until you choose.', 'EC-595 A2: a field this session changed was changed by someone else first; the store refused only this field. {name} is a colleague\\'s name, or \"someone else\" / \"you (in another tab)\".'),\n 'cms.conflict.removedBy': msg('Removed by {name} since you started editing — your change has nothing to apply to.', 'EC-595 A2: the element (a canvas block) this session changed was removed by someone else first. {name} as above.'),\n 'cms.conflict.theirs': msg('Theirs: {value}', 'EC-595 A2: a preview of the value now stored in the conflicted field. {value} is the value or a placeholder (\"empty\", \"a structured value\").'),\n 'cms.conflict.takeTheirs': msg('Take theirs', 'EC-595 A2: button — drop your change of this field and show the stored value.'),\n 'cms.conflict.keepMine': msg('Keep mine', 'EC-595 A2: button — write your value of this field again, over theirs, deliberately.'),\n 'cms.conflict.someoneElse': msg('someone else', 'EC-595 A2: {name} when the colleague who changed a field is not known by name.'),\n 'cms.conflict.youInAnotherTab': msg('you (in another tab)', 'EC-595 A2: {name} when the change came from the same user in another browser tab.'),\n 'cms.conflict.empty': msg('(empty)', 'EC-595 A2: {value} when the stored value is empty.'),\n 'cms.conflict.structured': msg('a structured value', 'EC-595 A2: {value} when the stored value is not plain text (an object, a list, rich text).'),\n 'cms.conflict.cellRefused': msg('This field was changed by someone else since you loaded it — their value is shown.', 'EC-595 A2: a table cell or bulk edit refused because the field changed meanwhile; the stored value is kept.'),\n 'cms.conflict.aliasRefused': msg('The slot was changed by someone else since you chose it — theirs is kept. Choose it again to change it.', 'EC-686: a slot (alias) change refused because a colleague changed the slot first. The slot has no field of its own to hold a take-theirs / keep-mine choice, so the stored slot is kept. Shown on the persistence error banner.'),\n 'cms.conflict.unauthored': msg('A change was not saved: it does not say which version of the document it was made on, so it could overwrite a newer change. Reload the document and make it again.', 'EC-647: a write that names no revision it was authored against is refused, never sent at the newest one (it could silently overwrite a colleague). Shown on the persistence error banner.'),\n 'cms.presence.inField': msg('{name} is in this field', 'EC-595 A2 thin presence: another session has this field focused. {name} is their name.'),\n 'cms.presence.inFieldMany': msg('{names} are in this field', 'EC-595 A2 thin presence: several sessions have this field focused. {names} is a comma-separated list of names.'),\n 'cms.presence.someone': msg('Someone', 'EC-595 A2 thin presence: the name of a present session that carries no name.'),\n 'cms.issueMessage.richTextHoldsObject': msg('Rich-text field \"{field}\" expects a rich-text value (\"{ version: 2, content }\") but holds an object with keys \"{keys}\".'),\n 'cms.issueMessage.unknownCollectionForDocument': msg('Document \"{id}\" references unknown collection \"{collection}\".'),\n 'cms.issueMessage.localizedPlainValue': msg('Localized field \"{field}\" holds a plain value in the shared \"values\" bag — expected per-locale values under \"localized.<locale>.{field}\". The plain value serves only as a last-resort fallback.'),\n 'cms.issueMessage.requiredLocalizedMissingDefault': msg('Required localized field \"{field}\" is missing for the default locale \"{locale}\".'),\n 'cms.issueMessage.localizedNoValueNoFallback': msg('Localized field \"{field}\" has no value for locale \"{locale}\" and no fallback.'),\n 'cms.issueMessage.hierarchyCycle': msg('Document \"{id}\" is its own ancestor — the parent chain forms a cycle.'),\n 'cms.issueMessage.nestingDepthError': msg('Document \"{id}\" nests {depth} levels deep, past the backend\\'s {limit}-level per-write limit — even depth-folding at rest cannot rescue a document this deep, so the write cannot be dispatched. Split it into smaller linked documents.'),\n 'cms.issueMessage.nestingDepthWarning': msg('Document \"{id}\" nests {depth} levels deep, approaching the backend\\'s {limit}-level limit. Consider flattening the deepest path before it grows further.'),\n 'cms.issueMessage.propFilterable': msg('Component prop \"{field}\" declares \"filterable\", which only applies to document fields.'),\n 'cms.issueMessage.propUnique': msg('Component prop \"{field}\" declares \"unique\", which only applies across a collection\\'s documents.'),\n 'cms.issueMessage.singletonDrift': msg('Singleton \"{collection}\" has {count} documents — it should have one. Keep the correct document and remove the others to open it directly.'),\n 'cms.issueMessage.unknownAlias.one': msg('A document is assigned the alias \"{alias}\", which is not a declared slot of \"{collection}\" ({declared}). Reassign to a valid slot.'),\n 'cms.issueMessage.unknownAlias.other': msg('{count} documents are assigned the alias \"{alias}\", which is not a declared slot of \"{collection}\" ({declared}). Reassign to a valid slot.'),\n 'cms.issueMessage.duplicateAlias': msg('{count} documents share the alias \"{alias}\" in \"{collection}\". Each slot must be assigned to one document — reassign or clear the duplicates.'),\n 'cms.issueMessage.unfilledSlot': msg('The \"{slot}\" slot of \"{collection}\" has no document yet. Assign one so code that resolves \"{slot}\" finds it.'),\n 'cms.issueMessage.reservedFieldName': msg('Field name \"{field}\" is reserved (the self-describing node discriminator): a field named \"{field}\" may only be a select whose options exclude the engine\\'s node types (reference, asset, block, elytra/*), and this one is a \"{kind}\" field.', 'EC-654: {kind} is a field type identifier (text, object, …); the parenthesised list is code — keep it untranslated.'),\n 'cms.issueMessage.reservedFieldTypeOption': msg('Select field \"{field}\" lists the option \"{option}\", an engine node type — a \"{field}\" of \"{option}\" would read as an engine node (reference, asset, block, elytra/*). Rename the option.', 'EC-654: {option} is the option value as declared; the parenthesised list is code — keep it untranslated.'),\n 'cms.issueMessage.reservedPrototypeFieldName': msg('Field name “{field}” is reserved: no value can be stored under it (a JavaScript object and the Convex store do not keep the key, and every write refuses it). Rename the field.', 'EC-684: {field} is the literal __proto__ (never translate it).'),\n 'cms.issueMessage.reservedPrototypeMemberName': msg('Field name “{field}” is reserved: every JavaScript object already answers to it (a member of Object.prototype), so a lookup by it finds the inherited member where nothing is held. Rename the field.', 'EC-697: {field} is a JavaScript member name such as constructor or toString, and Object.prototype is code (never translate either).'),\n 'cms.issueMessage.prototypeKey': msg('“{key}” cannot be used as a key: neither a JavaScript object nor the Convex store keeps it. Rename it.', 'EC-684: an own key in a value, or a path segment naming it, refused at a write or an import; {key} is the literal __proto__ (never translate it).'),\n 'cms.issueMessage.duplicateSelectOption': msg('Duplicate select option \"{option}\" on field \"{field}\".'),\n 'cms.issueMessage.duplicateObjectField': msg('Duplicate field \"{field}\" in object field \"{parent}\".'),\n 'cms.issueMessage.assetCollectionSingleton': msg('Asset collection \"{collection}\" cannot be a singleton.'),\n 'cms.issueMessage.unknownPresentationBodyField': msg('Collection \"{collection}\" declares presentation body field \"{field}\", which it does not define.'),\n 'cms.issueMessage.duplicateCollectionField': msg('Duplicate field \"{field}\" in collection \"{collection}\".'),\n 'cms.issueMessage.duplicateCollectionId': msg('Duplicate collection id \"{collection}\".'),\n 'cms.issueMessage.unknownLocale': msg('Locale \"{locale}\" is not in the configured locale set.'),\n 'cms.issueMessage.unknownVersion': msg('No version {version} recorded for document \"{id}\".'),\n 'cms.issueMessage.routeConflict': msg('Routes \"{first}\" and \"{second}\" both match the same URLs (pattern \"{pattern}\").'),\n 'cms.issueMessage.redirectLoop': msg('Redirect chain starting at \"{from}\" loops (…{chain}).'),\n 'cms.issueMessage.duplicateRedirect': msg('Redirect from \"{redirectFrom}\" duplicates the redirect from \"{keptFrom}\" — both are \"{from}\" once trailing slashes are ignored. The redirect from \"{keptFrom}\" applies; delete or change this one.'),\n 'cms.issueMessage.redirectUnreadable': msg('Stored redirect {redirect} could not be read and is not served ({reason}).', 'EC-628 (Codex F04): {redirect} is \"id\" (or #index), {reason} the column findings in English.'),\n 'cms.issueMessage.redirectReportUnreadable': msg(\"The deployment reported redirect issue #{index}, which this host cannot read — a redirect is not served; run the site on the deployment's engine version.\", 'EC-628: the delivery snapshot carried a redirect issue the host (an older engine) cannot parse.'),\n 'cms.issueMessage.allDynamicShadowsMount': msg('Route \"{route}\" (\"{pattern}\") has only dynamic segments, so it matches EVERY {depth}-segment URL — hierarchy mount \"{mountRoute}\" (\"{mountPattern}\") is consulted at that depth only where the route resolves no document. Nothing is unconditionally unreachable, but precedence there is decided by CONTENT rather than by the routes: {shadowed} are silently shadowed wherever a composed path collides with {claimed}, and neither side is told. Give the route a static prefix (\"/blog/:slug\") so it claims a namespace instead of a whole depth.'),\n 'cms.issueMessage.mountCannotServe': msg('Hierarchy mount \"{route}\" (\"{pattern}\") can never serve a document: {why}. The resolver skips such a mount silently, so every URL under \"{space}\" 404s with no issue raised.'),\n 'cms.issueMessage.deadCatchAll': msg('Route \"{route}\" (\"{pattern}\") serves nothing in either direction: it ends in a catch-all, so every router drops it, but its prefix has a dynamic segment ({dynamic}), so no hierarchy mount is built for it either. A mount\\'s prefix must be static — declare one mount per locale (`{ pattern: \\'/de/:path*\\', locale: \\'de\\' }`), or drop the route.'),\n 'cms.issueMessage.mountConflict': msg('{opening} — an exact tie, separated only by declaration order, so \"{earlier}\" (collection \"{earlierCollection}\") claims every URL there its own tree resolves, and \"{laterCollection}\" documents at those URLs are unreachable.'),\n 'cms.issueMessage.routeBoundDocumentNotFound': msg('Route-bound document \"{collection}:{id}\" was not found.'),\n 'cms.issueMessage.routeParamNotCaptured': msg('Route \"{route}\" binds its document to URL parameter \":{param}\", which pattern \"{pattern}\" does not capture.'),\n 'cms.issueMessage.collectionNotDefined': msg('Collection \"{collection}\" is not defined.'),\n 'cms.issueMessage.storedDocumentUnreadable': msg('Stored document {document} could not be read and is not delivered ({reason}).', 'EC-585 (Codex F12): {document} is collection:id (or #index), {reason} the schema findings in English.'),\n 'cms.issueMessage.unaddressableLocaleCollision': msg('No URL reaches \"{id}\" in locale \"{locale}\": its address would be \"{url}\", but the first segment \"{segment}\" is a declared locale code, so the site reads that URL as locale \"{segment}\", path \"{readPath}\". Rename that segment — on this document or on the ancestor that owns it — so it does not collide with a locale code.'),\n 'cms.issueDetail.expectsString': msg('expects a string'),\n 'cms.issueDetail.expectsRichText': msg('expects rich-text content (a string or a rich-text value)'),\n 'cms.issueDetail.expectsNumber': msg('expects a number'),\n 'cms.issueDetail.expectsBoolean': msg('expects a boolean'),\n 'cms.issueDetail.expectsIsoDate': msg('expects an ISO 8601 date (e.g. \"2026-09-18\")'),\n 'cms.issueDetail.expectsDate': msg('expects a date (ISO 8601 string or epoch number)'),\n 'cms.issueDetail.valueNotAmongOptions': msg('has value \"{value}\" not among its options'),\n 'cms.issueDetail.expectsObjectList': msg('expects a list of objects'),\n 'cms.issueDetail.expectsObject': msg('expects an object'),\n 'cms.issueDetail.implausibleYear': msg('has the year {year}, which looks unintended (a four-digit year is expected)'),\n 'cms.issueDetail.dateBoundNotADate': msg('declares {bound} `{declared}` on a date field, which is not a date — use an ISO 8601 string such as \"1900-01-01\"'),\n 'cms.issueDetail.earlierThanMin': msg('is earlier than {min}'),\n 'cms.issueDetail.laterThanMax': msg('is later than {max}'),\n 'cms.issueDetail.stringBoundOffDate': msg('declares {bound} \"{declared}\" as a string, which is only meaningful on a date field — use a number'),\n 'cms.issueDetail.shorterThanMinLength': msg('is shorter than min length {min}'),\n 'cms.issueDetail.longerThanMaxLength': msg('is longer than max length {max}'),\n 'cms.issueDetail.doesNotMatchPattern': msg('does not match pattern {pattern}'),\n 'cms.issueDetail.lessThanMin': msg('is less than min {min}'),\n 'cms.issueDetail.greaterThanMax': msg('is greater than max {max}'),\n 'cms.issueDetail.fewerThanMinItems': msg('has fewer than {min} items'),\n 'cms.issueDetail.moreThanMaxItems': msg('has more than {max} items'),\n 'cms.issueDetail.duplicateValue': msg('must be unique across the collection, but document \"{other}\" already has this value'),\n 'cms.issueDetail.duplicateValueForLocale': msg('must be unique across the collection, but document \"{other}\" already has this value for locale \"{locale}\"'),\n 'cms.issueDetail.shadowedRootDocuments': msg('the ROOT documents of \"{collection}\" under \"{space}\"'),\n 'cms.issueDetail.shadowedNestedDocuments': msg('\"{collection}\" documents nested {levels} levels under \"{space}\"'),\n 'cms.issueDetail.claimedBySlug': msg('a \"{collection}\" slug'),\n 'cms.issueDetail.claimedByOwnDocument': msg('the route\\'s own document'),\n 'cms.issueDetail.mountCollectionNotDeclared': msg('collection \"{collection}\" is not declared'),\n 'cms.issueDetail.mountCollectionNotHierarchical': msg('collection \"{collection}\" has no `parent` self-relation, so it has no nested paths to compose'),\n 'cms.issueDetail.mountsSamePath': msg('Hierarchy mounts \"{earlier}\" (\"{earlierPattern}\") and \"{later}\" (\"{laterPattern}\") are both mounted at \"{space}\"'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // CMS — details pane (slot + sidebar fields)\n // ─────────────────────────────────────────────────────────────────────────\n 'cms.details.slot': msg('Slot', 'A named handle the site uses to find a document (e.g. the main menu).'),\n 'cms.details.noSlot': msg('— No slot —'),\n 'cms.details.slotInUse': msg(' — in use', 'Suffix on a slot option already taken by another document.'),\n 'cms.details.slotHint': msg('A stable name the site uses to find this document (e.g. the main menu), instead of which exact entry it is. One document per slot.'),\n 'cms.details.empty': msg('No document properties to set.'),\n // The composed-URL affordance (EC-315 \"hybrid split\") — moved to the detail-editor\n // HEADER under the title in 0.0.42 (round 3); ancestor-document segments link to\n // their editors, static route segments are plain, and the leaf carries the live link.\n 'cms.details.urlCurrent': msg('this page', 'Tooltip on the final URL segment — the document being edited.'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // CMS — import dialog\n // ─────────────────────────────────────────────────────────────────────────\n 'cms.import.title': msg('Import documents'),\n 'cms.import.invalidJson': msg('Input is not valid JSON.'),\n 'cms.import.imported': msg('{count} imported'),\n 'cms.import.rejected': msg('{count} rejected:'),\n 'cms.import.confirm': msg('Import', 'Confirm button in the import dialog.'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // CMS — versions (compare + pane)\n // ─────────────────────────────────────────────────────────────────────────\n 'cms.version.paneLabel': msg('Versions'),\n 'cms.version.compare': msg('Compare'),\n 'cms.version.closeCompare': msg('Close compare'),\n 'cms.version.loadingHistory': msg('Loading version history…'),\n // Shown in the lazy boundary while the version-compare chunk loads (EC-322).\n 'cms.version.loadingCompare': msg('Loading the comparison…'),\n 'cms.version.versionUnavailable': msg('That version is no longer available. Pick another to compare.'),\n 'cms.version.currentDraft': msg('Current draft'),\n 'cms.version.unsavedEdits': msg('unsaved edits'),\n 'cms.version.baseCaption': msg('Base'),\n 'cms.version.compareWithCaption': msg('Compare with'),\n 'cms.version.compareNewer': msg('Compare a newer version'),\n 'cms.version.compareOlder': msg('Compare an older version'),\n 'cms.version.restoreWholeTitle': msg('Restore the whole document to v{version}'),\n 'cms.version.restoreVersion': msg('Restore version'),\n 'cms.version.noDifferences': msg('No differences'),\n 'cms.version.changeSummary.one': msg('{count} change · {unchanged} unchanged'),\n 'cms.version.changeSummary.other': msg('{count} changes · {unchanged} unchanged'),\n 'cms.version.comparingPastVersionsHint': msg(' · comparing two past versions — set “Compare with” to Current draft to restore'),\n 'cms.version.versionsIdentical': msg('These two versions are identical.'),\n 'cms.version.beforeVersion': msg('Before · v{version}'),\n 'cms.version.afterTarget': msg('After · {target}'),\n 'cms.version.restoreField': msg('Restore {field} from v{version}'),\n 'cms.version.restoreFieldLocale': msg('Restore {field} ({locale}) from v{version}'),\n 'cms.version.textUnchanged': msg('Text unchanged — formatting or whitespace differs.'),\n 'cms.version.restoreBlock': msg('Restore this block from v{version}'),\n 'cms.version.nestedContentChanged': msg('Nested content changed.'),\n // EC-593 — where a nested component's diff row sits.\n 'cms.version.nestedInProse': msg('in the text'),\n 'cms.version.nestedIn': msg('inside {path}', '{path} lists component names, e.g. \"Section › Grid\".'),\n 'cms.version.blockAdded': msg('Block added.'),\n 'cms.version.blockRemoved': msg('Block removed.'),\n 'cms.version.emptyValue': msg('empty'),\n 'cms.version.richText': msg('rich text'),\n 'cms.version.itemCount.one': msg('{count} item'),\n 'cms.version.itemCount.other': msg('{count} items'),\n 'cms.version.objectValue': msg('object'),\n 'cms.version.kindNew': msg('new'),\n 'cms.version.kindRemoved': msg('removed'),\n 'cms.version.unpublishedChanges': msg('Unpublished changes'),\n 'cms.version.notPublishedYet': msg('Not published yet'),\n 'cms.version.fixValidationToPublish': msg('Fix the document’s validation issues to publish'),\n 'cms.version.liveUpToDate': msg('The live version is up to date — nothing to publish.'),\n 'cms.version.comparingHint': msg('Comparing v{base} → {target}. Click a version to set it as the base.'),\n 'cms.version.noVersionsYet': msg('No published versions yet.'),\n 'cms.version.baseBadge': msg('Base'),\n 'cms.version.comparedBadge': msg('Compared'),\n 'cms.version.compareWithDraft': msg('Compare this version with the current draft'),\n 'cms.version.compareVersionLabel': msg('Compare v{version}'),\n 'cms.version.rowActionsLabel': msg('Actions for v{version}', 'Aria-label of one version row’s ⋯ action-menu trigger.'),\n 'cms.version.switchToDraftToRestore': msg('Switch to Draft to restore'),\n 'cms.version.restore': msg('Restore'),\n // EC-199 provenance — a subtle marker on versions recorded from AI-authored content.\n 'cms.version.aiAuthored': msg('AI', 'Short badge marking an AI-authored version.'),\n 'cms.version.aiAuthoredTitle': msg('Authored with the AI assistant'),\n\n // EC-317 — descriptor lane, unified/side-by-side toggle, truncation, zebra.\n 'cms.version.fieldColumnHeader': msg('Field'),\n 'cms.version.viewSideBySide': msg('Side by side'),\n 'cms.version.viewUnified': msg('Unified'),\n 'cms.version.viewModeAriaLabel': msg('Diff layout'),\n 'cms.version.unifiedCaption': msg('v{base} → {target}'),\n 'cms.version.showMore': msg('Show more'),\n 'cms.version.showLess': msg('Show less'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // CMS — delete/unpublish reference-confirm dialog\n // ─────────────────────────────────────────────────────────────────────────\n 'cms.reference.documentCount': msg('{count} documents'),\n 'cms.reference.confirmTitle': msg('{action} {subject}?'),\n 'cms.reference.checking': msg('Checking inbound references…'),\n 'cms.reference.checkUnavailable': msg('Inbound references could not be checked — the reference index is unreachable.'),\n 'cms.reference.blocked.one': msg('Blocked: {count} strict reference prevents this. Remove the references below first.'),\n 'cms.reference.blocked.other': msg('Blocked: {count} strict references prevent this. Remove the references below first.'),\n 'cms.reference.notReferenced': msg('Not referenced anywhere.'),\n 'cms.reference.permanentDelete.one': msg('This permanently deletes the document.'),\n 'cms.reference.permanentDelete.other': msg('This permanently deletes the {count} selected documents.'),\n 'cms.reference.canProceed': msg('You can {action} — {summary} will show a fallback until fixed. Each one becomes a visible validation issue.'),\n 'cms.reference.proceedUnavailable': msg('Proceeding is allowed, but affected places cannot be listed right now.'),\n 'cms.reference.proceedAnyway': msg('{action} anyway'),\n 'cms.reference.verb.unpublish': msg('unpublish', 'Lowercase verb spliced into “You can {action} …”.'),\n 'cms.reference.verb.delete': msg('delete'),\n 'cms.reference.placeCount.one': msg('{count} place'),\n 'cms.reference.placeCount.other': msg('{count} places'),\n 'cms.reference.bulkSummary': msg('{count} documents are affected; {places}'),\n 'cms.reference.atLocation': msg('at', 'Connector before a field/location deep-link in an impact row.'),\n 'cms.reference.strictBadge': msg('strict'),\n 'cms.reference.draftBadge': msg('draft'),\n 'cms.reference.publishedBadge': msg('published'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // CMS — field controls / scalar editor\n // ─────────────────────────────────────────────────────────────────────────\n 'cms.field.rendererCrashed': msg('Custom renderer crashed — showing the built-in control.'),\n 'cms.field.noRenderer': msg('No field renderer registered for control “{control}”.'),\n 'cms.field.blocksInFieldRow': msg('A blocks field is edited as the page canvas on a form tab of its own — it has no field row here.', 'EC-740: notice in place of a field row for a blocks (composition) field, e.g. one placed in the Details pane.'),\n 'cms.field.noControlForType': msg('No built-in control for the field type “{type}”.'),\n 'cms.field.itemActions': msg('Item actions'),\n 'cms.field.moveUp': msg('Move up'),\n 'cms.field.moveDown': msg('Move down'),\n 'cms.field.collapseAll': msg('Collapse all'),\n 'cms.field.expandAll': msg('Expand all'),\n 'cms.field.noItems': msg('No items'),\n 'cms.field.dragToReorder': msg('Drag to reorder'),\n 'cms.field.addItem': msg('Add item'),\n 'cms.field.value': msg('Value', 'Default aria-label for the scalar value editor.'),\n 'cms.field.valuePlaceholder': msg('value'),\n 'cms.field.colour': msg('Colour', 'aria-label on the colour-swatch field control.'),\n // EC-315 — the smart slug / URL-segment control.\n 'cms.field.slug.regenerate': msg('Regenerate the slug', 'Tooltip on the ↻ button that re-derives the slug from its source field.'),\n 'cms.field.slug.taken': msg('Already used by “{title}”', 'Inline warning when the slug collides with another document.'),\n 'cms.field.slug.takenGeneric': msg('This slug is already in use.', 'Inline warning when a custom uniqueness check reports the slug is taken.'),\n // EC-691 — a page an explicit route binds answers only at that route's address.\n 'cms.field.slug.routedComposesChildren': msg(\n 'This page’s address is {path}. Its slug only composes the paths of its child pages.',\n 'Hint under the slug control of a page an explicit route binds (e.g. Home at /): the slug is not an address of its own.',\n ),\n\n // ─────────────────────────────────────────────────────────────────────────\n // CMS — relation picker\n // ─────────────────────────────────────────────────────────────────────────\n 'cms.relation.change': msg('Change'),\n 'cms.relation.openTitle': msg('Open {title}'),\n 'cms.relation.pick': msg('Pick'),\n 'cms.relation.pickTitle.one': msg('Pick a related document'),\n 'cms.relation.pickTitle.many': msg('Pick related document'),\n 'cms.relation.fromCollection': msg('From {collection}'),\n 'cms.relation.selectMultipleHint': msg('select multiple'),\n 'cms.relation.noDocuments': msg('No documents in {collection}.'),\n 'cms.relation.selectedCount': msg('{count} selected'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // CMS — asset field + asset picker\n // ─────────────────────────────────────────────────────────────────────────\n 'cms.asset.rejected.one': msg('“{name}” skipped — only {types} allowed here.'),\n 'cms.asset.rejected.other': msg('{count} files skipped — only {types} allowed here.'),\n 'cms.asset.dropToUpload': msg('Drop to upload'),\n 'cms.asset.selectOrDrop': msg('Select or drop an image'),\n 'cms.asset.selectAsset': msg('Select an asset'),\n 'cms.asset.altLabel': msg('Alt:', 'Inline label prefixing an image’s alt text.'),\n 'cms.asset.notSet': msg('not set'),\n 'cms.asset.imageOptions.title': msg('Image options'),\n 'cms.asset.imageOptions.description': msg('What belongs to this use of the image, apart from what is true of the image everywhere.'),\n 'cms.asset.imageOptions.placementTitle': msg('In this place', 'Image options dialog: the section of per-use (placement) fields, e.g. a caption.'),\n 'cms.asset.imageOptions.placementHint': msg('Only this use of the image — another page can show it differently.'),\n 'cms.asset.imageOptions.assetTitle': msg('About this image', 'Image options dialog: the section of the asset’s own facts (alt text, credit, focal point).'),\n 'cms.asset.imageOptions.assetHint': msg('Applies everywhere this image is used — a change here changes every use.'),\n 'cms.asset.imageOptions.whereUsed': msg('Where it is used'),\n 'cms.asset.replaceFile': msg('Replace file', 'Asset action: upload new bytes into the SAME asset — every use shows the new file.'),\n 'cms.asset.replacing': msg('Replacing…'),\n 'cms.asset.replaceWrongKind': msg('“{name}” not used — a replacement must be {types}, like the current file.'),\n 'cms.asset.replaceSaveFirst': msg('Save or discard the metadata changes first.'),\n 'cms.asset.replacedCheckFocal': msg('The file was replaced — check that the focal point still frames the subject.'),\n 'cms.asset.focalPoint': msg('Focal point'),\n 'cms.asset.resetToCentre': msg('Reset to centre'),\n 'cms.asset.focalPointHint': msg('Click or drag on the image to set the focal point used when it’s cropped.'),\n 'cms.asset.noMetaFields': msg('No editable metadata fields are declared on the asset collection. Add fields (e.g. {code1}, {code2}) to it in code.'),\n 'cms.asset.pickTitle': msg('Pick an asset'),\n 'cms.asset.pickDescription': msg('Select from the project’s asset library.'),\n 'cms.asset.noProject': msg('The asset library needs a project — this CMS session has none.'),\n 'cms.asset.restoreDialogSize': msg('Restore dialog size'),\n 'cms.asset.maximizeDialog': msg('Maximize dialog'),\n 'cms.asset.searchPlaceholder': msg('Search assets…'),\n 'cms.asset.loading': msg('Loading assets…'),\n 'cms.asset.loadError': msg('Assets failed to load.'),\n 'cms.asset.noMatches': msg('No assets match your search.'),\n 'cms.asset.empty': msg('No assets yet — drop files here or use Upload.'),\n 'cms.asset.noAltText': msg('No alt text'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // Assets rail (EC-319: the universal list + grid/list toggle + detail surface)\n // ─────────────────────────────────────────────────────────────────────────\n 'assets.error.loadFailed': msg('Assets failed to load'),\n 'assets.loading': msg('Loading assets…'),\n 'assets.uploads.heading': msg('Uploads'),\n 'assets.upload.phase.queued': msg('queued'),\n 'assets.upload.phase.preparing': msg('preparing'),\n 'assets.upload.phase.uploading': msg('uploading'),\n 'assets.upload.phase.confirming': msg('saving metadata'),\n 'assets.upload.phase.done': msg('done'),\n 'assets.upload.phase.failed': msg('failed'),\n 'assets.upload.attempt': msg('attempt {count}'),\n 'assets.upload.dismissLabel': msg('Dismiss upload'),\n 'assets.viewToggle.groupLabel': msg('List or grid view'),\n 'assets.viewToggle.list': msg('List view'),\n 'assets.viewToggle.grid': msg('Grid view'),\n 'assets.detail.metadataHeading': msg('Metadata'),\n 'assets.detail.noFileUrl': msg('This asset has no file to serve — it renders as an empty image everywhere it is used. Replace the file.'),\n 'assets.detail.metaDriftNotLocalized': msg(\n 'Old translations are stored for {fields}, but the field is no longer translatable — every page shows its shared value. Saving the field removes them.',\n 'EC-659: {fields} lists field names with the locales holding an old translation, e.g. “alt (de, fr)”.',\n ),\n 'assets.detail.metaDriftUndeclared': msg(\n 'Translated values are stored for {fields}, which this asset collection does not declare — they are not used anywhere.',\n 'EC-659: {fields} lists stored field names with their locales, e.g. “caption (de)”.',\n ),\n 'assets.references.buttonLabel': msg('References'),\n 'assets.references.title': msg('Used by — {name}'),\n 'assets.references.description': msg('Everything referencing this asset, with deep links to the exact field or node.'),\n 'assets.delete.raceError.one': msg('Asset is now referenced in {count} place — reopen to review.'),\n 'assets.delete.raceError.other': msg('Asset is now referenced in {count} places — reopen to review.'),\n 'assets.delete.title': msg('Delete {filename}?'),\n 'assets.delete.description': msg('Removes the stored bytes and the metadata record. This cannot be undone.'),\n 'assets.delete.checking': msg('Checking references…'),\n 'assets.delete.inUse.one': msg('In use in {count} place'),\n 'assets.delete.inUse.other': msg('In use in {count} places'),\n 'assets.delete.brokenWarning': msg('Deleting will leave these references broken — they will surface as validation issues.'),\n 'assets.delete.noReferences': msg('No references found. Safe to delete.'),\n 'assets.delete.confirmAnyway': msg('Delete anyway'),\n 'assets.focalPoint.noPreview': msg('No image preview — upload or pick an image asset to set a focal point.'),\n 'assets.focalPoint.setLabel': msg('Set focal point'),\n // Generate previews — EC-400 thumbnail backfill maintenance action.\n 'assets.generatePreviews.button': msg('Generate previews'),\n 'assets.generatePreviews.hint': msg(\n 'Downscale existing images to lighter preview thumbnails, cutting egress. Skips assets that already have one.',\n ),\n 'assets.generatePreviews.running': msg('Generating previews… {done}/{total}'),\n 'assets.generatePreviews.done': msg('Generated {count} previews'),\n 'assets.generatePreviews.none': msg('Previews already up to date'),\n 'assets.generatePreviews.cancelled': msg('Cancelled — {count} generated'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // Users (section)\n // ─────────────────────────────────────────────────────────────────────────\n 'users.checkingAccess': msg('Checking access…'),\n 'users.restrictedTitle': msg('Admins only'),\n 'users.restrictedBody': msg('Managing users and roles requires the admin role on this deployment. Ask an admin to grant you access.'),\n 'users.loadFailed': msg('Users failed to load'),\n 'users.loading': msg('Loading users…'),\n // Built-in users rail — its schema labels resolve through the catalog (msgLabel),\n // so a consumer's translation catalog localizes the rail with no per-rail override.\n 'users.rail.label': msg('Users'),\n 'users.rail.labelSingular': msg('user', 'Singular noun for one users-rail row, e.g. in a header.'),\n 'users.field.name.label': msg('Name'),\n 'users.field.email.label': msg('Email'),\n 'users.field.role.label': msg('Role'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // Invites (EC-324) — invite-based onboarding, admin action in the users rail\n // ─────────────────────────────────────────────────────────────────────────\n 'invites.invite': msg('Invite user'),\n 'invites.pending': msg('Pending:', 'Label before the list of pending invite chips.'),\n 'invites.dialogTitle': msg('Invite a user'),\n 'invites.dialogBody': msg('They join by creating an account with this email. Open sign-up is closed — only invited emails can register.'),\n 'invites.emailLabel': msg('Email'),\n 'invites.roleLabel': msg('Role'),\n 'invites.send': msg('Send invite'),\n 'invites.sending': msg('Sending…'),\n 'invites.sent': msg('Invited {email}.', 'Toast after an invite is created; {email} is the invitee.'),\n 'invites.revoked': msg('Revoked the invite for {email}.'),\n 'invites.revokeAria': msg('Revoke the invite for {email}', 'aria-label on the revoke (×) button of an invite chip.'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // Account settings (EC-240 H-tail) — the member's OWN record + credentials\n // ─────────────────────────────────────────────────────────────────────────\n 'account.loading': msg('Loading your account…'),\n 'account.loadFailed': msg('Your account failed to load'),\n 'account.notMemberTitle': msg('No access yet'),\n 'account.notMemberBody': msg('You are signed in but not yet a member of this deployment. Ask an admin to grant you a role.'),\n // Account rail schema labels resolve through the catalog (msgLabel), like the users rail.\n 'account.rail.label': msg('Account', 'Header label for the account-settings surface.'),\n 'account.rail.labelSingular': msg('account'),\n 'account.field.name.label': msg('Name'),\n 'account.field.avatar.label': msg('Avatar URL'),\n 'account.field.avatar.hint': msg('A link to your profile image.'),\n 'account.field.email.label': msg('Email'),\n 'account.field.role.label': msg('Role'),\n 'account.security.title': msg('Sign-in & security'),\n 'account.security.method': msg('You sign in with your email and password.'),\n 'account.password.current': msg('Current password'),\n 'account.password.new': msg('New password'),\n 'account.password.confirm': msg('Confirm new password'),\n 'account.password.change': msg('Change password'),\n 'account.password.changing': msg('Changing…'),\n 'account.password.changed': msg('Your password has been changed.'),\n 'account.password.mismatch': msg('The new passwords don’t match.'),\n // EC-412 — engine-classified change-password failures. Each message MUST stay\n // byte-identical to the auth-adapter copy it localizes:\n // `changePasswordErrorMessageKey` (lib/auth-errors.ts) recognizes a failure by\n // exact EN-message match (the EC-397 sign-in pattern), so a reworded adapter\n // message falls back to the raw English until re-synced here —\n // `lib/auth-errors.test.ts` pins the sync against the real classifier.\n 'account.password.error.notSignedIn': msg('You are not signed in.', 'Change-password attempt without a live session.'),\n 'account.password.error.currentIncorrect': msg('Your current password is incorrect.'),\n 'account.password.error.weakPassword': msg('Choose a stronger password (at least 8 characters).'),\n 'account.password.error.tooManyAttempts': msg('Too many failed attempts — wait a moment, then try again.', 'EC-377: the current-password verification rate limit tripped.'),\n 'account.password.error.deploymentMisconfigured': msg('This deployment can’t change your password: its auth signing key is not set. Run `npx @convex-dev/auth`.', 'The backend deployment has no auth signing key. Keep the `npx @convex-dev/auth` command verbatim.'),\n 'account.password.error.serverError': msg('Password change failed (unexpected server error) — check the deployment logs.', 'Honest generic for an unclassifiable change-password failure.'),\n 'account.password.error.playgroundUnsupported': msg('Password change isn’t available in playground mode.', 'Playground mode has fixed seeded dev users; credentials can’t change.'),\n // EC-416 — engine-classified update-profile failures (the identity form's\n // save, `self-account-view-source.ts` → `AuthAdapter.updateProfile`). The\n // `not-authenticated` reason reuses `account.password.error.notSignedIn`\n // above (byte-identical adapter constant); `updateProfile` is NOT richly\n // classified like change-password, so every other failure collapses to one\n // generic `unavailable` message plus the playground `unsupported` refusal.\n 'account.profile.error.unavailable': msg('Profile update is currently unavailable.', 'Honest generic for an unclassifiable update-profile failure (EC-416) — the users:updateProfile mutation never throws a coded error like change-password.'),\n 'account.profile.error.playgroundUnsupported': msg('Profile editing isn’t available in playground mode.', 'Playground mode has fixed seeded dev users; identity fields can’t change.'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // Redirects (section)\n // ─────────────────────────────────────────────────────────────────────────\n // EC-616 — a generic record rail (`nav.rail(kind)`); `{label}` is the rail's label.\n 'records.loadFailed': msg('{label} failed to load', 'A record rail failed to load; {label} is the rail name, e.g. \"Submissions\".'),\n 'records.loading': msg('Loading {label}…', '{label} is the rail name, e.g. \"Submissions\".'),\n 'records.untitled': msg('(new {label})', 'Title of an unsaved new record; {label} is the singular record noun, e.g. \"redirect\".'),\n 'redirects.loadFailed': msg('Redirects failed to load'),\n 'redirects.loading': msg('Loading redirects…'),\n // Built-in redirects rail — schema labels via the catalog (msgLabel), see above.\n 'redirects.rail.label': msg('Redirects'),\n 'redirects.rail.labelSingular': msg('redirect', 'Singular noun for one redirect row, e.g. in a header.'),\n 'redirects.field.from.label': msg('From'),\n 'redirects.field.to.label': msg('To'),\n 'redirects.field.permanent.label': msg('Permanent (301)'),\n 'redirects.field.enabled.label': msg('Enabled'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // References panel\n // ─────────────────────────────────────────────────────────────────────────\n 'references.title': msg('References'),\n 'references.hintOutbound': msg('What this entry points at — click to jump to the target, or to the exact field.'),\n 'references.emptyOutbound': msg('No outbound references.'),\n 'references.usedBy': msg('Used by'),\n 'references.hintInbound': msg('Everything referencing this entry — click to jump to the exact field or node.'),\n 'references.emptyInbound': msg('Not referenced anywhere.'),\n 'references.loading': msg('Loading references…'),\n 'references.loadFailed': msg('References failed to load'),\n 'references.indexUnreachable': msg('The reference index is unreachable.'),\n 'references.sectionLoadError': msg('Couldn’t load this section: {error}'),\n 'references.locationPrefix': msg('at', 'Prefix before a reference’s location label.'),\n 'references.badgeDraft': msg('draft'),\n 'references.badgePublished': msg('published'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // Components registry browser\n // ─────────────────────────────────────────────────────────────────────────\n 'components.detail.notFound.title': msg('Component not found'),\n 'components.detail.notFound.body': msg('No component is registered with id {id}.'),\n 'components.detail.notFound.back': msg('Back to components'),\n 'components.detail.allComponents': msg('All components'),\n 'components.status.valid': msg('valid'),\n 'components.status.incompatible': msg('incompatible'),\n 'components.status.invalid': msg('invalid'),\n 'components.status.aria': msg('Status: {status}'),\n 'components.status.description.valid': msg('Manifest is registered and an implementation is wired up.'),\n 'components.status.description.incompatible': msg('Manifest is registered but no implementation is available — the renderer will show a fallback.'),\n 'components.status.description.invalid': msg('The registry reported a structured issue for this component.'),\n 'components.index.title': msg('Component registry'),\n 'components.index.subtitle': msg('Browse the platform primitives and this project’s components. Select one to inspect its manifest, edit props against a live preview, and see where it is used.'),\n 'components.index.stat.total': msg('Components'),\n 'components.index.stat.totalHint': msg('{primitives} base · {projects} project'),\n 'components.index.stat.valid': msg('Valid'),\n 'components.index.stat.needAttention': msg('Need attention'),\n 'components.index.stat.needAttentionHint': msg('{incompatible} incompatible · {invalid} invalid'),\n 'components.index.pickHint': msg('Pick a component from the list to open its detail view — a live editable preview, the prop & slot manifest, and where it is used.'),\n 'components.index.byCategory': msg('By category'),\n 'components.index.guide.title': msg('Registering & extending components'),\n 'components.index.guide.badge': msg('for developers'),\n 'components.index.guide.intro': msg('Components are code, owned by your repo. Register a manifest (prop schemas, defaults, inspector controls, slots, and preview fixtures) and the studio browses, inspects, and previews it. These guides, in the Elytra engine repository’s docs, cover the details:'),\n 'components.index.guide.doc.authoring': msg('How to declare and register a component so the studio can browse, inspect, and preview it.'),\n 'components.index.guide.doc.components': msg('The guide’s components chapter: the manifest + implementation pair, registering the list, fixtures, reusable elements, styling.'),\n 'components.index.guide.doc.guide': msg('The guide’s overview and chapter index: setup, the config API, delivery, the CLI and environment reference.'),\n 'components.index.guide.namespaceNote': msg('Components are the list in your config, with ids you choose (Heading, site.Hero). Elytra’s own components are the opt-in @elytracms/components package — list them, a subset, or none.'),\n 'components.taxonomy.uncategorized': msg('Uncategorized'),\n 'components.detail.tab.preview': msg('Preview'),\n 'components.detail.tab.manifest': msg('Manifest'),\n 'components.preview.reset': msg('Reset state'),\n 'components.preview.resetProps': msg('Reset props'),\n 'components.preview.edited': msg('edited'),\n 'components.preview.incompatibleNote': msg('No implementation is wired up — the renderer is showing its fallback.'),\n 'components.preview.serverOnlyTitle': msg('Server-only component'),\n 'components.preview.serverOnlyBody': msg('This component is not client-renderable, so it can’t run in the live preview. It still renders in your delivery frames.'),\n 'components.preview.slotsNote': msg('Slot content in the preview follows the selected state. Full slot editing happens in a document’s canvas — transfer this combination into one with “Use in document…”.'),\n 'components.preview.unavailableTitle': msg('Preview unavailable', 'Shown in place of a component preview that threw while rendering.'),\n 'components.preview.propNeedsDocument': msg('Editable in a document — no workspace context in the component preview.', 'Hint under an asset/relation/object prop control in the read-only component preview.'),\n 'components.transfer.action': msg('Use in document…'),\n 'components.transfer.title': msg('Use “{name}” in a document'),\n 'components.transfer.description': msg('Create a new draft, or add to an existing document’s blocks field, then open it.'),\n 'components.transfer.intoField': msg('into'),\n 'components.transfer.newDocument': msg('New {collection} document'),\n 'components.transfer.orExisting': msg('or add to an existing document'),\n 'components.transfer.noTargets': msg('No document field can receive this component.'),\n 'components.fieldInspector.props': msg('Props'),\n 'components.fieldInspector.noProps': msg('This component declares no editable props.'),\n 'components.fieldInspector.slots': msg('Slots'),\n 'components.fieldInspector.noSlots': msg('This component has no slots.'),\n 'components.fieldInspector.inline': msg('inline'),\n 'components.fieldInspector.default': msg('default'),\n 'components.fieldInspector.allows': msg('allows'),\n 'components.fixtureRunner.statesAria': msg('Preview states'),\n 'components.preview.breakpointAria': msg('Preview width'),\n 'components.browser.searchPlaceholder': msg('Search components…'),\n 'components.browser.searchAria': msg('Search components'),\n 'components.browser.namespaceAria': msg('Filter by namespace'),\n 'components.browser.all': msg('All'),\n 'components.browser.primitives': msg('Primitives'),\n 'components.browser.project': msg('Project'),\n 'components.browser.noMatchQuery': msg('No components match “{query}”.'),\n 'components.browser.noMatchFilters': msg('No components match the selected filters.'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // Settings\n // ─────────────────────────────────────────────────────────────────────────\n 'settings.identity.title': msg('Identity'),\n 'settings.identity.name': msg('Name'),\n 'settings.identity.urlKey': msg('URL key'),\n 'settings.locales.title': msg('Locales'),\n 'settings.locales.configuredCount': msg('{count} configured'),\n 'settings.locales.configured': msg('Configured locales'),\n 'settings.locales.defaultSuffix': msg(' · default'),\n 'settings.environments.title': msg('Environments & export'),\n 'settings.environments.label': msg('Environments'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // App-views shell\n // ─────────────────────────────────────────────────────────────────────────\n 'appViews.singleton.opening': msg('Opening {label}…'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // Builder / canvas\n // ─────────────────────────────────────────────────────────────────────────\n // Shown in the lazy boundary while the page-builder canvas chunk loads (EC-322).\n 'builder.canvas.loading': msg('Loading the page builder…'),\n 'builder.blocksPanel.title': msg('Insert block'),\n 'builder.blocksPanel.addsInto': msg('Adds into {destination}.'),\n 'builder.blocksPanel.searchPlaceholder': msg('Search blocks…'),\n 'builder.blocksPanel.searchAria': msg('Search blocks'),\n 'builder.blocksPanel.layoutHelpers': msg('layout helpers'),\n 'builder.blocksPanel.noAllowed': msg('No allowed components match.'),\n 'builder.blocksPanel.noMatch': msg('No components match “{query}”.'),\n 'builder.blocksPanel.insertTileAria': msg('Insert {title} — {variant}'),\n 'builder.blocksPanel.copyExactAria': msg('Copy exact configuration — {title} ({variant})'),\n 'builder.blocksPanel.copyExactConfiguration': msg('Copy exact configuration'),\n 'builder.blocksPanel.previewFailed': msg('Preview failed: {error}'),\n // EC-439: one tile per component; a 2+-fixture component gets a variants chip + flyout.\n 'builder.blocksPanel.insertComponentAria': msg('Insert {title}'),\n 'builder.blocksPanel.variantCount': msg('{count} variants', 'Compact chip on a component tile; count is always ≥ 2.'),\n 'builder.blocksPanel.variantsAria': msg('Show {count} variants of {title}'),\n 'builder.blocksPanel.variantsHeading': msg('Variants'),\n 'builder.blocksPanel.variantIssuesHint': msg('Some variants have validation issues.'),\n 'builder.pageTree.title': msg('Page tree'),\n 'builder.pageTree.addChild': msg('Add child'),\n 'builder.pageTree.moreActions': msg('More actions'),\n 'builder.pageTree.moveUp': msg('Move up'),\n 'builder.pageTree.moveDown': msg('Move down'),\n 'builder.clipboard.paste': msg('Paste'),\n 'builder.clipboard.cut': msg('Cut'),\n 'builder.clipboard.writeError': msg('Could not write to the clipboard: {detail}'),\n 'builder.clipboard.rootCannotBeCut': msg('The page root cannot be cut.'),\n 'builder.clipboard.copied': msg('Copied {label}'),\n 'builder.clipboard.cutNotice': msg('Cut {label}'),\n 'builder.clipboard.pastedInto': msg('{summary} · into {destination}'),\n 'builder.clipboard.notAllowed': msg(\n '{component} cannot be pasted into {destination} — the slot does not allow it.',\n '{component} is the pasted root’s short component name (e.g. “Hero”); {destination} is “Parent · slot” (e.g. “Section · body”).',\n ),\n // EC-554 — the composition FIELD's top-level `allow` refuses the pasted root.\n 'builder.clipboard.notAllowedByField': msg(\n '{component} cannot be pasted at the top level of \"{field}\" — the field does not allow it.',\n '{component} is the pasted root’s short component name (e.g. “Container”); {field} is the composition field’s label (e.g. “Canvas”).',\n ),\n 'builder.clipboard.issueComponent': msg('component'),\n // EC-584 — a refused placement: the builder reducer ran the one placement judge and\n // left the composition unchanged. Shown above the canvas (and for a refused paste).\n 'builder.placement.notAllowedByField': msg(\n '{component} is not allowed at the top level of \"{field}\" — the field does not allow it. Nothing changed.',\n '{component} is the component’s short name (e.g. “Hero”); {field} is the composition field’s label (e.g. “Canvas”).',\n ),\n 'builder.placement.notAllowedInSlot': msg(\n '{component} is not allowed in {destination} — the slot does not allow it. Nothing changed.',\n '{component} is the component’s short name; {destination} is “Parent · slot” (e.g. “Section · body”).',\n ),\n 'builder.placement.serverOnly': msg(\n '{component} renders on the server only and cannot be placed on the canvas. Nothing changed.',\n 'EC-191: a component declared clientRenderable: false — usable in page/layout code, not in an editor composition.',\n ),\n 'builder.placement.dismiss': msg('Dismiss'),\n // EC-494 — the engine-built clipboard failures (`core/clipboard`), which carry a\n // catalog ref because that subpath may not import this catalog, plus the studio-side\n // paste diff and its summary (translated in place — it already holds the locale).\n 'builder.clipboard.error.corruptJson': msg('Clipboard content is not valid JSON: {detail}', '{detail} is the JS parser’s own diagnostic — untranslated prose, kept verbatim.'),\n 'builder.clipboard.error.notEnvelope': msg('Clipboard content is not an Elytra fragment envelope.'),\n 'builder.clipboard.error.foreignFormat': msg('Clipboard content is not an Elytra fragment (expected format \"{expected}\").'),\n 'builder.clipboard.error.versionNewer': msg('Fragment version {version} is newer than this studio supports (version {supported}).'),\n 'builder.clipboard.error.versionUnsupported': msg('Fragment version {version} is not supported (this studio reads version {supported}).'),\n 'builder.clipboard.error.invalidPayload': msg('Clipboard fragment violates the fragment schema.'),\n 'builder.clipboard.error.nodeNotFound': msg('No node \"{nodeId}\" exists in the composition.'),\n 'builder.clipboard.error.fixtureNotFound': msg('Component \"{component}\" declares no fixture named \"{fixture}\".'),\n 'builder.clipboard.issue.missingComponent': msg('Component \"{componentId}\" is not registered in this project.'),\n 'builder.clipboard.summary.pasted': msg('Pasted'),\n 'builder.clipboard.summary.pastedWith': msg('Pasted — {parts}', '{parts} is the comma-joined list of the summary fragments below.'),\n 'builder.clipboard.summary.componentMissingOne': msg('{count} component missing'),\n 'builder.clipboard.summary.componentsMissing': msg('{count} components missing'),\n 'builder.reuse.makeReusable': msg('Make reusable'),\n 'builder.reuse.detachToCopy': msg('Detach to copy'),\n 'builder.reuse.defaultElementName': msg('Reusable element'),\n 'builder.reuse.madeReusablePublished': msg('Made “{name}” reusable and published it.'),\n 'builder.reuse.madeReusablePublishFailed': msg('Made “{name}” reusable, but publishing failed — publish it from its document.'),\n 'builder.reuse.madeReusableDraft': msg('Made “{name}” reusable (draft) — publish it to show on live pages.'),\n // EC-728 — Undo of \"Make reusable\" restored the block; the reusable document it created\n // stays, and the notice names it and why. {name} is the reusable's name (project data).\n 'builder.reuse.undoKeptPublished': msg('Undone — the reusable element “{name}” stays: it is published.'),\n 'builder.reuse.undoKeptEdited': msg('Undone — the reusable element “{name}” stays: it was edited since it was made.'),\n 'builder.reuse.undoKeptReferenced': msg('Undone — the reusable element “{name}” stays: it is embedded elsewhere.'),\n 'builder.reuse.undoKeptFailed': msg('Undone — the reusable element “{name}” stays: it could not be removed. Delete it from its collection if you do not need it.'),\n 'builder.reuse.noTargetToDetach': msg('This element has no target to detach.'),\n 'builder.reuse.noContentToDetach': msg('The referenced element has no content to detach.'),\n 'builder.reuse.detachedToCopy': msg('Detached to an editable copy — the live link is broken.'),\n 'builder.reuse.makeReusableDescription': msg('Moves the selected block into a new reusable element and embeds it here. The same element can then be embedded on any page. Publish it now to keep the section visible everywhere, or save it as a draft to keep editing first.'),\n 'builder.reuse.nameLabel': msg('Name'),\n 'builder.reuse.namePlaceholder': msg('Reservation CTA', 'Example placeholder in the reusable-name input.'),\n 'builder.reuse.saveDraft': msg('Save Draft'),\n 'builder.reuse.publish': msg('Publish'),\n 'builder.inspector.emptySelection': msg('Select a node in the tree or canvas to edit its properties.'),\n 'builder.inspector.title': msg('Inspector'),\n 'builder.inspector.unknownComponent': msg('unknown component'),\n 'builder.inspector.noManifest': msg('No manifest is registered for this component, so its props can’t be edited.'),\n 'builder.inspector.props': msg('Props'),\n 'builder.inspector.noEditableProps': msg('No editable props.'),\n 'builder.inspector.slots': msg('Slots'),\n 'builder.inspector.slotsHint': msg('Add or reorder slot children from the page tree.'),\n 'builder.inspector.propertiesPane': msg('Properties'),\n 'builder.inspector.invalidJson': msg('Invalid JSON'),\n 'builder.layout.title': msg('Layout'),\n 'builder.layout.direction': msg('Direction'),\n 'builder.layout.vertical': msg('Vertical'),\n 'builder.layout.horizontal': msg('Horizontal'),\n 'builder.layout.columns': msg('Columns'),\n 'builder.layout.columnCount.one': msg('{count} column'),\n 'builder.layout.columnCount.other': msg('{count} columns'),\n 'builder.layout.gap': msg('Gap'),\n 'builder.layout.alignment': msg('Alignment'),\n 'builder.layout.onPhones': msg('On phones'),\n 'builder.layout.stack': msg('Stack'),\n 'builder.layout.keepColumns': msg('Keep columns'),\n 'builder.layout.gapStep.hairline': msg('Hairline'),\n 'builder.layout.gapStep.extraSmall': msg('Extra small'),\n 'builder.layout.gapStep.small': msg('Small'),\n 'builder.layout.gapStep.medium': msg('Medium'),\n 'builder.layout.gapStep.large': msg('Large'),\n 'builder.layout.gapStep.extraLarge': msg('Extra large'),\n 'builder.layout.gapStep.huge': msg('Huge'),\n 'builder.layout.align.start': msg('Start'),\n 'builder.layout.align.center': msg('Center'),\n 'builder.layout.align.end': msg('End'),\n 'builder.layout.align.stretch': msg('Stretch'),\n 'builder.canvas.pagePreview': msg('Page preview'),\n 'builder.canvas.reusableUnpublishedTitle': msg('This reusable element isn’t published yet'),\n 'builder.canvas.reusableMissingTitle': msg('This reusable element is missing'),\n 'builder.canvas.reusableUnpublishedHint': msg('Publish it to show it here and on live pages — or open it from the Properties panel to keep editing.'),\n 'builder.canvas.reusableMissingHint': msg('Open the embed’s “Element” in the Properties panel to fix the reference.'),\n // EC-460: a listing block whose declared query is invalid against the schema\n // shows a visible in-canvas notice instead of a silent empty grid.\n 'builder.canvas.listingInvalidTitle': msg('This listing can’t run:'),\n 'builder.canvas.viewportPreviewAria': msg('{label} preview'),\n 'builder.canvas.viewportWidthTitle': msg('{label} width'),\n 'builder.canvas.breakpointsIssueLabel': msg('breakpoints'),\n 'builder.canvas.undo': msg('Undo'),\n 'builder.canvas.redo': msg('Redo'),\n 'builder.canvas.insert': msg('Insert'),\n // In-canvas \"+\" insertion affordances at block boundaries (EC-405).\n 'builder.canvas.insertBefore': msg('Insert block before'),\n 'builder.canvas.insertAfter': msg('Insert block after'),\n 'builder.canvas.insertInto': msg('Insert block inside'),\n // Canvas-theme classification notices (EC-414 AD-D) — dev-only, never blocking.\n 'builder.canvasTheme.legacyNotice': msg(\n 'This project’s canvas.css still bundles the studio design system with the site theme (the legacy merged shape). Point canvas.css at your site’s own full-Tailwind theme entry instead — see the theming guide (docs/theming.md). Everything keeps working meanwhile.',\n 'Dev-only migration pointer when the canvas stylesheet is the pre-EC-414 merged build.',\n ),\n 'builder.canvasTheme.stylesheetErrorNotice': msg(\n 'The canvas stylesheet failed to load — blocks render unstyled. Check the studio’s canvas.css build.',\n ),\n 'builder.canvasTheme.noThemeTokensNotice': msg(\n 'The canvas stylesheet defines no theme tokens. Make canvas.css import your site’s full-Tailwind theme entry (see docs/theming.md).',\n ),\n 'builder.canvasTheme.noStylesheetNotice': msg(\n 'No canvas stylesheet is configured — blocks render unstyled. The app must supply one via setCanvasStylesheetUrl (the create-elytra template wires this).',\n ),\n // Mixed-sequence honesty notice (EC-549 interim): a blocks value carrying\n // typography items the canvas cannot render yet must SAY so — count + pointer,\n // never silence (EC-500 D3's canvas contract, scope item 3).\n // EC-549 — a typography run of a canvas value (loose prose between blocks): selected,\n // edited in the inspector's rich-text editor, deleted like a block. It replaced the\n // count-only `builder.composition.preservedNotice`.\n 'builder.run.title': msg('Text', 'Inspector title for a selected run of loose prose (paragraphs, quotes, lists) between blocks.'),\n 'builder.run.items': msg('{count} item(s)', '{count} is the number of typography items (paragraphs, headings, quotes…) in the run.'),\n 'builder.run.hint': msg(\n 'Written text between the blocks — edit it here; it keeps its place between the blocks and publishes as it reads.',\n ),\n 'builder.run.delete': msg('Delete text'),\n 'builder.spacing.gapAfterChild': msg('Gap after child {index}'),\n 'builder.richText.toolbarLabel': msg('Text formatting'),\n 'builder.richText.linkPlaceholder': msg('https://… (empty removes)'),\n 'builder.richText.linkUrl': msg('Link URL'),\n 'builder.richText.set': msg('Set'),\n 'builder.richText.applyLink': msg('Apply link'),\n 'builder.richText.bold': msg('Bold'),\n 'builder.richText.italic': msg('Italic'),\n 'builder.richText.link': msg('Link'),\n 'builder.richText.removeLink': msg('Remove link'),\n 'builder.richText.unlink': msg('Unlink'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // CMS rich-text editor (EC-314) — the TipTap field editor\n // ─────────────────────────────────────────────────────────────────────────\n 'richText.placeholder': msg('Write something…'),\n // Shown in the lazy boundary while the TipTap editor chunk loads (EC-322).\n 'richText.loading': msg('Loading editor…'),\n 'richText.bold': msg('Bold'),\n 'richText.italic': msg('Italic'),\n 'richText.underline': msg('Underline'),\n 'richText.strike': msg('Strikethrough'),\n 'richText.code': msg('Inline code'),\n 'richText.paragraph': msg('Paragraph'),\n 'richText.heading': msg('Heading {level}'),\n 'richText.bulletList': msg('Bulleted list'),\n 'richText.orderedList': msg('Numbered list'),\n 'richText.blockquote': msg('Quote'),\n 'richText.codeBlock': msg('Code block'),\n 'richText.horizontalRule': msg('Divider'),\n 'richText.fontSize.label': msg('Font size'),\n 'richText.fontSize.small': msg('Small'),\n 'richText.fontSize.normal': msg('Normal'),\n 'richText.fontSize.large': msg('Large'),\n 'richText.fontSize.xlarge': msg('Extra large'),\n 'richText.undo': msg('Undo'),\n 'richText.redo': msg('Redo'),\n 'richText.link.add': msg('Link'),\n 'richText.link.remove': msg('Remove link'),\n 'richText.link.external': msg('External URL'),\n 'richText.link.externalPlaceholder': msg('https://…'),\n 'richText.link.document': msg('Link to a document'),\n 'richText.link.documentSearch': msg('Search documents…'),\n 'richText.link.documentEmpty': msg('No documents match.'),\n 'richText.link.apply': msg('Apply'),\n 'richText.image.add': msg('Image'),\n 'richText.embed.add': msg('Embed component'),\n 'richText.embed.badge': msg('Embed'),\n 'richText.embed.unknown': msg('Unknown component'),\n 'richText.embed.empty': msg('No components available to embed.'),\n 'richText.embed.editProps': msg('Edit settings'),\n 'richText.embed.editTitle': msg('Edit {name}'),\n 'richText.embed.noProps': msg('This component has no editable settings.'),\n 'richText.embed.blocksNote': msg('Nested content areas are edited on the canvas, not here.'),\n 'richText.carrier.unknown': msg('Unknown content block:'),\n 'richText.slash.text': msg('Text'),\n 'richText.slash.empty': msg('No matching blocks'),\n 'richText.slash.componentsGroup': msg('Components'),\n // EC-388/EC-431 — expand the editing surface (the centered stage for long prose).\n 'richText.expand.expand': msg('Expand editor'),\n 'richText.expand.collapse': msg('Collapse editor'),\n 'richText.expand.title': msg('Rich text'),\n // EC-436 — the stage title when the field label is in reach; {field} is the\n // field's resolved display label. Parameterized so translations control word order.\n 'richText.expand.titleWithField': msg(\n '{field} — Rich text',\n 'Title of the expanded rich-text editor; {field} is the resolved field label.',\n ),\n 'richText.expand.editingInSheet': msg('Editing in the expanded view — click to return'),\n\n // ─────────────────────────────────────────────────────────────────────────\n // EC-199 — AI assistant chat panel + creation flow\n // ─────────────────────────────────────────────────────────────────────────\n 'ai.panel.title': msg('Assistant'),\n 'ai.panel.toggle': msg('Toggle the AI assistant'),\n 'ai.panel.close': msg('Close the assistant'),\n 'ai.panel.loading': msg('Loading the assistant…'),\n 'ai.panel.working': msg('Working…'),\n 'ai.panel.placeholder': msg('Ask the assistant to create content…'),\n 'ai.panel.send': msg('Send'),\n 'ai.panel.emptyTitle': msg('Create content with AI'),\n 'ai.panel.emptyHint': msg(\n 'Describe what you want to create — for example, “Write a blog post about our new opening hours.” The assistant drafts it for you to review.',\n ),\n 'ai.panel.unavailable': msg('The assistant is not available in this project.'),\n // EC-334/EC-380 — new-conversation affordance\n 'ai.panel.newConversation': msg('New conversation'),\n 'ai.step.search': msg('Looked up {collection} — {count} found', 'Tool status line. {count} is a number.'),\n 'ai.step.searchRunning': msg('Searching {collection}…'),\n 'ai.step.listAssets': msg('Browsed assets — {count} found'),\n 'ai.step.listAssetsRunning': msg('Browsing assets…'),\n 'ai.step.getDocument': msg('Read the document'),\n 'ai.step.getDocumentRunning': msg('Reading the document…'),\n 'ai.step.drafting': msg('Drafting the {collection}…'),\n 'ai.step.translating': msg('Translating {completed} of {total}…', '{completed}/{total} are numbers.'),\n 'ai.step.translatingDoc': msg('Translating the document…'),\n 'ai.step.translateNothing': msg('Nothing to translate — every language is already filled.'),\n // EC-378 — the updateFields edit flow\n 'ai.step.updatingDoc': msg('Proposing changes to the document…'),\n 'ai.step.updateNoChange': msg('No changes needed — the values already match.'),\n 'ai.proposal.title': msg('Proposed {collection}'),\n 'ai.proposal.reviewHint': msg('Review the draft, then apply it or discard it.'),\n 'ai.proposal.apply': msg('Apply as draft'),\n 'ai.proposal.discard': msg('Discard'),\n 'ai.proposal.applied': msg('Applied as draft'),\n 'ai.proposal.discarded': msg('Discarded'),\n 'ai.proposal.discardedNote': msg('This proposal was discarded.'),\n 'ai.proposal.open': msg('Open document'),\n 'ai.proposal.unavailable': msg('This proposal can no longer be shown.'),\n 'ai.proposal.diffBefore': msg('Empty'),\n 'ai.proposal.diffAfter': msg('Proposed'),\n 'ai.proposal.diffUnified': msg('Proposed content'),\n // EC-382 — the expandable review surface (a roomy full-height sheet).\n 'ai.proposal.expandReview': msg('Expand review'),\n 'ai.proposal.collapseReview': msg('Close review'),\n 'ai.error.route': msg('The assistant is unavailable right now. Please try again.'),\n 'ai.error.routeNotMounted': msg(\n 'No assistant route is mounted at {endpoint} — the request was answered by the page instead of the AI route. Check the host’s route mount; on a dev server the studio build output may be missing.',\n 'EC-514: the AI route answered with HTML (or another non-route shape) at the configured path — a developer-facing deploy/dev defect, not a provider outage. {endpoint} is the route path, e.g. /api/ai.',\n ),\n 'ai.error.generic': msg('Something went wrong. Please try again.'),\n 'ai.error.applyFailed': msg('The draft could not be applied.'),\n 'ai.error.applyInvalid': msg(\n 'The proposal no longer fits the current document: {issues}',\n 'Shown when a re-validation at apply time finds errors the apply would introduce (the document changed since the proposal was built). {issues} is a short list of issue messages.',\n ),\n 'ai.error.stepCap': msg(\n 'The assistant stopped after {max} tool steps. Send a follow-up message to continue.',\n 'EC-334 per-turn step cap. {max} is a number.',\n ),\n // EC-332 — full-document translation (header action + chat tool)\n 'ai.translate.action': msg('Translate document'),\n 'ai.translate.tooltip': msg('Fill empty translations with AI'),\n 'ai.translate.dialogTitle': msg('Translate document'),\n 'ai.translate.dialogDescription': msg(\n 'Fill empty locale values from {base} using AI. Existing translations are never overwritten.',\n '{base} is a language name, e.g. English.',\n ),\n 'ai.translate.targetsLabel': msg('Target languages'),\n 'ai.translate.scopeLabel': msg('What to translate'),\n 'ai.translate.fillMissing': msg('Fill missing translations only'),\n 'ai.translate.retranslateAll': msg('Re-translate everything'),\n 'ai.translate.retranslateSoon': msg('Coming soon'),\n 'ai.translate.confirm': msg('Translate'),\n 'ai.translate.preparing': msg('Preparing translation…'),\n 'ai.translate.progress': msg('Translating {completed} of {total}…', '{completed}/{total} are numbers.'),\n 'ai.translate.applying': msg('Saving translations…'),\n 'ai.translate.nothing': msg('Everything is already translated — there is nothing to fill.'),\n 'ai.translate.applied': msg('Filled {count} translations across {locales} languages.', '{count}/{locales} are numbers.'),\n 'ai.translate.cancelled': msg('Translation cancelled — partial results were kept on the draft.'),\n 'ai.translate.failed': msg('Translation failed. Please try again.'),\n 'ai.translate.close': msg('Close'),\n 'ai.translate.proposalTitle': msg('Translation of {collection}'),\n 'ai.translate.diffBefore': msg('Current'),\n 'ai.translate.diffAfter': msg('Translated'),\n // EC-593 — what a translation run could not translate is reported, never skipped silently.\n 'ai.translate.skippedTitle': msg('Not translated ({count})', '{count} is a number.'),\n 'ai.translate.skipped.unreadable': msg('its stored value could not be read'),\n 'ai.translate.skipped.notReturned': msg('the assistant returned no text for it'),\n 'ai.translate.skipped.structureChanged': msg(\n 'the translation lost formatting, links or embedded items — the original was kept',\n ),\n // EC-738 — a bucket whose read-only (or AI-excluded) content is shaped differently from the source's.\n 'ai.translate.skipped.locked': msg(\n 'it holds content that cannot be changed here, arranged differently from the source — left as it is',\n ),\n // EC-378 — the update (edit-existing) proposal\n 'ai.update.proposalTitle': msg('Changes to {collection}'),\n 'ai.update.diffBefore': msg('Current'),\n 'ai.update.diffAfter': msg('Proposed'),\n // EC-715 — what an AI create left empty, listed on its proposal card\n 'ai.create.unfilledTitle': msg('Left empty ({count})', '{count} is a number.'),\n 'ai.create.unfilled.empty': msg('the draft gave it no value'),\n 'ai.create.unfilled.noCandidates': msg('nothing the assistant searched for fits it'),\n 'ai.create.unfilled.dropped': msg('an id the assistant had not searched for was removed'),\n // EC-591 — canvas notices for roles nobody in the project's component list fills.\n // A role names what the canvas needs from the list; a missing one switches its\n // gesture off, and these say so instead of leaving a dead affordance.\n 'builder.roles.noStack': msg(\n 'This canvas needs a component that fills the \"layout.stack\" role — the field’s blocks are laid out inside it — and this project’s components have none. List one in your config’s components (for example Stack from @elytracms/components).',\n '\"layout.stack\" is a role identifier from the component manifest — keep it verbatim.',\n ),\n 'builder.roles.noGrid': msg(\n 'No component fills the \"layout.grid\" role, so dropping a block beside another (side-by-side columns) is off.',\n '\"layout.grid\" is a role identifier from the component manifest — keep it verbatim.',\n ),\n 'builder.roles.noText': msg(\n 'No component fills the \"text\" role, so the seeded layout presets (Stack, Grid) are off.',\n '\"text\" is a role identifier from the component manifest — keep it verbatim.',\n ),\n // EC-591 / ratified 2f — an absent prop shows empty; the manifest default is a hint.\n 'builder.inspector.unset': msg('Not set', 'An inspector prop with no value — the component uses its own default.'),\n 'builder.inspector.unsetWithHint': msg(\n 'Not set (default: {hint})',\n '{hint} is the manifest default shown as a suggestion, e.g. \"vertical\" or \"2\".',\n ),\n // EC-586 / EC-581 (wave-0092, zone A) — canonical values and the per-FieldType definition\n 'cms.issueMessage.nonCanonicalValue': msg('Field \"{field}\" is stored in a non-canonical form for a \"{type}\" field — it was written past the write path that stores one form per field type. Save the field again through the editor or an operation to store the canonical form.'),\n 'cms.issueMessage.propsNotJudged': msg('The component props in field \"{field}\" were not judged: the page was resolved without a component registry, so they are delivered as stored and their issues are not reported.'),\n 'cms.issueMessage.assetHoldsUrl': msg('Asset field \"{field}\" holds a URL — an asset value is a library asset, never a URL. Upload the image to the library and pick it, or put an external image’s address in the component’s URL prop (the Image’s “Image URL”).'),\n // EC-733 — the slug role holds what the slug rule writes\n 'cms.issueMessage.slugNotSegment': msg('Slug field \"{field}\" holds \"{value}\", which is not a URL segment — the slug rule writes \"{slug}\" for it. The live URL is built from the stored slug as written; store the slug the rule writes.'),\n // EC-584 — the AllowList parse (config load / registration).\n 'cms.issueMessage.emptyAllow': msg('Field \"{field}\" declares an empty \"allow\" — a list permits exactly the ids it names, so an empty one permits nothing. Omit \"allow\" for the type\\'s default vocabulary, or list the component ids.'),\n 'cms.issueMessage.unknownAllowComponent': msg('Field \"{field}\" allows \"{component}\", which is not a component of this project — check the id, or remove it from \"allow\".', '{component} is the component id as declared in the field\\'s allow list.'),\n 'cms.issueMessage.blocksNotTopLevel': msg('Field \"{field}\" is a \"blocks\" field inside an object — a blocks field is top-level only (a canvas inside a repeater breaks the form, the validator positions and the delivery type). Declare another top-level blocks field, or give a component a blocks prop (a slot).'),\n 'cms.issueMessage.placementKeyReserved': msg('Asset field \"{asset}\" declares the per-use sub-field \"{field}\", a name the asset itself owns — it would never reach a component (the asset\\'s own \"{field}\" wins). Rename it; an image\\'s alt, credit or AI fact belongs on the asset collection.'),\n 'cms.issueMessage.placementNotScalar': msg('Asset field \"{asset}\" declares the per-use sub-field \"{field}\" of type \"{type}\" — a placement holds data about this use of the image (a caption, a layout), never a reference or rich text.'),\n 'cms.issueMessage.sourceNotOnAssetCollection': msg('Field \"{field}\" declares source \"{source}\" — an embedded-metadata source fills a top-level field of the asset collection only.'),\n 'cms.issueMessage.sourceTypeMismatch': msg('Field \"{field}\" declares source \"{source}\", which cannot fill a \"{type}\" field (every source fills text; iptc:digitalSourceType also a boolean).'),\n 'cms.issueMessage.uniqueNotTopLevel': msg('Sub-field \"{field}\" declares \"unique\" — uniqueness is judged across a collection\\'s documents, so it applies to top-level fields only.'),\n 'cms.issueMessage.localizedOnProp': msg('Component prop \"{field}\" declares \"localized\" — a localized value is stored per locale under the document, so only a top-level document field can be localized (localize the field that holds the composition).'),\n 'cms.issueMessage.localizedOnSubField': msg('Sub-field \"{field}\" declares \"localized\" — a localized value is stored per locale under the document, so only a top-level field can be localized (localize the field that holds it).'),\n 'cms.issueMessage.ruleNotApplicable': msg('Field \"{field}\" declares \"{rule}\", which a \"{type}\" field cannot keep.'),\n 'cms.issueMessage.ruleNotApplicableUnlessMultiple': msg('Field \"{field}\" declares \"{rule}\", which a single \"{type}\" field cannot keep — on a \"multiple\" field it counts items.'),\n 'cms.issueMessage.boundNotAnInstant': msg('Field \"{field}\" declares {rule} {declared} on a date field, which is not a date — use an ISO 8601 string such as \"1900-01-01\".'),\n 'cms.issueMessage.boundNotANumber': msg('Field \"{field}\" declares {rule} {declared} as a string — the bounds of a \"{type}\" field are numbers (only a date field takes an ISO date as a bound).'),\n 'cms.issueMessage.invalidPattern': msg('Field \"{field}\" declares the pattern \"{pattern}\", which is not a valid regular expression.'),\n 'cms.issueMessage.defaultNotOfType': msg('Field \"{field}\" declares a default of {value}, which is not a \"{type}\" value.'),\n 'cms.issueDetail.fewerPlainTextCharacters': msg('has fewer than {min} plain-text characters'),\n 'cms.issueDetail.morePlainTextCharacters': msg('has more than {max} plain-text characters'),\n 'content.queryError.operatorNotForType': msg('Operator \"{operator}\" does not apply to \"{field}\", a \"{type}\" field.'),\n 'content.queryError.operandType': msg('Operator \"{operator}\" on \"{field}\" got {value}, which is not a {operand} — \"{field}\" is a \"{type}\" field.'),\n} satisfies SourceCatalog\n\n/**\n * The engine's built-in English source catalog (see the module docblock). Typed as\n * {@link SourceCatalog} (the open index signature) so runtime lookups by arbitrary\n * string key stay valid; the literal key set lives in {@link MessageKey}.\n */\nexport const EN_MESSAGES: SourceCatalog = MESSAGES\n\n/** Every key in the EN source catalog (EC-398) — the literal union derived from the object above. */\nexport type MessageKey = keyof typeof MESSAGES\n\n/**\n * A translation catalog **typed against the EN key set** (EC-398): partial (any key\n * omitted falls back to the English source at runtime), and an unknown or stale key\n * fails typecheck. Engine-shipped locale catalogs (`@elytracms/studio/locales/de`)\n * and consumer overrides (`{ ...deMessages, 'some.key': '…' }`) are authored against\n * this; the accepting seam (`StudioI18nConfig.locales`) stays the plain\n * `MessageCatalog` — the type is for authoring, not a runtime gate.\n */\nexport type TranslationCatalog = Partial<Record<MessageKey, string>>\n"]}