@adia-ai/adia-ui-factory 0.8.11 → 0.8.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "adia-factory",
3
- "version": "0.8.11",
3
+ "version": "0.8.13",
4
4
  "description": "Author and verify apps built ON the adia-ui (@adia-ai) light-DOM web-component framework \u2014 orient, scaffold, compose, wire, verify, and migrate across SPA and SSR rendering modes. Wires the a2ui MCP for catalog retrieval, UI generation, and validation.",
5
5
  "author": {
6
6
  "name": "Kim",
package/.mcp.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "mcpServers": {
3
3
  "a2ui": {
4
4
  "command": "npx",
5
- "args": ["-y", "@adia-ai/a2ui-mcp@0.8.11"]
5
+ "args": ["-y", "@adia-ai/a2ui-mcp@0.8.13"]
6
6
  }
7
7
  }
8
8
  }
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog — adia-factory
2
2
 
3
+ ## [0.8.13] — 2026-07-25
4
+
5
+ ### Maintenance
6
+ - **Lockstep version bump only.** No source changes in this package; bumped to maintain the 11-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.8.13 work shipped in 12 named theme identities + select-menu Theme row in theme-panel; fixes scale.css wiring, Preset/Reset UX, and a Theme-select XSS finding. See `packages/web-modules/CHANGELOG.md#0813--2026-07-25` for details.
7
+ - **`.claude-plugin/plugin.json` version bump** — moves in lockstep with package.json (the `/plugin update` cache key).
8
+
9
+ ## [0.8.12] — 2026-07-24
10
+
11
+ ### Fixed
12
+ - **`adia-compose`, `adia-host`, and `references/spa-architecture.md` learn the v0.8.11 size model** — three skills still taught the removed `xs`/`xl` size vocabulary and the deprecated `[verse]`-only density register; following them verbatim would have authored invalid attribute values or wired a host to the wrong opt-in CSS layer. Figma Make guidelines (`adia-compose/assets/figma-make/guidelines/{components,tokens,styles}.md`) now teach `size` as sm/md/lg and introduce the ancestor `[scale]` register (six tiers) alongside `--a-density`; `adia-host`'s SKILL.md cascade order + Host Record template and its `evals/routing-corpus.json` rationale now cite `scale.css` (verse/prose as deprecated aliases); `spa-architecture.md`'s host-document snippet links `scale.css` and demonstrates `scale="ui-sm"`. Stale "127 primitives" counts corrected to 125 in the same pass.
13
+
14
+ ### Maintenance
15
+ - **`.claude-plugin/plugin.json` version bump** — moves in lockstep with package.json (the `/plugin update` cache key).
16
+
3
17
  ## [0.8.11] — 2026-07-23
4
18
 
5
19
  ### Maintenance
package/README.md CHANGED
@@ -7,6 +7,36 @@ hosts. Maintainer counterpart: **adia-forge**.
7
7
  Re-engineered 2026-07 for the Fable 5 harness (design:
8
8
  `.claude/docs/specs/plugin-estate-v2.md`).
9
9
 
10
+ ## Install
11
+
12
+ **Via Git** (Claude Code plugin marketplace — requires access to this repo,
13
+ which is private):
14
+
15
+ ```
16
+ /plugin marketplace add adiahealth/gen-ui-kit
17
+ /plugin install adia-factory@gen-ui-kit
18
+ ```
19
+
20
+ Sources the in-repo manifest at `packages/plugins/.claude-plugin/marketplace.json`.
21
+ Only reachable by people who already have repo access — there is no public
22
+ marketplace repo for external/no-access installs (`docs/tickets/TKT-0001`,
23
+ `wontfix`).
24
+
25
+ **Via npm** (package content only):
26
+
27
+ ```
28
+ npm install @adia-ai/adia-ui-factory
29
+ ```
30
+
31
+ Published in lockstep with the framework packages — pulls this plugin's
32
+ `skills`/`agents`/`commands`/`references`/`hooks` into
33
+ `node_modules/@adia-ai/adia-ui-factory` for vendoring or inspection. This
34
+ does **not** by itself register the plugin with Claude Code's `/plugin`
35
+ system — no marketplace manifest currently sources it from npm. The bare-repo
36
+ posture (ADR-0040) is about this plugin working standalone in any consumer
37
+ repo once installed some other way (no monorepo path assumptions in its own
38
+ scripts) — it does not add an npm-sourced marketplace entry.
39
+
10
40
  ## Skills (13)
11
41
 
12
42
  | Skill | Species | Job |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adia-ai/adia-ui-factory",
3
- "version": "0.8.11",
3
+ "version": "0.8.13",
4
4
  "description": "Author and verify apps built ON the adia-ui (@adia-ai) light-DOM web-component framework \u2014 orient, scaffold, compose, wire, verify, and migrate across SPA and SSR rendering modes. Wires the a2ui MCP for catalog retrieval, UI generation, and validation.",
5
5
  "keywords": [
6
6
  "adia-ui",
@@ -14,13 +14,13 @@ One static `index.html` whose job is to load CSS in cascade order and register c
14
14
  <meta name="viewport" content="width=device-width, initial-scale=1" />
15
15
  <link rel="stylesheet" href="/node_modules/@adia-ai/web-components/styles/host.css" /> <!-- foundation: tokens + resets + page frame -->
16
16
  <link rel="stylesheet" href="/node_modules/@adia-ai/web-components/styles/index.css" /> <!-- barrel: every component's CSS (link BOTH) -->
17
- <link rel="stylesheet" href="/node_modules/@adia-ai/web-components/styles/verse.css" /> <!-- opt-in register (only if a surface uses [verse]) -->
17
+ <link rel="stylesheet" href="/node_modules/@adia-ai/web-components/styles/scale.css" /> <!-- opt-in sizing register (only if a surface uses [scale]) -->
18
18
  <link rel="stylesheet" href="./index.css" /> <!-- page framing: sizes + centers the surface -->
19
19
  <link rel="stylesheet" href="./components/my-surface/my-surface.css" /> <!-- the surface's own chrome -->
20
20
  <script type="module" src="./components/my-surface/my-surface.js"></script> <!-- its FIRST import is the registration barrel -->
21
21
  </head>
22
22
  <body>
23
- <my-surface verse></my-surface>
23
+ <my-surface scale="ui-sm"></my-surface>
24
24
  </body>
25
25
  </html>
26
26
  ```
@@ -39,7 +39,7 @@ Vite serves `/node_modules/...` hrefs during dev and bundles them at build; bare
39
39
  - **One registration script** — the side-effecting barrel `import '@adia-ai/web-components'`. Don't piecemeal-import primitives: composites render internal `*-ui` tags (e.g. `chat-input-ui` internally renders `textarea-ui` + `select-ui`) that stay unregistered and collapse to 0px unless the barrel ran.
40
40
  - Bespoke shell children need the **cluster barrel** (`@adia-ai/web-modules/shell`, `/chat`, `/editor`, `/simple`) — importing `admin-shell.js` alone registers only the host tag, not `admin-sidebar` / `admin-page` / the other children.
41
41
  - Never hand-roll `:where(html,body){}` — the foundation owns the page frame; re-rolling it drifts from the system (the classic serif-leak bug).
42
- - A `verse` register has two halves: link `verse.css` **and** put `verse` on the surface. One without the other is a no-op.
42
+ - A `[scale]` register has two halves: link `scale.css` **and** put `scale="…"` (one of the six tiers — `ui-sm | ui-md | ui-lg | content-sm | content-md | content-lg`) on the surface. One without the other is a no-op. `[verse]`/`[prose]` still work as deprecated aliases (`ui-sm`/`content-md`) but are removed at v1.0 — new code should reach for `[scale]` directly.
43
43
  - `themes.css` (named palettes) is **not** in the styles barrel — link it separately. `data-scheme` switches light/dark; `data-theme` picks the named palette.
44
44
  - Guards: `defineIfFree(tag, ctor)` (`core/register.js`) for defines; a `#booted` flag in `connected()` — the callback re-fires on DOM moves. And `customElements.whenDefined(name)` never rejects: a `Promise.all([...whenDefined])` boot gate hangs forever on one unimported tag — chrome renders (tag-keyed CSS), the page stays "empty", zero console errors.
45
45
 
@@ -1,6 +1,6 @@
1
1
  # AdiaUI — Components
2
2
 
3
- Every primitive is `<name>-ui`. 127 primitives + 4 app shells are
3
+ Every primitive is `<name>-ui`. 125 primitives + 4 app shells are
4
4
  registered by `everything.min.js`. Reach for a tag before hand-building.
5
5
  Full per-component docs + live demos: https://ui-kit.exe.xyz/site/components/<name>
6
6
 
@@ -40,7 +40,7 @@ What are you placing?
40
40
  Two independent attributes:
41
41
  - **`variant`** (visual style): `solid` (default) · `outline` · `ghost`. `primary` is an alias of `solid`.
42
42
  - **`color`** (semantic intent, composes with variant): `default` · `accent` · `info` · `success` · `warning` · `danger`.
43
- - **`size`**: `xs` `sm` `md` `lg` `xl`.
43
+ - **`size`**: `sm` `md` `lg`. For a whole region denser or larger than the default, set `scale="ui-sm" … "content-lg"` on an ancestor — scale picks the table, size picks the row (six tiers; see the Density section below).
44
44
 
45
45
  ```html
46
46
  <!-- CORRECT — variant + color compose; size is independent -->
@@ -1,6 +1,6 @@
1
1
  # AdiaUI — Styles
2
2
 
3
- ## Load the rollup CSS (one file, not 127)
3
+ ## Load the rollup CSS (one file, not 125)
4
4
 
5
5
  AdiaUI's CSS is a single pre-flattened rollup. Load it once — never
6
6
  import individual component stylesheets in Figma Make.
@@ -75,7 +75,7 @@ inline overrides bloat the markup and bypass the documented API.
75
75
  ```
76
76
 
77
77
  The common attributes: `variant` (visual style), `color` (semantic
78
- intent), `size` (`xs`–`xl`), `gap` (`1`–`6`). See `components.md`.
78
+ intent), `size` (`sm`–`lg`), `gap` (`1`–`6`). See `components.md`.
79
79
 
80
80
  ## Overriding a component (only when there's no attribute)
81
81
 
@@ -105,6 +105,21 @@ Default is `1`. Lower = tighter, higher = roomier. Because spacing is
105
105
  parametric, this stays internally consistent — you don't restyle each
106
106
  component.
107
107
 
108
+ For a bigger jump than a density tweak — a genuinely different register,
109
+ not just tighter/looser — set the ancestor `[scale]` attribute instead.
110
+ Six tiers: `ui-sm | ui-md | ui-lg | content-sm | content-md | content-lg`.
111
+ `[scale]` swaps the whole sizing table for its subtree; `size` still picks
112
+ the row within it:
113
+
114
+ ```html
115
+ <div scale="ui-sm">
116
+ <!-- every size="sm"/"md"/"lg" inside renders one register denser -->
117
+ </div>
118
+ ```
119
+
120
+ `--a-density` and `[scale]` compose — density fine-tunes within whichever
121
+ table `[scale]` selected.
122
+
108
123
  ## Rules
109
124
 
110
125
  1. **Prefer attributes** (`variant` / `color` / `size` / `gap`) over token
@@ -90,10 +90,11 @@ Build order — snippets and the full invariant list in `spa-architecture.md`;
90
90
  `adia-project`'s `bin/adia-scaffold spa` emits the pre-wired skeleton:
91
91
 
92
92
  1. **Host document** — npm-consumer paths; cascade order later-wins:
93
- `host.css` → `styles/index.css` → opt-in `verse.css` page → component
94
- CSS. Link BOTH `host.css` and `styles/index.css` the styles barrel is
95
- split and `host.css` is foundation-only; alone it renders primitives
96
- unstyled.
93
+ `host.css` → `styles/index.css` → opt-in `scale.css` (the ancestor
94
+ `[scale]` register `verse.css`/`prose.css` are its deprecated,
95
+ still-working aliases) page component CSS. Link BOTH `host.css`
96
+ and `styles/index.css` — the styles barrel is split and `host.css` is
97
+ foundation-only; alone it renders primitives unstyled.
97
98
  2. **Surface container** — self-booting custom element rendering in
98
99
  `connected()`, guarded by `defineIfFree` + a `#booted` flag (the callback
99
100
  re-fires on DOM moves).
@@ -151,7 +152,7 @@ Mode: SPA | SSR | hybrid — signal: <file / dep
151
152
  Framework: <name, or none> — [D] documented | [G] inferred, per ssr-integration.md
152
153
  Registration: <file>:<call site> — one side-effecting barrel import, client-only
153
154
  Route owner: <router-ui> | <framework router> — exactly one per scope
154
- CSS links: host.css + styles/index.css (+ verse.css) — both live, or primitives render unstyled
155
+ CSS links: host.css + styles/index.css (+ scale.css, or its deprecated verse.css/prose.css alias) — both live, or primitives render unstyled
155
156
  State placement: cookies/localStorage/session | client signal — per mode's lifetime rule
156
157
  Gates: registration / route-owner / CSS-links / state — pass | fail, each
157
158
  ```
@@ -75,7 +75,7 @@
75
75
  "phrase": "link host.css and styles/index.css in the right cascade order",
76
76
  "expected": "adia-host",
77
77
  "expected_shape": "host-document-cascade",
78
- "rationale": "The host document's cascade order (host.css -> styles/index.css -> verse.css -> page -> component CSS) is adia-host's SPA path step 1."
78
+ "rationale": "The host document's cascade order (host.css -> styles/index.css -> scale.css -> page -> component CSS) is adia-host's SPA path step 1."
79
79
  },
80
80
  {
81
81
  "id": "host-document-02",