@adia-ai/a2ui 0.8.40 → 0.8.41

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 CHANGED
@@ -4,6 +4,17 @@
4
4
  > 0.8.37 (the estate-split cut) were released under the old name and are kept
5
5
  > verbatim.
6
6
 
7
+ ## [0.8.41] — 2026-08-17
8
+
9
+ ### Added
10
+ - **Surface lifecycle — pending/stale/healing (gh#1364; `spec-a2ui-surface-lifecycle.md`, ADR-0061).** `A2UIRenderer` gains regeneration brackets: `beginSurfaceUpdate(surfaceId, {generationId, reason, mode})` → `applyTo(surfaceId, messages)` (buffers while pending) → `commitSurfaceUpdate(surfaceId, generationId)` (applies the buffered bracket atomically; `async` so buffered `wireComponents` docking settles before the replace-mode sweep) / `abortSurfaceUpdate(surfaceId, generationId, error)` (stale content stays visible). Read side: `getLifecycle()`, `isPending()`, `pendingSurfaces`; state machine `empty → pending-first → live → pending-stale → error-empty/error-stale` with superseded generationIds ignored, not errored (REQ-008). `WiringEngine.undockIds()` lets the replace-mode commit sweep unwire swept component ids without tearing down the surface (REQ-004, follow-up gh#1433). `renderer.js`/`renderer.d.ts`, `wiring-engine.js`, `lifecycle.test.js`.
11
+ - **v1.0-Candidate catch-up P0 (gh#1350).** `mcpStream` accepts the Candidate MIME `application/a2ui+json` (REQ-001; the pre-Candidate `application/json+a2ui` form is still read for the transition — `stream.js`); a duplicate `createSurface` for a live surfaceId is a HARD error with an `a2ui-duplicate-surface-id` diagnostic (REQ-002, promoted from silent last-write-wins); catalog metadata fields land in `catalog/catalog-a2ui_0_9.json`.
12
+ - **Catalog adopts v1.0 composition constraints, ARIA live regions, and dynamic `hidden` (gh#1353, REQ-011/013/017).** Accessibility props are validated (`accessibility-props.test.js`); composition constraints ship in the catalog contract.
13
+
14
+ ### Changed
15
+ - **BREAKING for raw A2UI documents only — catalog identities `AdminShell` / `UIChatThread` (gh#1427).** `admin-shell`'s catalog `component:` is now `AdminShell` (was colliding with `embed-shell`'s `AppShell`), and the `chat-thread-ui` primitive's is `UIChatThread` (was colliding with the chat module's `ChatThread`). `registry.js` maps `UIChatThread` → `chat-thread-ui`; HTML tags are unaffected. See the migration guide's [§ Shipped in `0.8.41` — A2UI catalog `component:` collision](../../../.claude/docs/MIGRATION%20GUIDE.md).
16
+ - **Catalog regenerated for the 0.8.41 breaking wave** (`catalog/catalog-a2ui_0_9.json`, `catalog/catalog-a2ui_0_9_rules.txt`, `catalog/tier-index.json`, `catalog/tiers/l1-widgets.json`): `progress-ui[variant]` retirement, `input-ui[type]` enum trim, `segmented-ui[multiple]`, `calendar-picker-ui[precision]`, `action-item-ui` row contract, the gh#1335 attribute renames, ADR-0067 owned-`parts:` exclusion from fillable `slots:`, enum blocks + nullable schemas, and the deprecations (`ProgressRow`, `ToggleGroup`/`ToggleOption`, `DatetimePicker`) marked DEPRECATED with successor pointers in their catalog descriptions. The tier index's `composes` edges are now keyed by catalog TYPE names per R-C13 (gh#1478).
17
+
7
18
  ## [0.8.40] — 2026-08-15
8
19
 
9
20
  ### Maintenance
package/README.md CHANGED
@@ -87,8 +87,8 @@ document listing every component, its props, and its taxonomy — enough to
87
87
  emit valid A2UI with nothing else installed. `./catalog/tiers` is the derived
88
88
  L0–L4 ladder index (L0 primitives · L1 widgets · L2 layouts · L3 shells ·
89
89
  L4 flows), under one law: **every tier-N entry is a declared composition of
90
- tier-(N−1) entries**. L0 is populated today; the upper rungs are reserved
91
- while curation lands. `./catalog/common-types` and `./catalog/functions` are
90
+ tier-(N−1) entries**. L0 (every component) and L1 (curated widget
91
+ compositions) are populated today; L2–L4 are reserved while curation lands. `./catalog/common-types` and `./catalog/functions` are
92
92
  the catalog's authoring sources. All of it is exported data — this package
93
93
  stays dependency-free. The harvested chunk corpus that *derives* from the
94
94
  catalog is generation fuel and lives in `@adia-ai/gen-ui`.