Skip to content

Commit edfe739

Browse files
authored
Merge pull request #288 from metaobjectsdev/fix/adopter-defect-batch
fix: adopter defect batch — bounded peer ranges, sourceless-artifact gate, meta init, TPH Hono routes
2 parents 1fb7bad + ac779ca commit edfe739

49 files changed

Lines changed: 1428 additions & 208 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Equal weight — all four ship per-language today across the five ports (TS / C#
1919

2020
_Last refreshed 2026-08-09._
2121

22-
**TypeScript reference implementation** is **published to npm at `0.21.4`** (14 `@metaobjectsdev/*` publish candidates on the `latest` tag, full lockstep; the two `angular` packages are on their own `0.6.x` line). C# at `0.21.4` (NuGet); Python at `0.21.4` (PyPI); Java / Kotlin at `7.21.4` (Maven Central). **All four registries share the same `minor.patch`, and stay locked in lockstep going forward** — the `0.20.15` cut moved Maven `7.20.12``7.20.15` to close the last per-registry drift.
22+
**TypeScript reference implementation** is **published to npm at `0.21.4`** (14 `@metaobjectsdev/*` publish candidates on the `latest` tag, full lockstep; the two `angular` packages are versioned on their own `0.6.x` line and are **NOT published to npm** — they build in-repo but have never been released, so treat "the Angular tier" as source-only until that changes). C# at `0.21.4` (NuGet); Python at `0.21.4` (PyPI); Java / Kotlin at `7.21.4` (Maven Central). **All four registries share the same `minor.patch`, and stay locked in lockstep going forward** — the `0.20.15` cut moved Maven `7.20.12``7.20.15` to close the last per-registry drift.
2323

2424
**The `0.21.4` line is a coordinated PATCH across all four registries** (npm `0.21.4` · PyPI `0.21.4` · NuGet `0.21.4` · Maven `7.21.4`) — ten fixes, most adopter-reported; PyPI and NuGet publish as **version-parity bumps** (no changed product file). Two were hard blockers: **[#287](https://github.com/metaobjectsdev/metaobjects/issues/287)** made the browser packages unbundleable outright (a single *value* import from `@metaobjectsdev/metadata`'s root barrel drags `MetaDataLoader` → `library/library-sources.ts` → `node:url` into the graph, and `runtime-web` had one — so **no client consuming the generated hooks could build**; fixed by a new pure-constants **`@metaobjectsdev/metadata/constants`** subpath that browser packages import values from, types still coming from the root since `import type` is erased), and **every sqlite table-rebuild migration was un-appliable by the tool that emits it** (the emitted script carries its own `BEGIN TRANSACTION` while the apply runner already owns one; the runner now strips transaction control and rewrites `PRAGMA foreign_keys = OFF` → `defer_foreign_keys = ON`, since the former is a no-op inside a transaction). Also: **[#286](https://github.com/metaobjectsdev/metaobjects/issues/286)** Hono CRUD 500ing on Postgres (`.all()`/`.get()` are libsql-only), **`meta gen --dry-run` actually previewing** (it had been writing every file), **[#285](https://github.com/metaobjectsdev/metaobjects/issues/285)** an un-appliable `DROP INDEX` for a constraint-backed index, a `metaobjects.config.ts` load permanently corrupting `Error.prepareStackTrace` for the rest of the process, **three silent-wrong-rows defects in the Java query lowering** (no case-sensitive `LIKE`; `in` hand-composed as an unparenthesized OR-chain, so `in` + any second predicate regrouped as `a=1 OR (a=2 AND b=3)`; `Range` documented 0-indexed while the drivers emit `OFFSET start-1`), and the **grid-discoverability half of #287** — `tanstackGrid()`/`tanstackGridHook()` emit only for an entity declaring a `layout.dataGrid`, which is intended but was documented nowhere, so each generator now emits one self-extinguishing `meta gen` warning naming the objects and the metadata that enables them (plus a TPH fix: the grid-hook filter lacked its sibling's TPH clause, emitting a `<Sub>.grid.ts` whose `<Sub>.columns.tsx` never exists). **The durable lesson of the cut: six of the ten were invisible to a gate that existed for them** — a bundle checked only under a test runner that never bundles; sqlite SQL proven statement-by-statement but never through the tool that applies it; a conformance fixture whose seed data is case-aligned "so the test passes whether a port wires `LIKE` or `ILIKE`"; and a CI lane (`ts-unit`) that ran the browser suites **without ever building them**, so the gate failed its own precondition on every clean checkout while passing on any warm developer box. That lane now builds what it gates and runs the **seven server packages that were gated by nothing at all** (`codegen-ts-{tanstack,react,angular}`, `sdk`, `ai-runtime`, `conformance`, `docs-site`). See `CHANGELOG.md` [0.21.4].
2525

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ first-week wedge plan — and `meta init` picks up from there.
116116
| Template-drift verify | Yes | Yes (`Verify.check`) | Yes (via Java) | Yes (`dotnet meta verify`) | Yes (`metaobjects.render.verify`) |
117117
| YAML authoring (sigil-free → JSON) | Yes | Yes | Yes (via Java) | Yes | Yes |
118118
| Runtime metadata (ObjectManager-style) | Yes (`runtime-ts`) | Yes (OMDB) | Yes (via Java OMDB + Exposed) | Roadmap | Yes (ObjectManager) |
119-
| React / Angular UI client (browser) | Yes — React (`@metaobjectsdev/react` + `@metaobjectsdev/tanstack`) and Angular 18 (`@metaobjectsdev/angular`, on its own `0.6.x` line — deliberately versioned separately from the lockstep `@metaobjectsdev/*` packages, since the Angular tier moves on its own cadence); both codegen + runtime | Consumes TS client via REST | Consumes TS client via REST | Consumes TS client via REST | Consumes TS client via REST |
119+
| React / Angular UI client (browser) | React: **published** (`@metaobjectsdev/react` + `@metaobjectsdev/tanstack`), codegen + runtime. Angular 18: **in-repo, NOT published**`@metaobjectsdev/angular` + `@metaobjectsdev/codegen-ts-angular` build and are versioned on their own `0.6.x` line, but have never been released to npm, so `npm i @metaobjectsdev/angular` will 404. Consume them from source. | Consumes TS client via REST | Consumes TS client via REST | Consumes TS client via REST | Consumes TS client via REST |
120120
| Cross-port REST routes for the client | Generated (`routesFile()` → Fastify) | Generated (`SpringControllerGenerator` → Spring `@RestController`, incl. filter/sort) | Generated (`KotlinSpringControllerGenerator` → Spring `@RestController`, incl. filter/sort) | Generated (`RoutesGenerator` → ASP.NET Minimal API) | Generated (`router_generator` → FastAPI `APIRouter`, incl. filter/sort) |
121121

122122
A "Yes" means the feature is covered by the shared conformance corpora at

0 commit comments

Comments
 (0)