feat: release design system engine, studio and component contracts

This commit is contained in:
Clintchiz committed 2026-10-19 13:09:03 +05:30
1 parent ff1065fb27
commit 3943b946d6
693 files changed
+175546 -3894

No files matched your search

File diff suppressed because it is too large. Load diff
+112
View File
@@ -0,0 +1,112 @@
# Design-system source coverage
Regenerate with `node scripts/audit-design-system.mjs`. This inventories the working tree, including uncommitted components. It does not certify visual, accessibility or runtime behavior.
Sources: **104**; reference entries: **104**; catalog entries: **104**. Versioned contracts cover all 104 components. Provider, native and content-owned regions retain explicit styling limits in the JSON report. Status reports hook/recipe support, not accessibility certification. Token counts are source-local references, not inherited/global coverage. Part hooks refer specifically to the versioned `data-wrn-part` convention.
| Component | Category | Tokens | Local style | Part hooks | Metadata | Status |
| ---------------------- | -------------- | -----: | ----------- | ---------- | -------- | ---------------- |
| Accordion | base | 24 | yes | yes | matched | recipe-supported |
| AdvancedSelect | advanced-forms | 18 | yes | yes | matched | recipe-supported |
| AnnouncementBar | marketing | 30 | yes | yes | matched | recipe-supported |
| AuthForm | core | 12 | yes | yes | matched | recipe-supported |
| AuthSplitLayout | core | 16 | yes | yes | matched | recipe-supported |
| AvatarGroup | base | 30 | yes | yes | matched | recipe-supported |
| BackToTop | navigation | 28 | yes | yes | matched | recipe-supported |
| Blockquote | base | 20 | yes | yes | matched | recipe-supported |
| Breadcrumb | navigation | 34 | yes | yes | matched | recipe-supported |
| ButtonGroup | base | 18 | yes | yes | matched | recipe-supported |
| CTASection | marketing | 39 | yes | yes | matched | recipe-supported |
| Card | base | 35 | yes | yes | matched | recipe-supported |
| Carousel | base | 27 | yes | yes | matched | recipe-supported |
| Chart | integrations | 11 | yes | yes | matched | recipe-supported |
| ChatBubble | base | 22 | yes | yes | matched | recipe-supported |
| Clipboard | integrations | 18 | yes | yes | matched | recipe-supported |
| Collapse | base | 25 | yes | yes | matched | recipe-supported |
| ColorPicker | forms | 37 | yes | yes | matched | recipe-supported |
| Columns | layout | 0 | yes | yes | matched | recipe-supported |
| ComboBox | advanced-forms | 13 | yes | yes | matched | recipe-supported |
| Confetti | integrations | 8 | yes | yes | matched | recipe-supported |
| Container | layout | 0 | yes | yes | matched | recipe-supported |
| ContextMenu | overlays | 29 | yes | yes | matched | recipe-supported |
| CustomScrollbar | layout | 6 | yes | yes | matched | recipe-supported |
| DataMap | integrations | 7 | yes | yes | matched | recipe-supported |
| DataTable | tables | 27 | yes | yes | matched | recipe-supported |
| DatePicker | base | 36 | yes | yes | matched | recipe-supported |
| DeviceFrame | base | 21 | yes | yes | matched | recipe-supported |
| Divider | layout | 7 | yes | yes | matched | recipe-supported |
| DragAndDrop | integrations | 5 | yes | yes | matched | recipe-supported |
| Drawer | overlays | 24 | yes | yes | matched | recipe-supported |
| DrawflowCanvas | core | 0 | yes | yes | matched | recipe-supported |
| Dropdown | overlays | 31 | yes | yes | matched | recipe-supported |
| FeatureCard | marketing | 36 | yes | yes | matched | recipe-supported |
| FeatureGrid | layout | 18 | yes | yes | matched | recipe-supported |
| FeatureIconCard | marketing | 19 | yes | yes | matched | recipe-supported |
| FileInput | forms | 37 | yes | yes | matched | recipe-supported |
| FileUploadProgress | base | 39 | yes | yes | matched | recipe-supported |
| FlowCanvas | core | 7 | yes | yes | matched | recipe-supported |
| Footer | layout | 8 | yes | yes | matched | recipe-supported |
| Grid | layout | 0 | yes | yes | matched | recipe-supported |
| Hero | marketing | 33 | yes | yes | matched | recipe-supported |
| HeroActions | marketing | 0 | yes | yes | matched | recipe-supported |
| Image | layout | 3 | yes | yes | matched | recipe-supported |
| InputGroup | forms | 35 | yes | yes | matched | recipe-supported |
| InputNumber | advanced-forms | 19 | yes | yes | matched | recipe-supported |
| Kbd | layout | 8 | yes | yes | matched | recipe-supported |
| LayoutSplitter | layout | 15 | yes | yes | matched | recipe-supported |
| LegendIndicator | base | 18 | yes | yes | matched | recipe-supported |
| Link | layout | 11 | yes | yes | matched | recipe-supported |
| List | base | 15 | yes | yes | matched | recipe-supported |
| ListGroup | base | 7 | yes | yes | matched | recipe-supported |
| Map | integrations | 15 | yes | yes | matched | recipe-supported |
| MarketingSectionHeader | marketing | 0 | yes | yes | matched | recipe-supported |
| Marquee | base | 13 | yes | yes | matched | recipe-supported |
| MegaMenu | navigation | 13 | yes | yes | matched | recipe-supported |
| MetricCard | data | 52 | yes | yes | matched | recipe-supported |
| MetricGrid | data | 10 | yes | yes | matched | recipe-supported |
| Modal | overlays | 32 | yes | yes | matched | recipe-supported |
| Nav | navigation | 18 | yes | yes | matched | recipe-supported |
| Navbar | navigation | 30 | yes | yes | matched | recipe-supported |
| PageHeader | marketing | 31 | yes | yes | matched | recipe-supported |
| Pagination | navigation | 16 | yes | yes | matched | recipe-supported |
| PinInput | advanced-forms | 22 | yes | yes | matched | recipe-supported |
| Popover | overlays | 33 | yes | yes | matched | recipe-supported |
| PortalDashboard | core | 16 | yes | yes | matched | recipe-supported |
| PreferenceSwitcher | core | 18 | yes | yes | matched | recipe-supported |
| PublicPageShell | layout | 4 | yes | yes | matched | recipe-supported |
| RangeSlider | forms | 37 | yes | yes | matched | recipe-supported |
| Rating | base | 8 | yes | yes | matched | recipe-supported |
| Scrollspy | navigation | 12 | yes | yes | matched | recipe-supported |
| SearchBox | forms | 16 | yes | yes | matched | recipe-supported |
| Section | layout | 21 | yes | yes | matched | recipe-supported |
| SectionHeader | layout | 8 | yes | yes | matched | recipe-supported |
| Sidebar | navigation | 20 | yes | yes | matched | recipe-supported |
| SplitHero | marketing | 40 | yes | yes | matched | recipe-supported |
| StatsBar | data | 29 | yes | yes | matched | recipe-supported |
| Stepper | navigation | 19 | yes | yes | matched | recipe-supported |
| StrongPassword | advanced-forms | 36 | yes | yes | matched | recipe-supported |
| StyledIcon | base | 4 | yes | yes | matched | recipe-supported |
| Tabs | navigation | 14 | yes | yes | matched | recipe-supported |
| TextLink | marketing | 14 | yes | yes | matched | recipe-supported |
| TimePicker | forms | 36 | yes | yes | matched | recipe-supported |
| Timeline | base | 23 | yes | yes | matched | recipe-supported |
| Toaster | core | 18 | yes | yes | matched | recipe-supported |
| ToggleCount | advanced-forms | 26 | yes | yes | matched | recipe-supported |
| TogglePassword | advanced-forms | 37 | yes | yes | matched | recipe-supported |
| TreeView | base | 13 | yes | yes | matched | recipe-supported |
| Typography | layout | 8 | yes | yes | matched | recipe-supported |
| WysiwygEditor | integrations | 6 | yes | yes | matched | recipe-supported |
| Alert | base | 27 | yes | yes | matched | recipe-supported |
| Avatar | base | 20 | yes | yes | matched | recipe-supported |
| Badge | base | 29 | yes | yes | matched | recipe-supported |
| Button | base | 26 | yes | yes | matched | recipe-supported |
| Checkbox | forms | 36 | yes | yes | matched | recipe-supported |
| Input | forms | 38 | yes | yes | matched | recipe-supported |
| Progress | base | 15 | yes | yes | matched | recipe-supported |
| Radio | forms | 36 | yes | yes | matched | recipe-supported |
| Select | forms | 37 | yes | yes | matched | recipe-supported |
| Skeleton | base | 7 | yes | yes | matched | recipe-supported |
| Spinner | base | 8 | yes | yes | matched | recipe-supported |
| Switch | forms | 36 | yes | yes | matched | recipe-supported |
| Textarea | forms | 35 | yes | yes | matched | recipe-supported |
| Tooltip | overlays | 22 | yes | yes | matched | recipe-supported |
@@ -0,0 +1,58 @@
# Component design contract proposal — version 1
Date: 2026-10-19. Historical Phase 0 specification. Phase 2 implements the initial versioned core contracts; see its implementation report and the current [coverage](../design-system/component-coverage.md). Legacy selector observations below remain distinct from the published version-1 owner/part hooks.
## Contract envelope
Each descriptor must contain `contractVersion`, canonical `component`, `source`, `family`, `support`, `parts`, `axes`, `states`, `slots`, `tokens`, `constraints`, `fixtures` and `compatibility`. Optional fields: provider-owned regions, structural dependencies, deprecated mappings and replacement guidance. Use canonical declaration names; mount aliases and filename casing are separate metadata.
`support` is one of: `legacy-uncontracted`, `token-compatible`, `recipe-supported`, `custom-owned`, `provider-owned`, `unsupported`. Promote only after evidence exists. A component can contain provider-owned subregions while its wrapper is recipe-supported. Record those regions explicitly rather than changing the meaning of the overall status.
## Parts and selectors
Proposed hooks: `data-wrn-component="Button"` on the owner and `data-wrn-part="control"` on a styleable element. Repeated components must be scoped by their nearest owner so parent recipes cannot leak into nested components. Preserve existing classes; hooks are additive. Wrapper and interactive control are distinct parts. Do not add wrapper elements solely to satisfy a recipe. A native element can serve more than one semantic role if documented.
Contracts enumerate each part's supported style properties, repeated/conditional presence, state source and token bindings. Arbitrary CSS selectors and HTML injection are not permitted in canonical recipes. Application CSS is an explicit escape hatch outside portable guarantees.
## Axes and states
Declare actual accepted values and defaults, not simply `string` from props. Keep existing names; do not rename all defaults to a common variant. Distinguish independent axes such as variant, color and size. Enumerate supported compound conditions and reject impossible combinations. Explicit existing instance props override system defaults for that axis; ambiguous legacy defaults require an adapter rather than silently changing behavior.
State sources include native pseudo-classes, ARIA values, existing data attributes and internal behavior. Document each mapping. Recipes style states but never mutate ARIA or drive interaction logic. Distinguish focus-visible from focus, active press from selection, and disabled from readonly. Loading may imply disabled only when existing behavior does so. Rules for multiple simultaneous states must be explicit per component; preserve focus visibility and disabled semantics. List unsupported states rather than inventing them.
## Resolution decisions
Resolve values: built-in baseline -> extended systems in declared order -> selected system -> mode/density/scope overrides -> explicit application theme overrides. Locks constrain editing/generation, not browser security. Reject extension cycles. Accent updates only its declared semantic roles. Instance recipes apply after component recipes within their scope; an explicit instance size/variant selects that recipe rather than overriding every recipe property.
Resolve recipes: base -> selected axis rules -> matching compound rules in declared order -> matching state rules in declared order -> approved instance overrides. Validate conflicting state rules and show provenance. Do not rely on object key iteration as undocumented precedence.
This semantic order does not by itself guarantee CSS precedence. Phase 1 must prove insertion order/specificity against existing extracted component CSS in development and production. Initial recommendation: preserve legacy CSS, compile opted-in recipes under a dedicated system owner scope, and emit their stylesheet after extracted component styles. Publish the exact selector strategy only after the Phase 1 cascade fixture passes. No blanket `!important` or global cascade-layer rewrite.
## Representative contracts
| Component/family | Observed legacy hooks | Proposed parts | States and constraints |
| ------------------- | ------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| Button | `.wrn-action`, `.wrn-btn`, `controlClass`, `pill`, variant/color/size classes | root, control, copy, label, description, icon, spinner, tooltip | Native button and link branches need the same visual contract; disabled/loading semantics remain distinct from styling; icon-only names preserved |
| Input | `.wrn-next--field`, field-control classes, invalid data state | root, heading, label, controlContainer, control, icon, hint, help, error | Native validity, focus-visible, readonly, disabled, invalid; error IDs and output events unchanged |
| Select | `.wrn-next--select`, `.wrn-next__select-indicator`, shared field styles | Same field parts plus indicator and floatingLabel | Native single/multiple rendering; do not promise styling of operating-system option popups |
| Card | `data-ui-component`, `data-wrn-card`, layout/radius/shadow attributes, `.wrn-next__card-*` | root, panel, media, content, header, heading, description, actions, footer | Repeated panels and nested controls need ownership boundaries; existing named slots preserved |
| Modal | `.wrn-modal`, layer/backdrop/panel/header/body classes, dialog role | root, trigger, layer, backdrop, panel, header, heading, close, body, footer | Open/closed, focus containment/restoration and dismissal remain behavior-owned; scoped context follows actual mount behavior |
| Navigation/menu | Existing component-specific classes | root, list, item, trigger, indicator, panel, label | Selected/expanded/disabled; preserve keyboard behavior; contract actual components individually |
| Selection controls | Existing switch/checkbox/radio implementations | root, control, indicator, label, description, error | Checked/unchecked/mixed only where implemented; native controls remain accessible |
| Alert/feedback | Existing family-specific classes | root, icon, title, description, actions, dismiss | Semantic color roles, optional dismissal; do not invent loading states |
| Typography/layout | Existing headings, containers and grids | root plus actual structural parts | Responsive text, long content, RTL; no interactive states unless present |
| Charts/flow/editors | Wrapper and provider-owned canvas/content | wrapper, toolbar, viewport, fallback where present | CSS tokens may not reach pixels drawn by canvas/provider; adapters required and coverage reported |
These are migration targets. Exact slot names, variants, parts and state mappings must be source-verified when each descriptor is implemented; this table does not announce new runtime APIs.
## Property and safety boundaries
Allow typed colors, dimensions, typography, borders, elevation and supported motion. Bound dangerous geometry and document clipping/overflow constraints. Angular decoration must not clip focus or reduce hit areas; keep label/icon readable. Compose decorative and interaction transforms separately. Preserve visibility rules for inactive branches, native control semantics and reduced-motion behavior. A recipe cannot change event handlers, HTML semantics, arbitrary URLs or executable expressions.
## Required fixture matrix
For each representative contract: current baseline, square compact, soft spacious, angular expressive; light/dark; default/hover/focus-visible/active plus supported states; long label and localization; narrow viewport; keyboard interaction; SSR and hydration; nested scopes; overlay context; app token overrides; local component CSS; ejected shadowing; conflicting variant/state rules. Compare identical content. Capture real screenshots separately from hash checks. Native popup/provider-owned limitations must appear in the report.
## Versioning
Adding an optional part or token can be additive if existing output remains stable. Removing/renaming a part, changing a supported property's meaning or breaking state/slot mappings requires a contract-major migration. Record engine range and per-component contract requirements; schema version and system revision are independent. Generated metadata must be checked against sources before publishing. Unknown contracts fail with actionable diagnostics rather than silently dropping recipes.
@@ -0,0 +1,126 @@
# Design System Engine and Design Studio
Date: 2026-10-19. Status: architecture plan; phases 0–7 delivered within the scopes documented below. The user requested phase-by-phase delivery.
Implementation progress: [Phase 0 audit](2026-10-19-design-system-phase-0-audit.md), [Phase 1 engine](2026-10-19-design-system-phase-1-implementation.md), and [Phase 2 core contracts, recipes and three presets](2026-10-19-design-system-phase-2-implementation.md). [Phase 3 complete catalog rollout](2026-10-19-design-system-phase-3-implementation.md) is delivered. [Phase 4 local Design Studio](2026-10-19-design-system-phase-4-implementation.md) is delivered. [Phase 5 guided generation, alternatives and decision locks](2026-10-19-design-system-phase-5-implementation.md) is delivered. [Phase 6 MCP operations, agent context and conformance](2026-10-19-design-system-phase-6-implementation.md) is delivered. [Phase 7 shared packages, upgrades and release preparation](2026-10-19-design-system-phase-7-implementation.md) is delivered as a locally verified packaging candidate; the subsequent [release blocker clearance](2026-10-19-release-blocker-clearance.md) records passing repository production and installed-consumer gates. Publication remains held at the user’s request; registry/version verification belongs to the separately authorized publication workflow.
## Product outcome
Users can import a brand, start from presets, answer guided questions, or describe an appearance. They can compare coherent alternatives, refine individual decisions, apply the result to existing WrNexus components, share it across applications, and ask agents to build consistent pages. The engine works without the studio or an AI provider. Applications consume compiled output, not the authoring tool.
## Architecture and ownership
All authoring surfaces edit one versioned specification: questionnaire / visual editor / agent / import -> specification -> resolve and validate -> compile tokens and recipes -> existing components -> previews and application build.
| Owner | Responsibility |
| --------------------------------- | ------------------------------------------------------------------------------- |
| Proposed `@wrnexus/design-system` | Schema, resolution, validation, compilation, migrations, design contracts |
| `@wrnexus/styles` | Existing token compatibility, stylesheet delivery, SSR and preference switching |
| `@wrnexus/ui` | Behavior, parts, states, recipe integration |
| Proposed `@wrnexus/design-studio` | Guided setup, editing, previews, drafts, history |
| `@wrnexus/cli` | Inspect, validate, compile, compare, apply, migrate |
| `@wrnexus/mcp` | Structured agent access to the engine |
| `@wrnexus/ai` | Optional provider adapter, subject to verifying actual implementation |
Keep browser-safe exports separate from filesystem/compiler/provider subpaths. No new package is created in Phase 0.
## Canonical specification
Begin with data-only JSON and a published schema. A future typed authoring helper must normalize to the same document. Include:
- Identity: stable ID, name, description, schema version and independent system version.
- Foundations: primitive colors, font families, spacing, dimensions, radius, border widths, elevation and motion.
- Semantic roles: text, surface, action, feedback, border and focus tokens.
- Typography: heading/body roles, sizes, weights, line heights and tracking.
- Recipes: component parts, variants, sizes, states and compound conditions.
- Composition: containers, grids, breakpoints, section rhythm and density.
- Modes: explicit semantic overrides, including light and dark.
- Assets: font/icon/image references, provenance and licensing metadata when supplied.
- Policies: locked values, allowed exceptions and unsupported combinations.
- Guidance: usage descriptions and examples for humans and agents.
- Compatibility: engine and component-contract requirements.
- Provenance: imports, generation context and revision references.
Tokens have types, aliases and validated values. Detect missing references, cycles, unknown parts and invalid conditions. Separate subjective intent from resolved values. Unspecified values inherit documented defaults. Compilation is deterministic; AI generation is not. Migrations preserve original files and produce reviewable diffs. Assets are references rather than silently embedded payloads.
## Component integration
Preserve existing props, events, slots, semantics, discovery, application shadowing and ejection. Define versioned contracts for parts, variants, sizes, states, slots, capabilities and constraints. Support global foundations, component defaults, variant recipes, state recipes, scoped systems, instance exceptions and custom implementations.
Square buttons use radius zero. Angular/tilted recipes must preserve readable copy, hit area, visible focus, icons, loading and pressed effects. Do not overwrite interaction transforms blindly. Tokens cannot represent arbitrary markup changes; ejection and application-owned components remain supported escape hatches.
Resolution and CSS cascade are separate concerns. Establish explicit recipe resolution order and verify emitted selector specificity, stylesheet order and component-local styles before adding recipe CSS. Do not migrate all existing CSS into cascade layers without a compatibility proof.
## Compatibility and runtime
- Adoption is optional; current applications retain current defaults.
- Map resolved values to existing `--wrn-*` variables.
- Existing explicitly configured theme values override imported system defaults.
- An inspector explains the source of every resolved value.
- Keep design-system identity, mode, accent and density as separate axes.
- Scoped systems must carry context into dialogs, menus and other externally mounted content.
- SSR selects the correct system and mode before first paint; browser switching agrees with SSR.
- Ejected/custom components have explicit support status; never assume complete control.
- Compiled output remains usable without AI credentials, studio code or network generation calls.
## Design Studio
| Area | Features |
| ------------ | ------------------------------------------------------------------- |
| Start | Create, import, duplicate, open, select preset |
| Brief | Product, audience, tone, constraints, references |
| Foundations | Color, typography, spacing, shape, elevation, motion |
| Components | Parts, variants, sizes, states, approved exceptions |
| Preview | Component gallery, composed pages, responsive views, comparisons |
| Review/apply | Validation, source diff, affected components, save, apply, rollback |
Include live valid previews, undo/redo, draft autosave, token/component search, inherited-value inspection, locked decisions, side-by-side directions, mode/density/viewport/RTL controls, accessible keyboard editing, unsupported-feature reporting and portable exports. Preserve invalid partial input while showing the last valid preview. Local revision history comes first; collaborative storage is separate scope.
## Guided workflow
Ask progressively: what is being built, who uses it, whether a brand exists, desired visual feeling, preferred geometry, density, surface treatment and fixed constraints. Show visual choices rather than relying only on adjectives. Generate three distinct directions on identical preview content. Users can combine selected decisions and refine through natural language; every combination is revalidated.
## Import/export
Initial imports: existing WrNexus theme configuration, canonical JSON, a documented subset of a token exchange format, and manually mapped brand values. Later: CSS variables, reference images/documents and connected design tools. Mapping reports preserved, ambiguous, unsupported and missing values. Image extraction is interpretive. Canonical round trips are guaranteed; other formats have fidelity reports.
Export canonical JSON, compiled CSS, integration configuration, exchange tokens, component guidance, validation/compatibility reports and versioned reusable packages. Package publication and deployment are separate actions from local application.
## AI and agent integration
Requests include brief, references, component capabilities, current system, locks, modes, constraints, requested alternatives, budgets and cancellation. Workflow: inspect -> draft/patch -> validate -> bounded repair -> isolated preview -> available checks -> compare -> apply selected revision. Preserve the last valid draft on failure/cancellation. Record provider/model and prompt-template versions without storing credentials.
Provide compact generation context with approved tokens, components, variants, composition rules and examples. Add conformance diagnostics for unsupported variants and avoidable hard-coded values, with explicit exceptions. Verify actual `@wrnexus/ai` capabilities instead of trusting inconsistent README claims.
Proposed agent operations: inspect, capabilities, create draft, propose patch, validate, preview, diff, apply, revert and export. Mutations include a base revision, detect conflicts, and return stable diagnostic codes and affected paths. Read operations work without AI credentials. Filesystem operations remain within the configured application root. Do not implicitly deploy or publish.
## Quality gates
Validate types/references/cycles; engine and contract compatibility; recipe/state resolution; cascade and scope; contrast and visible focus; keyboard scenarios; reduced motion; long text/localization/RTL; narrow screens; disabled/loading/invalid/selected states; SSR/hydration; overlay inheritance; screenshots; CSS size and compile/preview cost; AI lock preservation and repair limits; import fidelity and migrations. Automated checks do not establish full accessibility or aesthetic quality. Isolate previews and constrain untrusted CSS/assets; imports must not execute code.
## Delivery sequence
| Phase | Deliverables | Gate |
| ----- | --------------------------------------------------------------------------------------------- | ----------------------------------------------------------- |
| 0 | Source/catalog audit, styling map, coverage matrix, contracts, precedence decisions, fixtures | Supported/unsupported scope and Phase 1 blockers documented |
| 1 | Schema, resolver, validator, compiler, theme adapter, CLI inspection | Deterministic output and legacy compatibility |
| 2 | Representative component recipes and three systems | Identical markup; behavior and visual checks pass |
| 3 | Catalog rollout by family | Explicit support status for every entry |
| 4 | Studio editor, previews, history, import/export | Complete non-AI creation/application workflow |
| 5 | Guided generation, alternatives, locks, natural-language edits | Valid recoverable drafts and reviewable application |
| 6 | MCP operations, generation context, conformance/evaluation | Agent creates multiple consistent pages |
| 7 | Shared packages, upgrades, migrations and release workflow | Predictable reuse across applications |
Start integration with buttons, text inputs, selection controls, cards, alerts, navigation, dialogs/menus and typography/layout. Token inheritance alone is not complete recipe coverage.
## First proof milestone
Render one unchanged application as square/compact/outlined, soft/spacious/restrained and angular/expressive/high-contrast. Include navigation, form, dialog, loading/error states, light/dark and narrow screens. Require API compatibility, explainable resolved values, consistent switching, preserved keyboard/focus, agent inspection/editing and no studio/AI runtime dependency.
## Later scope
Shared workspaces, roles, comments, approval workflows, hosted synchronization, brand libraries, visual reference extraction, design-tool sync, organization reporting, marketplace and broader custom-component registration. Real-time collaboration needs a separately designed identity/storage/conflict model.
## Phase 0 artifacts
See [audit and decisions](2026-10-19-design-system-phase-0-audit.md), [component contract specification](2026-10-19-design-system-component-contracts.md), and the generated [coverage matrix](../design-system/component-coverage.md).
@@ -0,0 +1,86 @@
# Design-system Phase 0 audit and decisions
Historical snapshot: Phase 2 subsequently added 14 versioned core contracts and hooks. The linked coverage matrix is regenerated from current sources; see the Phase 2 implementation report for the newer status.
Date: 2026-10-19. Scope: static audit of the current working tree, including pre-existing uncommitted changes. No runtime behavior or visual accessibility certification is claimed. No production implementation was changed.
## Completion and evidence
Phase 0 documentation deliverables are complete: current-source inventory, styling-source map, support matrix, proposed contracts, compatibility decisions, representative fixture requirements and Phase 1 work order. Runtime contract integration, screenshots and cascade proof belong to subsequent phases.
Regenerate inventory with `node scripts/audit-design-system.mjs`. Outputs: [machine-readable coverage](../design-system/component-coverage.json) and [readable matrix](../design-system/component-coverage.md). Per-source hashes identify the audited content. Re-run after component edits; this report describes a moving working tree rather than a clean release baseline.
| Observation | Evidence | Consequence |
| -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------- |
| 104 component sources, 104 reference entries, 104 catalog entries; names match | `packages/ui/components`, `component-reference.json`, `component-catalog.json` | Use current source declarations as catalog truth |
| Older inventory claims 891 components | `docs/UI-COMPONENT-INVENTORY.md` | Historical documentation is stale for this checkout; do not plan rollout against that number |
| All 104 sources contain local style blocks | Generated inventory | Recipe integration must handle component-local styles, not only `ui.css` |
| No source has the proposed `data-wrn-part` hook | Generated inventory | All 104 remain `legacy-uncontracted`; existing classes still provide customization |
| Global CSS contains literal geometry | `packages/ui/ui.css`, e.g. container max-width/padding | README claims that every value is a token overstate actual coverage |
| Button mixes token radius with literal padding, pill radius and state transforms | `packages/ui/components/button.wrn` | Add property bindings selectively; do not mechanically tokenize structural constants |
| Input/Select share field selectors; Select has extensive local field CSS | `input.wrn`, `select.wrn`, `styles/SelectStyles.wrn` | Audit shared-selector ownership and duplicate rules before recipe rollout |
| Card already exposes geometry/layout attributes and named slots | `Card.wrn` | Preserve explicit props and compose with them instead of introducing competing defaults |
| Modal has named internal regions and dialog semantics | `Modal.wrn` | Parts can be additive; actual mounting/focus behavior requires fixture verification |
| Registry filesystem helpers are server-only | `packages/ui/src/registry.ts`, `src/index.ts` | New authoring/build code must not leak into browser imports |
Inventory extraction is heuristic. Token counts are local references, not computed-style coverage. Prop names come from generated reference metadata. Named slot extraction covers double-quoted names; absence is not proof of no slot. Literal-declaration counts identify review candidates, not defects. No component is promoted to recipe support by this scan.
## Styling and delivery map
1. `packages/styles/src/theme.ts` resolves named themes, palette/accent configuration and token CSS. Existing tokens include semantic colors, geometry, dimensions, shadows, spacing and typography. `ThemeTokens` allows additional names.
2. `packages/ui/ui.css` provides shared global rules and structural styles. `packages/ui/components/*.wrn` and `packages/ui/styles/*.wrn` also contain styles.
3. `packages/dev-server/src/assets.ts` serves UI/theme assets in development; `prod.ts` serves built UI CSS in production.
4. `packages/dev-server/src/runtime.ts` constructs framework/UI/app global stylesheet additions, with inline/bundled variations (`stylesIncludeUi`, `stylesIncludeFramework`, `inlineStyles`).
5. `packages/ssr/src/index.ts::extractWrnexusStyles` extracts compiler-emitted styles, deduplicates by ID, orders layout -> page -> component, and emits after global stylesheets with CSP nonces.
6. Browser theme/accent preferences and SSR token selection already exist. The engine should adapt to this path rather than create a second competing preference runtime.
Important limitation: the UI README's statement that application CSS loads after UI CSS does not establish that it wins against extracted component CSS. Specificity, local declarations, inline styles, bundles and insertion points all matter. Dev/production computed-style fixtures are mandatory before specifying recipe delivery as stable API.
## AI and agent integration audit
`packages/mcp/src/index.ts` currently declares inspection tools for routes, components, schema, diagnostics, runtime errors, dev status, docs and packages. Design draft/mutation tools do not exist there yet. Reuse its application-root and bounded-output model, and independently verify path/symlink containment for new writes.
`packages/ai/package.json` exports both the default client and `./platform`. The default `src/index.ts` is an Anthropic text/stream client. `src/platform.ts` includes provider adapters (including OpenAI). Do not infer support solely from a README headline or advertised capability booleans: structured design output, validation, cancellation and repair need adapter-level verification in Phase 5. No live provider calls were made for this audit.
## Contract decisions
The [contract proposal](2026-10-19-design-system-component-contracts.md) defines versioning, ownership, parts, states, recipe resolution, legacy compatibility and fixture requirements. Initial decisions:
- Opt-in engine, unchanged baseline defaults and public component APIs.
- Canonical data-only specification with typed tokens and explicit aliases.
- Separate identity, mode, accent and density.
- Additive part hooks; preserve existing classes, props, slots, events and ejection.
- Per-component support statuses, including provider-owned regions.
- Explicit app theme values override imported defaults.
- No global layer rewrite, blanket `!important`, or new wrappers during Phase 0.
- Conditional recipes have deterministic ordering and provenance.
- Application-owned components are reported; the studio cannot guarantee their styling.
## Prioritized risks and Phase 1 blockers
| Priority | Risk | Required resolution |
| -------- | ------------------------------------------------------------ | -------------------------------------------------------------------------------------- |
| P0 | Recipe CSS loses to extracted local styles | Establish insertion point and selector strategy; verify development/production and CSP |
| P0 | System defaults override intentional existing props/themes | Define explicit/default provenance and adapter semantics; baseline/override fixtures |
| P0 | Schema allows invalid references or executable imports | Data-only schema, typed resolver, alias-cycle/missing-reference errors |
| P1 | Shared field selectors leak between components/scopes | Ownership audit and nested-scope fixture |
| P1 | New authoring code enters browser bundles | Browser-safe export boundary and consumer import verification |
| P1 | Scoped overlays inherit wrong theme | Verify mount behavior before claiming scope support |
| P1 | Chart/canvas/provider visuals ignore CSS | Mark unsupported regions; design explicit provider adapters later |
| P1 | Metadata drifts or broad string props imply invalid variants | Verify actual accepted variants during descriptor implementation |
| P2 | Hash baseline mistaken for visual regression | Introduce rendered representative snapshots in Phase 2 |
## Phase 1 implementation order
1. Add engine package with browser-safe schema/types and server build subpath; integrate workspace public API conventions.
2. Implement schema versioning, typed token values, references, inheritance resolution, provenance and stable diagnostics.
3. Implement deterministic CSS output and legacy theme adapter; no studio or provider dependency.
4. Resolve the cascade blocker using small baseline fixtures covering global/local/extracted styles, specificity, inline/bundled output, SSR and production.
5. Add CLI inspection/validation and an opt-in application configuration path.
6. Verify default appearance/API preservation and app override behavior; document supported output and remaining gaps.
## Representative rollout and acceptance
Phase 2 begins with Button, Input, Select, selection controls, Card, Alert, Modal, navigation/menu and typography/layout. Exact current names come from the matrix, not invented component names. Phase 3 covers the rest by family. Provider-heavy Chart/FlowCanvas/DrawflowCanvas need separate capability boundaries.
Phase 0 gate: every current source has an explicit support status; discrepancies and styling paths are recorded; representative contracts and state constraints are specified; risks and Phase 1 acceptance work are ordered. This gate is satisfied by these artifacts. It does not mean the proposed hooks, engine, studio or agent tools exist. Proceed to Phase 1 in the next authorized implementation step.
@@ -0,0 +1,38 @@
# Design-system Phase 1 implementation
Date: 2026-10-19. Status: engine and opt-in legacy integration implemented; Phase 2 component recipes/studio remain unimplemented.
## Delivered
- New dependency-free, browser-safe `@wrnexus/design-system` package and structural JSON Schema v1.
- Typed token validation with a bounded CSS grammar, stable diagnostic codes and paths.
- Explicit token aliases, type checks, reference cycles/missing-reference checks, ordered system inheritance and bounded traversal.
- Mode/density overrides, retained legacy bindings, resolved values and source/reference provenance.
- Deterministic token CSS, optional owner scope and collision detection.
- Legacy adapter and opt-in `theme.designSystem` configuration in the existing styles pipeline; SSR and production consume the existing resolved theme representation.
- Explicit application token/default/cookie/accent preferences retained. Imported systems suppress the implicit accent default so it cannot overwrite the brand; explicitly configured and selected accents still work.
- Data-only CLI commands: `wrnexus design validate|inspect|compile system.json`, with optional mode, density and registry inputs.
- Usage documentation, a square-system example, workspace dependencies and a narrowly updated public API baseline for the new package.
See [package documentation](../../packages/design-system/README.md) for the actual supported format and APIs. Canonical token fields are intentionally smaller than the eventual complete studio specification. Unsupported future fields fail explicitly rather than being silently ignored.
## Compatibility choices
No UI component source, prop, event, slot, behavior, CSS rule or SSR insertion order was changed. Tokens map through existing `--wrn-*` variables. Existing hard-coded component styles and explicit variants retain their behavior. The engine does not yet compile component recipes, so it does not introduce the later recipe-vs-local-style precedence problem. Recipe insertion/specificity still requires a Phase 2 proof before hooks are advertised as stable.
The runtime adapter emits mapped legacy variables only. Standalone token CSS emits namespaced design variables as well. Avoid loading both outputs without intentionally managing their cascade. Density selection is compile/config time; scoped overlay propagation and runtime density controls are not implemented.
## Verification
- Combined engine, CLI, styles, UI and SSR suites: 323 passing tests, no failures at the initial full verification. Subsequent targeted validation tests are recorded with the final delivery.
- Browser-target bundling verifies no filesystem/provider dependency in the engine entry.
- CLI smoke test validates the saved square-system example.
- A compiled legacy Button is rendered through SSR extraction and checked in happy-dom: imported tokens apply, explicit application overrides win, mode switching updates geometry, and removing opt-in restores current baseline values.
- New source lint and formatting checks are run separately.
- Native Edge headless invocation on this host returned no document output. The reliable cascade check is a DOM simulator check, not native-browser or screenshot certification.
- Workspace-wide type checking remains blocked by errors outside the new engine/CLI module, including existing build/auth typing and CSR/dev-server/UI test typing. A focused engine/theme/CLI type check isolates this delivery.
- The global public API checker also detects pre-existing API drift in other packages. The baseline addition is limited to `@wrnexus/design-system`; unrelated APIs were not silently accepted by regenerating the entire baseline.
## Phase 2 entry work
Implement versioned component descriptors and additive owner/part hooks for the representative families. Verify state mapping and actual variants from sources; introduce recipe compilation only after nested ownership, specificity, SSR/development/production, CSP, explicit instance props, application overrides and overlay-context fixtures pass. Add native-browser screenshots for the three contrasting systems before claiming visual coverage.
@@ -0,0 +1,58 @@
# Phase 2 — core component contracts, recipes and presets
Status: implemented for 14 core components. Date: 2026-10-19. The remaining 90 catalog entries keep their legacy-uncontracted status; Phase 3 handles broader rollout.
## Implementation
Version-1 descriptors and additive hooks cover Button, Input, Textarea, Select, Checkbox, Radio, Switch, Card, Alert, Modal, Nav, ContextMenu, PageHeader and Container. Descriptors include source, family, parts, allowed properties, axes/defaults/values, state mappings, slots, token references, constraints, fixture targets and engine compatibility. They are available through the engine and the optional `@wrnexus/ui/design-contracts` export. Existing component props, outputs, slots and styles were retained.
The specification now accepts component recipes with a contract version, base part styles, ordered variant/compound rules and ordered state rules. Inherited base properties merge by part; rule arrays append. Validation rejects unsupported contracts, parts, axes, states, properties and typed references. Recipe CSS cannot change event handlers, arbitrary selectors, HTML, positioning, clipping or visibility. A bounded individual `rotate` property composes with existing interaction transforms; a `backgroundImage: none` reset handles legacy button gradients without allowing image URLs.
Each part carries its component owner and local axes, preventing ancestor-variant leakage. Conditions have zero specificity so ordered rules determine the result. Guards preserve explicit pill, radius/shadow, field variant and nondefault size/color choices. Legacy-bound token references continue through app-overridable variables. Recipe specificity and late insertion beat the existing local styles without `!important`.
The styles resolver attaches optional compiled recipe CSS to the resolved theme. Shared development/production SSR emits this after extracted component styles with the request CSP nonce. Custom document shells and streamed output retain the recipe block. Token delivery remains in the existing theme assets. Without recipes, no additional style block is emitted. The package root remains browser-safe and dependency-free.
Scoped compilation stops at nested design owners and works regardless of stylesheet order. Scope identifiers must be unique across nested islands. Current overlay implementations stay within their owner tree, so their panels inherit that context; this is not a promise for future externally portalled implementations. Ejected components without hooks remain application-owned.
## Three systems
| System | Direction | Button / card / dialog radius | Typography | Additional treatment |
| ------- | ------------------- | ----------------------------- | ----------------------- | ------------------------------------------------------------- |
| Square | Industrial, compact | 0 / 0 / 0 | Monospace | Black/amber dark mode, outlined actions, flat panels |
| Soft | Organic, spacious | 16 / 24 / 32 px | Warm serif | Sand/sage light mode and rounded surfaces |
| Angular | Lo-Fi, expressive | 0 / 0 / 0 | Mixed system sans/serif | Paper-yellow light mode, −2° actions, 1° panels, hard shadows |
All systems provide light/dark colors, primary hover/active/contrast roles, surfaces, typography and geometry. Existing semantic feedback roles retain their semantics. These are component systems, not complete page-builder templates.
## Verification
- Engine, CLI, styles, UI, SSR and theme-runtime regression suites: **341 tests pass, zero failures** across 30 files. Focused engine/theme/CLI type checking, new-source lint and formatting checks also pass.
- All descriptor parts/axes are checked against source hooks.
- Invalid contracts/properties/references and deterministic preset output are covered.
- Tests cover explicit pill/size/color/radius/shadow choices, compound/state precedence, nested components and design islands, inline scoped dialogs, typography/layout props, hydration and CSP-protected SSR output.
- Native in-app browser verification covered all 12 combinations: three systems × light/dark × linked/inline token CSS. Button gradients were removed correctly; button/input/card radii and rotations matched the systems; labels remained readable and no desktop horizontal overflow was observed.
- Native form typing, language selection and switches worked under all three systems. Dialogs opened, received/trapped focus, closed with Escape and restored the trigger focus. Context menus opened and closed from their focusable items. Keyboard focus remained a visible 2px solid outline under all three systems.
- All three 390×844 layouts used one column with no horizontal overflow.
- Recipe output is approximately 65–68 kB uncompressed and 2.1–2.2 kB gzip per preset; authoring metadata is optional for UI consumers. These are current observations, not a permanent performance budget.
Screenshots and browser observations are saved in `output/design-system-phase-2/`: six desktop mode captures, three mobile captures, a dialog capture, `browser-checks.json` and `focus-checks.json`. They are review artifacts, not an automatically maintained screenshot-diff baseline.
| Preview | Screenshot |
| ------------- | --------------------------------------------------------------- |
| Square dark | [Capture](../../output/design-system-phase-2/square-dark.jpg) |
| Soft light | [Capture](../../output/design-system-phase-2/soft-light.jpg) |
| Angular light | [Capture](../../output/design-system-phase-2/angular-light.jpg) |
| Soft mobile | [Capture](../../output/design-system-phase-2/soft-mobile.jpg) |
| Soft dialog | [Capture](../../output/design-system-phase-2/soft-dialog.jpg) |
## Run and use
Run `bun run scripts/preview-design-systems.ts`, then open the printed local URL. The preview is a developer fixture with authored static content and no submitted server mutations. The isolated ContextMenu fixture supplies trigger slot content explicitly because the test renderer has no parent slot distributor.
Use `theme: { designSystem: { system: SOFT_DESIGN_SYSTEM } }` to apply a preset in an application. See [engine documentation](../../packages/design-system/README.md) for extension recipes, scope boundaries, APIs and CLI commands. The [coverage matrix](../design-system/component-coverage.md) reports the current per-component status.
## Limits and next phase
This delivery does not implement the Design Studio, AI generation or MCP mutations. Unknown/custom components need their own contracts; provider-rendered pixels and native Select option popups are outside CSS recipe control. General conformance/accessibility certification, repeatable screenshot-diff automation, additional browsers and the remaining catalog families belong to subsequent work.
Existing workspace-wide type/API drift is kept separate from this change; public API and visual hash baselines are updated only for the engine/UI contracts and the 14 reviewed core component sources. The new engine and UI-contract export baselines match extracted APIs. Global type/API checks and the full visual-hash check still fail on pre-existing issues or baseline drift outside this scope; those files were not accepted by a wholesale baseline refresh. Other uncommitted work is preserved.
@@ -0,0 +1,38 @@
# Phase 3 — Complete component contract rollout
Date: 2026-10-19. Delivered: contracts, additive part hooks and preset recipes for the remaining 90 components, bringing coverage to 104/104.
## Implementation
- `COMPONENT_CONTRACTS` contains all 104 contracts. `CATALOG_COMPONENT_CONTRACTS` contains the new 90; the existing `CORE_COMPONENT_CONTRACTS` remains the original 14. Both engine and optional UI metadata entry expose the complete registry. Existing lookup now accepts every catalog component.
- Contracts record axes, parts, ownership, property allowlists, slots, source tokens, compatibility and region limitations. Shared property profiles avoid duplicating the allowlists throughout the exported catalog.
- All three existing design systems include recipes for all 104 components. New recipes apply typography, eligible surface radius and elevation. They do not add layout dimensions, positioning, display, clipping or graph geometry. Existing component colors continue through the theme token adapter.
- Explicit instance size, radius, shape, rounded, shadow and other applicable axes guard default rules. Semantic geometry such as sliders, progress indicators and status marks keeps its existing shape.
- Chart canvas/runtime accessible output, Drawflow provider DOM, embedded map documents, native controls and user-authored editor content retain documented ownership boundaries. A contract describes the controllable wrapper; it does not promise styling of provider pixels or native popups.
- Recipe compilation omits duplicate mode rules while still resolving and validating each mode. Mode-specific literal values continue to emit overrides.
## Compatibility and verification
The rollout generator checks canonical parsed component trees before writing and rejects any change beyond the added hooks. An independent comparison against the saved pre-rollout sources passed for all 90 components: props, events, functions, existing attributes, styles, slots and markup structure are preserved. Re-running generation produces byte-identical component files.
Validation completed:
- 346 tests pass, zero failures, across engine, design CLI, styles, UI, SSR and theme runtime (6,845 assertions).
- Focused TypeScript source check passes; targeted lint passes.
- All 90 additional components server-render successfully with their defaults.
- All three complete presets validate and compile in light and dark modes. Tests verify ownership boundaries and mode-rule deduplication.
- Real browser: seven catalog pages × three systems × two modes = 42 checked pages, covering 624 default component appearances. Every page had its expected component owners and no page-level horizontal overflow at the tested desktop width. Browser results are in `output/design-system-phase-3/browser-checks.json`.
- Inspected screenshots for each system. The existing linked-CSS interactive preview remains usable; its switch changed state in the browser. Existing interaction suites, including provider adapters, continue to pass.
- Coverage audit: 104 source components, 104 reference entries, 104 catalog entries, 104 with hooks, zero metadata gaps.
The catalog is an SSR baseline gallery: empty lists and closed overlays intentionally retain defaults. This verification does not certify every populated state, every viewport, external provider rendering or accessibility conformance. Existing Phase 2 interaction and mobile coverage remains documented separately.
## Review and regeneration
Run `bun run scripts/preview-design-systems.ts`. Open `/catalog?system=soft&mode=light&page=1` on the printed address for the added components; `/` retains the interactive core fixture. Catalog pages are numbered 0–6 in URLs. Switch `system` between `square`, `soft`, `angular`, and `mode` between `light`, `dark`.
Run `bun run scripts/rollout-design-contracts.ts` to audit or append `--write` to regenerate. Review inferred parts and ownership when changing component markup; generation is a migration aid, not semantic or accessibility certification. Regenerate coverage with `node scripts/audit-design-system.mjs`.
Screenshots: [Square](../../output/design-system-phase-3/square-catalog.jpg), [Soft](../../output/design-system-phase-3/soft-catalog.jpg), [Angular](../../output/design-system-phase-3/angular-catalog.jpg).
API baselines were updated only for the engine and UI design-contract entry; visual hashes only for the 90 migrated components. Pre-existing workspace-wide type/API/visual drift outside this scope remains separate. No dependencies, publication or deployment were added. Studio authoring and AI/agent tools remain subsequent phases.
@@ -0,0 +1,50 @@
# Phase 4 — Local Design Studio
Date: 2026-10-19. Delivered: non-AI authoring, isolated previews, local history, import/export, review and local application revisions on the existing engine and 104 component contracts.
## What shipped
A new private workspace package, `@wrnexus/design-studio`, separates its browser-safe state model from the filesystem/compiler/SSR server entry. Run `bun run design:studio`; optionally pass `--app-root <existing application directory>` to enable application bundles. The default URL is `http://127.0.0.1:4320/`.
The editor supports blank creation, presets, duplication, system identity, searchable foundation tokens and semantic bindings, base/mode/density layers, token aliases, additional tokens/layers, contract inspection for all 104 components, allowed part defaults, complete per-component recipe JSON, and canonical source editing. Variants, sizes, states and compound rules use the same engine schema; no second styling schema was introduced.
The Swiss authoring shell uses white surfaces, Helvetica typography, hairline grid divisions and blue actions. Its draft remains visually separate from the design being authored. The paired editor/source model is the main interaction: structured controls edit the canonical document, and invalid source remains recoverable while previews use its last valid revision.
Previews compile trusted shipped `.wrn` components and use the normal SSR document renderer, theme adapter and browser behavior runtime. They include a composed form/dialog page and seven catalog pages covering all 104 default component states. Controls select mode, density, width, direction, comparison and catalog page. Comparison uses identical authored content and can show a preset or last applied design. No AI provider is involved.
## Drafts, history and imports
Autosave stores the raw canonical draft, last valid preview, applied baseline and up to 25 revisions in local browser storage. Undo/redo preserves invalid revisions and supports branching. Reload recovery is tested with realistic full-preset histories. Corrupt storage and quota failures are reported; raw draft export remains available.
Import inspection reports preserved, ambiguous and unsupported values before accepting a document. Canonical JSON round-trips losslessly. Legacy import maps known literal theme suffixes and reports unmapped fields. Exchange import supports a documented scalar/alias subset with group type inheritance and descriptions; composite/structured values are reported as unsupported, and missing WrNexus semantic bindings are marked ambiguous. Imports never execute configuration files, fetch assets or infer missing inheritance parents.
Exports include canonical JSON, standalone compiled CSS, existing-adapter theme configuration, resolved flat exchange tokens, compatibility reports and raw invalid drafts. Canonical JSON is the editable source of truth; exchange export is intentionally resolved and lossy. See the [package guide](../../packages/design-studio/README.md) for exact fidelity limits.
## Review, application and rollback
Review shows affected paths and before/after values. Foundation changes are described as potentially affecting all contracted components; component recipe changes identify their component names.
Local apply writes immutable version directories containing system JSON, CSS, theme configuration, exchange tokens, compatibility report and integration guidance. A single atomic `CURRENT.json` pointer selects the active local revision. Base revisions detect conflicts. Rollback swaps the current and previous pointers, including undoing a first apply to `none`. Existing app configuration is preserved.
Applications explicitly import a reviewed generated `theme.json` into their existing configuration. Explicit app theme overrides and instance props retain their established precedence. Changing a Studio pointer alone does not rebuild an app pinned to an earlier import, publish a package or deploy anything. `/application-preview` verifies the selected on-disk system through the existing adapter. Browser verification used only `output/design-system-phase-4/application-demo`, not an existing user application.
## Verification
- Combined regression: **358 pass, 0 fail**, 33 files, 6,965 assertions across Studio, engine, CLI, styles, UI, SSR and theme runtime.
- Focused TypeScript check includes all Studio sources, tests and launcher and passes. Targeted lint passes.
- Model tests cover invalid drafts, reload recovery, undo/redo/branching/history bounds, storage failure, canonical round trips, legacy/exchange fidelity, malicious/oversized/missing/cyclic imports and applied snapshot detachment.
- Application/server tests cover immutable bundles, existing config preservation, adapter consumption, conflicts, rollback including initial application, same-origin/local-host restrictions, request bounds, read-only startup and browser-safe bundling.
- Preview tests cover three presets × two modes, RTL, SSR control registries, real component hooks and all 104 catalog defaults. Preview scripts do not try to load external controller bundles.
- Native browser verified six composed preset/mode combinations with expected fonts and radii: Square 0px/mono, Soft 16px/serif, Angular 0px/sans. Those tested desktop pages had no horizontal overflow.
- Native browser verified token editing, recipe editing (8px Button override), invalid source/reload/undo recovery, import diagnostics, comparisons, dark mode, RTL and width selection; switch, InputNumber and dialog interactions worked. Fresh composed previews had no console errors after the SSR registry repair.
- Native browser applied two revisions to the demonstration folder, rolled back to the earlier 12px-radius revision, and displayed a precise 12px → 16px remaining draft diff. Application files and existing config preservation are also checked by tests.
Evidence: `output/design-system-phase-4/` contains browser results and screenshots. Existing Phase 3 catalog verification remains applicable to the component sources, which this phase does not modify.
## Boundaries and follow-on work
The shell has responsive CSS, and preview frames support narrow widths. The current native browser viewport override did not change the shell's measured 1280px width; full mobile-shell certification is not claimed. External provider pixels, native popups, user-owned content and all populated interaction states retain their contract limitations. During exploratory DatePicker interaction, its existing client expression parser emitted a diagnostic; its source/API is unchanged and it remains in the default-state gallery. The composed preview focuses on core form controls, InputNumber and dialogs.
Preview frames allow scripts without same-origin privileges, use bounded server-generated documents, and block network, forms and remote fonts. The loopback server rejects foreign hosts/origins and only writes to its configured root. The draft store is local and single-user; multiple tabs do not merge concurrent drafts. Local history is not collaborative storage or a backup.
Guided generation, natural-language edits, decision locks, MCP mutation tools, collaborative storage and package publication remain later phases. The Studio is private and repository-local in this phase. Existing public API and visual-hash drift outside this delivery is preserved; only the new Studio package is added to the API baseline. No existing component source, runtime or theme API was changed for this phase.
@@ -0,0 +1,67 @@
# Phase 5 — Guided generation and decision locks
Date: 2026-10-19. Delivered on the Phase 4 Studio, existing engine and 104 contracts. No existing component, theme, compiler or application API is replaced.
## Guided workflow
The Studio adds a Guided design editor with three progressive steps: product/audience; tone, geometry, density and surface choices; then fixed brand color, references and constraints. Geometry choices have visual examples. Reference URLs are recorded as text and never fetched.
Generate three directions stages three complete validated design systems on identical composed preview content. Every candidate has a rationale, changed paths and an isolated real-component preview. Review shows before/after values. Accepting a candidate creates a normal recoverable Studio revision. Applying to an application remains the existing separate Review & apply flow.
Users can mix named color, geometry, typography, spacing and elevation decisions from the alternatives. A combination passes schema, recipe and lock validation again before becoming a reviewed proposal. Mixing is scoped to the preset foundation vocabulary and core rotation decisions, not arbitrary markup or external assets.
Edit with words stages one proposal. Local examples include rounded controls, compact/spacious spacing, flat/soft/hard shadows, serif/sans-serif/monospace typography, and primary color in #RRGGBB form. Multiple supported clauses can be joined with “and”, commas or semicolons. An unsupported clause rejects the whole edit; it never silently applies the recognized portion. Local geometry/density commands affect shared base foundations; existing mode/density overrides can still take precedence. Exact component-only edits remain available in the recipe editor or through a configured LLM patch.
## Local rules and optional LLM provider
The default is explicitly labeled **local rules**. It uses deterministic preset-based visual choices and brand values. Product, audience and free-form reference/constraint prose are retained as context; local rules do not claim to interpret that prose. Locked decisions override conflicting brief choices. When locks prevent three distinct candidates, generation reports the conflict instead of fabricating alternatives.
The actual `@wrnexus/ai` implementation was audited: it exports provider adapters with `generate`, signals, model selection and result metadata. The Studio uses that provider interface through a server-only adapter; it does not assume README defaults or structured-output claims guarantee a valid document.
To opt into the existing Anthropic adapter, set `ANTHROPIC_API_KEY` on the server and start:
```sh
bun run design:studio --ai-model <explicit-provider-model-id>
```
`--app-root` can be combined with this flag. The launcher requires an explicit model and server key; it does not pick a changing/default model. Other existing `AIProvider` adapters can be injected with `createStudioHandler({ generationProvider, generationModel })` from the Studio server entry. There is no automatic fallback between providers or from a failed LLM response to local rules.
The Studio displays the configured provider/model and transmission scope. Only pressing Generate/Propose sends the source system, brief, locks and compact contract capabilities to that provider. Credentials stay in server configuration and are not included in drafts, previews, generation reports or browser configuration. No provider requests were made during implementation verification; transport was tested with deterministic fixtures.
## Validation, repair and budgets
Provider output is a data-only JSON proposal envelope containing at most 48 set/remove JSON-pointer operations per alternative. It cannot submit executable components, arbitrary CSS, tools or unsupported schema fields. Contract context contains reusable property profiles, named parts, accepted axes and states. Each complete candidate is reconstructed, validated for all engine modes/densities and checked against locks before it is exposed as an alternative.
The configured provider gets a 4096-token output budget per attempt by default; the generation API supports 256–8192. A batch has at most two attempts: an initial request and one diagnostic repair. Transport errors are not repaired/retried and their raw messages are not exposed. Total output budget is therefore at most twice the per-attempt limit, not a dollar/cost estimate. Input context is capped at 180,000 characters plus the fixed instruction template; provider response text is capped at 100,000 characters. HTTP JSON bodies remain capped at 2 MB.
Generation has a 20-second deadline covering both attempts; the API permits bounded test/host overrides of 10–60,000 ms. Abort signals reach the provider, and an abort race releases the caller even if a provider ignores its signal. Cancellation cannot guarantee that an external service stops its own computation/billing; late results are never applied. At most two generation requests run concurrently per Studio handler.
Provenance records the source revision, exact brief, locks, instruction, provider/model, prompt-template version, attempt count, output budget and timestamp. Generation reports contain complete candidate specifications so they can be inspected independently of the live service. Canonical application exports remain the unchanged engine schema and require no Studio or AI runtime.
## Locks and recovery
Decision locks are JSON pointers to canonical decisions. Foundation group buttons cover the preset color, geometry, typography, spacing and elevation decisions; individual pointers can protect a token, mode/density override, recipe or part property, including an absent optional decision. Pointers handle literal dotted token names and reject unsafe/prototype paths.
Locks protect raw values and effective referenced token values across available modes/densities. A token alias, mode override or underlying recipe token cannot silently bypass a lock. Local alternatives preserve the dependencies needed by a locked decision; provider patches must satisfy locks without silently rewriting their output. Checks are bounded to 128 distinct pointers and 128 mode/density configurations. These are authoring constraints, not access control over a caller that intentionally changes its own lock preferences.
Manual canonical edits, structured editors, imports, proposal acceptance and undo/redo all retain lock checks. An invalid or lock-violating source stays in raw history while the last valid preview is preserved. Explicitly unlocking can recover that raw edit into a valid draft. Lock preferences are independent of undo history, and are saved alongside the Studio state; older Phase 4 drafts restore with no locks. Canonical JSON intentionally excludes Studio lock/provenance metadata; the generation report carries it separately.
A SHA-256 revision of the canonical source and sorted locks binds every batch to its base. Changes to source or locks, or to the active guided brief in the UI, invalidate acceptance and mixing until the user regenerates; old proposals remain inspectable/exportable. Accepting a proposal never writes application files. Provider failures, invalid repairs, cancellation and stale responses preserve the canonical draft and prior valid proposals.
The brief, last completed batch and instruction autosave separately from canonical history, with corruption/quota reporting. Up to three complete alternatives are retained. Generation never commits partial streamed output. Reload restores the brief, candidates, source and locks; stale candidates still require regeneration. Multiple browser tabs remain independent local workspaces without collaborative merge.
## Verification
- **374 passing tests, zero failures**, 34 files, 7,049 assertions across Studio, engine, CLI, styles, UI, SSR and theme runtime.
- Studio TypeScript source/test/launcher check, targeted lint and formatting pass.
- New tests cover distinct complete directions; brand/shape/density/surface choices; direct, alias, mode and recipe dependency locks; raw-edit/reload/unlock recovery; supported/unsupported word edits; valid combinations; stale source and lock revisions; bounded repair and output patches; malicious paths/values; deadlines/cancellation; provider-error redaction and generation HTTP metadata/origin enforcement.
- Native browser generated three alternatives with distinct fonts/radii on identical content while retaining a locked primary color in every candidate. The original draft stayed unchanged until acceptance.
- Native browser accepted a direction, proposed/accepted a word edit, restored brief/20 color locks/alternatives after reload, rejected a locked shape edit while retaining the previous proposal, and rejected stale acceptance after changing the source. Fresh regeneration recovered the workflow.
- Native browser combined rounded geometry from one alternative and typography from another, reviewed the exact differences, accepted it as a normal draft revision, and applied a validated bundle only to `output/design-system-phase-5/application-demo`.
- Provider integration was exercised with fixtures, including a provider that ignores abort, invalid JSON followed by a valid repair, and repeated lock/property violations. A paid/live provider call was not run. Broader prose quality therefore depends on the configured provider and is not certified by local-rule tests.
Evidence and screenshots are under `output/design-system-phase-5`. Phase 4's preview isolation and current provider/native component limitations continue to apply. Existing APIs and visual baselines outside Studio remain untouched by this phase; unrelated workspace-wide drift is not accepted by a wholesale refresh.
## Next scope
Phase 6 remains MCP operations, reusable agent generation context and conformance/evaluation. This phase provides the Studio generation pipeline and server provider seam, not public agent mutation tools. Collaborative storage, publication, migrations and organization workflows remain later phases.
@@ -0,0 +1,93 @@
# Phase 6 — agent design operations and page conformance
Date: 2026-10-19. Delivered locally on the existing engine and 104 component contracts. Published-package delivery remains part of the later release work.
## Delivered
- Opt-in `@wrnexus/mcp` design tools. Existing eight framework tools and default startup behavior stay intact. `design: true` enables inspection; `designWrite: true` additionally exposes mutations. The service is loaded only when a design tool is called.
- Agent context version 1: resolved tokens and origins, mode/density, locks, selected component props/events, axes, parts, slots, support boundaries and composition examples. Select up to 12 components; capabilities lists the complete catalog. No AI provider or credentials are required.
- Recoverable local agent drafts: raw source, last valid system, decision locks, 25 source-history entries, saved page specifications and one swappable previous workspace checkpoint. Every mutation needs the latest draft revision. Invalid source and lock violations remain recoverable and keep the last valid preview.
- Literal page specifications generate compilable `.wrn` component tags (compiled into existing mount markup) and semantic-token layout CSS. Up to 12 pages, each containing 1–12 contracted component instances. Unknown props/axes, style escape hatches, non-JSON values, prototype keys, dangerous URL schemes and excessive nesting/size are rejected.
- Static conformance detects parse failures, unknown component APIs, invented literal variants, unverifiable dynamic axes, color literals, common foundation literals and common utility-class bypasses. Exact warning code/path exceptions require a written reason; errors cannot be waived.
- Page previews render trusted shipped components with the selected system. They return static HTML with a restrictive CSP; arbitrary agent-submitted source/imports/loads/functions are never executed by analysis or preview.
- Draft/application conflict checks, immutable design bundles, application pointer reversal, export and diffs. An application writer lock now serializes Studio and MCP apply/rollback across processes without changing their APIs.
## Setup and workflow
From this workspace:
```sh
bun packages/mcp/src/stdio.ts --root=E:/path/to/application --design
# Draft/bundle mutations explicitly enabled at startup:
bun packages/mcp/src/stdio.ts --root=E:/path/to/application --design-write
```
Programmatic integration:
```ts
const server = createFrameworkMcpServer(applicationRoot, {
design: true,
designWrite: true,
});
```
Use the same NDJSON JSON-RPC transport and `tools/list` / `tools/call` interface as the existing MCP server. Do not install this project into another account or agent environment implicitly. The new extension currently requires this monorepo workspace; standalone packaging is deferred with the private Studio package.
All names below start with `wrnexus_design_`:
| Operation | Inputs and behavior |
| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `inspect` | Current draft/application revisions, source, valid system, diagnostics, locks, pages and source history |
| `capabilities` | Catalog, tool boundaries and limits |
| `context` | Optional `components`, `mode`, `density`; generation guidance for the last valid system |
| `create` | `baseRevision`, optional canonical JSON `source`; initialize/stage a draft |
| `propose` | `baseRevision` and either `source` or up to 48 `{path,value}` JSON-pointer patches |
| `locks` | `baseRevision`, `locks` such as `/tokens/color.primary` |
| `page` | `baseRevision`, `page: {id,title,components:[{component,props}]}`; validated source is returned in `result` |
| `validate` | Draft diagnostics and per-page conformance |
| `preview` | Saved `pageId`, optional mode/density; static HTML for last valid system |
| `conformance` | `source`, optional exact `{code,path,reason}` warning exceptions |
| `diff` | Applied-baseline design changes and saved page ids |
| `export` | Raw recovery source/locks/diagnostics, valid-system artifacts and page filename/source map |
| `apply` | `baseRevision`, `baseApplicationRevision`, optional mode/density; save design bundle and advance pointer |
| `revert` | `baseRevision`; default draft undo, `target: "checkpoint"` to swap workspace checkpoint, or `target: "application"` plus `baseApplicationRevision` |
Typical agent sequence: inspect → context → propose → inspect/validate/diff → save page specifications → preview/conformance → export. Reinspect after conflicts. Mutation responses include the new revision, diagnostics and affected paths. Application writes additionally require the independently observed application revision. Failed page proposals return diagnostics without advancing the revision.
Example page:
```json
{
"id": "account",
"title": "Account settings",
"components": [
{ "component": "Input", "props": { "id": "display-name", "label": "Display name" } },
{ "component": "Button", "props": { "label": "Save changes", "variant": "default" } }
]
}
```
Patch paths use canonical document pointers, for example `/tokens/color.primary/value`. Locked decisions protect effective alias and recipe dependencies through the existing session engine. Source edit errors are saved as diagnostic-bearing drafts. They cannot be applied.
## Storage and recovery
The server's configured application root is the only filesystem boundary; tools accept no output paths. Agent state is stored in `.wrnexus/design-studio/agent/STATE.json`, written through a uniquely named temporary file and atomic rename. Managed ancestors/files are checked for links. A workspace `LOCK` directory protects the read/check/write sequence. Studio application writes independently use `APPLY.lock`.
If a process dies while holding a lock, stop all writers, back up `STATE.json` and the managed directory, then remove the empty lock directory. Locks are never timed out or stolen automatically. Do not edit stored JSON while writers are active. Export preserves invalid raw source separately from valid build artifacts. Studio browser local-storage drafts and agent workspace drafts remain separate; exchange canonical source explicitly.
Draft state is bounded to 12 MB, requests to 2 MB, static conformance source to 128,000 characters, exceptions to 64. Session recovery retains the prior limits. Local filesystem owners are trusted; link checks do not claim adversarial OS-level race protection. Theme application and agent-state persistence are two separate atomic operations: after a disk failure, inspect both revisions before retrying.
## Adoption boundaries
`apply` saves the existing immutable design bundle and application pointer; it does not modify configuration or page routes. Import the reviewed `theme.json` through the existing app theme API. Exported page sources use the existing `data-component` mounting convention; integrate them into the application's routes with the matching UI component registry. Event handlers, application data loading, custom nested layouts, slots and provider integrations require normal application implementation. Page previews intentionally have no hydration, network requests or form submission.
The page specification is a bounded composition format, not a substitute for arbitrary application source. Arbitrary `.wrn` may be analyzed, but cannot be executed as an agent preview. Conformance is heuristic and does not resolve imported CSS, named colors, computed expressions, every utility framework, custom components or external assets. Passing does not certify accessibility, contrast or complete visual quality. Native/provider/content-owned regions keep their contracts. No provider calls, route rewrites, publishing or deployment happen implicitly.
## Verification
- Regression: **307 tests pass, 0 fail**, 49 files, 3,986 assertions and one snapshot, covering Studio, MCP, engine, compiler, SSR and design-system component/theme suites.
- Agent evaluation: `bun run scripts/evaluate-design-agents.ts` produces **6 page sources and 12 previews** using actual MCP calls: account and support pages × Square, Soft and Angular × light/dark. Sources compile and pass static conformance. Output: `output/design-system-phase-6/report.json`.
- Browser checks confirmed the exported previews display real inputs, headings, alerts and buttons. Soft uses a 16 px button radius and its green brand color; Square uses 0 px radius; Angular preserves its tilted outlined button in dark mode. Screenshots are saved beside the evaluation report.
- Focused TypeScript, ESLint and formatting checks cover changed Studio/MCP code and the evaluation script. Public API baseline changes are confined to Studio's new explicit subpaths and MCP's existing entry points; unrelated prior baseline drift is not accepted.
Tests cover opt-in/default compatibility, read-only behavior, real stdio structured context, recovery after service recreation, stale draft/application bases, locks, invalid source, checkpoint restoration, busy writers, compilation and preservation of string/boolean/structured mount props, all three designs in both modes, invalid page props/variants and justified warning exceptions. No paid model calls are used.
@@ -0,0 +1,83 @@
# Phase 7 — shared packages, upgrades and release preparation
Update: [Release blocker clearance](2026-10-19-release-blocker-clearance.md) subsequently cleared the repository-wide production gates and reverified the installed packages. Publication remains held at the user’s request. The initial Phase 7 verification record below is retained for context.
Date: 2026-10-19. Initial status: **local packaging candidate verified; publication remains gated** by existing repository-wide type/API/visual failures and registry/version checks. Nothing was published, deployed or made public. Source package versions were not bumped.
## Delivered
### Standalone package boundaries
Studio now imports declared public package entry points rather than sibling source files. The engine exposes `@wrnexus/design-system/package`; Studio exposes `@wrnexus/design-studio/upgrades`; styles exposes the additive browser-safe `@wrnexus/styles/theme` entry. Existing exports remain available.
The staged engine ships its exported `schema.json`. Studio ships compiled JS/declarations, a prebuilt browser asset and the installed `wrnexus-design-studio` binary. The repository's existing `bun run design:studio` launcher calls the same CLI implementation. Published server startup reads the packaged browser asset; source development retains on-demand compilation. Preview compilation resolves the installed core package, and temporary component modules are separated by installation location.
MCP loads Studio through its public `agents` entry as an optional peer. The staged manifest preserves `peerDependenciesMeta`, so an MCP-only installation keeps the existing eight tools without pulling in Studio. An explicit design call without compatible Studio fails with `WRN-MCP-DESIGN-INSTALL`. Read-only versus write-enabled startup options remain unchanged.
The standard staging tool now supports an isolated, validated `--stage-root=.publish-NAME` and explicit `--with-dependencies`. It includes local dependencies/optional peers in dependency order, preserves optional-peer metadata and generates Studio's browser asset. The default `.publish` behavior remains available. The new design workflow uses `.publish-design`, leaving existing `.publish` output intact. Staging removes only a validated direct workspace staging directory before rebuilding it.
### Shared design packages and explicit upgrades
`createDesignPackage(system, notes?)` produces a self-contained schema-v1 design envelope with format version 1, contract version 1 and a SHA-256 content digest. Stable object-key ordering yields the same pin in separate applications. The envelope retains modes, densities, aliases, recipes and supported metadata. A digest detects changed bytes/content; it is not a publisher signature. Package source is bounded and must use a semantic release version; unresolved external inheritance is rejected.
`readDesignPackage(source)` verifies the envelope and digest. Existing canonical schema-v1 JSON can be wrapped explicitly, with a reported `canonical-v1-to-package-v1` migration. Unsupported future formats/contracts and changed content are rejected. This introduces no automatic renaming or lossy token conversion.
`planDesignUpgrade(session, source)` returns the verified package, migration list, changes, lock diagnostics and exact current design/lock revision without changing the draft. `applyDesignUpgrade` verifies again and stages the adoption through existing history/autosave. Source errors, identity changes, stale revisions and locked effective decisions block adoption. Undo/redo restores previous designs. No registry fetch, dependency update or application change occurs automatically; explicit supported-version adoption also supports deliberate rollback.
MCP adds three operations:
| Tool | Behavior |
| ----------------------------- | ------------------------------------------------------------------------------------------- |
| `wrnexus_design_package` | Export the last valid system as a pinned package; optional bounded `notes` |
| `wrnexus_design_upgrade_plan` | Review incoming `source`, returning the draft revision and upgrade plan |
| `wrnexus_design_upgrade` | Adopt incoming `source` using the latest `baseRevision`; recheck identity, digest and locks |
Existing design operations, application revisions, default MCP APIs and component behavior remain intact. The new package/upgrade APIs are programmatic; Phase 7 adds no new Studio controls.
### Recoverable storage migration
Existing unversioned browser drafts and agent state remain readable. Subsequent saves add storage version 1 without dropping raw invalid source, valid preview, locks, history or saved pages. The browser storage key is unchanged.
Unknown future/faulty browser storage is retained byte-for-byte and exposed as `session.recoverySource`. Automatic writes stay blocked until the saved data has been backed up and storage deliberately reset. In-memory edits and exports remain usable. Future agent state also fails closed without rewriting `STATE.json`. Existing application pointers and immutable revision bundles require no migration. Separate browser and agent storage boundaries are retained.
Recovery instructions ship inside each of the engine, Studio and MCP tarballs as `RELEASE.md`; package READMEs link to that local guide. Back up the managed directory and browser storage before changing authoring versions. Stop writers before clearing crash-held lock directories. Keep a compatible tool version alongside saved data; older binaries cannot promise to read future formats.
## Reproducible local release workflow
```sh
bun run design:release:plan
bun run design:release:stage
bun run design:release:check
bun run design:release:gate
```
- `plan`: record the current local dependency closure and versions without contacting a registry.
- `stage`: build and integrity-check the 16-package closure under `.publish-design`.
- `check`: verify staged versions and integrity, create npm tarballs, install them into isolated temporary consumers with lifecycle scripts disabled, and test actual installed packages. Report success is set only after all consumer/type/MCP-only checks pass; a new run first clears stale success status.
- `gate`: require the existing full `check:production` workflow before the installed-consumer check. It currently fails on the repository blockers below and cannot be treated as a publication approval.
The staging closure includes engine, Studio, MCP and their actual local framework dependencies. Existing source versions remain: engine/Studio 0.1.0, MCP 0.8.8, with the existing UI/styles/framework versions recorded in `release-plan.json`. The workflow does not guess an unused registry version, authenticate, change access, bump versions or publish. Before an actual release, resolve the full gates, confirm unused versions and target-registry permissions, use the existing version process intentionally, restage and reverify. Restricted access remains the staging default.
Outputs: `output/design-system-phase-7/release-plan.json`, `tarballs.json`, `tarballs/`, `consumer-report.json` and `release-readiness.json`. The integrity manifest is `.publish-design/PACKAGE-INTEGRITY.json`. The readonly readiness report explicitly sets `readyToPublish: false` while blockers remain. Installed-browser QA can retain a disposable consumer using `check --keep-consumer`; the default check cleans up its verified temporary paths.
## Validation
- **311 tests pass, 0 fail**, 50 files, 4,015 assertions and one snapshot across Studio, MCP, engine, compiler, SSR and theme/component design-system suites.
- Focused TypeScript and ESLint pass for changed Studio/engine/MCP code and release scripts. Installed-package declarations also pass a separate TypeScript consumer check.
- Existing staging-integrity probes and workspace repair checks pass. The 16-package candidate stages successfully with JS, declarations, schema, component sources, browser assets and local release guides.
- Real npm tarballs install into a consumer outside the source checkout. Two independent app roots adopt the same pin and generate the same applied revision without changing their existing configuration.
- Installed-consumer checks exercise reviewed upgrades, unfinished-draft reload, locks/history/undo/redo, browser-safe root and upgrade bundling, the source-free prebuilt Studio client, real composed and agent component previews, all preset compilation, installed Studio CLI startup and MCP stdio.
- Native browser QA against the installed Studio binary confirmed the prebuilt client, Soft component styling (16 px radius and green brand color), three guided alternatives and draft/alternative recovery after reload. Evidence: `output/design-system-phase-7/installed-studio.jpg`. The disposable installed demo is available on loopback port 4327.
- A separate installation containing only MCP proves the default eight tools work without Studio and explicit design calls return an actionable missing-peer error.
- API baseline additions are limited to the new engine package, Studio upgrade and styles theme subpaths. Existing unrelated baseline drift is left for review.
## Gates recorded at initial handoff
Historical record: the repository-wide failures below were subsequently cleared by the linked clearance report. Registry/version verification remains deferred until an authorized publication. At the initial handoff, these failures were not blanket-accepted:
- Repository TypeScript errors in CLI configuration, CSR/dev-server tests and UI canvas tests. The changed package/release scope passes its focused check.
- Public API drift in auth, block-editor, blocks, CLI, core, dnd, email-renderer, payment, syntax, UI and viewer.
- UI visual hashes for `packages/ui/styles/SelectStyles.wrn` and `packages/ui/ui.css`.
- Registry version availability, release access and publication have not been checked or exercised.
See the machine-readable readiness report for exact affected files. Passing local packaging checks does not erase these repository-wide gates. No source outside the packaging/design scope was repaired or its baseline accepted implicitly.
@@ -0,0 +1,48 @@
# Release blocker clearance
Date: 2026-10-19. Scope: clear repository checks and reverify the local design release candidate. Publication is explicitly held at the user's request. No packages, access changes or deployments were published.
## Corrections
- The CLI now checks that the optional auth plugin configuration exists before reading it. Auth initialization behavior and the public app configuration remain unchanged.
- Tests use the simulated browser's button types and explicit event constructors rather than mixing happy-dom and native DOM declarations. The Bun-specific WebSocket options are typed at their runtime boundary. The public `mountHtml().window` API remains unchanged.
- The generated-type check resolves the example's real installed dependencies through an isolated scratch junction. Generated route types were refreshed for the existing file-preview/file-viewer routes.
- Lint findings were corrected without disabling source rules: cleanup still preserves the original error, event callbacks have explicit signatures, conditional assignments are explicit, and unused locals/imports were removed. Files identified by the formatter were normalized. Local authoring output, isolated package stages and scratch tooling are excluded from source lint/format checks.
- Package version audits now validate independent stable semantic versions. The framework and editor still retain their existing 0.8 release-line checks; independently versioned 0.1 packages are no longer rejected. Negative probes cover malformed versions. No package versions were bumped.
- Reactive runtime repetition was factored into seven private native-DOM helpers and eleven shared literals, outside extracted controller sections. Production minified size fell from **56,617 to 54,958 bytes**. The **55,000-byte budget was not increased**, and controller/nav/realtime budgets remain unchanged. All 169 CSR tests pass.
- The showcase generator was rerun for the actual 104-component reference. The old manifest covered only 102 entries; the regenerated catalog contains 86 component detail pages, 14 blocks and four deliberately excluded page templates. Generated WRN blank lines no longer introduce trailing whitespace.
- Editor compiler, language-server and extension bundles were rebuilt from current sources and verified under Node.
## API review
The baseline differences are additive: **no previously recorded export name was removed**. Existing package entry points remain available. The following groups were inspected against their source entry points before acceptance; full type checking and the package suites then exercised the current implementation.
| Package | Reviewed additions |
| -------------- | ------------------------------------------------------------------------------------ |
| auth | Verification-session helpers, explicit runtime configuration and SQL store options |
| block-editor | Editor state/runtime, canvas, kit, source editor and recovery helpers |
| blocks | Schema, registry, documents, commands, clipboard, variables and rendering APIs |
| CLI | Explicit production connection overrides |
| core | Request-local control-template registry helpers |
| dnd | Manager/lifecycle, locations, announcements and reorder APIs |
| email-renderer | Blocks, previews, styles, presets, MJML validation and rendering |
| payment | Explicit configuration/API helpers and Razorpay signature verification |
| syntax | Interpolation extraction and segment types |
| UI | Navigation types and explicit chart/drawflow runtime/plugin subpaths |
| viewer | Renderers, source resolution, safe parsing, optional formats, uploads and conversion |
`check:public-api` now matches all 58 packages. The name inventory complements the type and behavior checks; no export removal was accepted to make the check pass.
## Visual review
Only the two outstanding hashes were accepted: `packages/ui/styles/SelectStyles.wrn` and `packages/ui/ui.css`. Review covered token-backed input/dropdown surfaces, radius, focus-visible treatment, selected states and native/control boundaries. No visual source was rewritten merely to satisfy a hash.
The focused Select/design-system suites pass 18 tests and 2,388 assertions. Native browser inspection confirmed Soft dark selects use the system's 16 px radius and token colors, Angular light uses sharp corners, and Square selection, switch hydration, modal opening, focus and dismissal work with the optimized runtime. Screenshots are in `output/release-blocker-clearance/`.
## Validation and release hold
The current validation record is `output/release-blocker-clearance/report.json`; the Phase 7 readiness report links back to it. **The final combined `bun run check:production` run and the rebuilt installed-package consumers both completed with exit code 0. Repository release blockers are cleared.** Publication remains on hold.
Completed verification includes the complete package suite (2,561 pass, one existing live PG/MySQL test skipped without connection URLs), 62 example tests, 14 service tests, 64 editor tests, workspace repair probes, independent-version negative probes, package integrity probes and source formatting. The 16-package candidate was rebuilt and reinstalled into isolated consumers: shared pins, two applications, draft recovery and upgrades, installed declarations, prebuilt Studio/CLI, real component previews, MCP stdio and MCP-only installation all pass.
No registry authentication, version availability or publication was attempted. Before an actual publish, verify the target registry and unused versions through the established release process. This task does not grant publication authorization. Existing application configuration, browser storage keys, invalid draft recovery and agent history remain intact.
+529 -4
View File
@@ -137,8 +137,10 @@
"RegisterInput",
"RiskPolicy",
"SqlAuthStore",
"SqlAuthStoreOptions",
"TotpCredential",
"TrustedDevice",
"VERIFICATION_SESSION_COOKIE",
"assertPasskeyProvider",
"authBrowserSchemaDescriptors",
"authBrowserSchemaMap",
@@ -156,6 +158,8 @@
"changePasswordSchema",
"clearAuthSession",
"clearDefaultAuthEngine",
"clearVerificationSession",
"configureAuthRuntime",
"createAuthEngine",
"createAuthHttpHandlers",
"createAuthSecretProtector",
@@ -172,6 +176,7 @@
"getDefaultAuthEngine",
"getDefaultAuthRouteOptions",
"getDefaultAuthSchemas",
"getVerificationUser",
"hasDefaultAuthEngine",
"impersonationStartSchema",
"inferIdentityType",
@@ -209,6 +214,7 @@
"setDefaultAuthRouteOptions",
"setDefaultAuthSchemas",
"signUpSchema",
"startVerificationSession",
"totpUri",
"tryGetDefaultAuthEngine",
"validateProductionAuthConfig",
@@ -261,6 +267,7 @@
"AuthRoutesConfig",
"authComponentsDir",
"authPlugin",
"configureAuthRuntime",
"default",
"validateProductionAuthConfig"
],
@@ -335,6 +342,7 @@
"SqlAuthStore",
"TotpCredential",
"TrustedDevice",
"VERIFICATION_SESSION_COOKIE",
"authBrowserSchemaDescriptors",
"authBrowserSchemaMap",
"authSchemas",
@@ -345,6 +353,7 @@
"changePasswordSchema",
"clearAuthSession",
"clearDefaultAuthEngine",
"clearVerificationSession",
"createAuthEngine",
"createAuthHttpHandlers",
"createAuthSecretProtector",
@@ -355,6 +364,7 @@
"getDefaultAuthEngine",
"getDefaultAuthRouteOptions",
"getDefaultAuthSchemas",
"getVerificationUser",
"hasDefaultAuthEngine",
"impersonationStartSchema",
"inferIdentityType",
@@ -390,6 +400,7 @@
"setDefaultAuthRouteOptions",
"setDefaultAuthSchemas",
"signUpSchema",
"startVerificationSession",
"tryGetDefaultAuthEngine",
"verificationRequestSchema",
"verificationTokenSchema"
@@ -401,7 +412,8 @@
"MemoryAuthStore"
],
"./stores/sql": [
"SqlAuthStore"
"SqlAuthStore",
"SqlAuthStoreOptions"
],
"./totp": [
"TotpOptions",
@@ -569,6 +581,103 @@
"runBenchmark"
]
},
"@wrnexus/block-editor": {
".": [
"BlockEditorState",
"BuilderCreateContext",
"BuilderPreset",
"EditorSnapshot",
"InspectorDrafts",
"InspectorValues",
"MountEditorOptions",
"MountedEditor",
"builderDragAnnouncement",
"builderOutlineLabel",
"builderPreviewHTML",
"createBlockEditorState",
"createBuilderKit",
"editBuilderText",
"mountBlockCanvas",
"mountBlockEditor",
"mountBuilderSourceEditor",
"mountUnsavedChangesGuard",
"offerBuilderDownload",
"setBuilderPreview",
"showBuilderBlockActions",
"showImageFallbacks",
"updateBuilderCanvas"
],
"./runtime": [
"MountEditorOptions",
"MountedEditor",
"mountBlockEditor"
],
"./source-editor": [
"mountBuilderSourceEditor"
]
},
"@wrnexus/blocks": {
".": [
"BLOCK_CLIPBOARD_MIME",
"BlockCapability",
"BlockClipboardEnvelope",
"BlockCommand",
"BlockDefinition",
"BlockDocument",
"BlockLocation",
"BlockManifest",
"BlockNode",
"BlockRegistry",
"BlockRenderContext",
"BlockRenderer",
"BlockStyles",
"CommandResult",
"DEFAULT_LIMITS",
"Diagnostic",
"DocumentKindDefinition",
"DocumentLimits",
"DocumentTheme",
"InspectorControl",
"JsonObject",
"JsonPrimitive",
"JsonValue",
"LocalizedLabel",
"MoveIntent",
"ReadonlyBlockRegistry",
"RenderContext",
"RenderOutput",
"ResponsiveValue",
"Result",
"SelectionState",
"Severity",
"SlotDefinition",
"ValueSchema",
"VariableToken",
"applyCommand",
"boolean",
"choice",
"createRegistry",
"decodeClipboard",
"defineBlock",
"defineDocumentKind",
"duplicateNodes",
"encodeClipboard",
"escapeHtml",
"findBlock",
"json",
"number",
"object",
"record",
"registryForKind",
"renderTree",
"resolveDocumentVariables",
"safeUrl",
"string",
"validateDocument",
"variableTokens",
"walkBlocks"
]
},
"@wrnexus/cache": {
".": [
"CacheCoordinator",
@@ -968,6 +1077,9 @@
},
"@wrnexus/cli": {
".": [],
"./runtime-connections": [
"productionConnections"
],
"./test-setup": [],
"./workspace": [
"ResolvedWorkspaceApp",
@@ -1262,6 +1374,7 @@
"defineLoader",
"defineRoom",
"durationMs",
"encodeControlTemplate",
"escapeHtml",
"etag",
"executionContextFromHttp",
@@ -1289,6 +1402,7 @@
"randomUploadFilename",
"rateLimit",
"recommendedWebBudgets",
"renderControlTemplates",
"renderDevError",
"renderError",
"renderNotFound",
@@ -1300,6 +1414,7 @@
"requireRequestContext",
"requireTenant",
"resilientCall",
"resolveControlTemplate",
"resolveRequestUrl",
"runWithRequestContext",
"sanitizeFilename",
@@ -1494,6 +1609,103 @@
"sqlite"
]
},
"@wrnexus/design-studio": {
".": [
"DEFAULT_DESIGN_BRIEF",
"DecisionLock",
"DesignBrief",
"DesignProposal",
"FoundationGroup",
"GenerationBatch",
"GenerationProvider",
"GenerationRequest",
"ImportReport",
"StudioRevision",
"StudioSession",
"StudioStorage",
"applyDesignPatch",
"checkDecisionLocks",
"combineDesignProposals",
"designRevision",
"diffDesign",
"exportDesign",
"foundationDecisions",
"generateDesigns",
"importDesign",
"pointerPart",
"reviewDesign"
],
"./agent-context": [
"AGENT_CONTEXT_VERSION",
"agentGenerationContext"
],
"./agent-pages": [
"AgentPage",
"agentPageSource",
"checkAgentPage",
"validateAgentPage"
],
"./agents": [
"DesignAgentService"
],
"./conformance": [
"ConformanceDiagnostic",
"ConformanceException",
"checkDesignConformance"
],
"./server": [
"createStudioHandler"
],
"./upgrades": [
"applyDesignUpgrade",
"planDesignUpgrade"
]
},
"@wrnexus/design-system": {
".": [
"ANGULAR_DESIGN_SYSTEM",
"CATALOG_COMPONENT_CONTRACTS",
"COMPONENT_CONTRACTS",
"CORE_COMPONENT_CONTRACTS",
"CORE_DESIGN_SYSTEMS",
"ComponentDesignContract",
"ComponentRecipe",
"DESIGN_SYSTEM_SCHEMA_VERSION",
"DesignDiagnostic",
"DesignSystem",
"DesignSystemError",
"DesignSystemInput",
"DesignToken",
"LegacyTheme",
"RecipeParts",
"RecipeRule",
"RecipeStateRule",
"RecipeStyles",
"RecipeValue",
"ResolveOptions",
"ResolvedDesignSystem",
"ResolvedToken",
"SOFT_DESIGN_SYSTEM",
"SQUARE_DESIGN_SYSTEM",
"TOKEN_TYPES",
"TokenMap",
"TokenReference",
"TokenType",
"adaptLegacyTheme",
"assertDesignSystem",
"compileDesignSystem",
"componentDesignContract",
"defineDesignSystem",
"resolveDesignSystem",
"validateDesignSystem"
],
"./package": [
"DESIGN_PACKAGE_VERSION",
"DesignPackage",
"createDesignPackage",
"readDesignPackage"
]
},
"@wrnexus/dev-server": {
".": [
"AssetServer",
@@ -1657,6 +1869,95 @@
"DevToolbarSourceLocation"
]
},
"@wrnexus/dnd": {
".": [
"Direction",
"DndAnnouncement",
"DndId",
"DndManager",
"DndManagerOptions",
"DndMoveIntent",
"DropZoneRegistration",
"Orientation",
"SortableLocation",
"SortableRegistration",
"createDndManager",
"deepestValidTarget",
"reorderGroups",
"visualIndex"
]
},
"@wrnexus/email-renderer": {
".": [
"EmailRenderBundle",
"MjmlDiagnostic",
"ValidationReport",
"ampLayoutClass",
"ampLayoutCss",
"buttonBlock",
"columnBlock",
"columnsBlock",
"countdownBlock",
"countdownLabel",
"dividerBlock",
"emailCoreBlocks",
"emailDocumentBlock",
"emailKind",
"feedItemBlock",
"headingBlock",
"imageBlock",
"importMjml",
"productBlock",
"renderCountdownGif",
"renderEmail",
"sectionBlock",
"socialBlock",
"spacerBlock",
"surveyBlock",
"textBlock",
"validateAmpEmail",
"validateMjml",
"videoBlock"
],
"./blocks": [
"ampLayoutClass",
"ampLayoutCss",
"buttonBlock",
"columnBlock",
"columnsBlock",
"countdownBlock",
"dividerBlock",
"emailCoreBlocks",
"emailDocumentBlock",
"feedItemBlock",
"headingBlock",
"imageBlock",
"productBlock",
"sectionBlock",
"socialBlock",
"spacerBlock",
"surveyBlock",
"textBlock",
"videoBlock"
],
"./browser": [
"emailHtmlHead",
"emailKind",
"renderEmailPreview"
],
"./create": [
"createEmailBlock",
"emailEditorBlocks"
],
"./presets": [
"createSectionPreset",
"emailPresets"
],
"./style-values": [
"emailStyleValue",
"validateEmailStyleValue"
]
},
"@wrnexus/encryption": {
".": [
"DecryptedHttpBody",
@@ -2183,6 +2484,7 @@
},
"@wrnexus/payment": {
".": [
"ConfiguredPaymentGateway",
"CreateIntentInput",
"CustomerInput",
"GatewayCapabilities",
@@ -2195,6 +2497,10 @@
"InitializePaymentInput",
"Money",
"PayPalConfig",
"PaymentApiAction",
"PaymentApiConfig",
"PaymentApiContext",
"PaymentConfig",
"PaymentEvent",
"PaymentGateway",
"PaymentIntent",
@@ -2205,29 +2511,41 @@
"PaymentService",
"PaymentStatus",
"PaymentStore",
"RazorpayCheckoutResult",
"RazorpayConfig",
"RefundInput",
"SandboxOptions",
"StripeConfig",
"WebhookEvent",
"configurePayment",
"configurePaymentApi",
"configurePaymentFromConfig",
"databasePaymentStore",
"defineGateway",
"definePayment",
"derivePaymentStatus",
"ensureOwnedPayment",
"exerciseGatewayContract",
"getPaymentApiConfig",
"getPaymentService",
"memoryPaymentStore",
"paymentApiAllowed",
"paymentApiSubject",
"paymentOptionsFromConfig",
"paymentPlugin",
"paypalGateway",
"publicPayment",
"razorpayGateway",
"sandboxGateway",
"signSandboxWebhook",
"stripeGateway",
"verifyGatewayContract"
"validatePaymentConfig",
"verifyGatewayContract",
"verifyRazorpayCheckoutSignature"
],
"./adapters": [
"PayPalConfig",
"RazorpayCheckoutResult",
"RazorpayConfig",
"SandboxOptions",
"StripeConfig",
@@ -2235,12 +2553,17 @@
"razorpayGateway",
"sandboxGateway",
"signSandboxWebhook",
"stripeGateway"
"stripeGateway",
"verifyRazorpayCheckoutSignature"
],
"./plugin": [
"default",
"paymentPlugin"
],
"./runtime-api": [
"GET",
"POST"
],
"./runtime-webhook": [
"POST"
]
@@ -2928,6 +3251,39 @@
"tailwindSourceDirectives",
"themeVar",
"validateAppConfig"
],
"./theme": [
"ACCENT_COOKIE",
"BrowserCookieApi",
"BrowserCookieOptions",
"BrowserCookiePreference",
"BrowserCookiesConfig",
"CustomThemePalette",
"DEFAULT_THEMES",
"ResolvedTheme",
"THEME_COOKIE",
"THEME_CSS_HREF",
"THEME_CSS_PREFIX",
"THEME_JS_HREF",
"THEME_PALETTES",
"THEME_PALETTE_NAMES",
"ThemeAccentConfig",
"ThemeConfig",
"ThemeCookieConfig",
"ThemePaletteName",
"ThemeSemanticColor",
"ThemeToken",
"ThemeTokens",
"activeThemeCssHref",
"defineThemeTokens",
"renderActiveThemeCss",
"renderThemeCss",
"renderThemeRuntime",
"resolveAccentName",
"resolveBrowserCookieOptions",
"resolveThemeConfig",
"resolveThemeName",
"themeVar"
]
},
"@wrnexus/syntax": {
@@ -2944,6 +3300,7 @@
"FormatWrnOptions",
"FunctionParameterDecl",
"FunctionRuntime",
"InterpolationSegment",
"LexError",
"Lexer",
"LifecycleBlock",
@@ -2992,6 +3349,7 @@
"diagnosticFromError",
"diagnosticSummary",
"eraseFunctionTypes",
"extractInterpolations",
"formatDiagnostic",
"formatWrn",
"inferredRuntimeType",
@@ -3174,7 +3532,58 @@
]
},
"@wrnexus/ui": {
".": [],
".": [
"MegaMenuColumn",
"MegaMenuDensity",
"MegaMenuFeatured",
"MegaMenuPanelAlign",
"MegaMenuPanelWidth",
"MegaMenuRailItem",
"MegaMenuVariant",
"NavbarAction",
"NavbarBrand",
"NavbarDropdownGroup",
"NavbarDropdownItem",
"NavbarItem",
"NavbarItemType",
"NavbarLinkItem",
"NavbarMegaMenuData",
"NavbarMegaMenuItem",
"NavigationLink"
],
"./chart-runtime": [
"startChartRuntime"
],
"./design-contracts": [
"CATALOG_COMPONENT_CONTRACTS",
"COMPONENT_CONTRACTS",
"CORE_COMPONENT_CONTRACTS",
"ComponentDesignContract",
"componentDesignContract"
],
"./drawflow-plugin": [
"drawflowPlugin"
],
"./drawflow-runtime": [],
"./navigation": [
"MegaMenuColumn",
"MegaMenuDensity",
"MegaMenuFeatured",
"MegaMenuPanelAlign",
"MegaMenuPanelWidth",
"MegaMenuRailItem",
"MegaMenuVariant",
"NavbarAction",
"NavbarBrand",
"NavbarDropdownGroup",
"NavbarDropdownItem",
"NavbarItem",
"NavbarItemType",
"NavbarLinkItem",
"NavbarMegaMenuData",
"NavbarMegaMenuItem",
"NavigationLink"
],
"./registry": [
"UiComponentMetadata",
"UiComponentReference",
@@ -3335,6 +3744,122 @@
"validationComponentsDir",
"validationPlugin"
]
},
"@wrnexus/viewer": {
".": [
"ArchiveEntry",
"DelimitedTable",
"ICONS",
"OpenViewerOptions",
"OpenedViewer",
"Renderer",
"RendererRegistry",
"ResolveOptions",
"SvgSanitizerView",
"ViewerAction",
"ViewerActionContext",
"ViewerKind",
"ViewerMount",
"ViewerMountContext",
"ViewerPlan",
"ViewerSource",
"canPrint",
"clearViewerActions",
"convertUrl",
"converterFormats",
"detectDelimiter",
"extensionOf",
"extensions",
"extractText",
"gunzip",
"gzipName",
"icon",
"iconFor",
"isTar",
"kindOfExtension",
"kindOfMime",
"openViewer",
"parseDelimited",
"parseTar",
"printViewer",
"registerRenderer",
"registerViewerAction",
"requireConverter",
"resolve",
"sanitizeHtml",
"sanitizeSvg",
"sniff",
"sourceFromTrigger",
"startViewerTriggers",
"viewerActions"
],
"./code-editor": [
"mountBuilderSourceEditor"
],
"./convert": [
"ConversionOptions",
"ConvertMeta",
"ConvertOperation",
"ConvertOutput",
"LocalConverterOptions",
"ResolvedSource",
"SourceResolver",
"ViewerConverter",
"configureConversion",
"conversionConfig",
"firstOf",
"handleCapabilities",
"handleConvert",
"localBinaryConverter",
"sameOriginSource"
],
"./optional/docx": [
"docxToHtml"
],
"./optional/office": [
"OfficeDocument",
"OfficeSheets",
"OfficeSlides",
"OfficeText",
"Slide",
"readOdf",
"readPptx"
],
"./optional/pdf": [
"RichPdfOptions",
"RichPdfResult",
"renderPdf"
],
"./optional/sheet": [
"SheetData",
"readWorkbook"
],
"./optional/zip": [
"ZipEntry",
"listZip"
],
"./plugin": [
"ViewerPluginOptions",
"default",
"viewerPlugin"
],
"./renderers/pdf-rich": [
"richPdfRenderer"
],
"./runtime": [
"MountViewerOptions",
"mountViewer",
"startViewerRuntime"
],
"./uploader": [
"FILE_ROUTE",
"ViewerUploadsOptions",
"configureUploads",
"handleFile",
"handleSource",
"uploadedConversionSource",
"uploadsConfig"
]
}
}
}
+466
View File
@@ -0,0 +1,466 @@
[
{
"dir": "ai",
"file": "packages/ai/package.json",
"name": "@wrnexus/ai",
"current": "0.8.9",
"version": "0.8.10",
"registryLatest": "0.8.9"
},
{
"dir": "auth",
"file": "packages/auth/package.json",
"name": "@wrnexus/auth",
"current": "0.8.35",
"version": "0.8.36",
"registryLatest": "0.8.35"
},
{
"dir": "authz",
"file": "packages/authz/package.json",
"name": "@wrnexus/authz",
"current": "0.8.15",
"version": "0.8.16",
"registryLatest": "0.8.15"
},
{
"dir": "benchmark",
"file": "packages/benchmark/package.json",
"name": "@wrnexus/benchmark",
"current": "0.8.8",
"version": "0.8.9",
"registryLatest": "0.8.8"
},
{
"dir": "block-editor",
"file": "packages/block-editor/package.json",
"name": "@wrnexus/block-editor",
"current": "0.1.20",
"version": "0.1.21",
"registryLatest": "0.1.20"
},
{
"dir": "blocks",
"file": "packages/blocks/package.json",
"name": "@wrnexus/blocks",
"current": "0.1.3",
"version": "0.1.4",
"registryLatest": "0.1.3"
},
{
"dir": "cache",
"file": "packages/cache/package.json",
"name": "@wrnexus/cache",
"current": "0.8.8",
"version": "0.8.9",
"registryLatest": "0.8.8"
},
{
"dir": "captcha",
"file": "packages/captcha/package.json",
"name": "@wrnexus/captcha",
"current": "0.8.18",
"version": "0.8.19",
"registryLatest": "0.8.18"
},
{
"dir": "cli",
"file": "packages/cli/package.json",
"name": "@wrnexus/cli",
"current": "0.8.76",
"version": "0.8.77",
"registryLatest": "0.8.76"
},
{
"dir": "compiler",
"file": "packages/compiler/package.json",
"name": "@wrnexus/compiler",
"current": "0.8.43",
"version": "0.8.44",
"registryLatest": "0.8.43"
},
{
"dir": "content",
"file": "packages/content/package.json",
"name": "@wrnexus/content",
"current": "0.8.9",
"version": "0.8.10",
"registryLatest": "0.8.9"
},
{
"dir": "core",
"file": "packages/core/package.json",
"name": "@wrnexus/core",
"current": "0.8.24",
"version": "0.8.25",
"registryLatest": "0.8.24"
},
{
"dir": "csr",
"file": "packages/csr/package.json",
"name": "@wrnexus/csr",
"current": "0.8.73",
"version": "0.8.74",
"registryLatest": "0.8.73"
},
{
"dir": "db",
"file": "packages/db/package.json",
"name": "@wrnexus/db",
"current": "0.8.23",
"version": "0.8.24",
"registryLatest": "0.8.23"
},
{
"dir": "design-studio",
"file": "packages/design-studio/package.json",
"name": "@wrnexus/design-studio",
"current": "0.1.0",
"version": "0.1.0",
"registryLatest": null
},
{
"dir": "design-system",
"file": "packages/design-system/package.json",
"name": "@wrnexus/design-system",
"current": "0.1.0",
"version": "0.1.0",
"registryLatest": null
},
{
"dir": "dev-server",
"file": "packages/dev-server/package.json",
"name": "@wrnexus/dev-server",
"current": "0.8.82",
"version": "0.8.83",
"registryLatest": "0.8.82"
},
{
"dir": "dev-toolbar",
"file": "packages/dev-toolbar/package.json",
"name": "@wrnexus/dev-toolbar",
"current": "0.8.18",
"version": "0.8.19",
"registryLatest": "0.8.18"
},
{
"dir": "dnd",
"file": "packages/dnd/package.json",
"name": "@wrnexus/dnd",
"current": "0.1.5",
"version": "0.1.6",
"registryLatest": "0.1.5"
},
{
"dir": "email-renderer",
"file": "packages/email-renderer/package.json",
"name": "@wrnexus/email-renderer",
"current": "0.1.51",
"version": "0.1.52",
"registryLatest": "0.1.51"
},
{
"dir": "encryption",
"file": "packages/encryption/package.json",
"name": "@wrnexus/encryption",
"current": "0.8.10",
"version": "0.8.11",
"registryLatest": "0.8.10"
},
{
"dir": "graphql",
"file": "packages/graphql/package.json",
"name": "@wrnexus/graphql",
"current": "0.8.8",
"version": "0.8.9",
"registryLatest": "0.8.8"
},
{
"dir": "helpers",
"file": "packages/helpers/package.json",
"name": "@wrnexus/helpers",
"current": "0.8.9",
"version": "0.8.10",
"registryLatest": "0.8.9"
},
{
"dir": "i18n",
"file": "packages/i18n/package.json",
"name": "@wrnexus/i18n",
"current": "0.8.12",
"version": "0.8.13",
"registryLatest": "0.8.12"
},
{
"dir": "identity",
"file": "packages/identity/package.json",
"name": "@wrnexus/identity",
"current": "0.8.8",
"version": "0.8.9",
"registryLatest": "0.8.8"
},
{
"dir": "image",
"file": "packages/image/package.json",
"name": "@wrnexus/image",
"current": "0.8.10",
"version": "0.8.11",
"registryLatest": "0.8.10"
},
{
"dir": "jwt",
"file": "packages/jwt/package.json",
"name": "@wrnexus/jwt",
"current": "0.8.9",
"version": "0.8.10",
"registryLatest": "0.8.9"
},
{
"dir": "language-server",
"file": "packages/language-server/package.json",
"name": "@wrnexus/language-server",
"current": "0.8.12",
"version": "0.8.13",
"registryLatest": "0.8.12"
},
{
"dir": "mail",
"file": "packages/mail/package.json",
"name": "@wrnexus/mail",
"current": "0.8.3",
"version": "0.8.4",
"registryLatest": "0.8.3"
},
{
"dir": "mcp",
"file": "packages/mcp/package.json",
"name": "@wrnexus/mcp",
"current": "0.8.8",
"version": "0.8.9",
"registryLatest": "0.8.8"
},
{
"dir": "metering",
"file": "packages/metering/package.json",
"name": "@wrnexus/metering",
"current": "0.8.3",
"version": "0.8.4",
"registryLatest": "0.8.3"
},
{
"dir": "mobile",
"file": "packages/mobile/package.json",
"name": "@wrnexus/mobile",
"current": "0.8.8",
"version": "0.8.9",
"registryLatest": "0.8.8"
},
{
"dir": "native",
"file": "packages/native/package.json",
"name": "@wrnexus/native",
"current": "0.8.8",
"version": "0.8.9",
"registryLatest": "0.8.8"
},
{
"dir": "oauth",
"file": "packages/oauth/package.json",
"name": "@wrnexus/oauth",
"current": "0.8.8",
"version": "0.8.9",
"registryLatest": "0.8.8"
},
{
"dir": "observability",
"file": "packages/observability/package.json",
"name": "@wrnexus/observability",
"current": "0.8.8",
"version": "0.8.9",
"registryLatest": "0.8.8"
},
{
"dir": "payment",
"file": "packages/payment/package.json",
"name": "@wrnexus/payment",
"current": "0.8.12",
"version": "0.8.13",
"registryLatest": "0.8.12"
},
{
"dir": "playground",
"file": "packages/playground/package.json",
"name": "@wrnexus/playground",
"current": "0.8.8",
"version": "0.8.9",
"registryLatest": "0.8.8"
},
{
"dir": "plugin",
"file": "packages/plugin/package.json",
"name": "@wrnexus/plugin",
"current": "0.8.9",
"version": "0.8.10",
"registryLatest": "0.8.9"
},
{
"dir": "pubsub",
"file": "packages/pubsub/package.json",
"name": "@wrnexus/pubsub",
"current": "0.8.9",
"version": "0.8.10",
"registryLatest": "0.8.9"
},
{
"dir": "pwa",
"file": "packages/pwa/package.json",
"name": "@wrnexus/pwa",
"current": "0.8.12",
"version": "0.8.13",
"registryLatest": "0.8.12"
},
{
"dir": "queue",
"file": "packages/queue/package.json",
"name": "@wrnexus/queue",
"current": "0.8.14",
"version": "0.8.15",
"registryLatest": "0.8.14"
},
{
"dir": "react",
"file": "packages/react/package.json",
"name": "@wrnexus/react",
"current": "0.8.9",
"version": "0.8.10",
"registryLatest": "0.8.9"
},
{
"dir": "reactive",
"file": "packages/reactive/package.json",
"name": "@wrnexus/reactive",
"current": "0.8.9",
"version": "0.8.10",
"registryLatest": "0.8.9"
},
{
"dir": "realtime",
"file": "packages/realtime/package.json",
"name": "@wrnexus/realtime",
"current": "0.8.10",
"version": "0.8.11",
"registryLatest": "0.8.10"
},
{
"dir": "router",
"file": "packages/router/package.json",
"name": "@wrnexus/router",
"current": "0.8.10",
"version": "0.8.11",
"registryLatest": "0.8.10"
},
{
"dir": "rpc",
"file": "packages/rpc/package.json",
"name": "@wrnexus/rpc",
"current": "0.8.10",
"version": "0.8.11",
"registryLatest": "0.8.10"
},
{
"dir": "security",
"file": "packages/security/package.json",
"name": "@wrnexus/security",
"current": "0.8.9",
"version": "0.8.10",
"registryLatest": "0.8.9"
},
{
"dir": "ssr",
"file": "packages/ssr/package.json",
"name": "@wrnexus/ssr",
"current": "0.8.19",
"version": "0.8.20",
"registryLatest": "0.8.19"
},
{
"dir": "store",
"file": "packages/store/package.json",
"name": "@wrnexus/store",
"current": "0.8.12",
"version": "0.8.13",
"registryLatest": "0.8.12"
},
{
"dir": "styles",
"file": "packages/styles/package.json",
"name": "@wrnexus/styles",
"current": "0.8.26",
"version": "0.8.27",
"registryLatest": "0.8.26"
},
{
"dir": "syntax",
"file": "packages/syntax/package.json",
"name": "@wrnexus/syntax",
"current": "0.8.19",
"version": "0.8.20",
"registryLatest": "0.8.19"
},
{
"dir": "test",
"file": "packages/test/package.json",
"name": "@wrnexus/test",
"current": "0.8.17",
"version": "0.8.18",
"registryLatest": "0.8.17"
},
{
"dir": "tracking",
"file": "packages/tracking/package.json",
"name": "@wrnexus/tracking",
"current": "0.8.8",
"version": "0.8.9",
"registryLatest": "0.8.8"
},
{
"dir": "typecheck",
"file": "packages/typecheck/package.json",
"name": "@wrnexus/typecheck",
"current": "0.8.17",
"version": "0.8.18",
"registryLatest": "0.8.17"
},
{
"dir": "ui",
"file": "packages/ui/package.json",
"name": "@wrnexus/ui",
"current": "0.8.117",
"version": "0.8.118",
"registryLatest": "0.8.117"
},
{
"dir": "uploader",
"file": "packages/uploader/package.json",
"name": "@wrnexus/uploader",
"current": "0.8.13",
"version": "0.8.14",
"registryLatest": "0.8.13"
},
{
"dir": "validation",
"file": "packages/validation/package.json",
"name": "@wrnexus/validation",
"current": "0.8.13",
"version": "0.8.14",
"registryLatest": "0.8.13"
},
{
"dir": "viewer",
"file": "packages/viewer/package.json",
"name": "@wrnexus/viewer",
"current": "0.8.16",
"version": "0.8.17",
"registryLatest": "0.8.16"
}
]
@@ -0,0 +1,38 @@
# Private release — 2026-10-19
The user authorized committing and pushing all completed framework work,
publishing every package to the WorkRoot private registry, and preparing the
standalone component showcase for VM deployment.
All 58 packages use independent versions. Existing release lines receive the
next unused patch; design-system and design-studio start at 0.1.0. The release
manifest is stored in `docs/releases/2026-10-19-packages.json`. Publication uses
only https://registry.workroot.in/repository/npm/ with restricted access.
The Studio server adds an explicit hosted, export-only integration with a base
path. The default local CLI and handler behavior remains unchanged. Hosted mode
cannot apply designs or run a configured paid provider; previews are ephemeral,
and recoverable drafts remain in browser storage. The standalone showcase adds
VM startup and reverse-proxy instructions for `/design-studio/`.
Validation and publication results will be recorded after completion. Live
PostgreSQL/MySQL tests still require the optional database environment settings.
## Validation
The full `bun run check:production` gate passed after release version changes
and editor bundle regeneration: 2,562 package tests passed, one optional live
database test skipped, plus all example, service and editor checks. Hosted Studio
also passes same-origin, proxy scheme, base-path preview and export-only tests.
All-package staging uses TypeScript 6 declaration options explicitly, including
packages with their own compiler configurations.
The all-package declaration build additionally exposed a missing Bun ambient-type
setting in dev-toolbar; its package tsconfig now explicitly includes Bun types,
and its own typecheck passes. The design release's isolated tarball consumers,
installed declarations, browser bundle and MCP-only installation all pass.
All 58 staged tarballs passed an isolated installation: all 57 non-CLI package
roots import successfully, UI and viewer browser/runtime probes pass, and the
installed CLI starts successfully. The all-package consumer includes React and
React DOM only to exercise the optional adapter, matching its declared peers.
-2
View File
@@ -35,7 +35,6 @@ Validation: 243 UI/showcase tests passed; 201 example pages passed compiler, acc
Phone-width review: all 102 pages fit the viewport at 390px. Fixed inner overflow in password requirements and pagination. Verified light/dark stylesheet switching and saved appearance preferences; added a regression for switching before the theme runtime loads.
## Catalog and interaction update
The catalog now separates 84 primitive components, 14 blocks, and six standalone examples. `/preview` and `/templates` link to working pages with copyable source; the legacy design-system routes and four requested shell components are removed from the showcase. Package exports remain compatible.
@@ -46,7 +45,6 @@ Fixed anchored calendar/time overlays, datetime selection, controlled modal rend
Validation: 380 UI, showcase and CSR tests pass; 211 example pages pass compiler/accessibility/formatter checks; the showcase production build succeeds. Browser checks confirm external modal open/close, anchored calendar, rating selection, list reordering/editor input, right-click menu, table size 25 with matching selected item, gallery routes and sidebar active state. These checks do not cover every optional configuration or external provider integration.
## Follow-up: controls and gallery separation
Added fractional Rating and RangeSlider examples, named Card header/footer slots with visibility controls, custom TimePicker within DatePicker, calendar completion/outside dismissal, implicit switch label association, native search-clear suppression, multi-file names, interactive LegendIndicator, bar/line Chart data props and expanded rich-text formatting. Centered modals use data-modal-close for custom dismissal buttons. Confetti now uses a canvas particle burst with reduced-motion handling.
+106 -104
View File
@@ -2,109 +2,111 @@
"schemaVersion": 1,
"releaseLine": "0.8",
"artifacts": {
"packages/ui/components/Accordion.wrn": "f3480c567498f9a26a3441f4e96f47034b80422062fe8484b9957286f4a2fec1",
"packages/ui/components/AdvancedSelect.wrn": "ab75393f1f21654da43004267cd039e51a92aac0dd8bdf7a970f8b7830159ce9",
"packages/ui/components/AnnouncementBar.wrn": "ecf85f5a050ef1afa193d85aa6acdb31638e48191594ddcc4f51cad4a77935dd",
"packages/ui/components/AuthForm.wrn": "9e65faa7780d75abae2f1fe4a2333f4134840bca6c66b7411979d770f9050bc2",
"packages/ui/components/AuthSplitLayout.wrn": "f29a8f374007b7342d6946d7c57e631abb9730f4d952942606b9b1cf67612c38",
"packages/ui/components/AvatarGroup.wrn": "96a3ac42b72854449a89fcb87e62c616f78315d630ed9fa5da1e61db4c2a13ce",
"packages/ui/components/BackToTop.wrn": "d4b8d1fd37ff26c89b4276ce54ce6ac9581dc2ff8bbcbe160e072778bba76eab",
"packages/ui/components/Blockquote.wrn": "bc1ce41a5986a563072639e7f641d55b47816a8ec615169fe329c7a3ee24a16e",
"packages/ui/components/Breadcrumb.wrn": "2f1a48a0b3fe1d5e8c36ee5929a034cb6ed4c4f6fb7031085829f20c4aac008e",
"packages/ui/components/ButtonGroup.wrn": "b841e02296f90e86ffea6573a6f3824d04b51cc8e5e822c7a29fcc0661e6fca2",
"packages/ui/components/CTASection.wrn": "f6872b980432d5ee9d88388250be9838ccce51bd706349b283ef472ee692b237",
"packages/ui/components/Card.wrn": "08849755d68b067e8b14275d97a65cd93a74932ca1c8f0daa4e042cdf049e471",
"packages/ui/components/Carousel.wrn": "f3f2d70709fb25185ac6546ea5b6d394362bd2e0623e1462c439fba9a25e5f37",
"packages/ui/components/Chart.wrn": "80ef5b8e0e79ad494b3d21aedf36e01bffe9a50e4f43c0bd5af083efc11a5cab",
"packages/ui/components/ChatBubble.wrn": "d71f7d6567d76ac0eb3ecc8e2e567fec12bb3236ea05f4d0a72286abc0b7cbb1",
"packages/ui/components/Clipboard.wrn": "3de4c3d6e94472651fe241ae20f0e37f2cd6d82b3bbae86ba155d8a3ba1b955e",
"packages/ui/components/Collapse.wrn": "26df087a61c82f1aa1749785f4c9be654c4f934859c1a47acfcb8cc67eecc75d",
"packages/ui/components/ColorPicker.wrn": "bc55991a3d98d2018a0c9c125f399d519a7240d7a3c769460500b70ca7f6bf3a",
"packages/ui/components/Columns.wrn": "8ccd9e53f6799b09f8b996740d12e4e73ee782f6fd3e57595c6c16f788b9b812",
"packages/ui/components/Combobox.wrn": "e6f2ecf84213e3c4343154a3d1b7a9bc46ec5121855cb9fe65b105edd73c261d",
"packages/ui/components/Confetti.wrn": "0d3c36e77ac49f23bc02bfc8f338a034348c174e25bbc6a34f70310ccabee7b9",
"packages/ui/components/Container.wrn": "61c895a9cc0e02d314392e94226bddfae2b8fad074e30a68ba935e6ec9549ea6",
"packages/ui/components/ContextMenu.wrn": "0c505787136a608097ba996b0c5e1be45b20be136a00611ec720a5d2c728c91c",
"packages/ui/components/CustomScrollbar.wrn": "2a3a2719580c21823d079c92ebb000c7a5a7d9d16e3fa9275b8fb7d4449cb437",
"packages/ui/components/DataMap.wrn": "cb6da3ab064ea62ef14a30af42344ca1bb1dd816fec7aea520cbe47133f539ff",
"packages/ui/components/DataTable.wrn": "eceac58d7f007066108016cbc196faf381d5a84e4f5f23d2feda217182996248",
"packages/ui/components/DatePicker.wrn": "07b2685e311eb8211f81a99a28553783d19b1cd99e4cec591fe4f4953ac3fe6b",
"packages/ui/components/DeviceFrame.wrn": "c38d25419ee44b05d7c443cc4e854aeeb7a53a9289e374d71834de2dd2e4d979",
"packages/ui/components/Divider.wrn": "f806d899bfd2d0b6e40aa226919101002704ddbddf0ee0b5b6a56c2452693660",
"packages/ui/components/DragAndDrop.wrn": "86382288ca2bccd8aa853490186fcf3b07e7850587fd0fe5829fd40590b82cc3",
"packages/ui/components/Drawer.wrn": "d11c11631b5a6779df1db987dd2da9125202237e5f378d6645dd260809f80cb6",
"packages/ui/components/Dropdown.wrn": "4649fa306fe4cd6ced3a8a3b7d46e2d835d7cae0335ee8fce0632ff87fc548c9",
"packages/ui/components/FeatureCard.wrn": "39d89caab070b2b9ecb554ec6d83aad90aeb5b0daa8ab7c8b2f3c7f9e3350077",
"packages/ui/components/FeatureGrid.wrn": "af2ff8f8c806091cb5cff3d93c7b121b73a6580ac5c9be3ab357355a09084096",
"packages/ui/components/FeatureIconCard.wrn": "5f65d64235babc3e653a5695204412202015e6f3ffadca566fc18c7f9ce70428",
"packages/ui/components/FileInput.wrn": "3071a9231ce3c42555a30ad246841bc5d3a00b2a5475b403ecd5b33130ebadf5",
"packages/ui/components/FileUploadProgress.wrn": "645b0c4ce031fdbd70e8534d95d1b8d46fff9f67f5d90d2a7c125a6c656b3584",
"packages/ui/components/Footer.wrn": "4df610f3f57950b43738c305e8100464326e094140013673d723f3454297f1da",
"packages/ui/components/Grid.wrn": "83d4f5f2656d539538723f5791ba3c238901432e9d8c55c74f068d3eb5a74517",
"packages/ui/components/Hero.wrn": "d0311f566a1ffdfb97a8b05c58bce738e3147fe5a3208cb2ef6968e6e178e8d1",
"packages/ui/components/HeroActions.wrn": "67cd31400ccb6abdbbf16219267dee946b44b064b79f25276d20ceb7d6e8a790",
"packages/ui/components/Image.wrn": "361179c478d7674c3b998891a366d73de9514fc6cc8786440c6c50b9ef065357",
"packages/ui/components/InputGroup.wrn": "a0f570a350b32ffbe9bbeb81a32afab2966ccc5232b3affed4cba2f2a1e7b05e",
"packages/ui/components/InputNumber.wrn": "069195cc483f3f7d6f305d03fbe5a821906a030376fafb6f0d969e4c95b68fd0",
"packages/ui/components/Kbd.wrn": "6b402cb93f0fa76bb978d1ba483215f70ec7214b1c5e84b568fa3e26e87ed9d9",
"packages/ui/components/LayoutSplitter.wrn": "41d070e801a271552023e4392e4c0f67327c61e2e8eaee5f8b87af254b1d79c1",
"packages/ui/components/LegendIndicator.wrn": "b01886495cd54be2c3e8ffbe99cfd5d12b4e0e35f5e4134041d45f4ed6057ff8",
"packages/ui/components/Link.wrn": "13f9d6b403440f4b3c3a9ce4dbefa0d5570eb30ff93f498e49f18baab3e08c1d",
"packages/ui/components/List.wrn": "5bd7d0b12b2f7dbf730db4030c6e20c6617b0933c1341428bbd6bcdab9ab6073",
"packages/ui/components/ListGroup.wrn": "dd52c1f564b8ef3293269b3aab15b72ca737c8ce9866d0070574ca5469aae82d",
"packages/ui/components/Map.wrn": "f09651baad892640a8d822c7f13541311b3de7f6259252bfacf937580fab3a44",
"packages/ui/components/MarketingSectionHeader.wrn": "39b79499b77dc1c7d34e4e5ecb45a9ddc6182f78c2a2586671c4fa07f44679ad",
"packages/ui/components/Marquee.wrn": "81cd80732be34c8d7e4bf28b00347e1a9273166afdf66589d9f5d5774b69403b",
"packages/ui/components/MegaMenu.wrn": "3f37ee6b7c0d14bf550e8c828f1902be86969969354307efe5b61c1d727ce942",
"packages/ui/components/MetricCard.wrn": "f195a9413591000f0ce9265f58cb45ae7a67ac08134213cfae7ffe75d53bab6a",
"packages/ui/components/MetricGrid.wrn": "1fcebf51dcbe8520fe16bda904c1ef206c25c3900438d53877492c64ea21a1a5",
"packages/ui/components/Modal.wrn": "ddd560010581fb63f6dd8f51ddde9e8e7a5adb781b743c06eae28ac557f662d3",
"packages/ui/components/Nav.wrn": "c45b0ecb42250f4b3ede33c8932a025f789dda9ef48dbf332459ae458163e69a",
"packages/ui/components/Navbar.wrn": "c9c1290954b1953fd7812d86bc261f4244f1e88eff5d2ebdf0b4a6fcd55df6d9",
"packages/ui/components/PageHeader.wrn": "a3e2c59041b9fdbf67188e2f3ea602aec487f22c14c7ca96c3d2b00d17a0725e",
"packages/ui/components/Pagination.wrn": "0049cc61f65f0db934cfc2d255656294b6188f29133f8ca0b716332a92595a5d",
"packages/ui/components/PinInput.wrn": "9b5112e6dbe1e16448b2a4f87d9f088519779779c9d0ec2bdd34e1e56be7faba",
"packages/ui/components/Popover.wrn": "322b6056633fb4f2211d2a67896cb12ae30b0b9f1ff582f6e520fa7ab6fabc86",
"packages/ui/components/PortalDashboard.wrn": "dea35ce15889fb673adbd965f11838e83dc937b13e57b00bc0af0c3a5a8ff5c7",
"packages/ui/components/PreferenceSwitcher.wrn": "6869b8b2efdbf42d9ec7bc79bd7cdce5997e5623c9aeddb01221f7fe1d2d1c98",
"packages/ui/components/PublicPageShell.wrn": "3d3f25c03d48f3d3d7e3c567e79cb137c7fce1867e054fd6d440fa1d2e961077",
"packages/ui/components/RangeSlider.wrn": "37868f30ef15401d4ba6cca3f54d54ebac71c7bd20728d4bd95f80e844ee607c",
"packages/ui/components/Rating.wrn": "fbcc5b9c67ded0e3dc70cb0ab645046b02e27f17f006ded09558e28af6f24c81",
"packages/ui/components/Scrollspy.wrn": "4b452fcbd524feda9c9f2c81894ee01747a51888e3b86fafb37c5d4d192a3a51",
"packages/ui/components/SearchBox.wrn": "90f58b7375bae2cf14e31d2c48a8c451f891a823f616c1f01075aca0762543ee",
"packages/ui/components/Section.wrn": "78da13eb8bc1acafe8e6151cbaeed4baaac2ab860e3209f1d13c467f279d2e68",
"packages/ui/components/SectionHeader.wrn": "428c0c313c562987a4022671246b942d722dd2520b6cadd6f1a7644c7b56d4ee",
"packages/ui/components/Sidebar.wrn": "ee817a9a46b4d6ab5fea4ebef6d4b28b3ea4599eb7f5b0cc81aa4be1769af792",
"packages/ui/components/SplitHero.wrn": "7127cb869d1228522d066e028818dd9e512de8b6dd8f99e3dec500e6da5a3cb0",
"packages/ui/components/StatsBar.wrn": "d4922c94962a957f428fa0e61743a76706ce38698fbf638d065c7fadde0eabe7",
"packages/ui/components/Stepper.wrn": "07d9a90681b9415696603e06e8cf2aac2692f42fd5744d5655482a6092a5536b",
"packages/ui/components/StrongPassword.wrn": "9a2d59169ceed5af09e48412f4b50cf36e66a889317b8e15f01744cc47a8b69f",
"packages/ui/components/StyledIcon.wrn": "ca620463eecbf61d5465ca43513b29d7e175bdc784a3debc2f5b1a8d076fd2fa",
"packages/ui/components/Tabs.wrn": "2ca14d0a87cff3066334f1295fd066a787b84b5667962c1d22fb879b4a68cea6",
"packages/ui/components/TextLink.wrn": "9d561631c5f65a2bcdc59f5c0b166a5dd794a396f42093f2cd26388386f6f954",
"packages/ui/components/TimePicker.wrn": "4b7985fa5cec727a02012763fc7ab8ffee1dee5e54aa512da5bfccde398811c9",
"packages/ui/components/Timeline.wrn": "7a58a77b1addf2ebbb0eb5dad008bcb49696c4265456d388d1cea71492c76ca6",
"packages/ui/components/Toaster.wrn": "de36dad25b30944800ab42d52492f18cbe5eca90ba17e8f70eb25690942d2c60",
"packages/ui/components/ToggleCount.wrn": "8370443edb8e15734448e4fd92c0ec3a573980de0402a6adcd24d62567112c4a",
"packages/ui/components/TogglePassword.wrn": "3f75a93f607472e73b357fa41b63cd2240b6fd561d03cfd31f92c69944431546",
"packages/ui/components/TreeView.wrn": "f54d8495730203b923629bcfb167d5ca41236af0101ea2723d33354413555b4b",
"packages/ui/components/Typography.wrn": "9676af57f2a937b21f45512e0a290b5bee4a16267fbf404850297d29645d88b5",
"packages/ui/components/WysiwygEditor.wrn": "6ae997ff6f3835b2ff3e4e3f050bcaa040efddba08fca9dc6d6d2c8d3cf4737b",
"packages/ui/components/alert.wrn": "e14e5ca056e27d36816d6949c4c56fbdbe9a881adb15036d6c8749c40dc451dd",
"packages/ui/components/avatar.wrn": "8bc705e459b13c7f063c57e1506ce540e50fa8ef9020ae85b6e8b6a3579fc5dc",
"packages/ui/components/badge.wrn": "f29605b692601d12fb0a9df3ee62d16c35fb03cf6448e3fef4402a56766d6842",
"packages/ui/components/button.wrn": "70681183850d5ddc1c0c23c52382ee2d40544c7bd8f0afe9850323f4805bfa31",
"packages/ui/components/checkbox.wrn": "67d148bf0482a3161b0393fd7a1aa3a7789de1173272abcdbb650e3a4a1377c7",
"packages/ui/components/input.wrn": "a074338ed781e34e020ca5585e73ab6dd6f9cf3ad94bf2911088b38d2ba1dffb",
"packages/ui/components/progress.wrn": "6307a90585197d7aab19a8710b2430f5d4ed27ce77e9b90b1414ea0eed876492",
"packages/ui/components/radio.wrn": "deb3412256fdd66128943773bbd7b826c760968cdc51131417038699c35526f8",
"packages/ui/components/select.wrn": "499113d8ac4b6d090adc515cac27285ba9cdd8af7ea54f18f61b0086da76e8c0",
"packages/ui/components/skeleton.wrn": "4fc5e0846eeefd7830c038e1789be995c4f9d833aa913ff079eb4863baa65648",
"packages/ui/components/spinner.wrn": "2322645da7ef53f7c06035ff071d9a2f6ffe2901ff9338daed84037369367105",
"packages/ui/components/switch.wrn": "471e1bfd99e535818787bb19e35db800d3e24db051417cea89c72b96694ac073",
"packages/ui/components/textarea.wrn": "5b2614cf2cb869897d29c359812af3e2b0d6fe278ee2bbf6d99a92521eeaddf2",
"packages/ui/components/tooltip.wrn": "f3dfdfa5cd9661fe5e95ef3580eef4c7437c069726421370c2d7328fbe7d840d",
"packages/ui/styles/SelectStyles.wrn": "0d000c18419187de9ab5c8bf1b86db1912cd5a4d90591f0da0da3533e10b8baa",
"packages/ui/ui.css": "27c2709b6b3a07b4c9a8bef8c2464159a54798a4c76384abd0707135b79ef437"
"packages/ui/components/Accordion.wrn": "51714cc2103e4727fc64a5e6cb37f060d5b495c72e1660c1a04948982b7f4c53",
"packages/ui/components/AdvancedSelect.wrn": "b812acc74cd717af6f102d29fd07b47de2b2ad6e3879706730e0a32eada6f3ee",
"packages/ui/components/AnnouncementBar.wrn": "b2b833350eb9a37627e4047f371c12ff7a8c25385a70294c0fc25ddfd4bb74c8",
"packages/ui/components/AuthForm.wrn": "8a7bf17ee92d98caae1e987eeade29d0effc89b0eca4b8787dc10b2abad25de8",
"packages/ui/components/AuthSplitLayout.wrn": "e5ca3b96f68fbc666d47ad2efac9f6c37fe321fcf222109aec5f05f4433b99d6",
"packages/ui/components/AvatarGroup.wrn": "535d9c043aa2fc9e1976aa7472f5932be79ee9cef92a68d7c61ae53948f3a42e",
"packages/ui/components/BackToTop.wrn": "a7fea53e8ef130e62df5a11e2fa7d7f44cf26b56fd25de298adfa8a035d07aaa",
"packages/ui/components/Blockquote.wrn": "91aa254ea60f94a8e01a668bcfc858124631c717a96c18ae3fc52d1c90f1e56e",
"packages/ui/components/Breadcrumb.wrn": "879d72c0fcf3f98077c374f26eb9990696b7134263f51b38c2559ea445252596",
"packages/ui/components/ButtonGroup.wrn": "fa060f809027a4fe943acab46fe557a103424411690642c2b769e00d672dff82",
"packages/ui/components/CTASection.wrn": "544d8fd6222f01c5140b26f29077998c4af004e90e2b237a18e2e42ef3b93290",
"packages/ui/components/Card.wrn": "777d277b04292f650c6bb38a83a4b14c9f28940b567d250a87c20488d8324804",
"packages/ui/components/Carousel.wrn": "5d8bd031007e7522c81f6acb16538534230cb8ea5fad4eef12b10db5f109c67a",
"packages/ui/components/Chart.wrn": "d87254752284ba10eb6f36b8654872b0defe84222c01c739c0086809e05dba12",
"packages/ui/components/ChatBubble.wrn": "f81c2630542b7c8a171acf2c9102a91b64cc06f925a014bc7f96d3778adbafdc",
"packages/ui/components/Clipboard.wrn": "fcc4e8a3b3a24b599eb6a52337a31d06c2c4dee3b1a000281d324b8b71678f1b",
"packages/ui/components/Collapse.wrn": "c5ecae44b455498e5eae527100abdc27bf9e18f7a361ce563d45087c0cc4a3d3",
"packages/ui/components/ColorPicker.wrn": "561b1cef73ff86f50072fefabade212b0cf10a48e6dd6c6aa93fd6e900fe3f50",
"packages/ui/components/Columns.wrn": "c892798d910745453b617a7f0dcf20ab1fd6506095c150de0f36e9fcf7661783",
"packages/ui/components/Combobox.wrn": "1268286b6dcb00f187d985d5e7fedf0371c8febf04c16907beb10cf36ced2d25",
"packages/ui/components/Confetti.wrn": "91f72aa66babd721d5b8406992b13df442cd3d2a093540b0e504380242479ca6",
"packages/ui/components/Container.wrn": "eefa6f3dfaecb1e86172f6f2b886adfad7dcacf07f75098f7d07948bff5d0a50",
"packages/ui/components/ContextMenu.wrn": "5dcf067343e35307c1e0de1c319112e6741bcc9b1c827cef5d09721383f4d066",
"packages/ui/components/CustomScrollbar.wrn": "5325c9429b432b113e232a19786bb3f873454f8f4c7c0d6a3ecf81897fa35f09",
"packages/ui/components/DataMap.wrn": "66752f98718c748f25e0eed76d39f504fc20b26d3b3ae841db85f5d5f02df6cb",
"packages/ui/components/DataTable.wrn": "c25aa8849d140562970cd2ffaa33b720cc903e809ef7fb20a564425e8295d5b9",
"packages/ui/components/DatePicker.wrn": "107be1aa2ae2b329b50c9063f2f25bf4ac7dccebe6a2b6ca412cc12afac8f3af",
"packages/ui/components/DeviceFrame.wrn": "20485a867f404098afec5814174e3f83ca7110e193c787027c8b755bb1f5909e",
"packages/ui/components/Divider.wrn": "3d1065aa2dccb11f31eff35105ce7a3a0321317850e4df02b6c298e4a492cadc",
"packages/ui/components/DragAndDrop.wrn": "5af6c01a9b58eca44868205708f47738c1c2b25589b94035cb2f4f31eec06ba6",
"packages/ui/components/Drawer.wrn": "54f4a07464cc7bcd3f52453207c568d81044fca45850ca2ec1d8b6e6442b24d5",
"packages/ui/components/DrawflowCanvas.wrn": "9c1d04d070d27e88d443daab5adf4afb5a9d08a1224f06c96d015c4e988d5617",
"packages/ui/components/Dropdown.wrn": "10dacd8dca91937ceb65f3d0b69a9c26e7a1035055ea9178fa6415d78afa2b69",
"packages/ui/components/FeatureCard.wrn": "eab5df7460c9135978364d9efe1f76943f5b4c36d5d7cd5560ff49e3aa405d3d",
"packages/ui/components/FeatureGrid.wrn": "166214d4a00c604d1a70420128e2a7a3585afc6f60eae915d21a21c54c8364c2",
"packages/ui/components/FeatureIconCard.wrn": "978eccf49716814595a29fd8e94ba8e4c7345e0a9589f498a6517df0c41533de",
"packages/ui/components/FileInput.wrn": "76b0719609ff2204cccbad9692a3b820ce63ee98754f2394be6dbd9b8510e873",
"packages/ui/components/FileUploadProgress.wrn": "4f4dbaf9eb165d9aa48742c03ce51d895891bb234f80b2865bce03d4da0e24ba",
"packages/ui/components/FlowCanvas.wrn": "8ca776800047ae4f4e1032352f2e17a295c9b8198d48d7ce3fc9ee26c2033ecd",
"packages/ui/components/Footer.wrn": "ea931e624eb820beaef698e93191ed707403ea8b4be4117fa5b83d5a6b0b0f55",
"packages/ui/components/Grid.wrn": "b44e041a627cf0f62f676b83ca3c0ea2b671e07876f0649310081edefde4217a",
"packages/ui/components/Hero.wrn": "dbc4cb3099d422edc2a7bc0500499db5c7c67aa272cbe9329a21e6d665aca047",
"packages/ui/components/HeroActions.wrn": "f3e633751e1bdfca11d5fe3d4eb96d4aaba11cba298a62794ed3e2201d3ca038",
"packages/ui/components/Image.wrn": "e62edb27eb2debb3089ac6a9033acbf54d32a24dd9959127f39db70ef675b51a",
"packages/ui/components/InputGroup.wrn": "6059e1169d06dcf2cd38bbe10e626432b3d36d096411decdc4da7506fd8bf743",
"packages/ui/components/InputNumber.wrn": "91d210f3f2341f46507f46459c89555127c8b4598fa4b88216dcb8a8e82f116e",
"packages/ui/components/Kbd.wrn": "5c0bc26cc9acd984c297dd6457189110aef3fcfdfe3bcf16bf7d43d55ceaecd1",
"packages/ui/components/LayoutSplitter.wrn": "394a765f26c6634d4d75cf91b47b2874bee2250f15f399c325b740fc671cb1ad",
"packages/ui/components/LegendIndicator.wrn": "6d72694259ad877ae987f260887a1d60301f692bf05622d9a36b3a7f02b57dd3",
"packages/ui/components/Link.wrn": "59b7590d68ddbc8c70dd1926ebeed22dbe7b3d0d60613eb74d156633808d9db9",
"packages/ui/components/List.wrn": "79ba3e76767a8ffccfc6a25c1d4d13e765cfaf2ef02c961d0490b385fe199036",
"packages/ui/components/ListGroup.wrn": "40c1e8f3030fdc41101f65a06ef8752e52a9e88d85f2c85773fa1544bb6527b9",
"packages/ui/components/Map.wrn": "aba6b73a89fe69f84a245d6685771cd7f34e813ca4c54d45a46c2e96135ecb70",
"packages/ui/components/MarketingSectionHeader.wrn": "b05e7fa1341fbd633145a702ab07fe04b163194bd2513f14b572eb63e09348ea",
"packages/ui/components/Marquee.wrn": "dd95881db4096cf9f10eed812ab501e4ad7f20994cad0b344919c5c0a856bf8a",
"packages/ui/components/MegaMenu.wrn": "5667b0c46af1937c013bfea2d36863a297dfae14c5cf49643eb3c1e22a5c66da",
"packages/ui/components/MetricCard.wrn": "a5ce0dcf7d254330ea7a7ecf2e93dc933c4f563ebb249755abc180ee04af47a9",
"packages/ui/components/MetricGrid.wrn": "c9f228b4b6bd371ad94c1e534501b9708ea555bef1e64c8bdf95fa5e07576d1d",
"packages/ui/components/Modal.wrn": "7ad50502de6f6ff20ec2dc62fdc923f78afc222509771c5f26e5a56810ead374",
"packages/ui/components/Nav.wrn": "dd7d67b15ffe88fb991321a3707c82770bc0c14ced5cc6f2710adf7ef2045c6c",
"packages/ui/components/Navbar.wrn": "02081bcbbf88f9fbbaff7348ad7183d914a424c8fe22ed3c870b61620c2920fa",
"packages/ui/components/PageHeader.wrn": "7586f4579031e9391d673eb413dfe2ca65f9e3da2a0257c6f987bfc3b3482927",
"packages/ui/components/Pagination.wrn": "df6faf0dbafd1249092b45e586159b575c3d37c73d81847376a28c3ea8fdb5cd",
"packages/ui/components/PinInput.wrn": "c17b2a1bb38ba0420de7c9179e64fd104cbd8d3b84127a308a4333d46232b3fb",
"packages/ui/components/Popover.wrn": "aa73c63bde88d6f52061a98fdc8c84f1147e784abfeb802f094a89c061b9a893",
"packages/ui/components/PortalDashboard.wrn": "ef67fdf9faac850ef34b1d2564386d41a0cfa4c754ed0988e85f2e7ea2f50cdb",
"packages/ui/components/PreferenceSwitcher.wrn": "b1a5a72997dec35a1294f8a7724abc52ba9e50a108e175da9442816ca9adf0ec",
"packages/ui/components/PublicPageShell.wrn": "1e28f4f387f235198a723ed13b0128fe484894e4962b73a482a5a28c8acf003f",
"packages/ui/components/RangeSlider.wrn": "a4005dcca80e3e23b6488e865b92486b368f46e00d3f05e7b0663d421652be06",
"packages/ui/components/Rating.wrn": "8456d577da017eac6e54db78b4beced73930da6fe8ef7a5b74c65c2902571ea9",
"packages/ui/components/Scrollspy.wrn": "a02f8bff11e611c867caf44aff9d16db51ce00adb7814760cc18950db2461aa4",
"packages/ui/components/SearchBox.wrn": "9705699c05a83ea03a639b79618f62d2cd71bfe711fe2a6ed837d152ccf259a7",
"packages/ui/components/Section.wrn": "84df1d77f5f6c374a244fb30f76e28dd5dd8dbd168ebdb10d3f3a0eaa5dbee90",
"packages/ui/components/SectionHeader.wrn": "981ea9852591edeb02125219ae670e49c3be10c91cb57a6398d592dfff259667",
"packages/ui/components/Sidebar.wrn": "0c461f054007465f187368c066270ffbb6df850b66767e1479bbafa056384b1d",
"packages/ui/components/SplitHero.wrn": "dd449b79bdad8f3a480f654be665a98e0db43e63ca28c0d7c609bc1ca42a95c0",
"packages/ui/components/StatsBar.wrn": "98fc8dea715ee0fcef9535c4a349499039140edf7bd150859bf54464b3331ab0",
"packages/ui/components/Stepper.wrn": "35025eadca0738fc1eba291b54c8c6f8b5d79022ad3325f727becbb7169aebc5",
"packages/ui/components/StrongPassword.wrn": "080e31a667fe77f19af1465771262d99a42d3d74dadc16153b19bc8383baf6d4",
"packages/ui/components/StyledIcon.wrn": "64ac0aeaa9f0b833f68943dc0116acc1d0a9c8816d3b4bb2c91d00cf7ec3dc0a",
"packages/ui/components/Tabs.wrn": "462b8d821dd4390213fc6e75263d30d2b0f9a3d19f7b83053ae41f780c2c2671",
"packages/ui/components/TextLink.wrn": "3d8ec57f065fbb12a2ba42e85f1d66ff24adf041e8a1ec4b59cc3f1a17004f4e",
"packages/ui/components/TimePicker.wrn": "1695e1cc66f1c41f61bd194db0ba8abfba45a528ca414bb700272a1884f908de",
"packages/ui/components/Timeline.wrn": "1f46194e222b7eb04750785542a8933028fb4d23a94f199874ffe27d9dc74e79",
"packages/ui/components/Toaster.wrn": "e46b15818d8f50467521e58c5dae605871c107c09e80e8dade60da675b40b8e6",
"packages/ui/components/ToggleCount.wrn": "b95bc9967d40d954427caea544c1b465f30dede623ed8d25b0aefee5b2453910",
"packages/ui/components/TogglePassword.wrn": "181b1c01ec9f43ded279825eef6a3a654b3fa51f087d93d4b578da0e4f76dc48",
"packages/ui/components/TreeView.wrn": "b9dd8b1633c391ba3c036230ebaa8d6fc0f9900eccf1a889005b8a1abb2d1649",
"packages/ui/components/Typography.wrn": "329dbcd9e040e363d6c4904e89e08ac19bbdbef9491ac99b6e6cbc99c4abf075",
"packages/ui/components/WysiwygEditor.wrn": "a6e3d9a47915aaa26f6b16d9db7752a0af0c83301d8295439948e16c6c293905",
"packages/ui/components/alert.wrn": "aac21d2b7b80aebf13f762ff5cc2ac761c21079655b412a6a8d9b2f39fcaf702",
"packages/ui/components/avatar.wrn": "6d7a581b401dd1c267a5aee0ee44a963eda92b2f9a415b4d2d1349d3582d20fb",
"packages/ui/components/badge.wrn": "862e8c70ccd11486fca9a8026981a3b58e385bfd4ec5bc8667c0f93d7b9b757f",
"packages/ui/components/button.wrn": "392366662ad0f5b54511d51bc6d51fcb5c251761adca46965d83e1b62eb594c3",
"packages/ui/components/checkbox.wrn": "65b764703ffb36b3485bd473cf76126dfb2c746ab65a44d0bbc94b121f10e986",
"packages/ui/components/input.wrn": "3e43ccab4d80cdb9fe0a760748474b427c6faddd89a6183bc888e53d773b2f03",
"packages/ui/components/progress.wrn": "f55ff8ccaf18960b967ab69d278b720da5f744251f1f614a284bfd99c93168e2",
"packages/ui/components/radio.wrn": "537b8c992a0040f84ea382127ccdc68c63d24d809e8c663ce9f0c16b79c22e54",
"packages/ui/components/select.wrn": "9bb6c0a6238c76ef1b96ecc30eee1e7208abc6b1d195d9f0880244aada465791",
"packages/ui/components/skeleton.wrn": "8bf41be508416c9cb3dc05103bde9ae944499da12ea244fe853749daaed07f3f",
"packages/ui/components/spinner.wrn": "0144152d936a861ffcd3c37f226ede28d31c0dc945f3c3cf85474db5b4335cf9",
"packages/ui/components/switch.wrn": "00a40becd26bc7ddc63954f1c8856b3c9b0a4ad13b78c8db5c86910bc9e260d0",
"packages/ui/components/textarea.wrn": "e1402419f3f6bd91b2119a8a49704683cabfba3329a9806c4a78242fd0ff0036",
"packages/ui/components/tooltip.wrn": "2bd977b0b8e6fccfeac4ea96b71d01065a237779243d3b8236db34448ea3b381",
"packages/ui/styles/SelectStyles.wrn": "b84470cf11d6830963adc58c595776d843ed8b126c0fe242dd8e961aace991fa",
"packages/ui/ui.css": "ba710e20834ad56100d21a91d700cafba0d992999e083627277e66faa0496614"
}
}