Skip to content

chore: cut 1.0.0 - #49

Merged
david-chau merged 1 commit into
mainfrom
chore/cut-1-0-0
Aug 3, 2026
Merged

chore: cut 1.0.0#49
david-chau merged 1 commit into
mainfrom
chore/cut-1-0-0

Conversation

@david-chau

Copy link
Copy Markdown
Owner

Asks release-please for 1.0.0 via a Release-As: 1.0.0 footer, and removes the
pre-major flags that were holding it back.

Why it needed asking

bump-minor-pre-major kept every breaking change at a minor bump — and it was
right to. That is what allowed the API to be curated from 66 exports to 18,
split across four entry points, and moved off the client boundary without
burning major versions on a library nobody had built against yet.

That work is finished, so the flag goes. Past 1.0.0 a BREAKING CHANGE footer
means a major, which is the point of the version.

What 1.0.0 promises

Now written down in DESIGN.md, because a version number is a claim about change:

  • The exported names are the contract — asserted exactly by
    index.test.ts and entryPoints.test.ts
  • What is not exported may change in a patch — ask for it rather than
    reaching into dist/
  • The CSS class names count too, since the stylesheet is opt-in and people
    build on the markup
  • Documented behaviour is reliable behaviour — the canonical/display split,
    null never being NaN, the caret rules, grouping following the locale
  • What is not promised is stated: numbers above 2^53, digits outside ASCII,
    and the matrix rows nobody has hardware to verify

Branches

Cleaned out first, all verified against merged PRs: two stale remotes and ten
locals deleted. origin/main is the only remote branch left.

State at the cut

1301 unit tests          263 Playwright, 6 projects, 3 operating systems
100% coverage × 4        4/4 entries within size budget
attw green × 4           publint clean       0 vulnerabilities

Seven audits. The first six each found something real — 66 exports nobody chose,
declarations wrong for CommonJS, two critical ARIA violations in the widget the
docs told people to copy, a 'use client' banner that broke the documented
server action, a load-bearing rule with no test, and grouping wrong for every
Indian locale. The seventh found nothing, and a leak hunt found one uncancelled
animation frame that was not a leak.

Merging this produces the release PR for 1.0.0. Merging that one publishes.

🤖 Generated with Claude Code

Release-As: 1.0.0

release-please will not promote past 0.x on its own, and it was right not to:
bump-minor-pre-major kept every breaking change at a minor bump, which is what
allowed the API to be curated, split across entry points and moved off the
client boundary without burning major versions on a library nobody had built
against yet. That work is done, so the flag goes and the footer above asks for
the version explicitly.

DESIGN.md gains what 1.0.0 actually promises, because a version number is a
claim about change and it is worth naming which one. The exported names are the
contract, asserted by test in index.test.ts and entryPoints.test.ts. Everything
not exported may change in a patch. The CSS class names count too, since the
stylesheet is opt-in and people build on the markup. Documented behaviour is
behaviour you can rely on. What is not promised — numbers above 2^53, digits
outside ASCII, the support-matrix rows nobody has hardware for — is stated
rather than implied.

Cut after seven rounds of looking for reasons not to. The first six each found
something: 66 exports nobody had chosen, declarations that were wrong for
CommonJS, two critical ARIA violations in the widget the docs said to copy, a
'use client' banner that broke the server action the examples demonstrated, a
load-bearing rule with no test holding it, and grouping that was wrong for
every Indian locale. The seventh found nothing, and a deliberate hunt for
memory leaks found one uncancelled animation frame that was not one.

1301 tests, 100% coverage on all four metrics, 263 Playwright across six
projects and three operating systems, every entry within its size budget.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@david-chau
david-chau merged commit 5bc7760 into main Aug 3, 2026
8 checks passed
@david-chau
david-chau deleted the chore/cut-1-0-0 branch August 3, 2026 22:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant