@quillmark/wasm 0.86.0 → 0.87.0
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 +102 -0
- package/README.md +5 -4
- package/bundler/wasm.d.ts +1 -1
- package/bundler/wasm_bg.wasm +0 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,107 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v0.87.0 - 2026-06-01
|
|
4
|
+
|
|
5
|
+
Arrays become first-class typed fields via a required `items` element
|
|
6
|
+
schema, datetime is unified under a single `type: datetime` accepting the
|
|
7
|
+
full YAML-1.1-style timestamp range (`FieldType::Date` is gone), and object
|
|
8
|
+
zero values are now shape-valid. This release tightens schema-load
|
|
9
|
+
validation in several places — empty `properties` maps and deeper array
|
|
10
|
+
nesting are now rejected — and consolidates the example/default conformance
|
|
11
|
+
checks behind one shared primitive. Documentation now ships from GitHub
|
|
12
|
+
Pages instead of Read the Docs.
|
|
13
|
+
|
|
14
|
+
### Breaking changes
|
|
15
|
+
|
|
16
|
+
These are schema-load cutovers for `Quill.yaml` authors; full before/after
|
|
17
|
+
steps are in `docs/migrations/0.86-to-0.87.md`.
|
|
18
|
+
|
|
19
|
+
- **Array fields now require an `items` element schema** (#672). Arrays
|
|
20
|
+
previously carried a single untyped `Array` type; scalar arrays were
|
|
21
|
+
never coerced or validated element-wise and were always annotated
|
|
22
|
+
`array<string>`. Every array field must now declare `items`, and schema
|
|
23
|
+
load rejects arrays without it. The bare-`properties`-on-an-array form
|
|
24
|
+
(the old "typed table") is **removed** in favor of
|
|
25
|
+
`items: { type: object, properties: … }`. Migration for a typed table:
|
|
26
|
+
|
|
27
|
+
```yaml
|
|
28
|
+
# before
|
|
29
|
+
rows:
|
|
30
|
+
type: array
|
|
31
|
+
properties: { name: { type: string }, qty: { type: integer } }
|
|
32
|
+
# after
|
|
33
|
+
rows:
|
|
34
|
+
type: array
|
|
35
|
+
items:
|
|
36
|
+
type: object
|
|
37
|
+
properties: { name: { type: string }, qty: { type: integer } }
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
A scalar array adds `items` directly, e.g.
|
|
41
|
+
`counts: { type: array, items: { type: integer } }`. Elements now coerce
|
|
42
|
+
and validate against `items` (failing at the indexed path, e.g.
|
|
43
|
+
`counts[1]`), and blueprint annotations reflect the element type
|
|
44
|
+
(`array<integer>`, `array<markdown>`, …). Bundled quills and the
|
|
45
|
+
`usaf_memo` golden schema are migrated.
|
|
46
|
+
- **`FieldType::Date` removed; use `type: datetime`** (#679). `type: date`
|
|
47
|
+
no longer exists. `type: datetime` now accepts the full range from a bare
|
|
48
|
+
`YYYY-MM-DD` date through RFC 3339 with offset (seconds optional, `T` or
|
|
49
|
+
space separator). Datetime values gain calendar validation (e.g. Feb 30
|
|
50
|
+
is now rejected), and JSON Schema output emits `format: date-time` for
|
|
51
|
+
all datetime fields. The WASM `FieldType` union drops `"date"`. The
|
|
52
|
+
blueprint hint is now `datetime<YYYY-MM-DD[Thh:mm:ss]>`.
|
|
53
|
+
- **Empty `properties: {}` on an object field is rejected** (#678). An
|
|
54
|
+
empty properties map carries no information (the only conforming value is
|
|
55
|
+
`{}`) and is almost always a mistake. It is now treated like a missing
|
|
56
|
+
`properties` key and surfaces `quill::object_empty_properties`.
|
|
57
|
+
- **Deeper array nesting is rejected** (#673). The documented "one level of
|
|
58
|
+
nesting" contract is now enforced in a single recursive pass, closing a
|
|
59
|
+
gap where `array<object<array>>` and `object<array>` were silently
|
|
60
|
+
accepted. A typed table row and a typed dictionary may carry scalar
|
|
61
|
+
columns/properties only; deeper shapes fail with
|
|
62
|
+
`quill::nested_array_not_supported`.
|
|
63
|
+
|
|
64
|
+
### Behavioral changes
|
|
65
|
+
|
|
66
|
+
- **Object zero values are now shape-valid** (#677). `zero_value` returned
|
|
67
|
+
a bare `{}` for every object field, which failed validation on any object
|
|
68
|
+
with `properties` (each absent property reported as `MustFillUnset`), so
|
|
69
|
+
the zero-filled render path broke for object fields. An object with
|
|
70
|
+
`properties` now recurses, zero-filling each property to its own
|
|
71
|
+
type-empty leaf. `{}` remains the zero only for the property-less edge
|
|
72
|
+
case.
|
|
73
|
+
- **`example:` values are now validated** (#680). The conformance check for
|
|
74
|
+
`example`/`default` literals recurses into array items and object
|
|
75
|
+
properties and validates datetime format — capabilities the old
|
|
76
|
+
load-time path lacked, so previously-unvalidated `example:` values are
|
|
77
|
+
now caught.
|
|
78
|
+
|
|
79
|
+
### Documentation & infrastructure
|
|
80
|
+
|
|
81
|
+
- **Docs hosting moved from Read the Docs to GitHub Pages** (#671). A new
|
|
82
|
+
`docs.yml` workflow builds MkDocs (strict build as a PR check) and
|
|
83
|
+
deploys to Pages on a published release; RCs are skipped. `.readthedocs.yaml`
|
|
84
|
+
is removed and homepage/User Guide links point at the Pages URL.
|
|
85
|
+
- **Canon + docs: partial documents are first-class citizens** (#670). The
|
|
86
|
+
docs and binding READMEs no longer claim Must Fill fields must be supplied
|
|
87
|
+
before shipping. The only hard render gate is well-formedness (values
|
|
88
|
+
coerce, no surviving `<must-fill>` sentinel); completeness is a hint
|
|
89
|
+
surfaced by the form view. The `format-designer/` docs tree is renamed to
|
|
90
|
+
`quills/`.
|
|
91
|
+
- A Migration section overview page was added and wired into the nav (#674).
|
|
92
|
+
|
|
93
|
+
### Internal
|
|
94
|
+
|
|
95
|
+
- Example/default validation is consolidated behind a single
|
|
96
|
+
`validate_schema_literal` conformance core shared by `quillmark-core`
|
|
97
|
+
config loading and the CLI `validate` command, with author-friendly
|
|
98
|
+
diagnostics preserved (#680).
|
|
99
|
+
- Array and markdown handling collapse into recursive passes over the
|
|
100
|
+
schema in both schema-shape validation and the Typst markdown transform
|
|
101
|
+
(#673).
|
|
102
|
+
- Doc/comment fixes from the array-items review (#675).
|
|
103
|
+
|
|
104
|
+
|
|
3
105
|
## v0.86.0 - 2026-05-31
|
|
4
106
|
|
|
5
107
|
Documents now render even when incomplete, the canonical card-yaml fence
|
package/README.md
CHANGED
|
@@ -249,10 +249,11 @@ canvas.style.height = `${result.layoutHeight}px`;
|
|
|
249
249
|
A field's *cell* is inferred from whether its schema declares a `default:`:
|
|
250
250
|
|
|
251
251
|
- **Must Fill** (no `default:`) — `quill.blueprint` renders `<must-fill>`
|
|
252
|
-
in the value cell
|
|
253
|
-
`validation::must_fill_absent`
|
|
254
|
-
|
|
255
|
-
|
|
252
|
+
in the value cell. An absent Must Fill field is a non-fatal signal
|
|
253
|
+
(`validation::must_fill_absent`) — the render path zero-fills it
|
|
254
|
+
silently. A surviving `<must-fill>` sentinel is fatal
|
|
255
|
+
(`validation::must_fill_sentinel`). Partial documents are
|
|
256
|
+
first-class; `quill.render(doc)` only throws for malformed input.
|
|
256
257
|
- **Endorsed** (with `default:`) — `quill.blueprint` renders the
|
|
257
258
|
default value followed by a `; delete-ok` annotation, and the default
|
|
258
259
|
is used when the document omits the field.
|
package/bundler/wasm.d.ts
CHANGED
|
@@ -117,7 +117,7 @@ export interface QuillCardBody {
|
|
|
117
117
|
* field). There is no separate `required` axis.
|
|
118
118
|
*/
|
|
119
119
|
export interface QuillFieldSchema {
|
|
120
|
-
type: "string" | "number" | "integer" | "boolean" | "array" | "object" | "
|
|
120
|
+
type: "string" | "number" | "integer" | "boolean" | "array" | "object" | "datetime" | "markdown";
|
|
121
121
|
description?: string;
|
|
122
122
|
default?: unknown;
|
|
123
123
|
example?: unknown;
|
package/bundler/wasm_bg.wasm
CHANGED
|
Binary file
|