@adia-ai/adia-ui-forge 0.8.16 → 0.8.18
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.
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +17 -0
- package/README.md +1 -1
- package/package.json +1 -1
- package/skills/adia-author/references/code-style.md +18 -0
- package/skills/adia-release/SKILL.md +1 -1
- package/skills/adia-release/references/cut-procedure.md +2 -1
- package/skills/adia-release/references/gates-catalog.md +1 -1
- package/skills/adia-release/scripts/gate-roster.mjs +5 -1
- package/skills/adia-release/scripts/release-pack.mjs +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "adia-forge",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.18",
|
|
4
4
|
"description": "Maintain the adia-ui (@adia-ai) framework itself \u2014 author primitives and shells, run the A2UI generation pipeline and its corpus, review gen-UI quality, sweep QA, cut releases, deploy. The maintainer counterpart to adia-factory (the consumer/app-author plugin).",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Kim",
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# Changelog — adia-forge
|
|
2
2
|
|
|
3
|
+
## [0.8.18] — 2026-07-27
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- **`adia-author` writes down the tag-naming rule across tiers** (`references/code-style.md`) — primitives and standalone feature composites carry `-ui`; shell/bespoke-cluster children and runtime roots are bare, namespaced by their cluster prefix. Ratified when `form-popover` shipped as the only unsuffixed standalone composite (renamed `form-popover-ui` the next release); `theme-panel` is explicitly grandfathered, not precedent.
|
|
7
|
+
|
|
8
|
+
### Maintenance
|
|
9
|
+
- **`.claude-plugin/plugin.json` version bump** — moves in lockstep with package.json (the `/plugin update` cache key).
|
|
10
|
+
- **`skills/` touched in this release window** (1 file(s), e.g. `references/code-style.md`) — carried by the entries above.
|
|
11
|
+
|
|
12
|
+
## [0.8.17] — 2026-07-27
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
- **Pre-cut gate roster 22 → 23** (`skills/adia-release/scripts/gate-roster.mjs`) — adds `check:demo-routes` (demo surfaces routed + patterns indexed; operator directive 2026-07-27). `cut-procedure.md` §3.1's transcribed table and the SKILL/gates-catalog counts moved with it; doc-vs-module equality re-verified programmatically (23/23 in sync).
|
|
16
|
+
|
|
17
|
+
### Maintenance
|
|
18
|
+
- **`.claude-plugin/plugin.json` version bump** — moves in lockstep with package.json (the `/plugin update` cache key).
|
|
19
|
+
|
|
3
20
|
## [0.8.16] — 2026-07-26
|
|
4
21
|
|
|
5
22
|
### Fixed
|
package/README.md
CHANGED
|
@@ -52,7 +52,7 @@ monorepo checkout.
|
|
|
52
52
|
|
|
53
53
|
---
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
Versioned with the `@adia-ai` lockstep (`npm run check:lockstep`) — see `CHANGELOG.md` for the current version;
|
|
56
56
|
content merged between cuts is invisible to the installed plugin cache until
|
|
57
57
|
the next lockstep bump or a manual sync (see `adia-release`
|
|
58
58
|
`references/cut-procedure.md` §Plugin cache).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adia-ai/adia-ui-forge",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.18",
|
|
4
4
|
"description": "Maintain the adia-ui (@adia-ai) framework itself \u2014 author primitives and shells, run the A2UI generation pipeline and its corpus, review gen-UI quality, sweep QA, cut releases, deploy. The maintainer counterpart to adia-factory (the consumer/app-author plugin).",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"adia-ui",
|
|
@@ -24,6 +24,24 @@ Every interactive surface, form control, layout container, and content block shi
|
|
|
24
24
|
|
|
25
25
|
The catalog has 125 component directories under `packages/web-components/components/`. Before composing, confirm via `get_component_map` (the a2ui MCP) that the one you want exists — and what its real prop names are.
|
|
26
26
|
|
|
27
|
+
### Tag naming across tiers (`-ui` or bare)
|
|
28
|
+
|
|
29
|
+
Two rules cover every tag in the monorepo (ratified 2026-07-27, when
|
|
30
|
+
`form-popover` shipped as the only standalone composite without the
|
|
31
|
+
suffix and was renamed to `form-popover-ui` one release later):
|
|
32
|
+
|
|
33
|
+
| Tier | Convention | Examples |
|
|
34
|
+
| --- | --- | --- |
|
|
35
|
+
| Primitives (`packages/web-components`) | **always `-ui`** | `button-ui`, `select-ui`, `nav-item-ui` |
|
|
36
|
+
| Standalone feature composites (`packages/web-modules`) — drop-in anywhere, consumer-facing | **always `-ui`** | `confirm-dialog-ui`, `plan-picker-ui`, `date-range-selector-ui`, `form-popover-ui` |
|
|
37
|
+
| Shell/bespoke-cluster children + runtime roots | **bare** — the cluster prefix is the namespace | `admin-topbar`, `chat-composer`, `editor-canvas`, `simple-shell`, `a2ui-root`, `gen-root` |
|
|
38
|
+
|
|
39
|
+
`theme-panel` (bare, standalone) predates this rule and is grandfathered —
|
|
40
|
+
do not copy it as precedent for a new standalone composite. The DIRECTORY
|
|
41
|
+
name never carries the suffix in either tier (`plan-picker/` →
|
|
42
|
+
`<plan-picker-ui>`), and the a2ui `component:` name is unaffected
|
|
43
|
+
(`FormPopover`).
|
|
44
|
+
|
|
27
45
|
## Layout primitives
|
|
28
46
|
|
|
29
47
|
Use `<col-ui>`, `<row-ui>`, `<grid-ui>`, `<stack-ui>` for layout — never a bare `<div>`. The primitives carry the project's spacing scale (`gap`, padding tokens) and respond to density / theme providers; a plain `<div>` strands content outside that system.
|
|
@@ -93,7 +93,7 @@ assumed pass, or "published" without the actual `npm view` output.
|
|
|
93
93
|
|
|
94
94
|
## Mechanization (bundled `scripts/`, stdlib Node, all support `--dry`)
|
|
95
95
|
|
|
96
|
-
`release-pack.mjs` walks the cycle in two phases per invariant 3 — `--mode cut` / `--mode from-scratch` promote `[Unreleased]` (BOTH modes now — a peer's hand-authored section must be promoted whichever mode cut it, and a loud guard blocks the bump if any of the 11 packages still carries non-empty `[Unreleased]` content after promotion), run Step 4f (pre-tag coverage `--fix` with the authoritative F-N1 matcher), and stop at the release commit (PR → merge); `--mode handoff` tags/publishes/deploys from post-merge main. **`--go` is the standard invocation for an operator-initiated release** — the single authorization covers the cycle; evidence blocks print as a log; granular `--yes`/`--push`/`--publish` remain for cautious manual runs (`--push` still refuses to auto-fire past any F-N1 finding). `--mode batch` is not implemented — it hard-rejects with a pointer to [`recovery-paths.md`](references/recovery-paths.md) §Scenario 2 rather than silently misbehaving; a real batch tags each version at its own release-merge SHA, which this single-version orchestrator has no model for. Pre-flight (Step 3) runs the full
|
|
96
|
+
`release-pack.mjs` walks the cycle in two phases per invariant 3 — `--mode cut` / `--mode from-scratch` promote `[Unreleased]` (BOTH modes now — a peer's hand-authored section must be promoted whichever mode cut it, and a loud guard blocks the bump if any of the 11 packages still carries non-empty `[Unreleased]` content after promotion), run Step 4f (pre-tag coverage `--fix` with the authoritative F-N1 matcher), and stop at the release commit (PR → merge); `--mode handoff` tags/publishes/deploys from post-merge main. **`--go` is the standard invocation for an operator-initiated release** — the single authorization covers the cycle; evidence blocks print as a log; granular `--yes`/`--push`/`--publish` remain for cautious manual runs (`--push` still refuses to auto-fire past any F-N1 finding). `--mode batch` is not implemented — it hard-rejects with a pointer to [`recovery-paths.md`](references/recovery-paths.md) §Scenario 2 rather than silently misbehaving; a real batch tags each version at its own release-merge SHA, which this single-version orchestrator has no model for. Pre-flight (Step 3) runs the full 23-gate roster from the single shared list in `scripts/gate-roster.mjs` — the same list [`cut-procedure.md`](references/cut-procedure.md) §3.1 transcribes, so a subset run requires editing that one file, not two.
|
|
97
97
|
|
|
98
98
|
The pieces are callable alone: `bump.mjs` (version fields + the factory `.mcp.json` a2ui-mcp pin, invariant 8), `promote-unreleased.mjs` / `insert-stub.mjs` (CHANGELOG blocks), `tag-lockstep.mjs` (12 tags, `--delete` to move), `dispatch-publish.mjs` (publish workflows; `--verify-triggered` re-dispatches only missing runs; `--after` enforces batch ordering — dispatch output states what WAS done, never a to-do phrased as if it hadn't fired), and `pr-bridge.mjs` (the two-phase bridge: pushes the release branch, opens the PR, waits out CI, and merges ONLY on all-non-fail-soft-checks-green + zero unresolved threads + no changes-requested; any other state stops with evidence — §5.7 mechanized, `--dry` to preview the decision). All fail fast outside a monorepo root (`assert-monorepo-root.mjs`); fork-configurable via `--host` / `--scope`. All 6 CLI scripts (plus `scripts/release/check-release.mjs`) have a `selftest` mode wired into CI's Plugin bin selftests step; the 3 helper modules (`assert-monorepo-root`, `gate-roster`, `package-paths`) are exercised through the CLIs' selftests, not their own.
|
|
99
99
|
|
|
@@ -110,7 +110,8 @@ npm run check:examples-md-fresh # 18 .examples.md vs .examples.ht
|
|
|
110
110
|
npm run verify:site-a2ui # 19 site-a2ui rows vs source fragments
|
|
111
111
|
npm run verify:contrast # 20 WCAG AA — canvas-text AND text-on-fill
|
|
112
112
|
npm run check:token-semantics-sync # 21 adia-tokens generated refs vs token sources
|
|
113
|
-
|
|
113
|
+
npm run check:demo-routes # 22 demo surfaces routed + patterns indexed
|
|
114
|
+
node scripts/release/check-cut-hygiene.mjs --version <mode-dependent> # 23 README CDN-pin + version currency — CUT modes pre-flight at the PREVIOUS version (the README claim is exact-match and only moves at the Step-4 bump; Step 4g re-proves at the cut version), HANDOFF pre-flights at the CUT version (post-merge, the claim already moved)
|
|
114
115
|
```
|
|
115
116
|
|
|
116
117
|
Any red → route via [`gates-catalog.md`](gates-catalog.md); fix at the source, re-run the narrowest gate, then re-run the full sequence. The canonical miss: a cut that ran 7 of the gates shipped a stale-embeddings defect that surfaced a day later and cost a tag-move recovery.
|
|
@@ -202,7 +202,7 @@ npm run check:demo-shells
|
|
|
202
202
|
|
|
203
203
|
Add `verify:corpus` + `check:embeddings-fresh` if chunks were touched; `check:lightningcss-build` if CSS was touched; F-N1 if unpushed release tags exist.
|
|
204
204
|
|
|
205
|
-
**Full pre-cut sweep** — the
|
|
205
|
+
**Full pre-cut sweep** — the 23-gate roster in [`cut-procedure.md`](cut-procedure.md) §Step 3, sourced from `` `${CLAUDE_PLUGIN_ROOT}/skills/adia-release/scripts/gate-roster.mjs` `` (the ONE list; `release-pack.mjs` imports and runs it in full — a subset run is impossible without editing that file). ~90s wall time.
|
|
206
206
|
|
|
207
207
|
**Omnibus** — `npm run check` invokes everything. Heavy; use when re-baselining a stale checkout.
|
|
208
208
|
|
|
@@ -50,11 +50,15 @@ export const GATE_ROSTER = [
|
|
|
50
50
|
{ n: 19, cmd: 'npm run verify:site-a2ui', what: 'site-a2ui converted rows vs source fragments' },
|
|
51
51
|
{ n: 20, cmd: 'npm run verify:contrast', what: 'WCAG AA — canvas-text + text-on-fill pairs' },
|
|
52
52
|
{ n: 21, cmd: 'npm run check:token-semantics-sync', what: 'adia-tokens generated references vs token sources' },
|
|
53
|
+
// Operator directive 2026-07-27: demo surfaces must be discoverable —
|
|
54
|
+
// components/modules with .examples.html need a /site/components route,
|
|
55
|
+
// catalog patterns need their Pattern Library sitemap entry.
|
|
56
|
+
{ n: 22, cmd: 'npm run check:demo-routes', what: 'demo surfaces routed + patterns indexed' },
|
|
53
57
|
// versionArg: the runner appends ` --version X.Y.Z` (release-pack knows the
|
|
54
58
|
// cut version; the roster stays a static list). Objective half of the
|
|
55
59
|
// v0.7.13-retro hygiene checker — README CDN pins / "Current version"
|
|
56
60
|
// claims vs the cut version; branch/worktree limbo prints as warns (H2).
|
|
57
|
-
{ n:
|
|
61
|
+
{ n: 23, cmd: 'node scripts/release/check-cut-hygiene.mjs', what: 'README CDN-pin + version currency', versionArg: true },
|
|
58
62
|
];
|
|
59
63
|
|
|
60
64
|
// -- CLI ------------------------------------------------------------------
|
|
@@ -709,7 +709,7 @@ async function main() {
|
|
|
709
709
|
// Plan-assembly selftest — spawns THIS script as a real subprocess with
|
|
710
710
|
// --mode cut --dry (fully mutation-free per every step's own dry-guard) and
|
|
711
711
|
// asserts the assembled plan carries the expected markers: the full
|
|
712
|
-
//
|
|
712
|
+
// 23-gate roster (H3 — a subset run must be impossible without editing
|
|
713
713
|
// gate-roster.mjs), and the invariant-3 stop-before-PR message (cut mode
|
|
714
714
|
// must never proceed to tag/push/publish on its own). A fixture temp dir
|
|
715
715
|
// supplies the operator-authored content files (--commit-message-file /
|