From 5c401bd5b51c788aa722122bd677400acdee523d Mon Sep 17 00:00:00 2001 From: Samuel Letellier-Duchesne Date: Fri, 4 Sep 2026 16:41:45 -0400 Subject: [PATCH] Release v0.2.0 Changelog only. The package manifests stay at 0.0.0 deliberately: the facade pins "@idfkit/core": "0.0.0", and that exact string is what makes npm resolve the workspace link locally instead of reaching for the registry. publish.yml rewrites both the versions and the facade's dependency specs from the tag in its own checkout, which is where those numbers belong. Promotes [Unreleased] to [0.2.0]. Also corrects two things the section had wrong: it named governance-2026.11 when the level is now 2026.12, and it did not mention SchemaBundle.loadProse and prose() at all. The preamble's lockstep list gained @idfkit/language, which joins it in this release. --- CHANGELOG.md | 44 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 95449e9..be2a774 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,17 +5,21 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -The packages in this repository, `@idfkit/core`, `@idfkit/schemas`, and -`@idfkit/weather`, are versioned and released together. +The packages in this repository, `@idfkit/core`, `@idfkit/schemas`, +`@idfkit/weather` and `@idfkit/language`, are versioned and released together. ## [Unreleased] +## [0.2.0] - 2026-09-04 + This release stays on `conformance-2026.8`, the corpus level `CONFORMANCE_LEVEL` reports, and adds no cases to it. A capability that exists in one language asserts no cross-language agreement, so there is nothing for the corpus to -compare; the parity ledger carries the absence instead. The governance level -moves to `governance-2026.11`, which is where the names below are registered and -where that ledger entry lives. +compare; the parity ledger carries the absence instead. + +The governance level moves to `governance-2026.12`. `governance-2026.11` +registers the language service's names and carries that ledger entry; +`governance-2026.12` adds the two that reach the schema prose. ### Added @@ -96,6 +100,33 @@ where that ledger entry lives. implied. These answers need a JavaScript runtime, and `pip install idfkit` alone does not provide them. +- `SchemaBundle.loadProse()` and `SchemaBundle.prose()`, the pair that lets a + consumer of the shared name reach the schema's own explanatory prose. The + strings have shipped since 0.2.0-rc.2 and `describeObjectType` has always + resolved them, but there was no way to obtain the pool without depending on + `@idfkit/schemas/node`, a package a consumer of `idfkit` did not install, and + hardcoding a file name the bundle layout does not promise. + + `loadProse()` reads it once, `prose()` returns it synchronously or + `undefined`, exactly as `load(version)` and `loaded(version)` already work for + schemas. The synchronous half is the point: everything that reads prose is + synchronous, so an editor server loads once when a document arrives and reads + on the request path without holding a thread. + + **On the bundle rather than beside it**, because the indices are only + meaningful against manifests built in the same run. A pool paired with another + build's manifests resolves every sentence to a real sentence belonging to a + different field, and nothing fails. Keeping the loader on the object that + carries the indices is what makes that pairing hard to reach by accident. + + It works in a browser through `httpSource` on the same terms, and the parse + path is unchanged: the pool is still its own file behind its own call, and a + read-and-write bundle still carries none of it. + + `ProsePool` now comes from `@idfkit/schemas`, which is the package that builds + the pool. `@idfkit/core` re-exports it, so the name a consumer imports is + unchanged. + ### Changed - `ParseDiagnostic.column` is filled. It was declared in 0.2.0-rc.2 and left @@ -464,7 +495,8 @@ First published release. The API is not yet stable. no schema matches, because loading the wrong schema mis-maps every positional field instead of failing. -[unreleased]: https://github.com/idfkit/idfkit-js/compare/v0.2.0-rc.2...HEAD +[unreleased]: https://github.com/idfkit/idfkit-js/compare/v0.2.0...HEAD +[0.2.0]: https://github.com/idfkit/idfkit-js/compare/v0.2.0-rc.2...v0.2.0 [0.2.0-rc.2]: https://github.com/idfkit/idfkit-js/compare/v0.2.0-rc.1...v0.2.0-rc.2 [0.2.0-rc.1]: https://github.com/idfkit/idfkit-js/compare/v0.1.0...v0.2.0-rc.1 [0.1.0]: https://github.com/idfkit/idfkit-js/compare/v0.0.1...v0.1.0