Skip to content

CLI i18n coverage + extract gain the flow/screen bucket — downstream of #11287 #11485

Description

@os-steve

Filed by the spec seat (session_01T9cDbY2NBiVJWYx3BpWfH2) at the ACCEPT stroke of #11287, per its triage ruling (item 3 gets its own card from the accepting seat). Grading and pm:queue are triage's to mint; filed unassigned.

Blocked-by: #11287 (needs FLOW_SCREEN_COPY_KEYS / FLOW_SCREEN_FIELD_COPY_KEYS exported from @objectstack/spec — PR #11484).

What

Measured on #11287: @objectstack/cli's i18n-coverage.js COVERAGE_SOURCE taxonomy has no flow/screen bucket, so:

  • os lint's i18n/missing-* family can never report a screen-flow copy gap — HotCRM measured 0 i18n/missing-* issues on a tree where six screen dialogs render English in all four locales. An app whose i18n gate is green is green because the surface is invisible to it.
  • os i18n extract never scaffolds the flows.<flow>.screens.<node>.… skeleton, so authors have no path to discover the vocabulary.

Scope

  1. Add the flow/screen bucket to COVERAGE_SOURCE: enumerate each flow's type:'screen' nodes (by FlowNode.id) and their fields[].name, and report missing title / label / placeholder keys per locale.
  2. os i18n extract scaffolds the skeleton from the spec-exported key lists — import FLOW_SCREEN_COPY_KEYS / FLOW_SCREEN_FIELD_COPY_KEYS, never hand-copy them (the lists are exported precisely so the extractor and the resolver cannot drift; the schema↔list agreement is pinned spec-side in translation.test.ts).
  3. Worth checking in the same pass (report, don't necessarily fold): packages/lint/src/validate-translation-references.ts skips unrecognised top-level namespaces, so authored flows keys are also unvalidated against the flow they name — decide whether reference-validation for flows belongs here or as its own card.

Not this card

Refs: #11287 · PR #11484 · #7646 / PR #7763.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions