chore: make 0.1.0 the first published version - #27
Merged
Conversation
The package has never been published, so the 22 accumulated changesets all described migrations between states nobody could have installed -- and `changeset version` would have consumed them into a 0.2.0 whose changelog re-announced the entire history as breaking changes to a version that never existed. They are replaced by a hand-written 0.1.0 entry describing the surface as it is rather than the route to it. The version stays 0.1.0 and `changeset status` reports nothing to bump, so the first automated release will be whatever comes *after* the manual bootstrap publish. The empty changeset is the sanctioned "no release needed" marker, and is accurate: this commit is release plumbing. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR bootstraps the repository’s first public release by ensuring the initial published version is 0.1.0 (rather than having Changesets roll up the full unpublished history into an initial 0.2.0 release).
Changes:
- Remove the accumulated historical Changesets that describe migrations between unpublished states.
- Add a hand-written
packages/entity/CHANGELOG.mddescribing the current public surface and guarantees for0.1.0. - Add an “empty” Changeset (
.changeset/no-release-first-publish.md) as an explicit no-bump marker for release plumbing.
Reviewed changes
Copilot reviewed 24 out of 24 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| packages/entity/CHANGELOG.md | Adds a hand-written 0.1.0 changelog describing the current API and guarantees. |
| .changeset/no-release-first-publish.md | Adds a no-bump / release-plumbing marker Changeset. |
| .changeset/wild-pandas-shout.md | Removes historical unpublished-state Changeset. |
| .changeset/tsconfig-comments.md | Removes historical unpublished-state Changeset. |
| .changeset/soft-hoops-hammer.md | Removes historical unpublished-state Changeset. |
| .changeset/one-entry-point.md | Removes historical unpublished-state Changeset. |
| .changeset/nest-entities.md | Removes historical unpublished-state Changeset. |
| .changeset/lucky-pandas-relate.md | Removes historical unpublished-state Changeset. |
| .changeset/invalid-entity-structured-issues.md | Removes historical unpublished-state Changeset. |
| .changeset/forbid-entity-subclassing.md | Removes historical unpublished-state Changeset. |
| .changeset/fix-equality-union-freeze.md | Removes historical unpublished-state Changeset. |
| .changeset/factory-returns-a-function.md | Removes historical unpublished-state Changeset. |
| .changeset/entity-union.md | Removes historical unpublished-state Changeset. |
| .changeset/entity-namespace.md | Removes historical unpublished-state Changeset. |
| .changeset/entity-is-a-schema.md | Removes historical unpublished-state Changeset. |
| .changeset/entity-invariant.md | Removes historical unpublished-state Changeset. |
| .changeset/entity-factory.md | Removes historical unpublished-state Changeset. |
| .changeset/entity-extend.md | Removes historical unpublished-state Changeset. |
| .changeset/drop-node-20-matrix.md | Removes historical unpublished-state Changeset. |
| .changeset/drop-class-standard-schema.md | Removes historical unpublished-state Changeset. |
| .changeset/docs-diataxis.md | Removes historical unpublished-state Changeset. |
| .changeset/deep-immutable-entity-data.md | Removes historical unpublished-state Changeset. |
| .changeset/consumer-declaration-emit.md | Removes historical unpublished-state Changeset. |
| .changeset/computed-derived-from-stored.md | Removes historical unpublished-state Changeset. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The package has never been published, so
changeset versionwould have consumed the 22 accumulated changesets into 0.2.0 — a first public release whose changelog announced the entire development history as breaking changes to a version nobody could have installed.This keeps the version at 0.1.0 and leaves
changeset statuswith nothing to bump, so the manual bootstrap publish ships0.1.0and the first automated release is whatever comes after it.What changed
The 22 changesets are removed. Every one described a migration between unpublished states —
decoded→computed,Entity.create→Entity.factory, theEntity.*namespace collapse, invariants becoming a list. Accurate as history, meaningless as release notes for a first version.packages/entity/CHANGELOG.mdis written by hand, with one## 0.1.0entry describing the surface as it is rather than the route to it: the builder and its options,Entity.computed/Entity.invariant/Entity.union, the entry points, and what the package guarantees (sealed construction, deep immutability, errors as values, no I/O). Future releases prepend to it as normal..changeset/no-release-first-publish.mdis an empty changeset — the sanctioned "no release needed" marker. Two reasons: it is accurate, since this commit is release plumbing; and CI runs a reusable workflow frombtravstack/configthat I cannot inspect from this checkout, so I cannot rule out achangeset statusgate, which would otherwise fail on a changed package with no changeset.Verification
Full gate green:
format --check,lint,typecheck(three passes),test(145 passed),knip,build.Not included
Three things the manual publish still needs, left out because they are a separate concern from versioning:
publishConfig.@btravstack/entityis scoped, sopnpm publishdefaults torestricted. Needs--access public, or better"publishConfig": { "access": "public" }— the changesets config'saccess: publiconly covers changesets-driven publishes.prepublishOnly, anddist/is gitignored, so a fresh clone would publish without it."prepublishOnly": "pnpm build"makes it self-correcting.pnpm packresolves thecatalog:devDependency specifiers to real versions (typescript = 7.0.2,zod = 4.4.3, …);npm publishwould ship the literalcatalog:strings. Worth a line inCONTRIBUTING.md.pnpm publishalso enforces a clean tree, correct branch, and being up to date with the remote — so this wants merging before the bootstrap publish.🤖 Generated with Claude Code