@adia-ai/adia-ui-factory 0.8.48 → 0.8.50

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-ui-kit-factory",
3
- "version": "0.8.48",
3
+ "version": "0.8.50",
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",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "adia-ui-kit-factory",
3
- "version": "0.8.48",
3
+ "version": "0.8.50",
4
4
  "description": "Author and verify apps built ON the adia-ui (@adia-ai) light-DOM web-component framework — 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
  "adia-gen-ui": {
4
4
  "command": "npx",
5
- "args": ["-y", "@adia-ai/mcp@0.8.48", "gen-ui"]
5
+ "args": ["-y", "@adia-ai/mcp@0.8.50", "gen-ui"]
6
6
  }
7
7
  }
8
8
  }
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Changelog — adia-ui-kit-factory
2
2
 
3
+ ## [0.8.50] — 2026-08-23
4
+
5
+ ### Maintenance
6
+ - **Lockstep bump riding the v0.8.50 cut** (`scripts/release/check-lockstep.mjs`); the headline v0.8.50 work ships in @adia-ai/web-components (prose/verse sheet removal gh#1885 / PR #1918, input/search fill-default posture gh#1856 — see `packages/web-components/CHANGELOG.md#0850--2026-08-23`). Package-local changes are listed below.
7
+ - **`.claude-plugin/plugin.json` version bump** — moves in lockstep with package.json (the `/plugin update` cache key).
8
+ - **`.codex-plugin/` touched in this release window** (1 file(s), e.g. `.codex-plugin/plugin.json`) — carried by the entries above.
9
+
10
+ ### Docs
11
+ - **`references/` + `skills/` docs refreshed for the release window** — `component-model.md` and `spa-architecture.md` plus the `find-unused` (`recon-and-audits.md`), `host-wiring` (`SKILL.md`, `mode-wiring-detail.md`), and `table-composition` (`base-table.md`) skill references updated to current framework contracts (incl. the gh#1918 `[prose]`/`[verse]` removal and gh#1856 fill-default posture).
12
+
3
13
  ## [0.8.48] — 2026-08-23
4
14
 
5
15
  ### Added
package/README.md CHANGED
@@ -98,7 +98,7 @@ surface-qa-agent) · `component-model.md` · the `references/contracts/` twins.
98
98
 
99
99
  ## MCP
100
100
 
101
- `adia-gen-ui` server pinned: `@adia-ai/mcp@0.8.48` (tool SoT:
101
+ `adia-gen-ui` server pinned: `@adia-ai/mcp@0.8.50` (tool SoT:
102
102
  `packages/gen-ui/mcp/TOOLS.md` — the `gen-ui` section; stability rule in
103
103
  `references/contracts/`; pin lives in `.mcp.json` — `check:plugin-count-claims`
104
104
  guards this README copy against it). The server is `adia-mcp gen-ui`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adia-ai/adia-ui-factory",
3
- "version": "0.8.48",
3
+ "version": "0.8.50",
4
4
  "description": "Author and verify apps built ON the adia-ui (@adia-ai) light-DOM web-component framework — 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",
@@ -119,7 +119,7 @@ Three levels, all `--a-*`:
119
119
 
120
120
  ## "Registers" — typographic treatments, opt-in
121
121
 
122
- A _register_ (e.g. `verse`, `prose`) is a typographic treatment applied two ways together: **link the register stylesheet** (`styles/verse.css`) **and** put the **attribute** on the surface (`<my-surface verse>`). One without the other is a no-op — a common smell. Body/UI text defaults to `--a-font-family-ui`; registers opt a subtree into a different family/rhythm.
122
+ A _register_ (e.g. `scale="ui-sm"`, `scale="content-md"`) is a typographic treatment applied two ways together: **link the register stylesheet** (`styles/scale.css`, or wrap the surface in `<theme-provider scale="…">`, which adopts it on demand) **and** put the **attribute** on the surface. One without the other is a no-op — a common smell. Body/UI text defaults to `--a-font-family-ui`; registers opt a subtree into a different family/rhythm.
123
123
 
124
124
  ## Layout realities
125
125
 
@@ -53,7 +53,7 @@ alternatives:
53
53
  - **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.
54
54
  - 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.
55
55
  - Never hand-roll `:where(html,body){}` — the foundation owns the page frame; re-rolling it drifts from the system (the classic serif-leak bug).
56
- - 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.
56
+ - 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.
57
57
  - `themes.css` (named palettes) is **not** in the styles barrel — link it separately. `data-scheme` switches light/dark; `data-theme` picks the named palette.
58
58
  - 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.
59
59
 
@@ -85,7 +85,7 @@ proposing any edit.
85
85
  opt-in, confirm something imports it:
86
86
 
87
87
  ```bash
88
- git grep -n "styles/scale.css\|styles/themes.css\|styles/verse.css\|styles/prose.css"
88
+ git grep -n "styles/scale.css\|styles/themes.css"
89
89
 
90
90
  # Attributes reach the DOM from markup AND from script — a setAttribute('scale', …)
91
91
  # in a .js module counts. Searching templates only produces a false "unused".
@@ -90,7 +90,7 @@ Mode: SPA | SSR | hybrid — signal: <file / dep
90
90
  Framework: <name, or none> — [D] documented | [G] inferred, per ssr-integration.md
91
91
  Registration: <file>:<call site> — one side-effecting barrel import, client-only
92
92
  Route owner: <router-ui> | <framework router> — exactly one per scope
93
- CSS links: host.css + styles/index.css (+ scale.css, or its deprecated verse.css/prose.css alias) — both live, or primitives render unstyled
93
+ CSS links: host.css + styles/index.css (+ scale.css) — both live, or primitives render unstyled
94
94
  State placement: cookies/localStorage/session | client signal — per mode's lifetime rule
95
95
  Gates: registration / route-owner / CSS-links / state — pass | fail, each
96
96
  ```
@@ -43,8 +43,7 @@ Build order — snippets and the full invariant list in `spa-architecture.md`;
43
43
 
44
44
  1. **Host document** — npm-consumer paths; cascade order later-wins:
45
45
  `host.css` → `styles/index.css` → opt-in `scale.css` (the ancestor
46
- `[scale]` register `verse.css`/`prose.css` are its deprecated,
47
- still-working aliases) → page → component CSS. Link BOTH `host.css`
46
+ `[scale]` register) page → component CSS. Link BOTH `host.css`
48
47
  and `styles/index.css` — the styles barrel is split and `host.css` is
49
48
  foundation-only; alone it renders primitives unstyled.
50
49
  2. **Surface container** — self-booting custom element rendering in
@@ -192,6 +192,22 @@ they're documented alongside the real `sortFn`.
192
192
  entirely and let the table's own internal pager work server-side alone, the ticket's literal
193
193
  headline case. See table.yaml's `[range-total]` prop doc and
194
194
  `docs/ops/adr/adr-0082-table-ui-server-range-total.md` for the full contract.
195
+ **[extended 2026-08-23, ADR-0082 amendment, gh#1877]** for cursor/`hasMore`
196
+ server paging where the total isn't known yet, `range-total="?"` is an open/
197
+ unproven-total state (still presence-gated into server mode — "?" is a value
198
+ of the same attribute, not a new one): `table-ui` keeps the pager exactly one
199
+ page ahead of the current page (`next` stays enabled indefinitely, never a
200
+ false "last page") instead of a fixed `ceil(...)`; `table-toolbar-ui` /
201
+ `table-footer-ui` render "Showing X–Y" with no "of N" until a real number
202
+ replaces the "?", at which point it resolves to the ordinary finite-total
203
+ behavior above with nothing else changed. Two more, additive, on
204
+ `table-toolbar-ui`/`table-footer-ui` only (never `table-ui` — no independent
205
+ second-total concern there): `range-of="<whole>"` appends "(of `<range-of>`
206
+ total)" onto the finite range text — a secondary filtered-of-whole total,
207
+ unset by default, never applies while the range is open or loading/empty —
208
+ and `range-noun="<noun>"` appends a per-slice noun after the range text in
209
+ both the finite and open cases ("of 80 users", "Showing 51–100
210
+ subscriptions"), also unset by default.
195
211
 
196
212
  ## table-toolbar-ui — the companion search/filter/sort/columns bar
197
213