@@ -6,24 +6,34 @@ fix(cli)!: a project with no `sdui.manifest.json` of its own has its `kind: 'htm
66
77Clause-②: no (narrowing)
88
9- <!-- adr-0087: registered ui-html-page-div-refused -->
9+ <!-- adr-0087: not-required (already- registered ui-html-page-div-refused) The semantic ledger entry for this narrowing landed on main before this change, in its own pull request, so this diff adds none. `objectstack migrate meta --from 17` lists it among the manual changes, with `box` as the replacement for `div`. -->
1010
1111** BREAKING for ` kind: 'html' ` pages in projects without their own manifest.**
1212
13- ** What changed.** ` objectstack validate ` , ` objectstack compile ` / ` build ` (which
14- ` dev ` and ` start ` run first) and ` objectstack lint ` check the ` source ` of a
15- ` kind: 'html' ` page against an SDUI component manifest: the ` sdui.manifest.json `
16- in the directory the command runs in, then the copy ` @objectstack/console ` ships
17- as ` dist/sdui.manifest.json ` . The second lookup asked for that file by a subpath
13+ ** What changed.** ` objectstack validate ` , ` objectstack compile ` / ` build ` and
14+ ` objectstack lint ` check the ` source ` of a ` kind: 'html' ` page against an SDUI
15+ component manifest. (` dev ` and ` start ` run ` compile ` before they boot when
16+ ` dist/objectstack.json ` is missing or ` --compile ` is passed, and ` dev ` 's default
17+ watch mode reruns it when a watched file changes.) They look first for the
18+ ` sdui.manifest.json ` in the directory the command runs in, then for the copy
19+ ` @objectstack/console ` ships as ` dist/sdui.manifest.json ` . The second lookup asked for that file by a subpath
1820the console package does not export, so it always failed, and a project with no
1921manifest of its own had its html pages checked at parse level only: syntax and
2022structure, never which components and props they use. The lookup now reaches the
2123shipped copy, and those pages get full component and prop validation. A tag or
2224prop the manifest does not declare is refused (` jsx-forbidden-tag ` ,
2325` jsx-unknown-component ` , ` jsx-unknown-prop ` ), naming the page and the tag, and
24- the command exits 1. Nothing refused these before: the parse-level check does
25- not know the component set, and the html-tier renderer still renders ` div ` ,
26- deprecated there in favour of ` box ` .
26+ the command exits 1.
27+
28+ ** What was refused before, and what is new.** The console has refused a ` div ` on
29+ a ` kind: 'html' ` page since ` @objectstack/console ` 17.5.0: when the page renders,
30+ its in-browser html compile answers ` forbidden-tag ` , naming ` box ` . These commands
31+ now give that answer while you author. What they refuse that nothing refused
32+ before is every other tag the manifest does not declare. The console's html
33+ compile accepts every component its registry knows that is not deprecated there,
34+ while the published manifest declares only the public component contract and the
35+ html tier's intrinsic tags. So a page using, for example, ` avatar ` or ` checkbox `
36+ renders in the console and is refused here.
2737
2838## FROM → TO
2939
@@ -41,3 +51,22 @@ unchanged.
4151** A damaged install is refused, not skipped.** A shipped copy that is present
4252but cannot be read or parsed stops the command with exit 1, naming the file,
4353with the remedy: reinstall ` @objectstack/console ` .
54+
55+ ** A correction to the 17.5.0 note on this manifest.** The ` @objectstack/console `
56+ 17.5.0 patch entry ` 28ce612 ` , the one that says the prebuilt Console dist now
57+ ships ` dist/sdui.manifest.json ` , ends with a paragraph that this release changes,
58+ sentence by sentence:
59+
60+ - "For now the file is only present in the tarball." No longer true: the CLI
61+ reads it, as described above.
62+ - "This package's ` exports ` map exposes ` ./package.json ` and nothing else, so
63+ resolving ` @objectstack/console/dist/sdui.manifest.json ` through ` exports `
64+ fails with ` ERR_PACKAGE_PATH_NOT_EXPORTED ` ." Still true: the ` exports ` map is
65+ unchanged.
66+ - "Anything that resolves through ` exports ` cannot read the file yet." Still
67+ true. To read the file, resolve ` @objectstack/console/package.json ` and join
68+ ` dist/sdui.manifest.json ` to its directory.
69+ - "That includes the CLI's JSX-page manifest fallback, which catches the error
70+ and keeps parse-level validation, as before." True of the 17.5.0 CLI, false
71+ from this release: the fallback now reads the file that way, so a project
72+ without its own manifest is checked against the shipped copy.
0 commit comments