@@ -10,6 +10,68 @@ here.**
1010
1111## [Unreleased]
1212
13+ Found by a cold external review of 1.0.8: a reviewer ran the getting-started page, the drift
14+ demo and the fit assessment from public sources only, then built a small app of their own.
15+
16+ **Upgrading: run `meta gen`.** Generated TypeScript changes: value-object interfaces,
17+ date/time validators and form input types (see Fixed).
18+
19+ ### Added
20+
21+ - **`FilesystemProvider` for TypeScript prompt rendering**, on the Node-only
22+ `@metaobjectsdev/render/providers` subpath. `lobby/welcome` resolves to
23+ `<root>/lobby/welcome.mustache`, as in C#, Java and Python. The package's root entry stays
24+ browser-safe. The docs already imported it from that path; it did not exist.
25+ - **`meta eject` covers the prompt generators**: `prompt-render`, `output-parser`,
26+ `extractor`, `output-prompt` and `render-helper`. Each reference copy is held byte-identical
27+ to the built-in by a test.
28+ - **`meta verify` advises on foreign keys with no covering index**, naming each one and the
29+ `index.lookup` to declare. Advisory only: it never fails the build, and no index is generated
30+ automatically.
31+ - **The fit assessment (`assess.md`) recommends an adoption scope** instead of fit / not fit:
32+ not worth it, contract spine (declare only the shapes crossing between apps and services,
33+ generate the types, DTOs and validators each consumer compiles against, keep the ORM),
34+ partial, or full, and it names the seams where adoption would pay off. A quick pass answers
35+ in the conversation and writes nothing; the full assessment writes outside the target
36+ repository. Its capability claims are re-checked against 1.0.8 and cite published sources,
37+ so no clone of this repository is needed.
38+
39+ ### Fixed
40+
41+ - **`meta migrate` no longer steers a column rename toward data loss.** A rename the diff
42+ cannot pair (`title` → `summary`) arrives as a blocked drop plus an add, and the hint said
43+ `--allow drop-column`, which deletes the column's data. Every hint on that shape now
44+ recommends `--rename-column <table>.<old>=<new>` first, with the real names, and shows
45+ `--allow drop-column` only as the option that deletes the data.
46+ - **Generated TypeScript compiles under `exactOptionalPropertyTypes`**, which recent
47+ `tsc --init` turns on. Value-object interfaces declared `x?: T` where Zod infers
48+ `x?: T | undefined`, so a response parser or a jsonb query over an optional field failed
49+ with TS2375. The codegen-compile gate now compiles with the option both off and on.
50+ - **Generated Zod for `field.date`, `field.time` and string-mode `field.timestamp` rejects
51+ free text.** `"next tuesday"` was a valid date. Every format the runtime writes still passes.
52+ - **A list request with a bare field parameter answers 400.** `GET /issues?priority=low`
53+ ignored `priority` and returned every row. The runtime-ts list routes now answer
54+ `400 {"error": "filter.bare_field", "field": "priority", "expected": "filter[priority][eq]=low"}`
55+ when the bare name is a filterable field; other unknown parameters are still ignored.
56+ TypeScript helpers only.
57+ - **Form descriptors give `field.timestamp` a `datetime-local` input** (and `field.time` a
58+ `time` input); a timestamp got a date picker.
59+ - **`<Entity>Filter` types an enum's filter value as the member union**, so a misspelt member
60+ fails to compile.
61+ - **`meta verify` says which gates a partial run did not run**, with the flag that selects
62+ each, so `meta verify --codegen --db` is not mistaken for a full run.
63+ - **A template drift names its file and line**: `ERR_VAR_NOT_ON_PAYLOAD: question
64+ (prompts/…/brik-user.mustache:3)`. The cross-port diagnostic itself is unchanged.
65+ - **`meta init` and `meta --help` no longer list commands that do not exist.**
66+ - **`meta gen --list` marks the generators with no reference copy as `package-only`**, and
67+ `meta eject` names them as package-only instead of "unknown". ADR-0034 Amendment 3 carries a
68+ dated correction: those eight generators are not ejectable.
69+
70+ ### Changed
71+
72+ - **Docs: enums sort by their stored value, not by declared order** (a stated known limit in
73+ `docs/features/api-contract.md`).
74+
1375## [1.0.8] — 2026-09-25
1476
1577_npm `1.0.8` (all 14 `@metaobjectsdev/*` packages in lockstep), PyPI `1.0.8` and NuGet `1.0.8`.
0 commit comments