Skip to content

Extract the design system to @robomous/ui-core - #818

Merged
YaelAnaya merged 2 commits into
mainfrom
extract-ui-core
Sep 1, 2026
Merged

Extract the design system to @robomous/ui-core#818
YaelAnaya merged 2 commits into
mainfrom
extract-ui-core

Conversation

@JArmandoAnaya

Copy link
Copy Markdown
Contributor

What moved

The design system — 21 shadcn Nova primitives with their snapshots, the lib/ helpers (cn, inlineLink, menuSurface, twoLineTrigger, progressAria), statusTone, the foundation tokens/stylesheet (shadcn preset + brand), the shadcn tooling, and the design-system gates — now lives in Robomous/ui-core, published as @robomous/ui-core@0.1.0.

Re-export strategy: public API unchanged

@visionset/ui-core re-exports the whole package surface (export * from "@robomous/ui-core"), so every previously importable name still imports from the same place. LIGHT_THEME/DARK_THEME are re-exported as the merged view (foundation + extensions), so callers reading LIGHT_THEME.stage keep working unchanged.

Extension layering

VisionSet keeps what is VisionSet's: stage, the three origin-* marks, and the shell's four layout tokens, declared in the extension styles.css (which imports the foundation stylesheet first) and mirrored by the extension tokens.ts — shadcn's own extension convention, gated.

Gate split

  • Travelled with the primitives (run in Robomous/ui-core): canonical snapshot gate, variant/size rosters, helper self-tests.
  • Stayed here as consumer gates over @robomous/ui-core/gates: frontend/ui-core/src/tokens.test.ts (extension agreement, no foundation shadowing, merged view lost nothing), tests/scripts/design_system.test.mjs (vocabulary discipline over our own sources), and a thinned tests/scripts/design_tokens.test.mjs (coloured classes, brand sites, retired declarations, icon set, tailwind-config refusal).

Cool-down exclusion

@robomous/ui-core is added to minimumReleaseAgeExclude: it is first-party, released from our own CI minutes before it is consumed here — the supply-chain cool-down guards third-party releases.

Verification performed

  • check.sh --fast PASSED (python, frontend, generated) against the published package.
  • Full vitest: 1071 annotator + 1335 ui-core + 11 app; script gates 122/122.
  • Browser suites: real-server cycle passed; chromium e2e 275/275.
  • Pixel identity, machine-verified: darwin visual baselines generated from main's rendering, then the branch's visual suite run against them — 10/10 pass (Projects, Schema, Models, open menu, annotator; both themes).
  • Violation smokes fired in both repos (canonical + colour gates in ui-core; status-palette consumer gate here), then reverted.
  • Packaging validated by tarball dry-run before publishing; it caught and fixed two packaging bugs in the package repo (ESM .js extensions in dist, missing type declarations for ./gates).

@YaelAnaya
YaelAnaya merged commit 4ad08fe into main Sep 1, 2026
15 checks passed
@YaelAnaya
YaelAnaya deleted the extract-ui-core branch September 1, 2026 21:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants