@adia-ai/mcp 0.8.37
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/CHANGELOG.md +1687 -0
- package/README.md +210 -0
- package/TOOLS.md +565 -0
- package/bin/adia-mcp +108 -0
- package/gen-ui/load-env.js +72 -0
- package/gen-ui/server.d.ts +20 -0
- package/gen-ui/server.js +378 -0
- package/gen-ui/session-sweep.js +56 -0
- package/gen-ui/tools/corpus.js +169 -0
- package/gen-ui/tools/discovery.js +89 -0
- package/gen-ui/tools/feedback.js +100 -0
- package/gen-ui/tools/ontology-context.js +45 -0
- package/gen-ui/tools/refine.js +158 -0
- package/gen-ui/tools/schema-to-zod.js +68 -0
- package/gen-ui/tools/synthesis.js +405 -0
- package/gen-ui/tools/validation.js +131 -0
- package/gen-ui/tools/zettel.js +87 -0
- package/package.json +58 -0
- package/protocol/server.d.ts +11 -0
- package/protocol/server.js +37 -0
- package/protocol/tools/protocol.js +106 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,1687 @@
|
|
|
1
|
+
# Changelog — @adia-ai/mcp
|
|
2
|
+
|
|
3
|
+
> Folds `@adia-ai/gen-ui-mcp` and `@adia-ai/a2ui-protocol-mcp` into ONE npm
|
|
4
|
+
> package — one bin (`adia-mcp`), two servers (gh#1240, operator ruling
|
|
5
|
+
> 2026-08-14). Neither predecessor name ever published a 0.8.x, so there is no
|
|
6
|
+
> npm deprecation cycle for either — this package IS their first publish.
|
|
7
|
+
> Entries below inherit `@adia-ai/gen-ui-mcp`'s own history (formerly
|
|
8
|
+
> `@adia-ai/a2ui-mcp`, renamed at ADR-0048 P2) verbatim; `@adia-ai/a2ui-protocol-mcp`'s
|
|
9
|
+
> entire changelog was still `[Unreleased]` at fold time (minted at ADR-0048 P4,
|
|
10
|
+
> never released under its own name) and is merged into the section below.
|
|
11
|
+
|
|
12
|
+
## [0.8.37] — 2026-08-14
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
- **Distribution folded into one package: `@adia-ai/mcp` (gh#1240, operator ruling 2026-08-14).** `packages/gen-ui-mcp/` → `packages/mcp/gen-ui/`, `packages/a2ui-protocol-mcp/` → `packages/mcp/protocol/`, server internals unchanged. One bin, `adia-mcp`: `adia-mcp gen-ui` (this package's 30-tool generation server) and `adia-mcp protocol` (the 4-tool protocol server) spawn the matching server as a real child process with its own argv[1] and inherited stdio — the two servers' entry-point contracts differ (gen-ui's `main()` runs unconditionally at module scope; protocol's is guarded behind an `isEntryPoint()` check), so the dispatcher spawns rather than imports, which is also what an MCP stdio transport needs regardless. Bare `adia-mcp` prints the two-server menu. The ADR-0048 §3 two-SERVER decision is unchanged ("they do different things") — only the npm distribution unified, before either predecessor name ever published. TOOLS.md is now one file with both surfaces sectioned; the P4 protocol-isolation smoke (`mcp:protocol:smoke`) retargets at `packages/mcp/protocol/server.js` and keeps proving the protocol server's runtime module graph reaches no `@adia-ai/gen-ui`/`@adia-ai/llm`.
|
|
16
|
+
- **New package: the A2UI protocol MCP server (ADR-0048 P4, gh#1192; folded into this package's `protocol/` surface by gh#1240).** Four tools over stdio — `validate_schema` (protocol form: schema + runtime registry, no catalog), `get_component_map` (registry view: A2UI type → element tag, alias-aware), `get_wiring_catalog` (live wiring registry: controllers, action handlers, data-URI resolver schemes), and `server_status`. Its dependency reach is `@adia-ai/a2ui` + the MCP SDK + zod: `@adia-ai/gen-ui` and `@adia-ai/llm` are absent from `protocol/`'s runtime module graph by design, so an A2UI-conformance host can validate and introspect documents without a generation system or a model client in its reach.
|
|
17
|
+
- **`protocol/server.js` only auto-starts when it is the process entry point**, so importing it to enumerate tools does not open a stdio transport.
|
|
18
|
+
|
|
19
|
+
### Notes
|
|
20
|
+
- **`convert_html` is NOT on the protocol surface**, despite the split spec's tool table assigning it there. The transpiler it wraps is catalog-driven (`gen-ui/compose/transpiler/transpiler-maps.js` builds its prop map from `corpus/catalog-a2ui_0_9.json`) and reaches the retrieval layer via `compose/core/reference.js`. The catalog artifact travels with the training corpus into `@adia-ai/gen-ui` per ADR-0048's ## Data ruling, and splitting it out is explicitly a new ADR (## Risks) — so the tool stays on the gen-ui surface. Recorded on gh#1192.
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
- **`plan_app_state` ↔ `generate_ui` contract repair (REQ-03, gh#1208, SPEC gh#1200) — re-landed on the moved `packages/gen-ui-mcp/` paths after ADR-0048 P2 relocated this package from `packages/a2ui/mcp/` (commit 3d46409b5; the original PR #1217 forked before that move and went CONFLICTING).** `generate_ui`'s `context` schema silently dropped `plan_app_state`'s `intent`/`experience` blocks (`server.ts:254`, pre-repair inline zod object naming only `domain`/`tasks`); both tools now share one schema, `tools/ontology-context.ts`'s `ontologyContextSchema`. `plan_app_state`'s `experience.shell` vocabulary is reconciled (BREAKING) with the Orientation Record's own Shell axis (`admin | chat | editor | simple | embed | none`, was `admin-shell | chat-shell | a2ui-root`) — the same enum both tools read, so plan_app_state's system prompt and generate_ui's schema can no longer drift apart. A test (`tools/ontology-context.test.js`) asserts this set stays equal to `record-lint`'s own canonical `AXES['Shell']` directly, closing the "fourth hand-typed copy" drift class an independent review flagged (finding 5).
|
|
24
|
+
- **`plan_app_state` now validates its own extracted output against `ontologyContextSchema` before returning it (independent-review finding 2).** A model emitting a stale/hallucinated shell or mode value previously passed straight through as raw JSON text — `safeParse` now fails loudly with a typed error instead, closing the producer half of the breaking-change guarantee `generate_ui`'s consumer-side schema already provided.
|
|
25
|
+
- **`plan_app_state`'s description states its real scope (gh#1208).** Adds an honesty clause: mechanizes only the Reasoning Ladder's ~Tier 0/1 rungs, points to app-planner's Domain Plan for the rest.
|
|
26
|
+
- **Per-engine honesty on what `context` actually reaches (independent-review findings 3 + 4).** `generate_ui`'s `context` param description and `plan_app_state`'s own description now state precisely: only the monolithic engine's system-prompt injection (`packages/gen-ui/compose/strategies/monolithic/_shared.js`) reads `context` at all — the zettel engine (and the free-form tier) ignore it entirely regardless of engine selection — and even there only five leaves are interpolated (`domain.entities`, `domain.metrics`, `tasks.primary`, `experience.mode`, `experience.shell`); `intent.*` and `tasks.inspection` validate against the schema but are not yet read by any prompt. Scoped the wording rather than wiring `intent`/`tasks.inspection` into the injection block or wiring context into zettel/free-form retrieval — both are real follow-ups but change generation behavior and eval floors, out of scope for a contract-repair re-land (recorded as a scoping decision, not silently dropped).
|
|
27
|
+
- **Stale JSDoc on `generateUI`/`generateUIStream` corrected to the four-block contract (independent-review finding 6).** `packages/gen-ui/compose/core/generator.js`'s `@param {object} [opts.context]` still described the pre-repair two-block (`domain`, `tasks`) shape; now names all four blocks and the same per-engine/per-leaf caveat above.
|
|
28
|
+
- **Inverted test name fixed (independent-review finding 7).** `ontology-context.test.js`'s `'rejects an unknown top-level key'` asserted the opposite of what its body proved (zod's default `.object()` strips unknown keys; `.strict()` was never set). Renamed to state the documented limit rather than adding `.strict()` — the schema is deliberately additive, and rejecting the whole call on an unrecognized forward-compat key would be the wrong contract for an MCP tool boundary.
|
|
29
|
+
- **`TOOLS.md` is generated now, not hand-written (ADR-0048 P4, gh#1222).**
|
|
30
|
+
`scripts/build/generate-mcp-tools-md.mjs` boots this server over a real stdio
|
|
31
|
+
transport and derives the page from its live `tools/list` response — so the
|
|
32
|
+
reference cannot claim a tool, a param, or a default the server does not
|
|
33
|
+
serve. `check:mcp-tools-md-fresh` rides `npm run check`. Grouping and the page
|
|
34
|
+
preamble live in `tool-groups.mjs`; the generator fails if that map and the
|
|
35
|
+
server disagree in either direction. Each tool now carries a real argument
|
|
36
|
+
table in place of the old `_See tools/x.js for the input schema_` pointer.
|
|
37
|
+
- **Four tool descriptions gained prose that previously existed only in
|
|
38
|
+
TOOLS.md**, where no MCP client could read it: `get_training_gaps` (the
|
|
39
|
+
`blendedScore` weighting and `signal` taxonomy), `submit_feedback` (where
|
|
40
|
+
ratings persist), `get_quality_metrics` (`thumbUpRate` semantics), and
|
|
41
|
+
`search_patterns` (the retired `semantic`/`remix` params). Descriptions only —
|
|
42
|
+
**no tool's input or output schema changed.**
|
|
43
|
+
- **No tools were removed.** ADR-0048's split spec assigns `convert_html` to the
|
|
44
|
+
new `@adia-ai/a2ui-protocol-mcp`, but the transpiler it wraps is
|
|
45
|
+
catalog-driven and reaches the retrieval layer, so it stays here (P4 build
|
|
46
|
+
check, gh#1192). Tool count stays 30 and every form here is unchanged.
|
|
47
|
+
Historical note: from P4 until gh#1248 (below), all four of the protocol
|
|
48
|
+
server's tool names also existed here, returning different shapes —
|
|
49
|
+
`validate_schema` (here: adds a `catalog` key + anti-pattern scoring),
|
|
50
|
+
`get_component_map` (here: catalog text with descriptions, not a type→tag
|
|
51
|
+
table), `get_wiring_catalog` (here: the full authoring knowledge base — event
|
|
52
|
+
payloads, refresh strategies, value sources, associations, per-controller
|
|
53
|
+
config/commands/bind — not just registry names), and `server_status` (here:
|
|
54
|
+
corpus stats). gh#1248 renamed the protocol side's four (this package's
|
|
55
|
+
`gen-ui` surface keeps every name below, unchanged) — see `packages/mcp/README.md`'s
|
|
56
|
+
Tool name disambiguation table for the current mapping.
|
|
57
|
+
|
|
58
|
+
### Changed
|
|
59
|
+
- **The protocol server's 4 overlapping tools renamed before first publish
|
|
60
|
+
(gh#1248, adversarial-review finding F7, 2026-08-14).** `validate_schema` →
|
|
61
|
+
`validate_document`, `get_component_map` → `get_registry_map`,
|
|
62
|
+
`get_wiring_catalog` → `get_wiring_registry` (it serves the LIVE registry —
|
|
63
|
+
the new name is more accurate too), `server_status` → `protocol_status`.
|
|
64
|
+
Protocol-side only — this package's `gen-ui` surface keeps its 30 names
|
|
65
|
+
unchanged, proven by a byte-diff of `TOOLS.md`'s `gen-ui` section. The
|
|
66
|
+
protocol server had never published, so this was the cheapest possible
|
|
67
|
+
window: after `0.8.37` (this package's first publish) these names freeze
|
|
68
|
+
like every other tool contract under `packages/mcp/README.md`'s stability
|
|
69
|
+
rule. Zero same-name overlap now exists between the two servers — see
|
|
70
|
+
`packages/mcp/README.md`'s Tool name disambiguation section and
|
|
71
|
+
`.claude/docs/specs/a2ui-gen-ui-split.md` ## Interfaces ▸ MCP partition for
|
|
72
|
+
the disambiguation history this resolves.
|
|
73
|
+
|
|
74
|
+
## [0.8.36] — 2026-08-13
|
|
75
|
+
|
|
76
|
+
### Fixed
|
|
77
|
+
- **This package could not run at all when installed from npm (gh#1186).** `0.8.35` and every version before it shipped straight from monorepo source with no import-rewrite step, so 97 module specifiers in the packed file set pointed OUT of the package root — they only resolve because the monorepo puts `compose/`, `retrieval/`, `validator/`, `corpus/` and `llm/` where those paths expect them. A consumer's very first `node server.js` died on `ERR_MODULE_NOT_FOUND` for `/…/scripts/load-env.mjs` before a single tool registered. Every one now imports the sibling by its npm package specifier (`@adia-ai/a2ui-compose/core`, `@adia-ai/a2ui-retrieval/catalog`, `@adia-ai/llm/bridge`, …) — the packages were already correctly declared as dependencies; only the code disagreed. `npm run probe:packed-boot` now boots the tarball outside the repo and gets 30 tools back over a real MCP handshake.
|
|
78
|
+
- **`run_eval` was dead code (gh#1186).** `server.ts`'s dynamic `import('../a2ui/evals/harness.mjs')` resolved to `packages/a2ui/a2ui/evals/harness.mjs`, which does not exist in the monorepo either — the tool threw for anyone who called it, on any install. Now `@adia-ai/a2ui-compose/evals`. Found by the new `check:packed-imports` gate, not by a bug report.
|
|
79
|
+
- **`.env` loading no longer reaches outside the project (gh#1186).** `server.ts` side-effect-imported the monorepo's `../../../scripts/load-env.mjs`; the package now ships its own `load-env.js` that walks up from the working directory and **stops at the project root** (first directory with a `package.json` or `.git`). The bound is load-bearing, not tidiness: an unbounded walk from a git worktree under `.claude/worktrees/` climbed into the parent checkout's `.env`, handed the server live API keys a keyless run was meant to prove it could do without, and turned `smoke-6-plan-app-state` into a real 32k-token call that blew the client's 60s timeout. Note that the MCP SDK's stdio transport passes a filtered environment to servers it spawns, so `ADIA_SKIP_DOTENV` does not survive a client spawn — the project bound is what actually holds.
|
|
80
|
+
|
|
81
|
+
### Changed
|
|
82
|
+
- **The tarball no longer ships `scripts/` (gh#1186).** Those 26 files are the monorepo's own eval/smoke harnesses (`eval-diff.mjs`, `smoke-*.mjs`, `test-a2ui.mjs`, …), driven by root `package.json` scripts and never by a consumer; shipping them put 60+ unresolvable specifiers and a `playwright` import into the published artifact. Also dropped the stale `personas/` entry, which names a directory that does not exist. Published file count: 34 → 14. No consumer-facing surface changes — `bin`, `server.js`, `tools/` and `session-sweep.js` are untouched, and no MCP tool's input/output schema moved.
|
|
83
|
+
|
|
84
|
+
## [0.8.35] — 2026-08-13
|
|
85
|
+
|
|
86
|
+
### Changed
|
|
87
|
+
- **`generate_ui`'s tool response no longer hand-rolls its own field whitelist (gh#1135, WS-4 SPEC REQ-04).** Built off `@adia-ai/a2ui-compose`'s new `projectEngineResult` projection instead, so a newly added first-class engine-result field (starting with `acceptance`, REQ-03) survives onto the wire without this tool needing a matching edit. No existing field name changes; response shape is additive.
|
|
88
|
+
|
|
89
|
+
### Maintenance
|
|
90
|
+
- **`scripts/` touched in this release window** (1 file(s), e.g. `scripts/smoke-extended.mjs`) — carried by the entries above.
|
|
91
|
+
- **`tools/` touched in this release window** (2 file(s), e.g. `tools/validation.js`) — carried by the entries above.
|
|
92
|
+
|
|
93
|
+
## [0.8.34] — 2026-08-11
|
|
94
|
+
|
|
95
|
+
### Maintenance
|
|
96
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the lockstep version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.8.34 work shipped in date-range-picker unified selection, core boolean-reflect fix, nav state-color spec, component polish + docs repair wave. See `packages/web-components/CHANGELOG.md#0834--2026-08-11` for details.
|
|
97
|
+
|
|
98
|
+
## [0.8.33] — 2026-08-11
|
|
99
|
+
|
|
100
|
+
### Maintenance
|
|
101
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the lockstep version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.8.33 work shipped in variant/color/tone convention completes on alert/mark/toast; combobox-ui gains real option/optgroup support; 22 registry entries close the last unmapped-tag class. See `packages/web-components/CHANGELOG.md#0833--2026-08-11` for details.
|
|
102
|
+
|
|
103
|
+
## [0.8.32] — 2026-08-09
|
|
104
|
+
|
|
105
|
+
### Fixed
|
|
106
|
+
- **The refine verb works on retrieval-sourced compositions (gh#832, engine fix in `@adia-ai/a2ui-compose`).** `refine_composition` declined every composition the retrieval tier produced — they carried `plan: null` and the refiner has nothing else to address — so a whole tier of `compose_from_chunks` output was unrefinable in the product, not just in the eval. No tool schema changes: `compose_from_chunks`' `plan` field was already declared `object|null` and merely stopped being `null` on the retrieval path; inputs are untouched. The one input-side move is a widening — the two-call replay path (`compose_from_chunks({ plan })`) now validates with `allowChunkRoot`, so a plan this server handed out is a plan this server accepts back; a previously-rejected input is now accepted, and nothing previously accepted is rejected. `smoke-extended.mjs` gains **smoke-4-chunk-refine** (4/4 PASS), an MCP round-trip that is deterministic and key-free by construction — a strong direct chunk match never calls the LLM, and `refine_composition`'s explicit-`ops` mode skips it too — asserting the contract (a plan comes back, it refines, the refinement materializes and preserves the prior UI) rather than any model's word choice.
|
|
107
|
+
- **`eval-compose-from-chunks.mjs --real-llm` could not run at all (gh#832).** The mode was pinned to `claude-sonnet-4-20250514`, since retired: every real-LLM run exited 2 with `model: <id>` before scoring a single row, so the only mode that can exercise the refine turn — a stub run has no adapter and the turn is two LLM passes — was silently dead, and the gh#828 refine work could only ever be measured in the mode that structurally cannot demonstrate it. Now `claude-sonnet-4-6`, overridable via `EVAL_LLM_MODEL` so the next retirement is a config change. First real-LLM baseline: **avg 95, 20/20 passing, coverage scored on 20/20 rows, refine_applied 10, refine_skipped 0** (`.claude/docs/specs/compose-from-chunks-eval.md`). The stub baseline is unchanged at **avg 97, 20/20, coverage on 10/20** — correctly so, and its recorded blocker moves from `priorState has no plan; cannot refine` (a contract defect that fired with a real LLM too) to `no llmAdapter provided` (a stub-mode fact by design).
|
|
108
|
+
- **Correct modal markup is no longer docked 15 points for being closed (gh#827).** A `<dialog>` lays out nothing until it is opened — that is its correct rendered state — so `render-fidelity.mjs`'s zero-visible-elements heuristic (`hasCustomTags && customElementCount === 0 && !blank → -15`) fired on every dialog/popover-shaped fragment for behaving exactly as designed. With gh#824's `:not(:defined)` false positive gone, this was the sole remaining render deduction in the 20-intent holdout: intent-019 (a `<modal-ui>`, `undefinedTags: []`, `errors: []`) scored render 85 on a 30%-weighted axis. The fix asks the question the heuristic exists to ask rather than exempting the case: when — and only when — zero custom elements are laid out, the probe opens the closed native overlays it finds (`dialog:not([open])` via `showModal()`, falling back to `show()`; `[popover]` via `showPopover()`, each individually guarded) and re-counts. Exempting a present-but-closed dialog would have handed a free pass to a modal containing nothing renderable; opening it keeps the "nothing rendered" catch intact and measures what a consumer actually sees. Native surfaces only — no component-specific knowledge — and because the pass runs only when the heuristic would otherwise fire, the other 19 intents measure byte-identically. Measured post-gh#828: **intent-019 render 85 → 100, composite 94 → 100; holdout avg 96.90 → 97.20 (20/20 passing, unchanged)**, no other row moving by any amount. The `--selftest` gains two controls (now 6/6): **E** proves closed-dialog markup scores 100 with its contents laid out (`openedSurfaces: ['dialog']`), and **F** is E's leak control — a defined element that genuinely lays out nothing, with no overlay to open, is still docked to 85. #824's controls A–D and #817's substrate guard are untouched and still pass. One additive diagnostic key, `openedSurfaces`; no MCP tool schema is touched.
|
|
109
|
+
- **The holdout's refine turn actually runs — 10 of 20 rows were scored against output the harness never asked for (gh#828).** `eval-compose-from-chunks.mjs` never read the holdout's `refine` field: every `kind: refine` row was composed ONCE from its base intent, then scored against `expected_components` that describe the **post**-refinement surface (each such row names exactly the component its refinement introduces — `Select` for a date-range filter, `TableToolbar` for a bulk-action toolbar, `Accordion` for collapsible steps). Half the holdout's coverage axis was therefore asking for markup no stage was ever asked to produce; this is the harness defect behind the "eval gap" proposal ruled on gh#823, and why widening `expected_components` there was correctly rejected. The eval now mirrors the product's own refine path — `refine_composition` in `mcp/tools/synthesis.js`: prior state → `refineFromIntent` → `applyOps` → re-materialized html — rather than inventing a "compose with both strings" shortcut, and scores structural/coverage/render on the refined result. Where the refine turn **cannot** execute, the harness reports `coverage: null` rather than a zero it did not measure, matching this eval's existing treatment of `retrieval: null` (a row with no `expected_chunk`) and the refuse-to-score doctrine of the embeddings guard (gh#804) and render probe (gh#801); the composite renormalizes over the remaining axes and the report, the JSON (`coverage_scored`, `refine_applied`, `refine_skipped`) and the stderr aggregate all name how many rows were narrowed, so a lifted avg can never be read as a lifted engine. Measured on the 20-intent stub holdout: **avg 93 → 97, 20/20 passing unchanged, coverage scored on 10/20 rows**. Per-row, only the 10 refine rows move (93→100, 93→100, 93→100, 87→100, 100→100, 80→100, 92→100, 90→100, 96→94, 87→100); the single decrease is intent-019, whose render 85 (a closed `<dialog>`, gh#827) now carries more of a three-axis composite. All 10 report the same reason — `priorState has no plan; cannot refine`: a stub run has no LLM adapter, and every stub-mode composition is retrieval-sourced, so its `plan` is null and `refineFromIntent` declines. That is a genuine pipeline gap this change makes visible instead of hiding behind a fabricated coverage number: **a retrieval-sourced composition cannot be refined at all, in the product as well as the eval** — filed separately, not papered over here. Zettel (cov 93 / avg 90 / MRR 1.00) and free-form (cov 100 / avg 85 / F1 62) floors are untouched — those harnesses do not run this script. No MCP tool schema is touched.
|
|
110
|
+
- **The render probe measured its own broken setup, not the markup (gh#824).** Every intent's render score was capped — `:not(:defined)` fired on correct, fully-defined elements. The cause was not the timing the issue guessed: `render-fidelity.mjs` computed a probe URL and never navigated to it, writing the page into `about:blank` with `document.write`, so the root-relative stylesheet and `web-components/index.js` URLs resolved against `about:blank` and **were never fetched** — no custom element was ever registered, and no console error fired either, because no request was even attempted. Navigating alone did not fix it: the barrel's `@adia-ai/a2ui-runtime` bare specifier (via `components/inspector/inspector.class.js`) has no resolution without an import map, so the module graph still died. The probe page is now SERVED by the probe's own dev server and navigated to (`page.goto`), carries the import map read from `site/index.html` (single source — not a second copy that goes stale), and waits on `customElements.whenDefined` for every hyphenated tag in the fragment raced against a 3 s budget, so a genuinely unregistered tag never resolves and stays charged. Console noise is charged only where it EXCEEDS a measured control page — the substrate's own output (`core/icons-manifest.js` is a build artifact absent from a dev checkout, so any fragment containing an `<icon-ui>` lost 10 points for the repo's state) — a measured control rather than an allowlist that goes stale. Extending #817's doctrine one layer down: if the control page cannot register its sentinel `<card-ui>`, the probe returns `score: null` / `unavailable` instead of a uniform tax nobody can distinguish from a quality signal — this bug's own failure mode, now loud. Measured on the 20-intent holdout: **avg 86 → 93, 18/20 → 20/20 passing**, every intent's render 65–90 → 100 except intent-019 (85; a closed `<dialog>` has zero laid-out custom elements, which trips the separate `-15` no-visible-elements heuristic — a distinct false positive, filed separately). Zettel floors cov 93 / avg 90 / MRR 1.00 and free-form cov 100 / avg 85 / F1 63 are unchanged by this — those harnesses do not use the render probe. `scoreRenderFidelity` gains two additive diagnostic keys (`undefinedTags`, `substrateErrors`); no MCP tool schema is touched. Three stability findings from the PR #826 review are folded in, each with a negative control in the new `--selftest` (`node packages/a2ui/mcp/scripts/render-fidelity.mjs --selftest`, 4/4): `whenDefined` **rejects** with `SyntaxError` for a reserved hyphenated name (`font-face`, `annotation-xml`, `missing-glyph`, `color-profile` — all pass an `includes('-')` filter and can appear in an emitted fragment's inline SVG), which propagated out of `Promise.all` and scored the fragment **0 / "Render probe crashed"**; because it is a rejection and not a synchronous throw, the guard is a per-tag `.catch`, and such a name — never definable — stays correctly penalized. The control-page baseline is now cached **only on success**, so one transient failure can no longer mark every later intent `unavailable` off a single bad reading. And a malformed percent sequence in a request path (`/%E0%A4%A`) threw `URIError` inside the http handler — an uncaughtException that killed the process mid-eval; `safeDecodePath` answers **400** instead.
|
|
111
|
+
- **A missing browser binary can no longer masquerade as an engine score (gh#801).** `render-fidelity.mjs` returned `score: 0` when Playwright couldn't launch — indistinguishable from markup that renders terribly. Render is 30% of every intent's weight, so the nightly (which runs `npm ci` but never `npx playwright install`) published **avg 62, 0/20** for the exact SHA that scores **86, 18/20** where the probe runs: a 24-point measurement artifact, reported as a chunk-zettel regression. Probe failures (browser launch, dev server bind) now return `score: null` with an `unavailable` reason; the eval collects them and exits **2** — the same refuse-to-score doctrine as the embedding-key guard, not a quiet zero. `nightly-eval.yml` installs chromium after `npm ci` (the root cause), and its exit-2 annotation no longer claims the key is the only possible cause. New selftest control **E** proves it: no browser → exit 2, no scores. The embedding hypothesis is refuted for the record — a deliberately invalid `OPENAI_API_KEY` (20 live 401s at query time) still scores 86/18-of-20, because Tier 1 prefers the sync keyword hit whenever it clears `STRONG_RETRIEVAL_SCORE`, which all 20 intents do.
|
|
112
|
+
- **`scripts/eval-compose-from-chunks.mjs` fails loud instead of scoring a degraded run, and always renders its aggregate (gh#804).** Two harness defects from #801's nightly-eval triage: (1) when the committed chunk-embeddings index's provider key is missing, `chunk-embedding-retriever` gracefully falls back to keyword-only — right for runtime, wrong for an eval, which then fails its floor on config absence; the script now probes the index's own provider before the eval loop and exits **2** (distinct from the floor-miss **1**) with a `::error` naming the actual cause — missing key, empty index, or unsupported provider — and the fix. The guard lives in the script, not a workflow key-probe, because the script reads which provider the index was actually built with — a workflow probe would hardcode one key name and go stale on a provider swap. (2) The `chunk-zettel: X/N passing, avg Y` aggregate now prints to stderr BEFORE the exit-1 floor miss, so a `bash -e` caller can no longer swallow the numbers. New `--selftest` proves both negative controls (plus the pass side and a leak control) keylessly via an `EVAL_SELFTEST_FORCE_SCORE` shim honored only in selftest-spawned children (`EVAL_SELFTEST_CHILD`), never a plain run; `scripts/load-env.mjs` gains `ADIA_SKIP_DOTENV` so the keyless control holds on machines with a `.env`. `.github/workflows/nightly-eval.yml` captures the exit code, renders scores first, surfaces exit 2 as a distinct config `::error`, and pins `permissions: contents: read`.
|
|
113
|
+
|
|
114
|
+
## [0.8.31] — 2026-08-07
|
|
115
|
+
|
|
116
|
+
### Added
|
|
117
|
+
- **HTTP sessions expire when idle (gh#692).** `DELETE` and stream-close were the only exits from the sessions map, so a client that walked away without either left its entry — one `McpServer` of schema wiring plus a transport — held for the life of the process. Each session now carries a last-activity stamp (refreshed by every request on it), and an `unref`'d sweep closes the quiet ones: **`MCP_SESSION_TTL_MS`, default 1800000 (30 min)**, `0` or negative disables eviction. The sweep runs at a quarter of the TTL, clamped to 250 ms…60 s, and being `unref`'d it never keeps the process alive on its own. Eviction closes the transport, which runs the existing teardown, so an evicted session's next request gets the `-32001` "send an initialize request" answer an unknown session id already got — no new error code, no new field. An open stream with no traffic does not count as activity. stdio has no sessions and is untouched. Wire contract unchanged: same 30 tools, same schemas.
|
|
118
|
+
|
|
119
|
+
### Fixed
|
|
120
|
+
- **The boot lines report the real composition count (gh#688).** `loadZettelCorpus()` is async; `server.ts` read `.compositionCount` off the un-awaited Promise, so both ready lines printed `zettel corpus: undefined compositions` (HTTP) and `… undefined compositions)` (stdio). The corpus itself always loaded — only the log lied. The bootstrap now `await`s the load (top-level await; `composition-library` already top-level-awaits its own eager Node load, so this resolves immediately and the log ORDER is unchanged). `boot-log.test.js` boots the real `server.js` in each transport mode and asserts the count parses as a number greater than zero. No tool, schema or wire change.
|
|
121
|
+
- **HTTP mode serves every session, not just the first (gh#674).** `startHttp` kept a per-session `transports` map but connected each transport to ONE module-level `McpServer`; the SDK's `Protocol` binds a single transport per instance, so the second `initialize` threw "Already connected to a transport" and express answered with a **500 HTML page** — two clients could never share a process, and any client that vanished without a `DELETE` wedged the server until restart (observed 200 / 500 / 500). Sessions now get their own `McpServer` (`createServer()`), which is the SDK-idiomatic shape and what the map always implied. Measured cost of the per-connection tool re-registration the issue asked to price: **0.27 ms median / 0.50 ms mean over 200 instances** (p95 1.06 ms) against a **280 ms** process boot for the corpus + chunk index + catalog — those loads stay module-level and shared, so a session pays ~0.1% of one boot, and the end-to-end `initialize` round-trip measures 2.8 ms median. Anything escaping the handler is now a JSON-RPC error object rather than express's HTML page, and an unknown/expired session id answers `-32001` telling the client to re-initialize. stdio is unchanged (one connection, one server). Tool contracts untouched — same 30 tools, same schemas.
|
|
122
|
+
- **`get_training_gaps` no longer ranks an unmeasured domain as the weakest one (gh#678).** A domain whose executions were all scoreless and which nobody rated appeared in `weakDomains` as `blendedScore: 0, signal: 'self-only'` — first in a weakest-first list, on no evidence. The fix is in `@adia-ai/a2ui-retrieval`'s `rankWeakDomains`; on this wire it means `signal` can now read `'none'` for that corner (it previously lied as `'self-only'`) and those entries sort after every ranked domain. Field set, types and tool count are unchanged — no key added or removed, `blendedScore` stays a number, `weighting` restates the rule.
|
|
123
|
+
|
|
124
|
+
## [0.8.30] — 2026-08-07
|
|
125
|
+
|
|
126
|
+
### Added
|
|
127
|
+
- **Human thumbs reach the training gaps (gh#668).** `submit_feedback` now PERSISTS: it wrote only to an in-memory `FeedbackCollector` that died with the process, which is why `thumbUpRate` read 0 across 500 executions while `avgScore` 99 was entirely self-graded. Both it and the gen-UI gallery's new thumbs affordance write through one function (`retrieval/feedback/submit-feedback.js`) into one JSONL store. `get_training_gaps` gains `weakDomains`, ranked on `blendedScore` — `0.7 * humanScore + 0.3 * selfScore` where a domain has both signals, `humanScore` alone where it has no self-grade, `selfScore` alone where it has no thumbs. **A missing signal is not weighted as zero** (PR #673 nit N1): folding an absent self-grade in at 0 ranked a domain humans unanimously approved (70) below an unrated one the validator liked (100) — punishing exactly the domains that finally had real evidence. `selfScore` averages execution scores plus any `score` a rating carries inline, so a surface whose generation was never logged as an execution still contributes one; a scoreless execution is skipped rather than averaged as 0. Additive on the wire: `submit_feedback` takes four new optional inputs and returns two new keys, `get_quality_metrics` adds `ratings` + per-domain human fields and no longer early-returns `thumbUpRate: 0` when the read window holds no executions, and `get_training_gaps` keeps its gap-type keys spread at the top level. No tool added or removed (still 30).
|
|
128
|
+
- **The corpus reads and the refiner are `@adia-ai/agent` definitions (gh#664).** `tools/corpus.js` exports `CORPUS_RESOURCES` — `search_chunks` / `get_chunk` / `lookup_chunk` as tool-mode `defineResource`s with declared argument schemas — and `tools/refine.js` exports `refineUiTool`, a `defineTool`. The MCP registrations are transport over the same definitions, so a harness-assembled agent gets the same reads and the same refiner without an MCP server. Wire contract unchanged: a before/after diff of `tools/list` plus fixture calls against the running server is byte-identical across all 30 tools.
|
|
129
|
+
|
|
130
|
+
### Fixed
|
|
131
|
+
- **The corpus tools' MCP argument shapes are DERIVED from their resource schemas (gh#665, PR #669 nit N1).** The zod registration and the resource `inputSchema` were two hand-maintained copies, already divergent: zod clamped `limit` to 1–50 with a default of 20 while the JSON Schema was unconstrained and mentioned the default only in prose. `tools/schema-to-zod.ts`'s `zodShape()` now derives the MCP shape from the schema (the single source), the clamp lives in the schema and in the read itself, and a construct the derivation cannot express throws at registration instead of silently registering a weaker contract. Wire impact, from a before/after `tools/list` diff across all 30 tools: key ORDER inside `search_chunks.limit` only (`description` now precedes `default`) — every constraint, default, and description byte-identical. The derivation also rejects a supported TYPE carrying an unhonored KEYWORD (`pattern`, `maxLength`, `exclusiveMinimum`, `format`, …): silently deriving a plain `z.string()` from a patterned string would advertise a constraint on one transport and drop it on the other — the same drift one level down.
|
|
132
|
+
|
|
133
|
+
### Maintenance
|
|
134
|
+
- **`scripts/` touched in this release window** (1 file(s), e.g. `scripts/smoke-register-engine.mjs`) — carried by the entries above.
|
|
135
|
+
|
|
136
|
+
## [0.8.29] — 2026-08-06
|
|
137
|
+
|
|
138
|
+
### Maintenance
|
|
139
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the lockstep version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.8.29 work shipped in web-components (icon-ui tone prop gh#652) + web-modules (plan-envelope chrome gh#648) + a2ui-runtime (registry drift fix gh#645) + a2ui-compose (plan-turn executor gh#648) + a2ui-corpus (chunk re-harvest). See `0829--2026-08-06` for details.
|
|
140
|
+
|
|
141
|
+
## [0.8.28] — 2026-08-05
|
|
142
|
+
|
|
143
|
+
### Maintenance
|
|
144
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the lockstep version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.8.28 work shipped in sideEffects tree-shaking fix + CSS barrel regen (gh#625/632). See `0828--2026-08-05` for details.
|
|
145
|
+
|
|
146
|
+
## [0.8.27] — 2026-08-05
|
|
147
|
+
|
|
148
|
+
### Maintenance
|
|
149
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the lockstep version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.8.27 work shipped in menu subtitle + roster migration, agent model pins, proper deflake, release tooling (gh#614/616/617/618). See `packages/web-modules/CHANGELOG.md#0827--2026-08-05` for details.
|
|
150
|
+
|
|
151
|
+
## [0.8.26] — 2026-08-05
|
|
152
|
+
|
|
153
|
+
### Maintenance
|
|
154
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the lockstep version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.8.26 work shipped in WCH chat-harness wave + genui conformance train; first publish of @adia-ai/agent + @adia-ai/persona. See `packages/web-modules/CHANGELOG.md#0826--2026-08-05` for details.
|
|
155
|
+
|
|
156
|
+
## [0.8.25] — 2026-07-31
|
|
157
|
+
|
|
158
|
+
### Maintenance
|
|
159
|
+
- **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.25 work shipped in theme-panel scoped-target [parametric] density/radius fix (gh#570) + System scheme option; anchor-bar-ui; stat-ui band chart layout; chart-ui dots/series-emphasis. See `packages/web-components/CHANGELOG.md#0825--2026-07-31` for details.
|
|
160
|
+
|
|
161
|
+
## [0.8.24] — 2026-07-30
|
|
162
|
+
|
|
163
|
+
### Maintenance
|
|
164
|
+
- **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.24 work shipped in requiredIcons drift cleared across 16 components + checker comment handling (gh#550), worktree bootstrap workspace-link hardening + retrieval corpus-pin fix (gh#554), list-item two-line icon centering (gh#558), card footer bottom-pinning (gh#559). See `packages/web-components/CHANGELOG.md#0824--2026-07-30` for details.
|
|
165
|
+
|
|
166
|
+
## [0.8.23] — 2026-07-30
|
|
167
|
+
|
|
168
|
+
### Maintenance
|
|
169
|
+
- **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.23 work shipped in operator-report day: 20+ fixes, BREAKING --a-font removal, deployed-site freeze fix, plugin rename to adia-ui-kit-*. See `packages/web-components/CHANGELOG.md#0823--2026-07-30` for details.
|
|
170
|
+
|
|
171
|
+
## [0.8.22] — 2026-07-29
|
|
172
|
+
|
|
173
|
+
### Maintenance
|
|
174
|
+
- **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.22 work shipped in select-ui aria-selected action-row fix, combobox radio indicator, form-popover summary hardening, resumable release Step 10. See `packages/web-components/CHANGELOG.md#0822--2026-07-29` for details.
|
|
175
|
+
|
|
176
|
+
## [0.8.21] — 2026-07-28
|
|
177
|
+
|
|
178
|
+
### Maintenance
|
|
179
|
+
- **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.21 work shipped in card/table/select/form-popover fixes from adia-v2 adoption + three drift gates (gh#473, gh#425, gh#435). See `packages/web-components/CHANGELOG.md#0821--2026-07-28` for details.
|
|
180
|
+
|
|
181
|
+
## [0.8.20] — 2026-07-28
|
|
182
|
+
|
|
183
|
+
### Maintenance
|
|
184
|
+
- **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.20 work shipped in form/ subpath exports (gh#457) + tarball test-file hygiene, 7 packages (gh#462). See `packages/web-modules/CHANGELOG.md#0820--2026-07-28` for details.
|
|
185
|
+
|
|
186
|
+
## [0.8.19] — 2026-07-27
|
|
187
|
+
|
|
188
|
+
### Maintenance
|
|
189
|
+
- **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.19 work shipped in form/ cluster publishes (form-popover-ui installable, gh#448) + select-ui summary-label (gh#442) + row-hover container-ladder token fix. See `packages/web-modules/CHANGELOG.md#0819--2026-07-27` for details.
|
|
190
|
+
|
|
191
|
+
## [0.8.18] — 2026-07-27
|
|
192
|
+
|
|
193
|
+
### Maintenance
|
|
194
|
+
- **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.18 work shipped in form-popover-ui rename + 9-test surface + first passing rendered-dom probe (harness repaired for all composites). See `packages/web-modules/CHANGELOG.md#0818--2026-07-27` for details.
|
|
195
|
+
|
|
196
|
+
## [0.8.17] — 2026-07-27
|
|
197
|
+
|
|
198
|
+
### Maintenance
|
|
199
|
+
- **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.17 work shipped in one selection language (radios + tonal + container tier) · form-popover module · check:demo-routes sweep. See `packages/web-components/CHANGELOG.md#0817--2026-07-27` for details.
|
|
200
|
+
|
|
201
|
+
## [0.8.16] — 2026-07-26
|
|
202
|
+
|
|
203
|
+
### Maintenance
|
|
204
|
+
- **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.16 work shipped in text-on-fill AA (90/90 pairs) + release-gate roster 18→22 + the theming guide. See `packages/web-components/CHANGELOG.md#0816--2026-07-26` for details.
|
|
205
|
+
|
|
206
|
+
## [0.8.15] — 2026-07-26
|
|
207
|
+
|
|
208
|
+
### Maintenance
|
|
209
|
+
- **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.15 work shipped in hover darkens in both schemes (600/550 role + filled-button wiring); find-unused adoption skill + measured routing evals. See `packages/web-components/CHANGELOG.md#0815--2026-07-26` for details.
|
|
210
|
+
|
|
211
|
+
## [0.8.14] — 2026-07-25
|
|
212
|
+
|
|
213
|
+
### Maintenance
|
|
214
|
+
- **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.14 work shipped in overlay surface plane + nav-item selected fill + theme neutral hues + examples.md drift gate. See `packages/web-components/CHANGELOG.md#0814--2026-07-25` for details.
|
|
215
|
+
|
|
216
|
+
## [0.8.13] — 2026-07-25
|
|
217
|
+
|
|
218
|
+
### Maintenance
|
|
219
|
+
- **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.
|
|
220
|
+
|
|
221
|
+
## [0.8.12] — 2026-07-24
|
|
222
|
+
|
|
223
|
+
### Maintenance
|
|
224
|
+
- **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.12 work shipped in tag-ui size parity (badge-ui sm/md/lg); plugin skills learn v0.8.11 size model; primitive count fix. See `packages/web-components/CHANGELOG.md#0812--2026-07-24` for details.
|
|
225
|
+
|
|
226
|
+
## [0.8.11] — 2026-07-23
|
|
227
|
+
|
|
228
|
+
### Maintenance
|
|
229
|
+
- **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.11 work shipped in sm/md/lg size model + ancestor [scale] context; adia-wordmark-ui; forge release-cycle hardening. See `packages/web-components/CHANGELOG.md#0811--2026-07-23` for details.
|
|
230
|
+
|
|
231
|
+
## [0.8.10] — 2026-07-20
|
|
232
|
+
|
|
233
|
+
### Maintenance
|
|
234
|
+
- **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.10 work shipped in tag-ui accent variant, dialog-scrim/card-ui fixes; adia-charts/adia-tables skills. See `packages/web-components/CHANGELOG.md#0810--2026-07-20` for details.
|
|
235
|
+
|
|
236
|
+
## [0.8.9] — 2026-07-19
|
|
237
|
+
|
|
238
|
+
### Maintenance
|
|
239
|
+
- **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.9 work shipped in select-ui mark visual (gh#339); release-tooling hardened (branch creation, settle-wait poll, pr-bridge draft guard). See `packages/web-components/CHANGELOG.md#unreleased` for details.
|
|
240
|
+
|
|
241
|
+
## [0.8.8] — 2026-07-19
|
|
242
|
+
|
|
243
|
+
### Maintenance
|
|
244
|
+
- **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.8 work shipped in Type scale tightened one step (body 14px / ui 13px base); release machinery hardened (pr-bridge, mechanized pins, single-sourced roster). See `packages/web-components/CHANGELOG.md#088--2026-07-19` for details.
|
|
245
|
+
|
|
246
|
+
## [0.8.7] — 2026-07-19
|
|
247
|
+
|
|
248
|
+
### Maintenance
|
|
249
|
+
- **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.7 work shipped in factory enrichment (adia-patterns/adia-audit + harvests), forge dogfood/gate fixes, a2ui-corpus content-hash freshness, bundle rebuilds. See `packages/plugins/adia-ui-factory/CHANGELOG.md#087--2026-07-19` for details.
|
|
250
|
+
|
|
251
|
+
## [0.8.6] — 2026-07-18
|
|
252
|
+
|
|
253
|
+
### Maintenance
|
|
254
|
+
- **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.6 work shipped in SSR attribute-replay fix + table declarative data + token repoints (@adia-ai/web-components), gh#268 forge modernization campaign (adia-forge). See `packages/web-components/CHANGELOG.md#086--2026-07-18` for details.
|
|
255
|
+
|
|
256
|
+
## [0.8.5] — 2026-07-17
|
|
257
|
+
|
|
258
|
+
### Maintenance
|
|
259
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.8.5 work shipped in gemini production passthrough + hardening (@adia-ai/llm), SSR browser-API guards + gh issue 276 wave-4 button-ui/option-card-ui migrations (@adia-ai/web-components), admin-sidebar SSR collapse fix (@adia-ai/web-modules), kbd-ui A2UI-render fix (@adia-ai/a2ui-runtime), full chunk/embeddings regen (@adia-ai/a2ui-corpus). See `packages/llm/CHANGELOG.md#085--2026-07-17` for details.
|
|
260
|
+
|
|
261
|
+
## [0.8.4] — 2026-07-16
|
|
262
|
+
|
|
263
|
+
### Maintenance
|
|
264
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.8.4 work shipped in gen-UI provider routing by model id + gemini fixes (@adia-ai/llm), focus-ring/caret rulings + the button-ui purge (@adia-ai/web-components), chat-shell html messages (@adia-ai/web-modules). See `packages/llm/CHANGELOG.md#084--2026-07-16` for details.
|
|
265
|
+
|
|
266
|
+
## [0.8.3] — 2026-07-16
|
|
267
|
+
|
|
268
|
+
### Maintenance
|
|
269
|
+
- **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.3 work shipped in the two Claude Code plugins — the adia-tokens knowledge pack + command refresh (adia-ui-factory) and the release-tooling invariant-3 reconciliation (adia-ui-forge); see `packages/plugins/adia-ui-factory/CHANGELOG.md#083--2026-07-16`.
|
|
270
|
+
## [0.8.2] — 2026-07-16
|
|
271
|
+
|
|
272
|
+
### Maintenance
|
|
273
|
+
- **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.2 work — the `button-ui` ellipsis fix + tarball-shipped MIGRATION.md (@adia-ai/web-components) and the factory-plugin modernization campaign (adia-ui-factory; gh#259) — see `packages/web-components/CHANGELOG.md#082--2026-07-16`.
|
|
274
|
+
## [0.8.1] — 2026-07-15
|
|
275
|
+
|
|
276
|
+
### Maintenance
|
|
277
|
+
- **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.1 work — the `tags-input-ui` chip slot template (TKT-0023) + the `--a-link` AA contrast fix — shipped in @adia-ai/web-components; see `packages/web-components/CHANGELOG.md#081--2026-07-15`.
|
|
278
|
+
## [0.8.0] — 2026-07-15
|
|
279
|
+
|
|
280
|
+
### Maintenance
|
|
281
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.8.0 work — the Material color-token adoption (BREAKING; MIGRATION GUIDE § v0.8.0) — shipped in @adia-ai/web-components, @adia-ai/web-modules, @adia-ai/a2ui-corpus. See `packages/web-components/CHANGELOG.md#080--2026-07-15` for details.
|
|
282
|
+
## [0.7.28] — 2026-07-14
|
|
283
|
+
|
|
284
|
+
### Fixed
|
|
285
|
+
|
|
286
|
+
- **`scripts/test-evals.mjs` (`npm run test:evals` / `test:evals:baseline` /
|
|
287
|
+
`test:all`) was silently broken** — its 5-case eval suite lived at
|
|
288
|
+
`.claude/skills/adia-ui-kit/evals/evals.json`, deleted wholesale when
|
|
289
|
+
that skill was retired, orphaning the script (`ENOENT`, no caller
|
|
290
|
+
noticed since nothing in CI exercises it). Content recovered from git
|
|
291
|
+
history and given a durable home alongside the script,
|
|
292
|
+
`packages/a2ui/mcp/evals/evals.json`, instead of a skill directory
|
|
293
|
+
that can be retired again. Baseline re-captured against current
|
|
294
|
+
(unrelated-to-this-cycle) retrieval behavior — 4/5 passing, avg 91,
|
|
295
|
+
0 regressions.
|
|
296
|
+
|
|
297
|
+
## [0.7.27] — 2026-07-12
|
|
298
|
+
|
|
299
|
+
### Fixed
|
|
300
|
+
- **`TOOLS.md` synced to the live tool surface (30 tools).** The "single source of truth" documented 24 tools and parameters that no longer exist; regenerated against the registered surface.
|
|
301
|
+
- **`report_issue` storage documentation follows the storage repoint** to `qa/findings/issues/` (see `@adia-ai/a2ui-compose` 0.7.27 — the writer lives there).
|
|
302
|
+
|
|
303
|
+
## [0.7.26] — 2026-07-04
|
|
304
|
+
|
|
305
|
+
### Maintenance
|
|
306
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.7.26 work shipped in variant="outline" retired as the reach-for-secondary generation-time habit. See `packages/a2ui/compose/CHANGELOG.md#unreleased` for details.
|
|
307
|
+
|
|
308
|
+
## [0.7.25] — 2026-07-03
|
|
309
|
+
|
|
310
|
+
### Maintenance
|
|
311
|
+
- **Lockstep version bump.** No functional source changes; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.7.25 work shipped in accordion-ui variant="flat|contained" posture + 2 footnote fixes + keyboard a11y. See `packages/web-components/CHANGELOG.md#0725--2026-07-03` for details.
|
|
312
|
+
- **Doc-comment path reference corrected** (`docs/specs/...` → `.claude/docs/specs/...`) in `tools/synthesis.ts` — propagated from the repo-wide `docs/` → `.claude/docs/` migration (2026-07-01); no functional change.
|
|
313
|
+
|
|
314
|
+
## [0.7.24] — 2026-07-01
|
|
315
|
+
|
|
316
|
+
### Maintenance
|
|
317
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.7.24 work shipped in @adia-ai/web-components upstream consumer findings F1/F2/F4/F5/F6 — icon-ui fail-loud registry wiring, @phosphor-icons/core direct dep, custom-elements.json de-fabrication, new display-field-ui primitive, table-ui rowExpandable per-row gate. See `packages/web-components/CHANGELOG.md#0724--2026-07-01` for details.
|
|
318
|
+
|
|
319
|
+
## [0.7.23] — 2026-06-30
|
|
320
|
+
|
|
321
|
+
### Maintenance
|
|
322
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.7.23 work shipped in @adia-ai/web-components button-ui child-text label parity + accordion-ui block-flow gap. See `packages/web-components/CHANGELOG.md#0723--2026-06-30` for details.
|
|
323
|
+
|
|
324
|
+
## [0.7.22] — 2026-06-16
|
|
325
|
+
|
|
326
|
+
### Maintenance
|
|
327
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.7.22 work shipped in the @adia-ai/web-components + @adia-ai/web-modules surface-token alignment (symmetric canvas ramp). See `packages/web-components/CHANGELOG.md#0722--2026-06-16` for details.
|
|
328
|
+
|
|
329
|
+
## [0.7.21] — 2026-06-10
|
|
330
|
+
|
|
331
|
+
### Maintenance
|
|
332
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.7.21 work shipped in corpus harvester scope expansion (gated web-components examples root) + 26 curated chunks (368->394). See `packages/a2ui/corpus/CHANGELOG.md#0721--2026-06-10` for details.
|
|
333
|
+
|
|
334
|
+
## [0.7.20] — 2026-06-10
|
|
335
|
+
|
|
336
|
+
### Maintenance
|
|
337
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.7.20 work shipped in gen-UI form-quality arc (anti-pattern rules + field-ui hardening + validation fold-in) + static-site corpus retrieval (tri-mode loaders) + corpus 308->356. See `packages/web-components/CHANGELOG.md#0720--2026-06-10` for details.
|
|
338
|
+
|
|
339
|
+
## [0.7.19] — 2026-06-10
|
|
340
|
+
|
|
341
|
+
### Maintenance
|
|
342
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.7.19 work shipped in icon-ui standalone-import paint fix + late-connect retry (web-components); full 308-chunk embedding vectors (a2ui-corpus). See `packages/web-components/CHANGELOG.md#0719--2026-06-10` for details.
|
|
343
|
+
|
|
344
|
+
## [0.7.18] — 2026-06-09
|
|
345
|
+
|
|
346
|
+
### Maintenance
|
|
347
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.7.18 work shipped in combobox menu-overflow fix + max-visible-items + the dropdown-family caret OPEN state + the theme-provider CDN bundle (web-components); corpus regrowth batch 1, +24 chunks (a2ui-corpus). See `packages/web-components/CHANGELOG.md#0718--2026-06-09` for details.
|
|
348
|
+
|
|
349
|
+
## [0.7.17] — 2026-06-08
|
|
350
|
+
|
|
351
|
+
### Maintenance
|
|
352
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.7.17 work shipped in badge-ui/tag-ui icon-spacing fix — icon-bearing chips no longer inflate row height + tighter [icon]-gated spacing. See `packages/web-components/CHANGELOG.md#0717--2026-06-08` for details.
|
|
353
|
+
|
|
354
|
+
## [0.7.16] — 2026-06-08
|
|
355
|
+
|
|
356
|
+
### Maintenance
|
|
357
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.7.16 work shipped in the dist CSS + JS bundle refresh. See `packages/web-components/CHANGELOG.md (0.7.16)` for details.
|
|
358
|
+
|
|
359
|
+
## [0.7.15] — 2026-06-08
|
|
360
|
+
|
|
361
|
+
### Maintenance
|
|
362
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.7.15 work shipped in the menu-label-ui new component + badge/tag padding. See `packages/web-components/CHANGELOG.md (0.7.15)` for details.
|
|
363
|
+
|
|
364
|
+
## [0.7.14] — 2026-06-08
|
|
365
|
+
|
|
366
|
+
### Maintenance
|
|
367
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.7.14 work shipped in input-ui/textarea-ui .value upgrade-safety fix. See `packages/web-components/CHANGELOG.md (0.7.14)` for details.
|
|
368
|
+
|
|
369
|
+
## [0.7.13] — 2026-06-06
|
|
370
|
+
|
|
371
|
+
### Maintenance
|
|
372
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.7.13 work: the `./css/sheet` exports `types` fix (`@adia-ai/web-components` + `@adia-ai/web-modules`) + a corpus re-harvest (`@adia-ai/a2ui-corpus`). See `packages/web-components/CHANGELOG.md` for details.
|
|
373
|
+
|
|
374
|
+
## [0.7.12] — 2026-06-04
|
|
375
|
+
|
|
376
|
+
### Maintenance
|
|
377
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.7.12 work: the BREAKING `data-theme`→`theme` token-attribute rename + the new `<theme-provider>` element + CDN `.sheet.js` twins (`@adia-ai/web-components`), and a corpus re-harvest. See `packages/web-components/CHANGELOG.md` for details.
|
|
378
|
+
|
|
379
|
+
## [0.7.11] — 2026-06-04
|
|
380
|
+
|
|
381
|
+
### Maintenance
|
|
382
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.7.11 work: the `<frame-ui>` slot-override regions + `button-ui` hover `-strong` step + `resizable` trait corner handles + `list-item-ui` / `<preview-ui>` fixes (`@adia-ai/web-components`), `<embed-shell>` extending `UIElement` to compose the `resizable` trait (`@adia-ai/web-modules`), and a corpus re-harvest. See `packages/web-components/CHANGELOG.md` for details.
|
|
383
|
+
|
|
384
|
+
## [0.7.10] — 2026-06-03
|
|
385
|
+
|
|
386
|
+
### Maintenance
|
|
387
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.7.10 work: the `<frame-ui>` layout primitive + `list-item-ui` grid fix + `[verse]` type-tier bump (`@adia-ai/web-components`), the new `<embed-shell>` (`@adia-ai/web-modules`), and a corpus re-harvest. See `packages/web-components/CHANGELOG.md` for details.
|
|
388
|
+
|
|
389
|
+
## [0.7.9] — 2026-06-03
|
|
390
|
+
|
|
391
|
+
### Maintenance
|
|
392
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.7.9 work shipped in Lockstep release — no package-specific source changes this cut; substantive v0.7.9 work in `@adia-ai/web-components` (verse control/chrome tier bump + semantic color cusp-lift) + root tooling (PLAN-claim trip-wire, slot-vocab + foundation-layer gate fixes).. See `packages/web-components/CHANGELOG.md#079--2026-06-03` for details.
|
|
393
|
+
|
|
394
|
+
## [0.7.8] — 2026-06-02
|
|
395
|
+
|
|
396
|
+
### Maintenance
|
|
397
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.7.8 work shipped in Lockstep release — no package-specific source changes this cut; substantive v0.7.8 work in `@adia-ai/web-components` (wrapper-trap arm-2 drain: 14 consumer-slot reads pierced via the new `core/logical-children.js` helper).. See `packages/web-components/CHANGELOG.md#078--2026-06-02` for details.
|
|
398
|
+
|
|
399
|
+
## [0.7.7] — 2026-06-02
|
|
400
|
+
|
|
401
|
+
### Maintenance
|
|
402
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.7.7 work shipped in Lockstep release — no package-specific source changes this cut; substantive v0.7.7 work in `@adia-ai/web-components` (drawer/verse register-aware insets + agent-artifact wrapper-pierce).. See `packages/web-components/CHANGELOG.md#077--2026-06-02` for details.
|
|
403
|
+
|
|
404
|
+
## [0.7.6] — 2026-06-02
|
|
405
|
+
|
|
406
|
+
### Maintenance
|
|
407
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.7.6 work shipped in Lockstep release — no package-specific source changes this cut; substantive v0.7.6 work in `@adia-ai/web-components` (block-ui, parametric [padding]/[margin] scale, host.css barrel split, FB-97/98 + command wrapper-trap fixes).. See `packages/web-components/CHANGELOG.md#076--2026-06-02` for details.
|
|
408
|
+
|
|
409
|
+
## [0.7.5] — 2026-06-02
|
|
410
|
+
|
|
411
|
+
### Maintenance
|
|
412
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.7.5 work shipped in Lockstep release — no package-specific source changes this cut; the substantive v0.7.5 fix is in `@adia-ai/web-components` (button-ui colored-variant: readable solid text + outline composes + excluded from the `[color]` text utility).. See `packages/web-components/CHANGELOG.md#075--2026-06-02` for details.
|
|
413
|
+
|
|
414
|
+
## [0.7.4] — 2026-06-02
|
|
415
|
+
|
|
416
|
+
### Maintenance
|
|
417
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.7.4 work shipped in Lockstep release — no package-specific source changes this cut; substantive work in `@adia-ai/web-components` + `@adia-ai/web-modules` (verse register, OD-5 `-default` revert, grid align/justify, font-family floor).. See `packages/web-components/CHANGELOG.md#074--2026-06-02` for details.
|
|
418
|
+
|
|
419
|
+
## [0.7.3] — 2026-06-01
|
|
420
|
+
|
|
421
|
+
### Maintenance
|
|
422
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.7.3 work shipped in @adia-ai/web-components parametric named gap scale (xs–xl) + explicit/ambient [gap] split (no leak) + FB-96 tree slot-adopt. See `packages/web-components/CHANGELOG.md#073--2026-06-01` for details.
|
|
423
|
+
|
|
424
|
+
## [0.7.2] — 2026-06-01
|
|
425
|
+
|
|
426
|
+
### Maintenance
|
|
427
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.7.2 work shipped in @adia-ai/web-components template-engine ARIA-transparent wrapper spans (FB-94) + menu-item orphan fix (FB-95) + tokens cascade-layer; @adia-ai/web-modules admin-page-footer sticky band (bug-54). See `packages/web-components/CHANGELOG.md#072--2026-06-01` for details.
|
|
428
|
+
|
|
429
|
+
## [0.7.1] — 2026-05-31
|
|
430
|
+
|
|
431
|
+
### Maintenance
|
|
432
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.7.1 work shipped in @adia-ai/web-components a11y/reactivity fixes — input-ui affordance centering (bug-60), tree-ui role=group WAI-ARIA (FB-91), menu-ui dynamic items (FB-92), input-ui reactive prefix/suffix (FB-93). See `packages/web-components/CHANGELOG.md#071--2026-05-31` for details.
|
|
433
|
+
|
|
434
|
+
## [0.7.0] — 2026-05-31
|
|
435
|
+
|
|
436
|
+
### Maintenance
|
|
437
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.7.0 work shipped in MINOR: @adia-ai/web-components BREAKING removals (avatar-ui [name] alias, chart-ui [aspect]/[heading]) + docs-QA pass (bug-21, bug-50..55) + new features (stat [bleed], page regions, kbd lg); @adia-ai/web-modules dialog/plan-picker/onboarding/integrations fixes. See `packages/web-components/CHANGELOG.md#070--2026-05-31` for details.
|
|
438
|
+
|
|
439
|
+
## [0.6.50] — 2026-05-30
|
|
440
|
+
|
|
441
|
+
### Maintenance
|
|
442
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.6.50 work shipped in @adia-ai/web-components slot="caret" disclosure convention + tree-item-ui adopt-or-stamp (FEEDBACK-89, ADR-0036); @adia-ai/a2ui-corpus catalog regen for the renamed slot vocabulary. See `packages/web-components/CHANGELOG.md#0650--2026-05-30` for details.
|
|
443
|
+
|
|
444
|
+
## [0.6.49] — 2026-05-30
|
|
445
|
+
|
|
446
|
+
### Maintenance
|
|
447
|
+
|
|
448
|
+
- **Lockstep version bump only.** Substantive v0.6.49 in `@adia-ai/web-components` (date-range-picker two-month fix + calendar `month` prop + card-ui demo slot sweep) and `@adia-ai/a2ui-corpus` (corpus + catalog regen). See those packages CHANGELOGs.
|
|
449
|
+
|
|
450
|
+
## [0.6.48] — 2026-05-29
|
|
451
|
+
|
|
452
|
+
### Maintenance
|
|
453
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.6.48 work shipped in foundation-styles dimension×layer reorg (ADR-0035) + library-wide demo consolidation + date-range-picker popover fix + corpus re-harvest. See `packages/web-components/CHANGELOG.md#0648--2026-05-29` for details.
|
|
454
|
+
|
|
455
|
+
## [0.6.47] — 2026-05-29
|
|
456
|
+
|
|
457
|
+
### Maintenance
|
|
458
|
+
|
|
459
|
+
- **Lockstep version bump only.** Substantive v0.6.47 in `@adia-ai/web-components` (`<card-ui>` `[grow]` section attribute) and `@adia-ai/a2ui-corpus` (chunk re-harvest). See those packages CHANGELOGs.
|
|
460
|
+
|
|
461
|
+
## [0.6.46] — 2026-05-29
|
|
462
|
+
|
|
463
|
+
### Maintenance
|
|
464
|
+
|
|
465
|
+
- **Lockstep version bump only.** Substantive v0.6.46 in `@adia-ai/web-components` (56 trait pages + slot docs + bleed/token fixes) and `@adia-ai/a2ui-corpus` (chunk re-harvest). See those packages CHANGELOGs.
|
|
466
|
+
|
|
467
|
+
## [0.6.45] — 2026-05-29
|
|
468
|
+
|
|
469
|
+
### Maintenance
|
|
470
|
+
|
|
471
|
+
- **Lockstep version bump only.** Substantive v0.6.45 in `@adia-ai/web-components` (FB-85 canvas-ui bare-specifier + FB-88 select-ui accessible name). See its CHANGELOG.
|
|
472
|
+
|
|
473
|
+
## [0.6.44] — 2026-05-28
|
|
474
|
+
|
|
475
|
+
### Maintenance
|
|
476
|
+
|
|
477
|
+
- **Lockstep version bump only.** Substantive v0.6.44 in `@adia-ai/web-components` (FB-81 canvas-ui decouple), `@adia-ai/a2ui-compose` (FB-79 select-options transpiler), `@adia-ai/a2ui-corpus` (FB-79/80 re-harvest + embeddings regen). See those packages' CHANGELOGs.
|
|
478
|
+
|
|
479
|
+
## [0.6.43] — 2026-05-27
|
|
480
|
+
|
|
481
|
+
### Maintenance
|
|
482
|
+
|
|
483
|
+
- **Lockstep version bump only.** Substantive v0.6.43 in `@adia-ai/web-components` (`<list-ui contained>` yaml + button/card/alert RL+RL2 substrate fixes), `@adia-ai/a2ui-compose` (transpiler RL+RL2 sweeps), `@adia-ai/a2ui-corpus` (chunk re-harvest absorbing the substrate fixes). See those packages' CHANGELOGs.
|
|
484
|
+
|
|
485
|
+
## [0.6.42] — 2026-05-26
|
|
486
|
+
|
|
487
|
+
### Maintenance
|
|
488
|
+
|
|
489
|
+
- **Lockstep version bump only.** Substantive v0.6.42: `@adia-ai/a2ui-corpus` (gen-review cycles 8-17 — chunk count 240 → 284, +44 new training chunks + chunk-embeddings regen 6.92 → 8.19 MB), `@adia-ai/web-components` (yaml/sidecar polish for description-list/table/upload + core/provider.js), `@adia-ai/web-modules` (admin-page-header yaml header-anatomy fix), `@adia-ai/a2ui-runtime` (registry.js + renderer.js polish). See those packages' CHANGELOGs.
|
|
490
|
+
|
|
491
|
+
## [0.6.41] — 2026-05-26
|
|
492
|
+
|
|
493
|
+
### Maintenance
|
|
494
|
+
|
|
495
|
+
- **Lockstep version bump only — pure ride-along.** No source changes in any of the 9 packages this cycle. Substantive v0.6.41 work is REPO-LEVEL: adia-ui-release skill v1.8.0 → v1.9.0 (catalog-drift recurring graduation — §Step 5.5 pre-commit trip-wire + supersedes-WT contract + §Step 5 allowlist convention; closes FEEDBACK-75). Version bump preserves 9-package lockstep coherence; published tarballs identical to v0.6.40 modulo version metadata.
|
|
496
|
+
|
|
497
|
+
## [0.6.40] — 2026-05-26
|
|
498
|
+
|
|
499
|
+
### Maintenance
|
|
500
|
+
|
|
501
|
+
- **Lockstep version bump only.** Substantive v0.6.40 in `@adia-ai/web-components` (index.js barrel side-effect-imports `core/provider.js` — cold-start `<router-ui>` registration, FB-69-class fix) and `@adia-ai/web-modules` (`<admin-entity-item>` `<span slot="icon">` wrap — mirrors `<nav-item-ui>`).
|
|
502
|
+
|
|
503
|
+
## [0.6.39] — 2026-05-26
|
|
504
|
+
|
|
505
|
+
### Maintenance
|
|
506
|
+
|
|
507
|
+
- **Lockstep version bump only.** Substantive v0.6.39 in `@adia-ai/web-components` (<tour-ui> primitive — Wave 5e last P1, #259 + substrate slot-selector defensive sweep + admin-entity-item icon-size parity + list-item-ui slot=action declaration). `@adia-ai/web-modules` ships dist rebuild only.
|
|
508
|
+
|
|
509
|
+
## [0.6.38] — 2026-05-26
|
|
510
|
+
|
|
511
|
+
### Maintenance
|
|
512
|
+
|
|
513
|
+
- **Lockstep version bump only.** No source changes in this package. Substantive v0.6.38: `@adia-ai/web-components` (Wave 5e — mark-ui + inline-edit-ui + feed-ui deep-link demo + list-item-ui/segmented-ui/stat-ui/toolbar-ui fixes + slot-vocab-vs-css backlog closure), `@adia-ai/web-modules` (catalog/ui-patterns import-mapping + saas/billing cancellation save-offer + onboarding-checklist demo), `@adia-ai/a2ui-corpus` (240 chunks + catalog regen for Wave 5e cohort).
|
|
514
|
+
|
|
515
|
+
## [0.6.37] — 2026-05-25
|
|
516
|
+
|
|
517
|
+
### Maintenance
|
|
518
|
+
|
|
519
|
+
- **Lockstep version bump only.** No source changes in this package. Substantive v0.6.37: `@adia-ai/web-components` (Wave 1+2+3+4 cohort — blockquote, slider dual-thumb, password-strength, qr-code, toc, relative-time, number-format, anchor-link, number-stepper, pagination, toast-undo, blockquote, table demos column-resize/sticky-header/virtualized, alert-dialog destructive-confirm, context-menu, visually-hidden, skip-nav + FB-67/68/69/70/71 close + popover-ui/pagination/slider/qr-code fixes + --a-warning-bg redirect + 5 new audits) and `@adia-ai/web-modules` (Wave 3+4 pattern demos + brand-chrome canonicals + integration-card/segmented console-warn silence).
|
|
520
|
+
|
|
521
|
+
## [0.6.36] — 2026-05-24
|
|
522
|
+
|
|
523
|
+
### Maintenance
|
|
524
|
+
|
|
525
|
+
- **Lockstep version bump only.** No source changes in this package. Substantive v0.6.36: `@adia-ai/web-components` (tag-ui solid-default flip + [tone] prop + dismiss X variant inheritance + tag.warning amber fix + caret-at-content-start fix for input/textarea/combobox/tags-input + post-v0.6.35 QA sweep), `@adia-ai/web-modules` (Wave A+B+C+D demos via authoring v1.8.0 Mode 8 + payment-method-form recursion guard + payment-method-list card-ui rewrite + billing-overview/dashboard-layout fixes), `@adia-ai/a2ui-corpus` (catalog regen for tag-ui solid-default flip).
|
|
526
|
+
|
|
527
|
+
## [0.6.35] — 2026-05-24
|
|
528
|
+
|
|
529
|
+
### Maintenance
|
|
530
|
+
|
|
531
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain 9-package coherence. Substantive v0.6.35: `@adia-ai/web-components` (Waves A+B+C — 14 P1 component implementations + FB-57/61/62/63 substrate sweep + class.js → <slug>.class.js refactor + spinner/calendar-grid fixes), `@adia-ai/web-modules` (FB-55 admin-shell warn + delegation refactor + Wave A+B+C cluster work), `@adia-ai/llm` (server.js SIGINT/SIGTERM handlers — dev-only fix), `@adia-ai/a2ui-corpus` (catalog regen absorbing FB-61/62/63 yaml backfills).
|
|
532
|
+
|
|
533
|
+
## [0.6.34] — 2026-05-23
|
|
534
|
+
|
|
535
|
+
### Maintenance
|
|
536
|
+
|
|
537
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain 9-package coherence. Substantive v0.6.34: `@adia-ai/web-components` (Wave 1 + Wave 2 — 10 P1 components shipped from SPECs + OD-5 `-default` token sweep across 98 components + `<calendar-grid-ui>` substrate primitive), `@adia-ai/web-modules` (Wave 1/2 cluster registrations + `everything.min.js` rebuild), `@adia-ai/a2ui-runtime` (Phase 1 CSS channel: `updateStyles`/`removeStyles`), `@adia-ai/a2ui-corpus` (`playground-css-channel` chunk + embeddings regen). See those packages' CHANGELOGs.
|
|
538
|
+
|
|
539
|
+
## [0.6.33] — 2026-05-23
|
|
540
|
+
|
|
541
|
+
### Maintenance
|
|
542
|
+
|
|
543
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.6.33 work shipped in `@adia-ai/web-components` (FB-53 §2 table[raw] short-circuit + FB-54 field row-gap :has gate + tabs --tabs-button-height anchor + dist icons-manifest header refresh) and `@adia-ai/web-modules` (FB-53 §1 CDN icons-manifest co-emit to web-modules/dist/) and `@adia-ai/a2ui-runtime` (card-ui body-slot drift fix). See those packages' CHANGELOGs for details.
|
|
544
|
+
|
|
545
|
+
## [0.6.31] — 2026-05-23
|
|
546
|
+
|
|
547
|
+
### Maintenance
|
|
548
|
+
|
|
549
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.6.31 work shipped in `@adia-ai/web-modules` (`admin-shell.examples` taming CSS + README canonical-hierarchy example) and `@adia-ai/web-components` (3 legacy `patterns/*` hubs rewritten). Docs-and-skills scrub — see those packages' CHANGELOGs for details.
|
|
550
|
+
|
|
551
|
+
## [0.6.30] — 2026-05-23
|
|
552
|
+
|
|
553
|
+
### Maintenance
|
|
554
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.6.30 work shipped in CDN-ready JS bundles (web-components.min.js primitives + 4 per-shell + everything.min.js kitchen-sink for CodePen); new ./js/bundled + ./everything + 4 */js-bundled exports; check:js-bundles-fresh pre-flight gate; README + site CDN docs + AI-agent discoverability; examples/codepen.html template. See `packages/web-components/CHANGELOG.md#0630--2026-05-23` for details.
|
|
555
|
+
|
|
556
|
+
## [0.6.29] — 2026-05-23
|
|
557
|
+
|
|
558
|
+
### Maintenance
|
|
559
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.6.29 work shipped in CDN-ready rolled-up CSS bundles (web-components + 4 web-modules shells); ./css/bundled + per-shell /bundled exports; check:css-bundles-fresh pre-flight gate. See `packages/web-components/CHANGELOG.md#0629--2026-05-23` for details.
|
|
560
|
+
|
|
561
|
+
## [0.6.28] — 2026-05-23
|
|
562
|
+
|
|
563
|
+
### Maintenance
|
|
564
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.6.28 work shipped in editor-sidebar rAF debounce for wide->narrow display-flip transient (FB-50, 3rd iteration of the latch saga; belt-and-braces with v0.6.26 width guard + v0.6.27 computedStyle guard). See `packages/web-modules/CHANGELOG.md#0628--2026-05-23` for details.
|
|
565
|
+
|
|
566
|
+
## [0.6.27] — 2026-05-22
|
|
567
|
+
|
|
568
|
+
### Maintenance
|
|
569
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.6.27 work shipped in chart-ui[loading] skeleton placeholder (FB-12); admin-shell CSS pitfall fix (FB-04); responsive horizontal-scroll for kanban + pricing tables; editor-sidebar computedStyle guard for small-nonzero transients (FB-49); a2ui-corpus catalog tracks chart-ui[loading]. See `packages/web-components/CHANGELOG.md#0627--2026-05-22` for details.
|
|
570
|
+
|
|
571
|
+
## [0.6.26] — 2026-05-22
|
|
572
|
+
|
|
573
|
+
### Maintenance
|
|
574
|
+
- **Lockstep version bump only.** No source changes. Substantive v0.6.26 work in `@adia-ai/web-modules`.
|
|
575
|
+
|
|
576
|
+
## [0.6.25] — 2026-05-22
|
|
577
|
+
|
|
578
|
+
### Maintenance
|
|
579
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.6.25 work shipped in select-ui[multiple] pre-init via <option selected> + .value= setter (FB-46); table-ui Enter key activates focused body cell (FB-47); corpus select-multiple-preselected exemplar chunk + harvest refresh. See `packages/web-components/CHANGELOG.md#0625--2026-05-22` for details.
|
|
580
|
+
|
|
581
|
+
## [0.6.24] — 2026-05-22
|
|
582
|
+
|
|
583
|
+
### Maintenance
|
|
584
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain 9-package version coherence. Substantive v0.6.24 work: `slider-ui` label/suffix reactive binding fix (FB-45), `editor-shell` `--a-font-mono` token rename (FB-43), `toast-ui` demo shell `feed.css` import. See `packages/web-components/CHANGELOG.md#0624` for details.
|
|
585
|
+
|
|
586
|
+
## [0.6.23] — 2026-05-22
|
|
587
|
+
|
|
588
|
+
### Maintenance
|
|
589
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.6.23 work shipped in row-ui wrap-at='bp' responsive flex-wrap (@adia-ai/web-components) + 4 new v053-coverage-fill training chunks for empty-state danger/warning/minimal + responsive-kpi-grid (@adia-ai/a2ui-corpus). See `packages/web-components/CHANGELOG.md#0623--2026-05-22` for details.
|
|
590
|
+
|
|
591
|
+
## [0.6.22] — 2026-05-22
|
|
592
|
+
|
|
593
|
+
### Maintenance
|
|
594
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.6.22 work shipped in @bp responsive attribute system (grid/col/row/text/block accept @bp), empty-state-ui variant=danger|warning, alert/segmented/stat/table truncation fixes, UI inset/gap scale reduction, 21 component example pages corrected; @adia-ai/web-modules admin-topbar/statusbar padding + admin-page-header/body breakpoint refinements. See `packages/web-components/CHANGELOG.md#0622--2026-05-22` for details.
|
|
595
|
+
|
|
596
|
+
## [0.6.21] — 2026-05-21
|
|
597
|
+
|
|
598
|
+
### Maintenance
|
|
599
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.6.21 work shipped in `@adia-ai/web-components` (`table-ui` truncate-by-default + `[wrap]` opt-in §403; toast / feed-item variant text colour; `input-ui` slot-label crowding fix) and `@adia-ai/web-modules` (`<admin-entity-item>` row-inset alignment; FEEDBACK-37 retraction — spurious slot-contract `console.warn` removed; page-header title row no longer stacks under `?chunks` dev overlay). See `packages/web-modules/CHANGELOG.md#0621--2026-05-21` for details.
|
|
600
|
+
|
|
601
|
+
## [0.6.20] — 2026-05-21
|
|
602
|
+
|
|
603
|
+
### Maintenance
|
|
604
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.6.20 work shipped in `@adia-ai/web-components` + `@adia-ai/web-modules` — the claims-ui-v5 inbound feedback batch (FEEDBACK-34…39: `table-ui` / `select-ui` / `chart-ui` fixes, the new `<admin-entity-item>` shell primitive, `admin-topbar` / `admin-statusbar` slot diagnostics) plus the `<admin-page-header>` `--a-canvas-0` rebase. See `packages/web-modules/CHANGELOG.md#0620--2026-05-21` for details.
|
|
605
|
+
|
|
606
|
+
## [0.6.19] — 2026-05-21
|
|
607
|
+
|
|
608
|
+
### Maintenance
|
|
609
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.6.19 work shipped in `@adia-ai/web-components` + `@adia-ai/web-modules` — the claims-ui-v4 inbound feedback batch (FEEDBACK-22…33: `drawer-ui` / `chart-ui` / `segmented-ui` fixes, `UIElement` lifecycle, exports-map `types` conditions) — plus an `@adia-ai/a2ui-corpus` drift remediation. See `packages/web-components/CHANGELOG.md#0619--2026-05-21` for details.
|
|
610
|
+
|
|
611
|
+
## [0.6.18] — 2026-05-21
|
|
612
|
+
|
|
613
|
+
### Maintenance
|
|
614
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.6.18 work shipped in `@adia-ai/web-components` — `stat-ui` + `table-ui` `loading` props (FB-12 P2) and `text-ui` `size` / `color` / `weight` / `text-align` overlay attributes (FB-10). See `packages/web-components/CHANGELOG.md#0618--2026-05-21` for details.
|
|
615
|
+
|
|
616
|
+
## [0.6.17] — 2026-05-21
|
|
617
|
+
|
|
618
|
+
### Maintenance
|
|
619
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.6.17 work shipped in `@adia-ai/web-modules` — collapsed-sidebar rules grew a forgiving fallback block for vanilla HTML consumers (`<button class="nav-item">`, `[slot="heading"]`) so text labels don't overflow the 48px rail. See `packages/web-modules/CHANGELOG.md#0617--2026-05-21` for details.
|
|
620
|
+
|
|
621
|
+
## [0.6.16] — 2026-05-21
|
|
622
|
+
|
|
623
|
+
### Maintenance
|
|
624
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.6.16 work shipped in `@adia-ai/web-modules`: (1) `<admin-page>` selector relaxed to descendant combinator so router-wrapped layouts no longer collapse to `display: inline` at narrow viewports (was the root of the page-header/KPI overlap regression); (2) `--page-content-header-bg` rebased from `--a-canvas-2` to `--a-canvas-1` so the page-header reads as shell-chrome continuation. See `packages/web-modules/CHANGELOG.md#0616--2026-05-21` for details.
|
|
625
|
+
|
|
626
|
+
## [0.6.15] — 2026-05-21
|
|
627
|
+
|
|
628
|
+
### Maintenance
|
|
629
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.6.15 work shipped in `@adia-ai/web-components` — `installIconLoaders` shape-detects malformed flat globs (FB-07 auto-promote + warn), `icons-phosphor.js` surfaces silent-fail diagnostics (FB-08), and .claude/docs/skill examples corrected (FB-09). See `packages/web-components/CHANGELOG.md#0615--2026-05-21` for details.
|
|
630
|
+
|
|
631
|
+
## [0.6.14] — 2026-05-21
|
|
632
|
+
|
|
633
|
+
### Maintenance
|
|
634
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.6.14 work shipped in `@adia-ai/web-modules` — `<admin-page-header>` now uses `var(--page-content-header-bg)` (= `--a-canvas-2`) + `var(--a-shadow-sm)` so the page-header band reads as elevated chrome over the body canvas. See `packages/web-modules/CHANGELOG.md#0614--2026-05-21` for details.
|
|
635
|
+
|
|
636
|
+
## [0.6.13] — 2026-05-20
|
|
637
|
+
|
|
638
|
+
### Maintenance
|
|
639
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.6.13 work shipped in `@adia-ai/web-modules` — `<admin-shell>` default `mode` is now `"rounded borderless"` (bare-tag auto-promote on connect; any explicit `mode` attribute still wins). See `packages/web-modules/CHANGELOG.md#0613--2026-05-20` for details.
|
|
640
|
+
|
|
641
|
+
## [0.6.12] — 2026-05-20
|
|
642
|
+
|
|
643
|
+
### Maintenance
|
|
644
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.6.12 work shipped in `@adia-ai/web-modules` — admin-shell legacy CSS bridges retired per ADR-0032 (continuation of ADR-0023 + ADR-0024). See `packages/web-modules/CHANGELOG.md#0612--2026-05-20` for the breaking-change details + migration path.
|
|
645
|
+
|
|
646
|
+
## [0.6.11] — 2026-05-20
|
|
647
|
+
|
|
648
|
+
### Maintenance
|
|
649
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.6.11 work shipped in `@adia-ai/web-components` (`<canvas-ui>` `.d.ts` hand-author covering 9 imperative runtime methods, claims-ui-v2 inbound FB-02 finding 2 closure) and `adia-ui-kit` skill v2.8.0 bundled feedback close (FB-01, FB-02 findings 1+3, FB-03; graduated `/with-css` opt-in docs + `ADIA_TICKETS_DIR` central-inbound workflow).
|
|
650
|
+
|
|
651
|
+
## [0.6.10] — 2026-05-21
|
|
652
|
+
|
|
653
|
+
### Maintenance
|
|
654
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.6.10 work shipped in `@adia-ai/web-modules` (4 shell `/with-css` opt-in companion subpaths, claims-ui FB-06 closure, ADR-0030) and `@adia-ai/web-components` (`<table-toolbar-ui>` unknown-attr `console.warn`, FB-04 enhancement; release-gate hygiene).
|
|
655
|
+
|
|
656
|
+
## [0.6.9] — 2026-05-21
|
|
657
|
+
|
|
658
|
+
### Maintenance
|
|
659
|
+
- **Lockstep version bump only.** No source changes in this package; bumped to maintain the 9-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.6.9 work shipped in `@adia-ai/web-components` (CSS `@scope` codemod, F-002) and `@adia-ai/web-modules` (cross-package subpath docs, FB-08).
|
|
660
|
+
|
|
661
|
+
## [0.6.8] — 2026-05-20
|
|
662
|
+
|
|
663
|
+
- Lockstep version bump. Headlining work in `@adia-ai/web-components`
|
|
664
|
+
(FB-55 `.camelCaseProp=${expr}` two-layer name resolution + FB-57
|
|
665
|
+
SVG/MathML namespace-aware `mount()` + USAGE.md docs cluster) and
|
|
666
|
+
`@adia-ai/web-modules` (claims-ui F-001 chat-shell.js barrel-import
|
|
667
|
+
fix + F-006 required-CSS callouts). No source changes in this package.
|
|
668
|
+
|
|
669
|
+
## [0.6.7] — 2026-05-19
|
|
670
|
+
|
|
671
|
+
### Added
|
|
672
|
+
- **`list_patterns` tool** — enumerate the full A2UI composition corpus
|
|
673
|
+
with optional `domain` / `category` filters. Was previously only
|
|
674
|
+
searchable by keyword via `search_chunks` / `search_patterns`.
|
|
675
|
+
- **`server_status` tool** — reports transport (stdio/http), sampling
|
|
676
|
+
capability, corpus stats (components, compositions, chunks), and
|
|
677
|
+
version. Useful for consumer health checks and observability.
|
|
678
|
+
- **`refine_ui` tool** — retry monolithic-engine generation with validation
|
|
679
|
+
errors fed back to the LLM. Closes the missing-refine gap for the
|
|
680
|
+
monolithic path (zettel already had `refine_composition`).
|
|
681
|
+
|
|
682
|
+
### Fixed
|
|
683
|
+
- **HTTP transport body-parsing** — `transport.handleRequest(req, res)` was
|
|
684
|
+
not passing the express-parsed body; SDK then errored `-32700 Parse error`
|
|
685
|
+
on every request. Fixed by passing `req.body` as the third argument.
|
|
686
|
+
Surfaced by new HTTP smoke test.
|
|
687
|
+
- **Excluded `.ts` source files from npm tarball** — TypeScript sources
|
|
688
|
+
were shipping alongside the emitted `.js` (7 files in mcp/, 1 in compose/,
|
|
689
|
+
16 in retrieval/). Now filtered via `files` field while keeping `.d.ts`
|
|
690
|
+
declarations.
|
|
691
|
+
- **Removed unused `sessionServer` instantiation in HTTP transport** —
|
|
692
|
+
previously the HTTP request handler created a per-session `McpServer`
|
|
693
|
+
instance but never used it (called `server.connect()` against the outer
|
|
694
|
+
server). Removed the dead allocation; comment updated to reflect that
|
|
695
|
+
the outer server is shared across sessions (tools are stateless).
|
|
696
|
+
|
|
697
|
+
## [0.6.6] — 2026-05-18
|
|
698
|
+
|
|
699
|
+
### Changed
|
|
700
|
+
- Lockstep version bump for §304 `<field-ui align>` prop.
|
|
701
|
+
## [0.6.5] — 2026-05-18
|
|
702
|
+
|
|
703
|
+
### Changed
|
|
704
|
+
- `tsconfig.json`: include `../node-shims.d.ts`.
|
|
705
|
+
- `server.js`, `tools/synthesis.js`: re-emitted from .ts sources via
|
|
706
|
+
`build:mcp-server` (esbuild, 12ms). `mcp:smoke` now preruns emit.
|
|
707
|
+
Follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
708
|
+
|
|
709
|
+
Scope: MCP transport wrapping `@adia-ai/a2ui-compose`. Exposes
|
|
710
|
+
generation tools over JSON-RPC for Claude Code, Claude Desktop,
|
|
711
|
+
and other MCP hosts. Engine selector supports both monolithic and
|
|
712
|
+
zettel strategies.
|
|
713
|
+
## [0.6.32] — 2026-05-23
|
|
714
|
+
|
|
715
|
+
_No pending changes._
|
|
716
|
+
|
|
717
|
+
## [0.6.4] - 2026-05-18
|
|
718
|
+
|
|
719
|
+
### v0.6.4 — Lockstep ride-along
|
|
720
|
+
|
|
721
|
+
TS Phase 5: a2ui.schema.json schema-driven codegen (§359). No source changes in this package.
|
|
722
|
+
|
|
723
|
+
## [0.6.3] - 2026-05-18
|
|
724
|
+
|
|
725
|
+
### v0.6.3 — Lockstep ride-along
|
|
726
|
+
|
|
727
|
+
TS Phase 5: runtime real declarations (§358) + compose branded IDs.
|
|
728
|
+
No source changes in this package. Internal dep ranges stay at `^0.6.0`.
|
|
729
|
+
|
|
730
|
+
## [0.6.2] - 2026-05-18
|
|
731
|
+
|
|
732
|
+
### v0.6.2 §357 — TypeScript-first Phase 4: `@adia-ai/a2ui-mcp` sources → `.ts`
|
|
733
|
+
|
|
734
|
+
`tools/synthesis.ts` + `server.ts`. mcp:smoke OK, generate.mjs end-to-end OK.
|
|
735
|
+
**No BREAKING changes.**
|
|
736
|
+
|
|
737
|
+
## [0.6.1] - 2026-05-18
|
|
738
|
+
|
|
739
|
+
### v0.6.1 — Lockstep ride-along
|
|
740
|
+
|
|
741
|
+
`@adia-ai/llm` TS Phase 2 (§353) + `<link-ui>` token rename (§354) +
|
|
742
|
+
`@adia-ai/a2ui-compose` TS Phase 3 (§355). No source changes in this package.
|
|
743
|
+
Internal dep ranges stay at `^0.6.0`.
|
|
744
|
+
|
|
745
|
+
## [0.6.0] - 2026-05-18
|
|
746
|
+
|
|
747
|
+
_Lockstep ride-along (no source change in this package; companion to web-components v0.6.0 — see root CHANGELOG)._
|
|
748
|
+
|
|
749
|
+
**MINOR-line internal-dep range update:** internal `@adia-ai/*` dependency ranges move from `^0.5.0` to `^0.6.0` per AdiaUI lockstep policy.
|
|
750
|
+
|
|
751
|
+
## [0.5.21] - 2026-05-18
|
|
752
|
+
|
|
753
|
+
_Lockstep ride-along (no source change in this package; companion to web-components v0.5.21 — see root CHANGELOG)._
|
|
754
|
+
|
|
755
|
+
## [0.5.20] - 2026-05-18
|
|
756
|
+
|
|
757
|
+
_Lockstep ride-along (no source change in this package; companion to web-components v0.5.20 — see root CHANGELOG)._
|
|
758
|
+
|
|
759
|
+
## [0.5.19] - 2026-05-17
|
|
760
|
+
|
|
761
|
+
_Lockstep ride-along (no source change in this package; companion to web-components v0.5.19 — see root CHANGELOG)._
|
|
762
|
+
|
|
763
|
+
## [0.5.18] - 2026-05-16
|
|
764
|
+
|
|
765
|
+
_Lockstep ride-along (no source change in this package; companion to web-components v0.5.18 — see root CHANGELOG)._
|
|
766
|
+
|
|
767
|
+
## [0.5.17] - 2026-05-16
|
|
768
|
+
|
|
769
|
+
_Lockstep ride-along (no source change in this package; companion to web-components v0.5.17 — see root CHANGELOG)._
|
|
770
|
+
|
|
771
|
+
## [0.5.16] - 2026-05-16
|
|
772
|
+
|
|
773
|
+
_Lockstep ride-along (no source change in this package; companion to web-components v0.5.16 — see root CHANGELOG)._
|
|
774
|
+
|
|
775
|
+
## [0.5.15] - 2026-05-16
|
|
776
|
+
|
|
777
|
+
_Lockstep ride-along (no source change in this package; companion to web-components v0.5.15 — see root CHANGELOG)._
|
|
778
|
+
|
|
779
|
+
## [0.5.14] - 2026-05-15
|
|
780
|
+
|
|
781
|
+
_Lockstep ride-along (no source change in this package; companion to web-components v0.5.14 — see root CHANGELOG)._
|
|
782
|
+
|
|
783
|
+
## [0.5.13] - 2026-05-15
|
|
784
|
+
|
|
785
|
+
_Lockstep ride-along (no source change in this package; companion to web-components v0.5.13 — see root CHANGELOG)._
|
|
786
|
+
|
|
787
|
+
## [0.5.12] - 2026-05-15
|
|
788
|
+
|
|
789
|
+
_Lockstep ride-along (no source change in this package; companion to web-components v0.5.12 — see root CHANGELOG)._
|
|
790
|
+
|
|
791
|
+
## [0.5.11] - 2026-05-15
|
|
792
|
+
|
|
793
|
+
_Lockstep ride-along (no source change)._
|
|
794
|
+
|
|
795
|
+
## [0.5.10] - 2026-05-15
|
|
796
|
+
|
|
797
|
+
_Lockstep ride-along (no source change)._
|
|
798
|
+
|
|
799
|
+
## [0.5.9] - 2026-05-15
|
|
800
|
+
|
|
801
|
+
_Lockstep ride-along (no source change)._
|
|
802
|
+
|
|
803
|
+
## [0.5.8] - 2026-05-15
|
|
804
|
+
|
|
805
|
+
_Lockstep ride-along (no source change)._
|
|
806
|
+
|
|
807
|
+
## [0.5.7] - 2026-05-15
|
|
808
|
+
|
|
809
|
+
_Lockstep ride-along (no source change)._
|
|
810
|
+
|
|
811
|
+
## [0.5.6] - 2026-05-14
|
|
812
|
+
|
|
813
|
+
_Lockstep ride-along (no source change)._
|
|
814
|
+
## [0.5.5] - 2026-05-14
|
|
815
|
+
|
|
816
|
+
### Changed — lockstep ride-along; no source changes
|
|
817
|
+
|
|
818
|
+
`version`: `0.5.4` → `0.5.5`. Source byte-identical to `0.5.4`.
|
|
819
|
+
|
|
820
|
+
Tracking the v0.5.5 cycle's detector-driven cleanup arcs (§176-§179) + exe.dev LLM Gateway migration (§181-§188) + FEEDBACK-08 closure (§184): see root `CHANGELOG.md` for the full narrative. This package carries no source changes this cycle.
|
|
821
|
+
## [0.5.4] - 2026-05-14
|
|
822
|
+
|
|
823
|
+
### Changed — lockstep ride-along; no source changes
|
|
824
|
+
|
|
825
|
+
`version`: `0.5.3` → `0.5.4`. Source byte-identical to `0.5.3`.
|
|
826
|
+
Tarball changes: none.
|
|
827
|
+
|
|
828
|
+
Tracking the v0.5.4 cycle's prop-fidelity arcs (§163 transpiler fix,
|
|
829
|
+
§164 chunk re-harvest, §165 validator check #19, §166a/b/c audit-script
|
|
830
|
+
family slots 12+13 + smoke shift-left): see root `CHANGELOG.md` for the
|
|
831
|
+
full narrative. This package carries no source changes this cycle.
|
|
832
|
+
## [0.5.3] - 2026-05-14
|
|
833
|
+
|
|
834
|
+
### Fixed — `smoke:engines` retrieval probe robustness — recursive text walk + retry + secondary-signal acceptance (§158+§159, v0.5.3)
|
|
835
|
+
|
|
836
|
+
Three follow-up improvements to the §142 retrieval probe fix, surfaced during v0.5.3 pre-tag verification:
|
|
837
|
+
|
|
838
|
+
- **§158 recursive text extraction**: `extractText()` now walks `c.children[]` recursively. Pre-§158 the walker only inspected top-level `msg.components[]`, missing text nested inside `Page`/`Section`/`Card`/`Header` wrappers. Surfaced as a flaky `admin dashboard with kpi cards` probe post-§143 — when retrieval ranked a composition whose KPI numbers lived inside `<section>` wrappers, the top-level walker saw an empty string and the probe failed despite the composition rendering correctly.
|
|
839
|
+
- **§159a retry-up-to-3**: each retrieval probe now retries up to 3× before declaring failure. Rides past intermittent retrieval ties (paired with `@adia-ai/a2ui-compose` §160 readdir-sort which addresses the root cause but leaves residual variance).
|
|
840
|
+
- **§159b secondary-signal acceptance**: `strategy === 'composition-match' && topComponents.length >= 10` accepted as success even when text-keyword overlap fails. Acknowledges a known corpus-quality bug — Stat-bearing chunks (e.g. `dashboard-kpi-grid.json`) strip `label`/`value`/`change`/`icon` attrs during harvest, so resolved Stat components render empty. The smoke probe shouldn't fail on retrieval that matched a substantial composition.
|
|
841
|
+
|
|
842
|
+
Companion to `@adia-ai/a2ui-compose` §160 (readdir-sort in `composition-library.js`). Follow-ups tracked as v0.5.4 F-S1a (re-harvest Stat chunks to preserve attrs) + F-S1b (investigate residual cross-process retrieval determinism).
|
|
843
|
+
|
|
844
|
+
### Fixed — `smoke:engines` retrieval probes broadened after v0.5.2 §125 chunk refactor (§142 F-S1 repair, v0.5.3)
|
|
845
|
+
|
|
846
|
+
The v0.5.2 §125 chunk structural refactor (5 chunks rebuilt: leaderboard-table, real-time-metrics-dashboard, inventory-list-stock, footer-multi-column, date-time-picker-form) shifted zettel's keyword-extraction ranking enough that `smoke:engines`'s 3 retrieval probes intermittently mis-matched. Filed as F-S1 in `.brain/audit-history/2026-05-13-release-v0.5.2.json` (severity medium, advisory not gate).
|
|
847
|
+
|
|
848
|
+
**Fix**: `packages/a2ui/mcp/scripts/smoke-engine-registry.mjs` — broadened `expectKeywords` per probe to accept the post-§125 retrieval reality. The probes are advisory (not a release gate); broader keyword overlap is more robust to corpus regrowth than constraining to a single canonical chunk.
|
|
849
|
+
|
|
850
|
+
- **`login form with email and password`** — added `forgot` (sometimes matches password-reset chunk's preview text)
|
|
851
|
+
- **`sign up form for a new account`** — added `password`, `account` (matches when zettel returns adjacent auth-flow chunks)
|
|
852
|
+
- **`admin dashboard with kpi cards`** — added `page views`, `bounce rate`, `engagement`, `analytics`, `sessions` (matches when zettel returns the dashboard chunks that v0.5.2 §125 favors)
|
|
853
|
+
|
|
854
|
+
Runtime behavior unchanged — only the smoke-test probe keyword lists. Closes F-S1.
|
|
855
|
+
## [0.5.2] - 2026-05-13
|
|
856
|
+
|
|
857
|
+
### Added — `eval:diff --report-substitutions` flag (§107a infra, v0.5.2)
|
|
858
|
+
|
|
859
|
+
`packages/a2ui/mcp/scripts/eval-diff.mjs` learns a new `--report-substitutions` flag. When set, captures per-intent substitution data from free-form plans (available substitutable nodes across resolved ingredients vs substitutions the LLM actually emitted) + emits a `## Substitution coverage (§107a)` section in `diff.md` with overall ratio + 3-bucket histogram (<30% / 30-50% / ≥50%) + top-20 under-substitution table.
|
|
860
|
+
|
|
861
|
+
Drives the F1-plateau question for v0.5.2: ratio <30% → §125 catalog-text sweep + §126 prompt iteration are high-leverage. Ratio >50% → F1 plateau is structural (catalog content or scorer artifact), revise the F1-lift plan.
|
|
862
|
+
|
|
863
|
+
Pre-baseline measurement (run `2026-05-13T22-29-12-085Z`, `--limit 30`): **17.2% overall substitution ratio**, 17/30 intents in the <30% bucket. Decision-rule outcome: §125 + §126 are high-leverage. Companion to `@adia-ai/a2ui-compose`'s `plan` first-class graduation.
|
|
864
|
+
|
|
865
|
+
Eval tooling only; no runtime behavior change.
|
|
866
|
+
|
|
867
|
+
### Changed — drop dead `result._debug?.plan` fallback in `eval-diff.mjs` (§131, v0.5.2)
|
|
868
|
+
|
|
869
|
+
`eval-diff.mjs` line 147 previously read `const plan = result.plan || result._debug?.plan || null;` — a defensive fallback to the pre-§107a soft-API path. Since `@adia-ai/a2ui-compose@0.5.2` no longer populates `_debug.plan` (§107a graduated it to first-class; §131 documents the volatility contract), the fallback is dead code. Removed.
|
|
870
|
+
|
|
871
|
+
Eval tooling only; no runtime behavior change.
|
|
872
|
+
|
|
873
|
+
### Added — `eval:diff --model <id>` flag for Haiku-vs-Opus A/B harness (§127 infra, v0.5.2)
|
|
874
|
+
|
|
875
|
+
`packages/a2ui/mcp/scripts/eval-diff.mjs` adds a `--model <model-id>` flag. When set, exports `FREE_FORM_MODEL_OVERRIDE` env var before any dynamic strategy imports — the override propagates to `@adia-ai/a2ui-compose@strategies/registry.js generateFreeFormAdapter` which reads the env var at call-time (post-§127-companion change). Lets the §127 A/B harness run Opus + Haiku full-100 evals without env-var setup or process restart.
|
|
876
|
+
|
|
877
|
+
Usage: `npm run eval:diff -- --engine free-form --model claude-opus-4-7 --report-substitutions`.
|
|
878
|
+
|
|
879
|
+
Default unchanged: Haiku 4.5 pin (`claude-haiku-4-5-20251001`) holds when `--model` is unset. Eval tooling only; no runtime behavior change.
|
|
880
|
+
## [0.5.1] - 2026-05-13
|
|
881
|
+
|
|
882
|
+
_Lockstep ride-along (no source change)._
|
|
883
|
+
## [0.5.0] - 2026-05-13
|
|
884
|
+
|
|
885
|
+
_Lockstep ride-along (no source change)._
|
|
886
|
+
## [0.4.9] - 2026-05-13
|
|
887
|
+
|
|
888
|
+
_No pending changes._
|
|
889
|
+
## [0.4.8] - 2026-05-12
|
|
890
|
+
|
|
891
|
+
### Changed — eval threshold rebaseline + smoke-script alignment (§87, v0.4.8)
|
|
892
|
+
|
|
893
|
+
Companion to `@adia-ai/a2ui-compose@[Unreleased]` §87 zettel `ensureBooted()` race fix.
|
|
894
|
+
|
|
895
|
+
- **`mcp/scripts/eval-diff.mjs`** — thresholds rebaselined to the honest post-§72 floor (~5%; was holding stale v0.4.6 baseline). Eval coverage gate now reflects the chunks-only retrieval shape after the patterns retirement.
|
|
896
|
+
- **`mcp/scripts/smoke-engine-registry.mjs`** — retrieval-quality probes updated to match the post-§72 + §88 retrieval surface (composition-match strategy on canonical intents).
|
|
897
|
+
- **`mcp/scripts/smoke-register-engine.mjs`** — engine-registry coverage adjusted; still 11/11.
|
|
898
|
+
|
|
899
|
+
See root [CHANGELOG.md `[Unreleased]`](../../CHANGELOG.md) for the cross-cutting arc.
|
|
900
|
+
## [0.4.7] - 2026-05-12
|
|
901
|
+
|
|
902
|
+
### Changed — smoke + test scripts aligned to post-§72 retrieval surface
|
|
903
|
+
|
|
904
|
+
`scripts/smoke-engine-registry.mjs` retrieval probe set + `scripts/test-a2ui.mjs` (composition-count threshold + spot-checks + intent-gate keyword surface) now exercise the harvested-chunks substrate that survives §72's `corpus/patterns/` + `corpus/compositions/` retirement. Probe for "pricing tiers" dropped (no pricing surface in shipped `/site/`); replaced with "admin dashboard with kpi cards" matching `dashboard-admin-page`. Spot-check names updated to real chunk names (`auth-signin-card-password`, `auth-signup-entry`, `dashboard-admin-page`, `settings-admin-page`). No tool / API change — internal scripts only.
|
|
905
|
+
## [0.4.6] - 2026-05-12
|
|
906
|
+
|
|
907
|
+
### Changed — patterns surface retired (§64 step 5, 2026-05-12)
|
|
908
|
+
|
|
909
|
+
Companion to `@adia-ai/a2ui-compose@[Unreleased]` + `@adia-ai/a2ui-retrieval@[Unreleased]` retiring the legacy `pattern-library.js` surface in favor of `composition-library` as the canonical retrieval source.
|
|
910
|
+
|
|
911
|
+
- **`mcp/server.js`** — removed pattern-surface MCP tools that read from the retired `pattern-library` (the surface had been gradually deprecated through §62-§64; this commit cuts the last consumer paths). Tool count net change reflected in `mcp/TOOLS.md`.
|
|
912
|
+
- **`mcp/scripts/eval-fix.mjs`** — retired the pattern-surface fix-up logic (no longer reachable; compositions are the canonical retrieval shape).
|
|
913
|
+
- **`mcp/scripts/test-a2ui.mjs`** — assertions updated to reflect the post-§64 tool inventory.
|
|
914
|
+
|
|
915
|
+
See root [CHANGELOG.md `[Unreleased]`](../../CHANGELOG.md) for the cross-cutting §64 arc narrative.
|
|
916
|
+
## [0.4.5] - 2026-05-12
|
|
917
|
+
|
|
918
|
+
### Ride-along (no source changes)
|
|
919
|
+
|
|
920
|
+
Lockstep PATCH cut alongside `@adia-ai/web-components@0.4.5` (§61 CSS subpath exports + CustomEvent.detail sweep across 17 form-bearing primitives + slider reactivity test lock-in + §52 design-tokens export module + UI), `@adia-ai/web-modules@0.4.5` (§61 CSS subpath exports — six cluster `*.css` exports), `@adia-ai/a2ui-compose@0.4.5` (§56 system-prompt CORPUS CONTEXT block in monolithic strategies), `@adia-ai/llm@0.4.5` (§54 doc-comment path refresh). Source byte-identical to v0.4.4.
|
|
921
|
+
|
|
922
|
+
Internal `@adia-ai/*` dep ranges stay at `^0.4.0` (patch-cut asymmetry — `^0.4.0` covers `0.4.x` under semver). See root [CHANGELOG.md `## [0.4.5]`](../../CHANGELOG.md) for the cut narrative.
|
|
923
|
+
## [0.4.4] - 2026-05-12
|
|
924
|
+
|
|
925
|
+
### Changed — fragment-retirement follow-through (§37, 2026-05-12)
|
|
926
|
+
|
|
927
|
+
- **`mcp/server.js` — `get_fragment` tool removed; `zettel_stats` simplified.** Companion to `@adia-ai/a2ui-compose@[Unreleased]` retiring `corpus/fragments/`. Removed imports, boot logs, and the engine description block that referenced fragments. Net: -31 lines across server.js.
|
|
928
|
+
- **`mcp/scripts/smoke-zettel.mjs` — retired (37 lines).** Smoke depended on the removed fragment library; replaced functionally by `mcp/scripts/smoke-engine-registry.mjs` (engine path) and `scripts/test-chunks.mjs` (zettel composition path).
|
|
929
|
+
- **`mcp/scripts/test-chunks.mjs` — 1-line tweak.** Threshold adjustment for the post-§40 annotated-chunk world.
|
|
930
|
+
|
|
931
|
+
See root [CHANGELOG.md `[Unreleased]`](../../CHANGELOG.md) for the cross-cutting arc narrative.
|
|
932
|
+
## [0.4.3] - 2026-05-11
|
|
933
|
+
|
|
934
|
+
### Ride-along (no source changes)
|
|
935
|
+
|
|
936
|
+
Lockstep PATCH cut alongside `@adia-ai/web-components@0.4.3` (input-ui type=number locale + thousands grouping + hold-to-repeat) + `@adia-ai/a2ui-compose@0.4.3` + `@adia-ai/a2ui-retrieval@0.4.3` (process.env browser-compat fix) + `@adia-ai/a2ui-corpus@0.4.3` (catalog regen + chunks re-harvest with new settings-appearance pattern). Source byte-identical to v0.4.2.
|
|
937
|
+
|
|
938
|
+
Internal `@adia-ai/*` dep ranges stay at `^0.4.0` (patch-cut asymmetry — `^0.4.0` covers `0.4.x` under semver). See root [CHANGELOG.md `## [0.4.3]`](../../CHANGELOG.md) for the cut narrative.
|
|
939
|
+
## [0.4.2] - 2026-05-11
|
|
940
|
+
|
|
941
|
+
### Added
|
|
942
|
+
|
|
943
|
+
- `scripts/shadow-compare-classify.mjs` — Phase 3 shadow-compare classifier tool (139 lines). Compares the deterministic `classifyIntent` + `scoreAgainstSpec` (from `@adia-ai/a2ui-validator` Phase 3 foundation, shipped in v0.4.1) against the LLM judge baseline. Used to identify IntentSpecs eligible for fast-path promotion (`≥ 95%` agreement threshold per spec § 3c). First report at `.claude/docs/reports/semantic-shadow-compare-2026-05-10.md` flagged `auth.signin` + `auth.signup` as eligible. Surfaces alongside `npm run semantic:shadow-compare`.
|
|
944
|
+
|
|
945
|
+
### Ride-along (otherwise no source changes)
|
|
946
|
+
|
|
947
|
+
Lockstep PATCH cut alongside `@adia-ai/web-components@0.4.2` (`<input-ui type="number">` rewrite drops native `<input type=number>` wrapping) + `@adia-ai/web-modules@0.4.2` (`<editor-sidebar>` grid-track width-mirror fix + new `<theme-panel>` module). Apart from the script above, source byte-identical to v0.4.1.
|
|
948
|
+
|
|
949
|
+
Internal `@adia-ai/*` dep ranges stay at `^0.4.0` (patch-cut asymmetry — `^0.4.0` covers `0.4.x` under semver). See root [CHANGELOG.md `## [0.4.2]`](../../CHANGELOG.md) for the cut narrative.
|
|
950
|
+
## [0.4.1] - 2026-05-10
|
|
951
|
+
|
|
952
|
+
### Ride-along (no source changes)
|
|
953
|
+
|
|
954
|
+
Lockstep PATCH cut alongside `@adia-ai/web-modules@0.4.1` (simple cluster) + `@adia-ai/a2ui-validator@0.4.1` (Phase 3 foundation) + `@adia-ai/a2ui-corpus@0.4.1` (fragment metrics reconciliation). Source byte-identical to v0.4.0.
|
|
955
|
+
|
|
956
|
+
Internal `@adia-ai/*` dep ranges bumped from `^0.4.0` to `^0.4.1`. See root [CHANGELOG.md `## [0.4.1]`](../../CHANGELOG.md) for the cut narrative.
|
|
957
|
+
## [0.4.0] - 2026-05-10
|
|
958
|
+
|
|
959
|
+
### Ride-along (no source changes)
|
|
960
|
+
|
|
961
|
+
Lockstep MINOR cut alongside `@adia-ai/web-modules@0.4.0` (ADR-0024 legacy shell shapes retired). Source byte-identical to v0.3.6.
|
|
962
|
+
|
|
963
|
+
Internal `@adia-ai/*` dep ranges bumped from `^0.3.0` to `^0.4.0`. See root [CHANGELOG.md `## [0.4.0]`](../../CHANGELOG.md) for the cut narrative.
|
|
964
|
+
## [0.3.6] - 2026-05-10
|
|
965
|
+
|
|
966
|
+
### Ride-along (no source changes)
|
|
967
|
+
|
|
968
|
+
Lockstep version bump only — source byte-identical to v0.3.5. Internal `@adia-ai/*` dep ranges remain at `^0.3.0`. See root [CHANGELOG.md `## [0.3.6]`](../../CHANGELOG.md) for the cut narrative.
|
|
969
|
+
## [0.3.5] - 2026-05-07
|
|
970
|
+
|
|
971
|
+
### Ride-along (no source changes)
|
|
972
|
+
|
|
973
|
+
Lockstep version bump only — source byte-identical to v0.3.4. Internal `@adia-ai/*` dep ranges remain at `^0.3.0`. See root [CHANGELOG.md `## [0.3.5]`](../../CHANGELOG.md) for the cut narrative.
|
|
974
|
+
## [0.3.4] - 2026-05-07
|
|
975
|
+
|
|
976
|
+
### Ride-along (no source changes)
|
|
977
|
+
|
|
978
|
+
Lockstep version bump only — source byte-identical to v0.3.3. Internal `@adia-ai/*` dep ranges remain at `^0.3.0`. See root [CHANGELOG.md `## [0.3.4]`](../../CHANGELOG.md) for the cut narrative.
|
|
979
|
+
## [0.3.3] - 2026-05-07
|
|
980
|
+
|
|
981
|
+
**Lockstep cut.** All 9 published `@adia-ai/*` packages now share version `0.3.3`, governed by [`.claude/docs/specs/package-architecture.md` § 15](../../.claude/docs/specs/package-architecture.md#15-versioning-policy). Internal `@adia-ai/*` ranges stay at `^0.3.0` (patch-cut asymmetry — caret floats `0.3.x`).
|
|
982
|
+
|
|
983
|
+
### Added
|
|
984
|
+
|
|
985
|
+
- **`TOOLS.md`** — single-page reference for all 24 MCP tools
|
|
986
|
+
exposed by `server.js`. Tools grouped into 7 categories
|
|
987
|
+
(composition, retrieval, validation, refinement, telemetry,
|
|
988
|
+
catalog, debug) with descriptions extracted from `server.js`.
|
|
989
|
+
(closes backlog #96)
|
|
990
|
+
|
|
991
|
+
- **Smoke retrieval-quality probe** in
|
|
992
|
+
`scripts/smoke-engine-registry.mjs`. Runs 3 canonical intents
|
|
993
|
+
(login form, pricing tiers, sign-up form) through `generateUI()`
|
|
994
|
+
and verifies output text content overlaps intent keywords.
|
|
995
|
+
Catches retrieval regressions (wrong-domain top hit) that pure
|
|
996
|
+
shape-validation gates miss. 3/3 probes pass. (closes backlog #46)
|
|
997
|
+
|
|
998
|
+
### Changed
|
|
999
|
+
|
|
1000
|
+
- **README** — corrected stale 25-tool count to 24, removed phantom
|
|
1001
|
+
`compose_from_chunks` entry from the table, replaced inline tool
|
|
1002
|
+
table with pointer to `TOOLS.md`. Added "Multi-turn limitations"
|
|
1003
|
+
Gotcha entry documenting per-process state-cache limitation
|
|
1004
|
+
(session-store + state-cache are in-memory, ephemeral; restarting
|
|
1005
|
+
the server drops every multi-turn chain in flight; consumers
|
|
1006
|
+
needing durability should checkpoint to their own store + pass
|
|
1007
|
+
`currentCanvas` on resume). (closes backlog #47)
|
|
1008
|
+
|
|
1009
|
+
- **`tools/synthesis.js`** — issue-reporter prompt vocabulary swept:
|
|
1010
|
+
`'coherence-audit'` → `'ui-audit-coherence'` (matches the renamed
|
|
1011
|
+
skill).
|
|
1012
|
+
|
|
1013
|
+
- **`scripts/smoke-issues.mjs`** — extended `AUTO_FIRE_POLICY exports
|
|
1014
|
+
expected reasons` test to include the new
|
|
1015
|
+
`iteration-synthesis-failure` reason (62/62 pass).
|
|
1016
|
+
## [0.3.2] - 2026-05-06
|
|
1017
|
+
|
|
1018
|
+
**9-package lockstep patch cut to v0.3.2.** All lockstep members share
|
|
1019
|
+
one version per [`.claude/docs/specs/package-architecture.md` § 15](../../.claude/docs/specs/package-architecture.md#15-versioning-policy).
|
|
1020
|
+
Internal `@adia-ai/*` dep ranges unchanged at `^0.3.0`.
|
|
1021
|
+
|
|
1022
|
+
### Added
|
|
1023
|
+
|
|
1024
|
+
- **Render-fidelity scoring** — `scripts/render-fidelity.mjs`: Playwright
|
|
1025
|
+
headless evaluates synthesized HTML on console errors, blank-page
|
|
1026
|
+
detection, and unregistered custom-element count. Integrated into
|
|
1027
|
+
`eval-compose-from-chunks.mjs` at full 30% weight.
|
|
1028
|
+
- **`eval:compose-from-chunks` framework** — 20-intent hold-out set with
|
|
1029
|
+
real-LLM runner (structural 30% + coverage 20% + retrieval 20% +
|
|
1030
|
+
render 30%). Threshold: 80. Result: 20/20 passing, avg 88.
|
|
1031
|
+
- **`chunk-zettel` engine baseline** — comparison vs classic zettel on same
|
|
1032
|
+
hold-out (88 avg / 20 passing vs 77 avg / 11 passing).
|
|
1033
|
+
- **Zettel baseline runner** — `scripts/zettel-baseline.mjs` for cross-engine
|
|
1034
|
+
comparison.
|
|
1035
|
+
- **Nightly eval CI** — `.github/workflows/nightly-eval.yml` with stub
|
|
1036
|
+
eval + zettel-diff + summary jobs.
|
|
1037
|
+
|
|
1038
|
+
### Changed
|
|
1039
|
+
|
|
1040
|
+
- `version`: `0.3.1` → `0.3.2`.
|
|
1041
|
+
## [0.3.1] - 2026-05-06
|
|
1042
|
+
|
|
1043
|
+
**9-package lockstep patch cut.** All 9 published `@adia-ai/*` packages bump 0.3.0 → 0.3.1 per [`.claude/docs/specs/package-architecture.md` § 15](../../.claude/docs/specs/package-architecture.md#15-versioning-policy). Internal `@adia-ai/*` dep ranges remain at `^0.3.0` (covers `0.3.1` under semver — patch-cut asymmetry).
|
|
1044
|
+
|
|
1045
|
+
This package itself ships **no source changes** in v0.3.1. The cut bumps version only — substantive content lives in [`@adia-ai/web-components`](https://github.com/adiahealth/gen-ui-kit/releases/tag/web-components-v0.3.1) (folder-per-trait restructure; barrel API unchanged).
|
|
1046
|
+
|
|
1047
|
+
### Changed
|
|
1048
|
+
|
|
1049
|
+
- `version`: `0.3.0` → `0.3.1`.
|
|
1050
|
+
- Internal `@adia-ai/*` dep ranges: unchanged at `^0.3.0` (covers `0.3.1` under semver — patch-cut asymmetry).
|
|
1051
|
+
## [0.3.0] - 2026-05-05
|
|
1052
|
+
|
|
1053
|
+
**9-package lockstep cut + new `@adia-ai/llm` dep.** All 9 published `@adia-ai/*` packages bump 0.2.5 → 0.3.0 per [`.claude/docs/specs/package-architecture.md` § 15](../../.claude/docs/specs/package-architecture.md#15-versioning-policy). Internal `@adia-ai/*` dep ranges bump `^0.2.0` → `^0.3.0`.
|
|
1054
|
+
|
|
1055
|
+
The MCP synthesis tool now resolves `createLLMAdapter` from `@adia-ai/llm` (9th lockstep package, first publish in this cut) rather than `@adia-ai/a2ui-compose/llm` (subpath dropped). Behavior unchanged.
|
|
1056
|
+
|
|
1057
|
+
### Changed
|
|
1058
|
+
|
|
1059
|
+
- `tools/synthesis.js`: `createLLMAdapter` import path retargeted from `../../compose/llm/llm-bridge.js` to `../../../llm/llm-bridge.js`.
|
|
1060
|
+
- Three eval/test scripts under `scripts/` (`eval-chunk-synthesis.mjs`, `eval-refine-synthesis.mjs`, `test-a2ui.mjs`) similarly retargeted.
|
|
1061
|
+
- `dependencies["@adia-ai/llm"]`: NEW, `^0.3.0`.
|
|
1062
|
+
- `dependencies["@adia-ai/a2ui-utils"]` removed; the renamed `@adia-ai/a2ui-runtime` is reached transitively through `a2ui-compose` and `a2ui-retrieval`.
|
|
1063
|
+
- All other internal `@adia-ai/*` dep ranges: `^0.2.0` → `^0.3.0`.
|
|
1064
|
+
- `version`: `0.2.5` → `0.3.0`.
|
|
1065
|
+
|
|
1066
|
+
### Migration
|
|
1067
|
+
|
|
1068
|
+
If you depend on `@adia-ai/a2ui-mcp` directly (typically as a CLI via `npx adiaui-mcp`), no code changes required. Just bump the dep range:
|
|
1069
|
+
|
|
1070
|
+
```diff
|
|
1071
|
+
- "@adia-ai/a2ui-mcp": "^0.2.0"
|
|
1072
|
+
+ "@adia-ai/a2ui-mcp": "^0.3.0"
|
|
1073
|
+
```
|
|
1074
|
+
|
|
1075
|
+
`@adia-ai/llm` is a transitive dep — npm install handles it.
|
|
1076
|
+
## [0.2.5] - 2026-05-04
|
|
1077
|
+
|
|
1078
|
+
**8-package lockstep cut.** All 8 published `@adia-ai/*` packages bump 0.2.4 → 0.2.5 per [`.claude/docs/specs/package-architecture.md` § 15](../../.claude/docs/specs/package-architecture.md#15-versioning-policy). Internal `@adia-ai/*` dep ranges remain at `^0.2.0` (covers 0.2.5 under semver — patch-cut asymmetry).
|
|
1079
|
+
|
|
1080
|
+
This is a **patch cut on top of v0.2.4, no BREAKING changes.** Substantive content lives in `web-components` (new `<fields-ui>` form-grid primitive + `draggable-list-item` last-item drop-zone fix, both surfaced by the Tasks UI Playground at `.claude/docs/projects/tasks-playground/`); `a2ui-corpus` ships a catalog regen for the new `<fields-ui>` yaml. `a2ui-mcp` rides along at version bump only — no source change.
|
|
1081
|
+
|
|
1082
|
+
### Changed
|
|
1083
|
+
|
|
1084
|
+
- `version`: `0.2.4` → `0.2.5`.
|
|
1085
|
+
- Internal `@adia-ai/*` dep ranges: unchanged at `^0.2.0` (covers `0.2.5` under semver — patch-cut asymmetry).
|
|
1086
|
+
## [0.2.4] - 2026-05-04
|
|
1087
|
+
|
|
1088
|
+
**8-package lockstep cut.** All 8 published `@adia-ai/*` packages bump 0.2.3 → 0.2.4 per [`.claude/docs/specs/package-architecture.md` § 15](../../.claude/docs/specs/package-architecture.md#15-versioning-policy). Internal `@adia-ai/*` dep ranges remain at `^0.2.0` (covers 0.2.4 under semver — patch-cut asymmetry).
|
|
1089
|
+
|
|
1090
|
+
This is a **patch cut on top of v0.2.3, no BREAKING changes.** Substantive content lives in `web-components` (Tier 4 trait library lift, 11 new traits + 2 architectural rewrites, plus accumulated bug fixes); `a2ui-corpus` ships a catalog regen for the new `<demo-toggle-ui>` primitive. Six packages ride along at version + dep-range bump.
|
|
1091
|
+
|
|
1092
|
+
### Changed
|
|
1093
|
+
|
|
1094
|
+
- `version`: `0.2.3` → `0.2.4`.
|
|
1095
|
+
- `dependencies["@adia-ai/a2ui-utils"]`: `^0.2.0` (covers `0.2.4`).
|
|
1096
|
+
|
|
1097
|
+
This package's source tree is byte-identical to 0.2.3. The cut bumps version + the internal dep range only, per the lockstep policy.
|
|
1098
|
+
|
|
1099
|
+
_Nothing yet._
|
|
1100
|
+
|
|
1101
|
+
---
|
|
1102
|
+
|
|
1103
|
+
---
|
|
1104
|
+
## [0.2.3] - 2026-05-04
|
|
1105
|
+
|
|
1106
|
+
**Lockstep cut.** All 8 published `@adia-ai/*` packages bump
|
|
1107
|
+
0.2.2 → 0.2.3 per
|
|
1108
|
+
[`.claude/docs/specs/package-architecture.md` § 15](../../.claude/docs/specs/package-architecture.md#15-versioning-policy).
|
|
1109
|
+
Patch cut — no breaking changes.
|
|
1110
|
+
|
|
1111
|
+
### Changed
|
|
1112
|
+
|
|
1113
|
+
- `version`: `0.2.2` → `0.2.3`.
|
|
1114
|
+
- `dependencies["@adia-ai/a2ui-compose"]`: `^0.2.0` (covers `0.2.3`).
|
|
1115
|
+
- `dependencies["@adia-ai/a2ui-corpus"]`: `^0.2.0` (covers `0.2.3`).
|
|
1116
|
+
- `dependencies["@adia-ai/a2ui-validator"]`: `^0.2.0` (covers `0.2.3`).
|
|
1117
|
+
|
|
1118
|
+
### No source changes
|
|
1119
|
+
|
|
1120
|
+
`@adia-ai/a2ui-mcp` source is byte-identical to `0.2.2`. The cut bumps version + the internal dep range entries only.
|
|
1121
|
+
## [0.2.2] - 2026-05-02
|
|
1122
|
+
|
|
1123
|
+
**Lockstep cut.** All 8 published `@adia-ai/*` packages bump 0.2.1 → 0.2.2 per [`.claude/docs/specs/package-architecture.md` § 15](../../.claude/docs/specs/package-architecture.md#15-versioning-policy). Patch cut — no breaking changes.
|
|
1124
|
+
|
|
1125
|
+
### Changed
|
|
1126
|
+
|
|
1127
|
+
- `version`: `0.2.1` → `0.2.2`.
|
|
1128
|
+
- `dependencies["@adia-ai/a2ui-compose"]`: `^0.2.0` (covers `0.2.2`).
|
|
1129
|
+
- `dependencies["@adia-ai/a2ui-corpus"]`: `^0.2.0` (covers `0.2.2`).
|
|
1130
|
+
- `dependencies["@adia-ai/a2ui-utils"]`: `^0.2.0` (covers `0.2.2`).
|
|
1131
|
+
- `dependencies["@adia-ai/a2ui-retrieval"]`: `^0.2.0` (covers `0.2.2`).
|
|
1132
|
+
- `dependencies["@adia-ai/a2ui-validator"]`: `^0.2.0` (covers `0.2.2`).
|
|
1133
|
+
|
|
1134
|
+
### No source changes
|
|
1135
|
+
|
|
1136
|
+
`a2ui-mcp` source is byte-identical to `0.2.1`. The cut bumps version + tracks dep ranges only. Consumers benefit from the panel-emission improvements that landed in `@adia-ai/a2ui-compose@0.2.2` and `@adia-ai/a2ui-retrieval@0.2.2` — the MCP `compose_from_chunks` and refine paths surface them automatically.
|
|
1137
|
+
|
|
1138
|
+
---
|
|
1139
|
+
## [0.2.1] - 2026-05-02
|
|
1140
|
+
|
|
1141
|
+
**Lockstep cut + `report_issue` trigger phrases + scope-drift auto-fire on canvas-drift detection.** All 8 published `@adia-ai/*` packages bump 0.2.0 → 0.2.1 per [`.claude/docs/specs/package-architecture.md` § 15](../../.claude/docs/specs/package-architecture.md#15-versioning-policy). Patch cut — no breaking changes.
|
|
1142
|
+
|
|
1143
|
+
### Changed
|
|
1144
|
+
|
|
1145
|
+
- `version`: `0.2.0` → `0.2.1`.
|
|
1146
|
+
- `dependencies["@adia-ai/a2ui-compose"]`: `^0.2.0` (covers `0.2.1`).
|
|
1147
|
+
- `dependencies["@adia-ai/a2ui-corpus"]`: `^0.2.0` (covers `0.2.1`).
|
|
1148
|
+
- `dependencies["@adia-ai/a2ui-utils"]`: `^0.2.0` (covers `0.2.1`).
|
|
1149
|
+
- `dependencies["@adia-ai/a2ui-retrieval"]`: `^0.2.0` (covers `0.2.1`).
|
|
1150
|
+
- `dependencies["@adia-ai/a2ui-validator"]`: `^0.2.0` (covers `0.2.1`).
|
|
1151
|
+
- `tools/synthesis.js` is the surface that gained the new behavior (auto-fire + trigger phrases below). `scripts/eval-compose-from-chunks.mjs` updated to load the holdout fixture from its new home in `@adia-ai/a2ui-corpus/evals/` (the file moved out of `evals/` here in this cut).
|
|
1152
|
+
- `evals/compose-from-chunks-holdout.jsonl` removed from this package; relocated to `packages/a2ui/corpus/evals/holdout-compose-from-chunks.jsonl` to live next to the corpus it tests.
|
|
1153
|
+
|
|
1154
|
+
### Added — `report_issue` trigger phrases + sibling Markdown ticket (2026-05-02)
|
|
1155
|
+
|
|
1156
|
+
`report_issue` tool description now lists explicit trigger phrases ("file a ticket", "save the trace", "report this as a bug", "track this regression", "open a ticket for this", and 9 more) so the LLM knows when to fire it without guessing. The default trace depth flipped from `'summary'` to `'full'` when `state_id` is provided — the high-resolution Markdown ticket is now the design intent.
|
|
1157
|
+
|
|
1158
|
+
Tool return shape extended with `markdown_path` alongside the existing `path` (.json). The tool description instructs the LLM to surface BOTH paths to the user with a marker so a maintainer can navigate to either:
|
|
1159
|
+
|
|
1160
|
+
```
|
|
1161
|
+
📋 Logged ticket `{issue_id}` ({severity} · owner: {suggested_owner})
|
|
1162
|
+
• Trace report: `{markdown_path}` ← human-readable
|
|
1163
|
+
• Raw JSON: `{path}` ← machine-readable
|
|
1164
|
+
```
|
|
1165
|
+
|
|
1166
|
+
### Added — `compose_from_chunks` auto-fires `scope-drift` on canvas-drift detection (2026-05-02)
|
|
1167
|
+
|
|
1168
|
+
When the composer's scope-drift gate (a2ui-compose) flags `result.scopeDrift.drift === true`, the MCP handler auto-fires a `scope-drift` issue with `trace: 'full'`, writing both the JSON ticket and the high-res Markdown report. Tool response also echoes `scopeDrift` so the calling agent can read the ratio + decide its next move. Closes the original MCP feedback's "next time canvas-drift happens, a ticket files itself" ask.
|
|
1169
|
+
## [0.2.0] - 2026-05-02
|
|
1170
|
+
|
|
1171
|
+
**Lockstep cut + corpus caret-lock fix.** All 8 published `@adia-ai/*`
|
|
1172
|
+
packages now share one version, governed by
|
|
1173
|
+
[`.claude/docs/specs/package-architecture.md` § 15 (Versioning Policy)](../../.claude/docs/specs/package-architecture.md#15-versioning-policy).
|
|
1174
|
+
|
|
1175
|
+
This release **fixes a live shipping bug** in 0.1.3: the `dependencies`
|
|
1176
|
+
range `"@adia-ai/a2ui-corpus": "^0.0.6"` locked to *exactly* `0.0.6`
|
|
1177
|
+
under npm pre-1.0 semver, so every fresh `npm i @adia-ai/a2ui-mcp`
|
|
1178
|
+
since the corpus 0.0.7 cut was installing a stale corpus — missing the
|
|
1179
|
+
§§22-25 nav consolidation, the new chunks, and the catalog regen. The
|
|
1180
|
+
new range `^0.2.0` works correctly. Same class fixed for the other 4
|
|
1181
|
+
internal deps in this package.
|
|
1182
|
+
|
|
1183
|
+
### Fixed
|
|
1184
|
+
|
|
1185
|
+
- **`a2ui-mcp@0.1.3 → corpus@0.0.6` install bug.** The new `^0.2.0`
|
|
1186
|
+
ranges resolve to the actually-current versions instead of the
|
|
1187
|
+
caret-locked old ones. Consumers running `npx adiaui-mcp` from npm
|
|
1188
|
+
now see the post-§§22-25 corpus + the post-rename component catalog.
|
|
1189
|
+
|
|
1190
|
+
### Changed
|
|
1191
|
+
|
|
1192
|
+
- `version`: `0.1.3` → `0.2.0`.
|
|
1193
|
+
- `dependencies["@adia-ai/a2ui-compose"]`: `^0.1.0` → `^0.2.0`.
|
|
1194
|
+
- `dependencies["@adia-ai/a2ui-retrieval"]`: `^0.0.1` → `^0.2.0`.
|
|
1195
|
+
- `dependencies["@adia-ai/a2ui-validator"]`: `^0.0.1` → `^0.2.0`.
|
|
1196
|
+
- `dependencies["@adia-ai/a2ui-corpus"]`: `^0.0.6` → `^0.2.0`.
|
|
1197
|
+
|
|
1198
|
+
### No source changes
|
|
1199
|
+
|
|
1200
|
+
`server.js`, tools, scripts, evals, personas — all byte-identical to
|
|
1201
|
+
0.1.3. The cut bumps version + the 4 internal dep ranges only.
|
|
1202
|
+
Consumers who want the substantive 0.1.3 work (`compose_from_chunks`
|
|
1203
|
+
eval runner + 20-intent hold-out set) get it via either 0.1.3 or
|
|
1204
|
+
0.2.0 — and 0.2.0 additionally installs the correct corpus version.
|
|
1205
|
+
## [0.1.3] - 2026-05-02
|
|
1206
|
+
|
|
1207
|
+
Additive — `compose_from_chunks` eval runner + hold-out set. No
|
|
1208
|
+
BREAKING changes.
|
|
1209
|
+
|
|
1210
|
+
### Added
|
|
1211
|
+
|
|
1212
|
+
- **`compose_from_chunks` eval runner + hold-out set**. Closes the
|
|
1213
|
+
spec at
|
|
1214
|
+
[`.claude/docs/specs/compose-from-chunks-eval.md`](../../.claude/docs/specs/compose-from-chunks-eval.md):
|
|
1215
|
+
- `evals/compose-from-chunks-holdout.jsonl` — 20 intents (10
|
|
1216
|
+
single-turn compose + 10 multi-turn refine) across 9
|
|
1217
|
+
categories (data-display, forms, layout, data, data-viz,
|
|
1218
|
+
agent, overlay, chat, settings, display).
|
|
1219
|
+
- `scripts/eval-compose-from-chunks.mjs` — runner with `--stub`
|
|
1220
|
+
(default; retrieval-only, no API calls) and `--real-llm`
|
|
1221
|
+
(wires Anthropic SDK) modes. Composite scoring (structural
|
|
1222
|
+
30 + coverage 20 + retrieval 20 + render 30, with null-
|
|
1223
|
+
pro-rata redistribution when render is deferred). `--json`
|
|
1224
|
+
+ `--report-file` outputs. Threshold 80; exits 1 if avg < 80.
|
|
1225
|
+
- `npm run eval:compose-from-chunks` exposes the runner.
|
|
1226
|
+
- Stub baseline: 9 of 20 intents retrievable directly (avg
|
|
1227
|
+
~50-70 each); 11 need synthesis (correctly warn without
|
|
1228
|
+
`--real-llm`). Aggregate ~26 / 100 stub. Real-LLM mode is
|
|
1229
|
+
the gating signal for the `chunk-zettel` engine promotion.
|
|
1230
|
+
|
|
1231
|
+
Render-fidelity component is DEFERRED — needs Playwright
|
|
1232
|
+
headless render + console-error capture wiring; current
|
|
1233
|
+
composite drops the render weight pro-rata across
|
|
1234
|
+
structural/coverage/retrieval until that lands.
|
|
1235
|
+
|
|
1236
|
+
### Changed
|
|
1237
|
+
|
|
1238
|
+
- `package.json` `files:` array now includes `evals/` so the hold-out
|
|
1239
|
+
set ships in the published tarball.
|
|
1240
|
+
|
|
1241
|
+
---
|
|
1242
|
+
## [0.1.2] - 2026-05-01
|
|
1243
|
+
|
|
1244
|
+
Phase 2 of [`.claude/docs/specs/semantic-validator.md`](../../.claude/docs/specs/semantic-validator.md)
|
|
1245
|
+
**promoted to default**. When `--semantic` is set, `eval-diff.mjs`
|
|
1246
|
+
now gates on the combined score at threshold 80 by default, instead
|
|
1247
|
+
of running in Phase 1 shadow-mode. **Behavior change** — see § Opt
|
|
1248
|
+
back into Phase 1 below.
|
|
1249
|
+
|
|
1250
|
+
### Changed (default behavior when `--semantic` is set)
|
|
1251
|
+
|
|
1252
|
+
- **`--gate-mode` default flipped from `structural` to `combined`
|
|
1253
|
+
when `--semantic` is set.** `npm run eval:diff -- --engine zettel
|
|
1254
|
+
--semantic` now produces a combined-gated `passRate` (gate on
|
|
1255
|
+
`0.6 × validationScore + 0.4 × semanticScore`) instead of the
|
|
1256
|
+
structural-only Phase 1 shadow output. The structural pass survives
|
|
1257
|
+
as `row.passStructural` + `runObj.passRateStructural` for diagnostic
|
|
1258
|
+
comparison.
|
|
1259
|
+
- **`--gate-threshold` default raised from 70 to 80.** Chosen via
|
|
1260
|
+
the 2026-05-01 sweep — 70 produced zero pass-flips on the current
|
|
1261
|
+
zettel engine output (cosmetic flip with no signal); 80 catches the
|
|
1262
|
+
4 partial-verdict cases the spec was designed to surface; 85
|
|
1263
|
+
over-aggressively rejects legit aligned items. See spec § Phase 2
|
|
1264
|
+
status (2026-05-01) for the sweep table.
|
|
1265
|
+
- **Without `--semantic`, the default stays `structural`.** Semantic
|
|
1266
|
+
work remains opt-in; the no-flag `npm run eval:diff` shape is
|
|
1267
|
+
unchanged.
|
|
1268
|
+
|
|
1269
|
+
### Opt back into Phase 1 shadow-mode
|
|
1270
|
+
|
|
1271
|
+
- `--gate-mode structural` reverts the default flip — `row.pass`
|
|
1272
|
+
gates on `validationScore` alone, semantic verdicts annotation-
|
|
1273
|
+
only.
|
|
1274
|
+
- `--gate-threshold 70` reverts the threshold change.
|
|
1275
|
+
- Combine both for full v0.1.1 default behavior:
|
|
1276
|
+
```bash
|
|
1277
|
+
node packages/a2ui/mcp/scripts/eval-diff.mjs --engine zettel \
|
|
1278
|
+
--semantic --gate-mode structural
|
|
1279
|
+
```
|
|
1280
|
+
|
|
1281
|
+
### Why the promotion is safe
|
|
1282
|
+
|
|
1283
|
+
Per the Phase 2 exit criterion ("no unexplained regressions in first
|
|
1284
|
+
two full `eval-diff` runs"), zero pass-flips were observed at
|
|
1285
|
+
threshold=70 (the v0.1.1 default). At threshold=80, the four
|
|
1286
|
+
pass→fail flips are all `partial`-verdict items that fit the spec's
|
|
1287
|
+
motivating failure mode (structural=86–88 + semantic=54–69) — the
|
|
1288
|
+
intents the structural-only validator scored highly but the LLM
|
|
1289
|
+
judge correctly flagged as "wrong UI for this intent":
|
|
1290
|
+
|
|
1291
|
+
- `user profile card with avatar` — structural 88, semantic 54
|
|
1292
|
+
- `calendar month view` — structural 86, semantic 65
|
|
1293
|
+
- `social media post card` — structural 86, semantic 69
|
|
1294
|
+
- `user onboarding checklist` — structural 87, semantic 67
|
|
1295
|
+
|
|
1296
|
+
Pass rate drops from 83 → 79 (4 percentage points), all justified.
|
|
1297
|
+
|
|
1298
|
+
### Updated baseline thresholds
|
|
1299
|
+
|
|
1300
|
+
Per [`.claude/docs/specs/semantic-validator.md`](../../.claude/docs/specs/semantic-validator.md)
|
|
1301
|
+
§ Phase 2 status (2026-05-01):
|
|
1302
|
+
|
|
1303
|
+
- `avgScore ≥ 88` (structural — unchanged)
|
|
1304
|
+
- `avgSemanticScore ≥ 85` (new)
|
|
1305
|
+
- `avgCombined ≥ 87` (new)
|
|
1306
|
+
- `passRate ≥ 78%` at combined-gate threshold=80 (new; was 83%
|
|
1307
|
+
structural-only)
|
|
1308
|
+
- `verdict aligned ≥ 84%` of judged items
|
|
1309
|
+
|
|
1310
|
+
### Implementation references
|
|
1311
|
+
|
|
1312
|
+
- [`scripts/eval-diff.mjs`](gen-ui/scripts/eval-diff.mjs) — default flip
|
|
1313
|
+
- [`scripts/semantic-stats.mjs`](gen-ui/scripts/semantic-stats.mjs) —
|
|
1314
|
+
unchanged from v0.1.1; remains the validation tool for future
|
|
1315
|
+
threshold revalidation passes
|
|
1316
|
+
## [0.1.1] - 2026-05-01
|
|
1317
|
+
|
|
1318
|
+
Phase 2 of [`.claude/docs/specs/semantic-validator.md`](../../.claude/docs/specs/semantic-validator.md)
|
|
1319
|
+
— opt-in combined-gating in `eval-diff.mjs` + new
|
|
1320
|
+
`semantic-stats.mjs` companion script. **No breaking changes.**
|
|
1321
|
+
Default `eval-diff` behavior unchanged — Phase 1 shadow-mode is
|
|
1322
|
+
still the default; combined gating is opt-in via flags.
|
|
1323
|
+
|
|
1324
|
+
### Added (`scripts/eval-diff.mjs` — Phase 2 gating flags)
|
|
1325
|
+
|
|
1326
|
+
- **`--gate-mode {structural|combined}`** — `structural` (default)
|
|
1327
|
+
preserves Phase 1 shadow behavior: `row.pass` gates on
|
|
1328
|
+
`validationScore` alone; semantic verdicts are annotation-only.
|
|
1329
|
+
`combined` flips `row.pass` to gate on the combined score
|
|
1330
|
+
(`round(0.6 × validationScore + 0.4 × semanticScore)`); preserves
|
|
1331
|
+
the pre-flip pass as `row.passStructural`; recomputes
|
|
1332
|
+
`runObj.passRate` + carries `runObj.passRateStructural` (baseline)
|
|
1333
|
+
alongside; records `runObj.gateMode` + `runObj.gateThreshold`;
|
|
1334
|
+
`diff.md` gains structural-baseline + avgSemantic + avgCombined
|
|
1335
|
+
rows.
|
|
1336
|
+
- **`--gate-threshold N`** — combined-mode threshold; default 70 to
|
|
1337
|
+
match the existing structural threshold. Override per-run for
|
|
1338
|
+
sweep-style tuning.
|
|
1339
|
+
- **Validation gate** — combined-mode requires `--semantic`; the
|
|
1340
|
+
script rejects the flag combination at startup so the operator
|
|
1341
|
+
never silently ships the gating change without the scores it
|
|
1342
|
+
needs.
|
|
1343
|
+
|
|
1344
|
+
### Added (`scripts/semantic-stats.mjs` — companion stats script)
|
|
1345
|
+
|
|
1346
|
+
- **New** — read-only; takes two run JSON paths
|
|
1347
|
+
(`evals/mcp/runs/<stamp>/{mcp,zettel}.json`); emits markdown to
|
|
1348
|
+
stdout with **verdict-distribution deltas + per-intent pass-flip
|
|
1349
|
+
diagnostics** (which intents flipped pass→fail or fail→pass
|
|
1350
|
+
between baseline and candidate). The tooling that satisfies the
|
|
1351
|
+
"no unexplained regressions" exit criterion of Phase 2 §
|
|
1352
|
+
Rollout before promoting combined gating to default.
|
|
1353
|
+
|
|
1354
|
+
### Procedure for promotion (deferred)
|
|
1355
|
+
|
|
1356
|
+
Promotion to default is deferred until two full eval-diff runs
|
|
1357
|
+
(structural-only baseline + combined-gating candidate) have been
|
|
1358
|
+
compared via `semantic-stats.mjs` and the regression count
|
|
1359
|
+
justifies it. Procedure:
|
|
1360
|
+
|
|
1361
|
+
```bash
|
|
1362
|
+
# 1. Capture structural-only baseline (default behavior)
|
|
1363
|
+
node packages/a2ui/mcp/scripts/eval-diff.mjs --engine zettel --semantic
|
|
1364
|
+
|
|
1365
|
+
# 2. Run the candidate (combined gating)
|
|
1366
|
+
node packages/a2ui/mcp/scripts/eval-diff.mjs --engine zettel --semantic --gate-mode combined
|
|
1367
|
+
|
|
1368
|
+
# 3. Compare
|
|
1369
|
+
node packages/a2ui/mcp/scripts/semantic-stats.mjs \
|
|
1370
|
+
evals/mcp/runs/<baseline-stamp>/zettel.json \
|
|
1371
|
+
evals/mcp/runs/<candidate-stamp>/zettel.json > /tmp/semantic-stats.md
|
|
1372
|
+
```
|
|
1373
|
+
|
|
1374
|
+
### Implementation references
|
|
1375
|
+
|
|
1376
|
+
- [`scripts/eval-diff.mjs`](gen-ui/scripts/eval-diff.mjs)
|
|
1377
|
+
- [`scripts/semantic-stats.mjs`](gen-ui/scripts/semantic-stats.mjs)
|
|
1378
|
+
|
|
1379
|
+
### Commits
|
|
1380
|
+
|
|
1381
|
+
- `8415ff9e` — `feat(validator): semantic Phase 2 — opt-in combined-gating + drift cleanup`
|
|
1382
|
+
## [0.1.0] - 2026-04-28
|
|
1383
|
+
|
|
1384
|
+
**Multi-turn gen-UI tool surface (Phase A code-complete).** Adds three new
|
|
1385
|
+
MCP tools that turn the chunk-composition pipeline from single-shot into a
|
|
1386
|
+
multi-turn surface, plus extends `compose_from_chunks` to mint a `state_id`
|
|
1387
|
+
for refinement chains.
|
|
1388
|
+
|
|
1389
|
+
Spec: [`.claude/docs/specs/genui-multiturn-architecture.md`](../../.claude/docs/specs/genui-multiturn-architecture.md) (Active v0.1.0).
|
|
1390
|
+
Plan: `.claude/docs/plans/genui-multiturn-rollout-2026-04-28.md` (Phase A scoped).
|
|
1391
|
+
ADR: `0008-multiturn-genui-architecture.md`.
|
|
1392
|
+
|
|
1393
|
+
### Added (MCP tools)
|
|
1394
|
+
|
|
1395
|
+
- **`refine_composition(state_id, intent | ops, max_attempts?)`** — takes a
|
|
1396
|
+
`state_id` from a prior `compose_from_chunks` (or `refine_composition`)
|
|
1397
|
+
call plus either a natural-language intent OR an explicit op-list, runs
|
|
1398
|
+
the chunk-refiner's two-pass synthesis (locator → modifier; validator-
|
|
1399
|
+
driven retry on op-validation failure), applies the resulting chunk-plan
|
|
1400
|
+
ops, re-materializes HTML, mints a child `state_id` chained back to the
|
|
1401
|
+
parent, and returns A2UI `updateComponents` messages (the wire format).
|
|
1402
|
+
Failed ops surface in `ops_failed` with reasons; the new state is cached
|
|
1403
|
+
for further refinement.
|
|
1404
|
+
- **`get_state(state_id)`** — read-only inspection of a cached composition
|
|
1405
|
+
state. Returns the chunk binding plan, materialized HTML, ops history
|
|
1406
|
+
(chronological list of every refinement applied to this state's lineage),
|
|
1407
|
+
and `parent_state_id` (chain-back). Auto-fires `cache-miss-on-known-state`
|
|
1408
|
+
(severity `nit`) when the id is absent.
|
|
1409
|
+
- **`report_issue(type, severity, title, body, state_id?, trace?, …)`** —
|
|
1410
|
+
first-class telemetry / dev-process feedback tool. Writes a structured
|
|
1411
|
+
JSON ticket to `.brain/audit-history/issues/<issue_id>.json`. Three
|
|
1412
|
+
reporter kinds: LLM self-fire (this tool with `reporter: 'llm'`),
|
|
1413
|
+
consumer-fire (passed through directly), engine auto-fire (internal,
|
|
1414
|
+
per `AUTO_FIRE_POLICY` in the issue-reporter module). Severity vocabulary
|
|
1415
|
+
`blocker | drift | nit` matches the existing `ui-audit-coherence`
|
|
1416
|
+
discipline. Trace levels: `'full' | 'summary' | 'none'`; oversized
|
|
1417
|
+
traces (> 200 KB) spill to a sidecar `.trace.json` file. Tool count
|
|
1418
|
+
goes from 25 → 28.
|
|
1419
|
+
|
|
1420
|
+
### Changed
|
|
1421
|
+
|
|
1422
|
+
- **`compose_from_chunks`** now mints a `state_id` and caches the result
|
|
1423
|
+
before returning. The response shape gains a `state_id` field; existing
|
|
1424
|
+
fields (`html`, `plan`, `source`, `score`, `warnings`, `synthesis`)
|
|
1425
|
+
are unchanged. Backward-compatible — consumers ignoring `state_id` see
|
|
1426
|
+
no behavior change.
|
|
1427
|
+
- **MCP server boot** instantiates a `getStateCache()` singleton and an
|
|
1428
|
+
`ENGINE_VERSION_INFO` block (mcp 0.1.0, corpus 0.0.6, engine zettel,
|
|
1429
|
+
llm_adapter anthropic) that's threaded through every issue-reporter
|
|
1430
|
+
call so written tickets carry environment metadata.
|
|
1431
|
+
|
|
1432
|
+
### Auto-fire policy (engine-driven)
|
|
1433
|
+
|
|
1434
|
+
`refine_composition` and `get_state` auto-fire `report_issue` on these
|
|
1435
|
+
failure paths via the per-tool-call `IssueAccumulator`:
|
|
1436
|
+
|
|
1437
|
+
| Path | Type | Severity |
|
|
1438
|
+
|---|---|---|
|
|
1439
|
+
| Synthesizer exhausts retries | bug | drift |
|
|
1440
|
+
| Validator exhausts retries on refinement | bug | blocker |
|
|
1441
|
+
| Locator pass returns empty for targeted intent | bug | drift |
|
|
1442
|
+
| Retrieval 0 + synthesis fallback fails | training-gap | drift |
|
|
1443
|
+
| `get_state` called with absent `state_id` | bug | nit |
|
|
1444
|
+
| `refine_composition` ops_failed list non-empty | bug | drift |
|
|
1445
|
+
|
|
1446
|
+
Multiple auto-fires within one tool call coalesce into a single issue
|
|
1447
|
+
(highest severity wins; reasons listed in body + tags).
|
|
1448
|
+
|
|
1449
|
+
### Smoke + eval
|
|
1450
|
+
|
|
1451
|
+
- `smoke:state-cache` — 34/34.
|
|
1452
|
+
- `smoke:issues` — 62/62.
|
|
1453
|
+
- `smoke:refine` — 51/51 (stub LLM).
|
|
1454
|
+
- `test:a2ui` — 25/25 + 1 skipped (was 19/19 + 1; +6 multi-turn assertions).
|
|
1455
|
+
- `mcp:smoke` — server boots clean with 28 tools registered.
|
|
1456
|
+
- **`eval:refine-synthesis`** — 15/15 PASS. Ops 100%, validate 100%,
|
|
1457
|
+
0 auto-fires, 67 s.
|
|
1458
|
+
- **No regression:** `eval:chunk-synthesis` 10/10, `eval:diff zettel`
|
|
1459
|
+
coverage 83 / score 89 / MRR 0.986.
|
|
1460
|
+
|
|
1461
|
+
### Dependencies
|
|
1462
|
+
|
|
1463
|
+
- Bumps `@adia-ai/a2ui-compose` requirement from `^0.0.1` to `^0.1.0`.
|
|
1464
|
+
|
|
1465
|
+
### Migration
|
|
1466
|
+
|
|
1467
|
+
Additive surface; no breaking changes. The existing 25 tools are
|
|
1468
|
+
unchanged behaviorally; `compose_from_chunks` adds a `state_id` field to
|
|
1469
|
+
its response that ignoring consumers can safely drop.
|
|
1470
|
+
|
|
1471
|
+
### Phase A simplification (documented)
|
|
1472
|
+
|
|
1473
|
+
Refinement ops internally use a chunk-plan vocabulary
|
|
1474
|
+
(`rebindSlot | appendToSlot | removeFromSlot | replacePage`), wrapped
|
|
1475
|
+
on output as standard `updateComponents` A2UI messages with
|
|
1476
|
+
`components[].html` carrying the materialized payload. Strict
|
|
1477
|
+
component-tree shape upgrade is queued for Phase B.
|
|
1478
|
+
|
|
1479
|
+
---
|
|
1480
|
+
## [0.0.5] - 2026-04-28
|
|
1481
|
+
|
|
1482
|
+
**Retires the legacy exemplar auto-ingest.** Server boot no longer pulls
|
|
1483
|
+
70 patterns from the prose exemplars on every start. The chunk corpus
|
|
1484
|
+
+ chunk-aware synthesizer is the training surface now (`compose_from_chunks`
|
|
1485
|
+
+ `search_chunks` + `get_chunk` + `lookup_chunk` from 0.0.2).
|
|
1486
|
+
|
|
1487
|
+
### Changed
|
|
1488
|
+
|
|
1489
|
+
- **`server.js` boot path** — removed the `auto-ingest` block that called
|
|
1490
|
+
`ingestAll()` at startup. The runtime pattern library reverts from 225
|
|
1491
|
+
(155 hand-authored + 70 ingested) to **155 hand-authored only**. Eval
|
|
1492
|
+
metrics confirm no regression: `eval:diff zettel` still reports
|
|
1493
|
+
coverage 83 / score 89; `smoke:chunks` still 33/33; `eval:chunk-synthesis`
|
|
1494
|
+
still PASS at 100% / 9 retrieval / 1 synthesis on the hold-out set.
|
|
1495
|
+
- **`test:a2ui` test 6 updated** — was asserting "post-ingest count ≥ 200
|
|
1496
|
+
patterns"; now asserts the two training-corpus surfaces independently:
|
|
1497
|
+
pattern library ≥ 100 hand-authored entries (155 today), chunk corpus
|
|
1498
|
+
≥ 500 unique chunks (701 today).
|
|
1499
|
+
|
|
1500
|
+
### Dependencies
|
|
1501
|
+
|
|
1502
|
+
- Bumps `@adia-ai/a2ui-corpus` requirement from `^0.0.5` to `^0.0.6`.
|
|
1503
|
+
|
|
1504
|
+
### Migration (none required)
|
|
1505
|
+
|
|
1506
|
+
- Pure runtime simplification. Existing MCP consumers experience the
|
|
1507
|
+
same tool surface; the only observable change is faster boot (no
|
|
1508
|
+
ingest round trip) and a smaller in-memory pattern library.
|
|
1509
|
+
|
|
1510
|
+
---
|
|
1511
|
+
## [0.0.4] - 2026-04-28
|
|
1512
|
+
|
|
1513
|
+
Dependency-only bump to pull `@adia-ai/a2ui-corpus@^0.0.5` (one fewer
|
|
1514
|
+
chunk + re-embedded vectors). No code changes in this package; existing
|
|
1515
|
+
consumers using `compose_from_chunks` get a tiny retrieval-quality lift
|
|
1516
|
+
from the refreshed embedding index.
|
|
1517
|
+
|
|
1518
|
+
### Dependencies
|
|
1519
|
+
|
|
1520
|
+
- Bumps `@adia-ai/a2ui-corpus` requirement from `^0.0.4` to `^0.0.5`.
|
|
1521
|
+
|
|
1522
|
+
---
|
|
1523
|
+
## [0.0.3] - 2026-04-28
|
|
1524
|
+
|
|
1525
|
+
Same-day follow-up to `0.0.2` shipped earlier today. Wires the corpus
|
|
1526
|
+
embedding vectors (from `@adia-ai/a2ui-corpus@0.0.4`) into the chunk
|
|
1527
|
+
retrieval path so the synthesizer mixes-and-matches against semantic
|
|
1528
|
+
similarity, not just keyword overlap.
|
|
1529
|
+
|
|
1530
|
+
### Added
|
|
1531
|
+
|
|
1532
|
+
- **`chunk-embedding-retriever.js`** (`packages/a2ui/retrieval/`) — sibling
|
|
1533
|
+
to the existing pattern-embedding retriever. Lazy-loads
|
|
1534
|
+
`chunk-embeddings.json`, scores cosine similarity against the same
|
|
1535
|
+
provider that built the index. Graceful no-op when index is missing or
|
|
1536
|
+
no API key is available.
|
|
1537
|
+
- **`searchChunksAsync(query, opts)`** in `chunk-library.js` — embedding-
|
|
1538
|
+
blended search. Returns top candidates ranked by `keyword + 5×cosine`
|
|
1539
|
+
when embeddings are available; falls back to keyword-only otherwise.
|
|
1540
|
+
Sync `searchChunks()` is preserved for callers that want the keyword
|
|
1541
|
+
floor without the network round-trip.
|
|
1542
|
+
|
|
1543
|
+
### Changed
|
|
1544
|
+
|
|
1545
|
+
- `chunk-synthesizer.composeFromIntent()` — both tier-1 retrieval AND
|
|
1546
|
+
tier-2 pre-search now go through `searchChunksAsync` instead of the
|
|
1547
|
+
keyword-only `searchChunks`. The pre-search filters the prompt token
|
|
1548
|
+
budget more accurately; the retrieval-first path catches more direct
|
|
1549
|
+
hits before the LLM is invoked.
|
|
1550
|
+
|
|
1551
|
+
### Measured impact
|
|
1552
|
+
|
|
1553
|
+
`eval:chunk-synthesis` (10 hold-out intents, real Anthropic LLM):
|
|
1554
|
+
|
|
1555
|
+
| | 0.0.2 (keyword) | **0.0.3 (semantic)** |
|
|
1556
|
+
|---|---|---|
|
|
1557
|
+
| Retrieval-tier hits | 7/10 | **9/10** |
|
|
1558
|
+
| Synthesis-tier attempts | 3 | **1** |
|
|
1559
|
+
| Synthesis plans validated | 3/3 | 1/1 |
|
|
1560
|
+
| Total time | 5.0s | 5.1s |
|
|
1561
|
+
|
|
1562
|
+
Examples that flipped from synthesis → direct retrieval:
|
|
1563
|
+
- "kpi grid with 4 stat cards" → matches `dashboard-kpi-grid` cleanly.
|
|
1564
|
+
- "conversion funnel chart" → matches `dashboard-funnel`.
|
|
1565
|
+
|
|
1566
|
+
The remaining synthesis intent ("recovery page with backup-code form +
|
|
1567
|
+
contact-support link") is genuinely novel — it composes from parts that
|
|
1568
|
+
don't have a 1:1 chunk and exercises the slot-validator path correctly.
|
|
1569
|
+
|
|
1570
|
+
### Dependencies
|
|
1571
|
+
|
|
1572
|
+
- Bumps `@adia-ai/a2ui-corpus` requirement from `^0.0.3` to `^0.0.4`.
|
|
1573
|
+
|
|
1574
|
+
---
|
|
1575
|
+
## [0.0.2] - 2026-04-28
|
|
1576
|
+
|
|
1577
|
+
Adds **gen-UI training-chunk tools** that expose the new chunk corpus
|
|
1578
|
+
(shipped in `@adia-ai/a2ui-corpus@0.0.3`) via the MCP transport. Also
|
|
1579
|
+
adds a chunk-aware composition synthesizer that mixes-and-matches chunks
|
|
1580
|
+
when retrieval can't find a 1:1 match — the LLM picks a page chunk + binds
|
|
1581
|
+
block/panel chunks to its slots, validated against the chunk catalog
|
|
1582
|
+
before HTML is materialized.
|
|
1583
|
+
|
|
1584
|
+
### Added (MCP tools)
|
|
1585
|
+
|
|
1586
|
+
- **`search_chunks(query, kind?, limit?)`** — keyword search over the
|
|
1587
|
+
chunk corpus. Filters by `kind` (`block` | `panel` | `page`); returns
|
|
1588
|
+
ranked candidates with relevance score, primary tag, and chunk name.
|
|
1589
|
+
- **`get_chunk(name)`** — full record for a single chunk by name. For
|
|
1590
|
+
reusable slot chunks (e.g. `auth-card-header`, `reg-step-header`)
|
|
1591
|
+
returns an `instances` array — one entry per page.
|
|
1592
|
+
- **`lookup_chunk(component_name)`** — list every chunk whose primary
|
|
1593
|
+
element is `<component_name>`. Useful for "show me every page that
|
|
1594
|
+
opens with a `<card-ui raw>`" or "every chunk built around a
|
|
1595
|
+
`<grid-ui>` root."
|
|
1596
|
+
- **`compose_from_chunks(intent?, plan?, max_attempts?)`** — two-tier
|
|
1597
|
+
composition tool: retrieval-first (returns matched chunk HTML
|
|
1598
|
+
directly), synthesis-fallback (LLM picks a page chunk + binds
|
|
1599
|
+
block/panel chunks to its slots when retrieval is weak). The
|
|
1600
|
+
synthesizer mirrors the existing fragment synthesizer's prompt
|
|
1601
|
+
pattern, repointed at the chunk catalog. Pre-search filters the
|
|
1602
|
+
catalog to ~30 candidates before the LLM sees them. Plan-only
|
|
1603
|
+
invocation skips the LLM and just materializes HTML from a
|
|
1604
|
+
pre-baked binding.
|
|
1605
|
+
|
|
1606
|
+
### Added (engine internals)
|
|
1607
|
+
|
|
1608
|
+
- `packages/a2ui/compose/strategies/zettel/chunk-composer.js` —
|
|
1609
|
+
HTML-string-level composer that walks a page chunk and substitutes
|
|
1610
|
+
each `data-chunk-slot` region with the bound block-level chunks'
|
|
1611
|
+
HTML. Companion `validatePlan()` checks slot names + chunk-kind
|
|
1612
|
+
contracts before composition.
|
|
1613
|
+
- `packages/a2ui/compose/strategies/zettel/chunk-synthesizer.js` —
|
|
1614
|
+
LLM-driven mix-and-match composition; pre-searches the catalog,
|
|
1615
|
+
builds a prompt with a one-shot in-context example, validates the
|
|
1616
|
+
LLM's binding plan against the catalog, retries with feedback on
|
|
1617
|
+
validation failure (default 2 attempts).
|
|
1618
|
+
|
|
1619
|
+
### Smoke
|
|
1620
|
+
|
|
1621
|
+
- `npm run smoke:chunks` (33/33 passing, 2026-04-28) — covers
|
|
1622
|
+
chunk-library indexing, retrieval scoring, plan validation, plan
|
|
1623
|
+
composition, and synthesis fallback path with a stub LLM adapter.
|
|
1624
|
+
|
|
1625
|
+
### Convention reference
|
|
1626
|
+
|
|
1627
|
+
- Spec: [`.claude/docs/specs/genui-chunk-marker.md`](../../.claude/docs/specs/genui-chunk-marker.md).
|
|
1628
|
+
- Plan: `.claude/docs/plans/training-pipeline-chunk-harvest-2026-04-27.md`.
|
|
1629
|
+
|
|
1630
|
+
### Other
|
|
1631
|
+
|
|
1632
|
+
- Registry / transpilation scripts at
|
|
1633
|
+
`packages/web-components/scripts/a2ui-to-html.cjs` and
|
|
1634
|
+
`packages/web-components/scripts/mcp-pipeline.cjs` now mirror the
|
|
1635
|
+
canonical `packages/web-components/a2ui/registry.js` for all A2UI
|
|
1636
|
+
component → custom-element mappings. Previously these scripts had
|
|
1637
|
+
several stale mappings that diverged from the runtime registry.
|
|
1638
|
+
|
|
1639
|
+
---
|
|
1640
|
+
## [0.0.1] - 2026-04-24
|
|
1641
|
+
|
|
1642
|
+
First public release. MCP server that wraps the compose engine and
|
|
1643
|
+
exposes A2UI generation tools over JSON-RPC.
|
|
1644
|
+
|
|
1645
|
+
### Included
|
|
1646
|
+
|
|
1647
|
+
- **Server** (`server.js`) — MCP stdio server. Registers tools,
|
|
1648
|
+
handles JSON-RPC, routes requests to the compose engine selector.
|
|
1649
|
+
- **Tools** (`tools/`) — MCP tool definitions for
|
|
1650
|
+
`generate_ui`, `validate_schema`, `check_anti_patterns`,
|
|
1651
|
+
`search_patterns`, `lookup_component`, `get_composition`,
|
|
1652
|
+
`get_fragment`, `get_graph`, `get_traits`, `get_wiring_catalog`,
|
|
1653
|
+
`zettel_stats`, `run_eval`, `submit_feedback`, plus several more.
|
|
1654
|
+
See `tools/` for the full surface.
|
|
1655
|
+
- **Personas** (`personas/`) — per-MCP-host prompts + behavior
|
|
1656
|
+
tweaks.
|
|
1657
|
+
- **Scripts** (`scripts/`) — `eval-diff.mjs` (cross-engine regression
|
|
1658
|
+
runner), `generate.mjs` (CLI wrapper), `test-a2ui.mjs` (integration
|
|
1659
|
+
suite), smoke tests, and dogfood/multi-turn harnesses.
|
|
1660
|
+
- **Binary** — `adiaui-mcp` CLI registered via `package.json` `bin`
|
|
1661
|
+
so `npx @adia-ai/a2ui-mcp` runs the stdio server directly.
|
|
1662
|
+
|
|
1663
|
+
### Dependencies
|
|
1664
|
+
|
|
1665
|
+
- `@modelcontextprotocol/sdk` ^1.29 — MCP transport + tool registration.
|
|
1666
|
+
- `zod` ^3.24 — tool-parameter schema validation.
|
|
1667
|
+
- `@adia-ai/a2ui-compose` ^0.0.1 — generation engine.
|
|
1668
|
+
- `@adia-ai/a2ui-retrieval` ^0.0.1 — retrieval layer.
|
|
1669
|
+
- `@adia-ai/a2ui-validator` ^0.0.1 — validation layer.
|
|
1670
|
+
- `@adia-ai/a2ui-corpus` ^0.0.1 — training corpus (patterns, fragments,
|
|
1671
|
+
compositions, exemplars).
|
|
1672
|
+
|
|
1673
|
+
### Verification
|
|
1674
|
+
- `npm run smoke:register-engine` — 11/11 passing (engine registration + reserved-name protection + custom-engine hooks).
|
|
1675
|
+
- `npm run test:a2ui` — 19 passed, 0 failed, 1 skipped (thinking-mode test is `--thinking` opt-in).
|
|
1676
|
+
|
|
1677
|
+
---
|
|
1678
|
+
## [0.1.0] — internal baseline (unreleased)
|
|
1679
|
+
|
|
1680
|
+
Initial version at the time the monorepo was established. Contains:
|
|
1681
|
+
|
|
1682
|
+
- MCP server (`server.js`) exposing `generate_ui`, `search_patterns`, `lookup_component`, `resolve_composition`, `validate_schema`, and related tools.
|
|
1683
|
+
- Engine plugin API via in-process `registerEngine()` (see `packages/a2ui/compose/strategies/registry.js`).
|
|
1684
|
+
- Smoke tests (`scripts/smoke-*.mjs`) for engine registration, merged generation, and end-to-end A2UI tests.
|
|
1685
|
+
- Eval harnesses (`scripts/test-evals.mjs`, `scripts/test-a2ui.mjs`, `scripts/eval-fix.mjs`) for corpus regression measurement.
|
|
1686
|
+
|
|
1687
|
+
Package name still uses the legacy `@adia-ai/a2ui-mcp` scope pending rename (see root CHANGELOG for context).
|