feat(theme): canonical theme/namespace lists + ship Summer Night (T-371, T-478)
The bundled-theme list and the Tier-0 i18n namespace list were each hand-maintained in 3+ places that had drifted: the testmode harness loaded 8 themes (catppuccin silently unvalidated) while the app and contrast gate loaded 10, and the i18n gate checked 4 of the shipped namespaces. Export one canonical const each — kBundledThemePaths and kTier0Namespaces — and have the app, the testmode harness, and the a11y gates iterate them. Drift-proof meta-assertions: - contrast gate fails if any theme YAML on disk is absent from kBundledThemePaths (so a theme can't sit unvalidated). - i18n gate derives its subjects from assets/i18n/en_us/ at test time and asserts en/nl key parity for every shipped catalog (26, was 4), plus that every kTier0Namespaces entry has a shipped catalog. Surfaced summer-night.yaml: a legacy-ported palette on disk, unbundled and never contrast-checked. Per the maintainer's call, ship it: flesh the palette to full token + syntax coverage (honouring the v1.2 colours, clide derivation pattern for the new keys) and add a structurally identical summer-night-hc sibling that clears the strict extended gate. Both pass. No licenses.yaml change: summer-night is clide's own (ported from legacy clide v1.2 under legacy/, MIT); the only third-party palette, Catppuccin, is already acknowledged; no fonts added. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
/// Canonical list of Tier-0 i18n namespaces preloaded at boot — the single
|
||||
/// source of truth (T-371).
|
||||
///
|
||||
/// `lib/main.dart` preloads exactly these (framework chrome under `core`, plus
|
||||
/// the catalogs of the built-ins that activate at Tier 0); the i18n coverage
|
||||
/// gate validates every one of them. The other ~17 catalogs that ship belong
|
||||
/// to built-ins that activate lazily in later tiers — their catalogs load on
|
||||
/// activation, and the gate validates them through the assets-dir sweep rather
|
||||
/// than this preload list.
|
||||
library;
|
||||
|
||||
/// Namespaces whose catalogs are loaded at boot, before any extension that
|
||||
/// owns them has activated. `core` holds framework chrome that lives outside
|
||||
/// any extension (lib/widgets, lib/kernel, shared reader chrome — T-469).
|
||||
const List<String> kTier0Namespaces = [
|
||||
'core',
|
||||
'builtin.default-layout',
|
||||
'builtin.welcome',
|
||||
'builtin.ipc-status',
|
||||
'builtin.theme-picker',
|
||||
'builtin.terminal',
|
||||
'builtin.files',
|
||||
'builtin.claude',
|
||||
'builtin.editor',
|
||||
];
|
||||
Reference in New Issue
Block a user