@adia-ai/a2ui-corpus 0.7.27 → 0.7.28

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
@@ -1,4 +1,45 @@
1
1
  # Changelog — @adia-ai/a2ui-corpus
2
+ ## [0.7.28] — 2026-07-14
3
+
4
+ ### Fixed — TKT-0010, corpus admission-time validation classes 1 and 3
5
+
6
+ `harvest-chunks.mjs`'s new admission-time validator (Phase 4a, shipped
7
+ 0.7.27) found 104/384 templated chunk instances (27%) failing schema/
8
+ catalog validation. This cycle fixes the two classes owned by this
9
+ package's schemas:
10
+
11
+ - **`common_types.json`'s `CatalogComponentCommon`** now declares `span`
12
+ as a cross-cutting `DynamicString` property (mirroring the existing
13
+ `slot` entry) and a `patternProperties` allowance for `^data-` —
14
+ both legitimate JS/CSS hooks the transpiler already universally
15
+ preserves (TKT-0002), but previously rejected by Ajv's
16
+ `unevaluatedProperties: false` on every generated component schema
17
+ (the dominant failure class, ~70 of the 104).
18
+ - **New `DynamicObjectList` `$def`** — `Chart.data`/`Table.data`'s
19
+ dynamic array props were compiled to `DynamicStringList`
20
+ (array-of-string only), the wrong shape for row-record data. Split a
21
+ proper array-of-object variant; `components.mjs`'s `compileProp`
22
+ selects it when a prop's yaml declares `items: {type: object}` (see
23
+ `@adia-ai/web-components`'s `chart.yaml`/`table.yaml`). The
24
+ companion transpiler-side bug (the attribute value was never
25
+ actually `JSON.parse`d) is fixed in `@adia-ai/a2ui-compose`.
26
+ - **`catalog-a2ui_0_9.json` regenerated** to pick up both schema
27
+ changes.
28
+
29
+ Verified: `harvest-chunks.mjs --dry` dropped from 104 → 16 invalid
30
+ chunk instances; all 16 remaining are already-tracked class-2 debt
31
+ (enum drift + accessibility anti-patterns, matching `verify:corpus`'s
32
+ existing 118-warn baseline) — zero new class-1/3-shaped failures.
33
+ `--strict` stays opt-in (not flipped to the harvester's default) since
34
+ that floor is accepted, not cleared, by this cycle.
35
+
36
+ ### Maintenance
37
+ - **Chunk corpus re-harvested** to reflect the schema fixes above plus
38
+ content fixes in three `.contents.html` sources (`IntegrationCard.provider`,
39
+ `Stat.label`, `Heatmap.type`, two runtime-badge placeholders, and
40
+ `Chart.data` now carrying real parsed arrays instead of raw JSON
41
+ text). 394 chunks total.
42
+
2
43
  ## [0.7.27] — 2026-07-12
3
44
 
4
45
  ### Maintenance
@@ -4618,7 +4618,7 @@
4618
4618
  },
4619
4619
  "data": {
4620
4620
  "description": "JS property (set programmatically — `el.data = [...]`). An array of plain objects; each object's keys are named by the `x` and `y` attributes — e.g. `<chart-ui x=\"month\" y=\"revenue\">` consumes `[{month:'Jan', revenue:3200}, {month:'Feb', revenue:4100}]`. The Chart.js `{labels, datasets}` envelope is NOT chart-ui's API — passing it (or any non-array value) renders an empty chart. May also be supplied declaratively as a JSON-array `data=\"[…]\"` attribute, hydrated once at connect. Custom accessor on the element class, not a reflected attribute.",
4621
- "$ref": "#/$defs/DynamicStringList"
4621
+ "$ref": "#/$defs/DynamicObjectList"
4622
4622
  },
4623
4623
  "format": {
4624
4624
  "description": "Number-format mode applied to axis labels + value overlays + donut total + gauge value + treemap value + funnel value + internal tooltip. `abbr` is the legacy 1.2K / 3M format; `decimal` fixes 2 decimals; `currency` prefixes via `--chart-currency-prefix` token (default \"$\"); `percent` multiplies × 100 and adds a % suffix.",
@@ -13904,6 +13904,10 @@
13904
13904
  "lg"
13905
13905
  ],
13906
13906
  "default": ""
13907
+ },
13908
+ "textContent": {
13909
+ "description": "Key label text, extracted from innerHTML (e.g. \"Ctrl+K\"). The main payload field for Kbd components extracted from HTML — mirrors Text/Code's textContent prop.",
13910
+ "$ref": "#/$defs/DynamicString"
13907
13911
  }
13908
13912
  },
13909
13913
  "required": [
@@ -23153,7 +23157,7 @@
23153
23157
  },
23154
23158
  "data": {
23155
23159
  "description": "Row records. Array of plain objects keyed to columns[].key.",
23156
- "$ref": "#/$defs/DynamicStringList"
23160
+ "$ref": "#/$defs/DynamicObjectList"
23157
23161
  },
23158
23162
  "density": {
23159
23163
  "description": "Controls cell padding and row height. 'compact' for dense data, 'standard' for default spacing, 'comfortable' for spacious rows.",
@@ -28051,6 +28055,10 @@
28051
28055
  "description": "Named slot to project into when child of a slotted container.",
28052
28056
  "type": "string"
28053
28057
  },
28058
+ "span": {
28059
+ "description": "Grid-child column span, read by grid-ui's CSS attribute selector ([span=\"N\"] { grid-column: span N }). Layout-bearing like slot — accepted on every component, not a per-component prop (TKT-0002/TKT-0010).",
28060
+ "$ref": "#/$defs/DynamicString"
28061
+ },
28054
28062
  "style": {
28055
28063
  "description": "Inline CSS string applied to the host element (use sparingly; prefer variants).",
28056
28064
  "type": "string"
@@ -28075,6 +28083,11 @@
28075
28083
  "description": "Font weight role. Common values: thin, light, normal, medium, semibold, bold.",
28076
28084
  "$ref": "#/$defs/DynamicString"
28077
28085
  }
28086
+ },
28087
+ "patternProperties": {
28088
+ "^data-": {
28089
+ "description": "Arbitrary data-* attribute — a JS/CSS hook the transpiler passes through verbatim (TKT-0010); not modeled per-component."
28090
+ }
28078
28091
  }
28079
28092
  },
28080
28093
  "Checkable": {
@@ -28194,6 +28207,32 @@
28194
28207
  }
28195
28208
  ]
28196
28209
  },
28210
+ "DynamicObjectList": {
28211
+ "description": "An array of plain objects (e.g. chart/table row records) that may be a literal, a path-bound reference, or the result of a FunctionCall. TKT-0010: split from DynamicStringList, which only ever accepted array-of-string — the wrong shape for JS-set collection props whose items are records.",
28212
+ "oneOf": [
28213
+ {
28214
+ "type": "array",
28215
+ "items": {
28216
+ "type": "object"
28217
+ }
28218
+ },
28219
+ {
28220
+ "type": "object",
28221
+ "properties": {
28222
+ "path": {
28223
+ "type": "string"
28224
+ }
28225
+ },
28226
+ "required": [
28227
+ "path"
28228
+ ],
28229
+ "additionalProperties": false
28230
+ },
28231
+ {
28232
+ "$ref": "#/$defs/FunctionCall"
28233
+ }
28234
+ ]
28235
+ },
28197
28236
  "DynamicString": {
28198
28237
  "description": "A string that may be a literal, a path-bound reference, or the result of a FunctionCall.",
28199
28238
  "oneOf": [