mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-02 23:01:35 +00:00
2.8 KiB
2.8 KiB
Control UI Guide
This directory owns Control UI-specific guidance that should not live in the repo root.
i18n Rules
- Foreign-language locale bundles in
ui/src/i18n/locales/*.tsare generated output. - Do not hand-edit non-English locale bundles or
ui/src/i18n/.i18n/*unless a targeted generated-output fix is explicitly requested. - The source of truth is
ui/src/i18n/locales/en.tsplus the generator/runtime wiring in:scripts/control-ui-i18n.tsui/src/i18n/lib/types.tsui/src/i18n/lib/registry.ts
- Contributor flow: update English strings and locale wiring, run keyless
pnpm ui:i18n:baseline, and commit source files plus any changed raw-copy baseline. Do not include foreign bundles, catalog fallback metadata, locale metadata, or translation memory in a source PR; CI rejects mixed source/generated diffs outside canonicalrelease/YYYY.M.PATCHbranches. pnpm ui:i18n:verifyis deterministic and keyless.pnpm lintand the changed-check UI lane run it. It validates English catalog shape, runtime locale wiring, and raw-copy baseline drift; foreign catalog parity belongs to the post-merge bot and strict generated-output gate.- Translation flow: the serialized
control-ui-locale-refreshworkflow translates after merge, opens an isolated generated PR, and enables auto-merge for its exact head.pnpm ui:i18n:syncremains the authenticated maintainer/release repair path; do not run it without provider auth when new keys exist. pnpm release:prepruns the locale sync before release freeze, thenpnpm ui:i18n:checkremains the strict generated-output/release gate with zero fallbacks.- Prioritization report:
pnpm ui:i18n:report [--surface <name>] [--locale <locale>] [--top <n>]shows current hardcoded-copy focus areas and locale fallback metadata. It is not a drift gate; usepnpm ui:i18n:checkfor that. - If locale outputs drift, let the workflow reconcile them or run release prep. Do not manually translate, merge, or hand-maintain generated locale files.
CSS / Template Linting
pnpm lint:ui:stylesruns stylelint overui/srcstylesheets and Litcsstemplates (postcss-lit).pnpm lintincludes it; error-class rules only, oxfmt owns formatting. Config:config/stylelint.config.mjs.- Icons: shared 24x24 Lucide icons go through
strokeIcon()inui/src/components/icons-tools.tsso stroke presentation attributes stay inline and render inside shadow roots. Icon bodies aresvg\`fragments, neverhtml``` (wrong namespace renders nothing). pnpm lint:ui:litis an opt-in lit-analyzer diagnostic for template bindings (slow, ~9 min; known baseline of pre-existing findings). It is not a CI gate.
Scope
- Keep UI-specific rules here.
- Leave repo-global architecture, verification, and git workflow rules in the root
AGENTS.md.