From b2f2de2bd4d2a0bb9cfefa672b0634f669b4dc7c Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 20 Aug 2026 16:23:09 +0000 Subject: [PATCH 1/3] =?UTF-8?q?=F0=9F=94=96=20chore:=200.4.1=20=E2=80=94?= =?UTF-8?q?=20the=20published=20README=20says=20the=20package=20is=20not?= =?UTF-8?q?=20on=20npm?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The README inside a tarball is what npmjs.com renders, so the cereale package page currently tells visitors: "npm install cereale does not resolve to this library — the name is unclaimed on the registry." True when it was written, nonsense on the page of the thing it describes. Nothing could have prevented it. 0.4.0 was the first publish, so the docs could only be corrected after the registry proved the claim wrong; the fix has to ride a second version. No code changes. Every emitted file is byte-identical to 0.4.0 except the banner line of dist/cereale.min.js, which carries the version string — checked by unpacking the published 0.4.0 tarball and diffing it against a fresh pack, which is also why the changelog no longer claims dist/ is untouched. It said that first, and it was wrong. Patch rather than minor: no API surface moves. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01SAcqrz3FcadkYr3xG32CjK --- CHANGELOG.md | 14 ++++++++++++++ package.json | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 46059c1..6326922 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,20 @@ All notable changes to this project are 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). +## [0.4.1] - 2026-08-20 + +No code changes. Every emitted file is byte-identical to 0.4.0 except the banner line of +`dist/cereale.min.js`, which carries the version string. This exists because the README +inside the 0.4.0 tarball is the one npmjs.com renders, and it said the package was not on +npm: *"`npm install cereale` does not resolve to this library — the name is unclaimed on +the registry."* True when it was written, nonsense on the package page of the thing it +describes. + +0.4.0 was the first publish, so nothing could have carried the corrected text: the docs +could only be fixed after the registry proved the claim wrong. The install instructions, +the landing page panel, and the "what cereale is not" entry now say `npm install cereale`, +and the README carries an npm version badge. + ## [0.4.0] - 2026-08-05 ### `cereale/min` — one file, no bundler diff --git a/package.json b/package.json index 6810472..56e8884 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cereale", - "version": "0.4.0", + "version": "0.4.1", "description": "Strongly typed JSON mapping and validation for TypeScript classes \u2014 validated domain objects, not validated data. A zero-dependency replacement for class-validator + class-transformer, on TC39 standard decorators.", "type": "module", "main": "./dist/cjs/index.js", From 46e30909c71d175c145d5da88a6f0ce012825ba2 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 20 Aug 2026 16:31:11 +0000 Subject: [PATCH 2/3] =?UTF-8?q?=F0=9F=94=96=20fix:=20regenerate=20docs/met?= =?UTF-8?q?a.js=20for=200.4.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The version bump left meta.js at 0.4.0, so CI's docs-sync gate failed on all three Node versions — the gate doing exactly its job. Worth naming why it got through locally: `npm run verify` does not chain check:docs-sync, so a green verify says nothing about docs/ being current. I briefly added it, then took it back out. check:docs-sync is built on `git status`, so inside verify it would fail during any in-progress docs edit, and docs/ does not ship in the tarball — the package `files` list is dist, src, FRAMEWORKS.md and CHANGELOG.md. Publishing correctness never depended on it. CI and the Pages workflow already gate the site, which is the only thing that stale docs affect. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01SAcqrz3FcadkYr3xG32CjK --- docs/meta.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/meta.js b/docs/meta.js index e7ae56a..fae4bca 100644 --- a/docs/meta.js +++ b/docs/meta.js @@ -1,5 +1,5 @@ // Generated by scripts/build-docs.mjs — do not edit. window.CEREALE_META = { - "version": "0.4.0", + "version": "0.4.1", "node": ">=20.0.0" }; From 057162e45bdc0fee30b3f12e307853c83d336207 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 20 Aug 2026 16:34:49 +0000 Subject: [PATCH 3/3] =?UTF-8?q?=F0=9F=94=96=20fix:=20sync=20package-lock,?= =?UTF-8?q?=20and=20stamp=20the=20version=20fallbacks=20from=20the=20build?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Junie's review on #16 caught the lock, and it was worse than reported: package-lock.json said 0.3.0, so it had already missed the 0.4.0 release. It does not ship (npm excludes it from tarballs, and `files` lists only dist, src, FRAMEWORKS.md and CHANGELOG.md) and `npm ci` never complained because it only diffs dependencies, not the project's own version — which is exactly why it drifted two releases without anyone noticing. Regenerated with `npm install --package-lock-only`. The other half was the two version strings in docs/index.html: the brand badge and the "It is still 0.x" line. Both are no-JavaScript fallbacks — page.js overwrites them from meta.js — so they are right in a browser and stale in a text reader or a scraper. Bumping them by hand is what failed on 0.4.0 and again here, and it is the "release facts hand-bumped beside their generator" finding from the code review. So build-docs.mjs now stamps them, next to the meta.js it already writes. The docs-sync gate turns a forgotten bump into a CI failure instead of a review comment. Both regexes are asserted: renaming the markup fails the build with the pattern that stopped matching, rather than silently stamping nothing — verified by renaming the id and watching it exit. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01SAcqrz3FcadkYr3xG32CjK --- docs/index.html | 4 ++-- package-lock.json | 4 ++-- scripts/build-docs.mjs | 21 +++++++++++++++++++++ 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/docs/index.html b/docs/index.html index ff19890..3e29892 100644 --- a/docs/index.html +++ b/docs/index.html @@ -410,7 +410,7 @@ footer { border-top: 1px solid var(--border); padding-block: 2.5rem; color: var(