chore: release v3.0.0 - #152
Open
edloidas wants to merge 7 commits into
Open
Conversation
Documented the build and packaging track that landed after beta.0: the per-file `tsc` emit, generated `src/version.ts`, dropped `main`/`types`, `unpkg`/`jsdelivr` fields, the packed-tarball and browser smoke gates, action pinning, and the bench sampling-mode fix Added `MIGRATION.md` covering the packaging change, the entry-point mapping, the result-shape moves, throwing instead of returning `null`, the two notation forms that do not carry over, and unclamped pool totals Shipped `MIGRATION.md` in the published tarball via `files` Narrowed the install instructions to `pnpm` and `bun`, dropping the `npm` and `yarn` fences and keeping `npx roll-parser` for one-off use Repointed the npm and Node badges off the prerelease dist-tag and rewrote the status block for a stable release Removed the `Related projects` section and the competitor reference in `applyPenetratingExplode`'s doc comment Corrected the author URL to `edloidas.io` Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Removed the four superseded planning docs in `.claude/docs/` — `PRD.md` still described ESM+CJS output and a Bun-only runtime, and `GAPS.md` listed 13 fixed findings as open Documented three limitations harvested from `GAPS.md` before deleting it: division does not floor, `**` has no overflow guard, and integer literals above `Number.MAX_SAFE_INTEGER` lose precision Added `expectRollError` in `src/test-helpers.ts`, excluded from the build and the tarball, and converted 72 `toThrow` + `try`/`catch` + code-check blocks to one-line calls Synced `.claude/rules/testing.md` with the patterns the suite relies on: the error-assertion helper, the error-code contract gate, and the in-process CLI policy that keeps subprocess tests to the two files that need them Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
edloidas
force-pushed
the
claude/v3-release-prep-ifsqmr
branch
from
July 30, 2026 22:48
537dfe6 to
1d8ae7b
Compare
Fixed doc claims that did not match behavior, each verified against the build:
`failures` is present as `0` without a fail threshold rather than absent, the
success-count arithmetic example used `5d6>=5 * 2` which the parser rejects
(`{5d6>=5}+2` works), the `VERSION` example still showed `3.0.0-beta.0`, the
`getErrorSpan` snippet dereferenced a possibly-undefined span, and the changelog
named a lowercase `version` export
Replaced the exhaustive-switch promise on `RollParserErrorCode` with `default`-arm
guidance — codes may be added in a minor release, so exhaustiveness is not safe
Reworded the `Math.random` claim in README and CONTRIBUTING: no roll path calls
it, but default `SeededRNG` seeding does
Documented the multi-sub-roll group sort rejection in README known limitations,
and refreshed the bundle sizes that had drifted to 10.86 kB / 5.11 kB / 213 B
Added the CLI breaking change and the three missing `parse*` rows to
`MIGRATION.md`, and pinned both migration examples to `createMockRng` so their
stated totals are exact
Set `cancel-in-progress: false` on the release workflow — a second tag could
cancel a run between `npm publish` and the GitHub Release step
Made `release:dry` reuse `validate`, so publishing gates on coverage and
`check:size` instead of a bare `bun test`
Overrode `brace-expansion` to 5.0.8, clearing the GHSA-mh99-v99m-4gvg advisory
that reached the tree through TypeDoc, and added the npm ecosystem to Dependabot
Enabled `treatWarningsAsErrors` in TypeDoc with the two internal symbols
declared `intentionallyNotExported`
Guarded `prepare` so hook installation cannot fail packaging outside a git work
tree
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
edloidas
force-pushed
the
claude/v3-release-prep-ifsqmr
branch
from
July 30, 2026 23:04
1d8ae7b to
1b59304
Compare
Removed `.claude/rules/typescript.md` and `.claude/rules/testing.md`, whose conventions a blind five-agent trial reproduced from the codebase alone. Added six drop-in `biome.json` style rules — `noNestedTernary`, `noDefaultExport`, `useImportType`, `useConsistentArrayType`, `useConsistentTypeDefinitions`, and `noDoubleEquals` — replacing the prose they duplicated. Added `.claude/rules/project-testing.md` holding only the three prohibitions code cannot teach, since code shows just the positive case. Reduced `comments.md` to 46 lines and narrowed `// ?` to unsettled code, documenting the prefix colors that motivate the convention. Reduced `rng.md` to 28 lines, delegating the MockRNG draw-order spec to the README section that already owns it. Repointed five source comments and the `bunfig.toml` coverage note away from the deleted rule files. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…154 Demoted 63 `// ?` comments across 19 files to plain `//`, reindenting their continuation lines to keep the text column aligned. Kept the 13 blocks that flag genuinely unsettled code: forged-AST test dodges, unreachable and defensive branches, the Bun argument-list ceiling, the accepted `keptIndices` model leak, and the self-fulfilling chmod assertion. Aligned the codebase with the narrowed `// ?` definition in `.claude/rules/comments.md`, so the source no longer teaches the wider "rationale for unusual patterns" reading. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
edloidas
force-pushed
the
claude/v3-release-prep-ifsqmr
branch
from
July 30, 2026 23:20
1b59304 to
4bcd01e
Compare
Set `auto = "disable"` so a missing package fails the build instead of being auto-installed at runtime Dropped `minimumReleaseAgeExcludes` — the three-day gate now covers Biome, TypeScript, and `@types/bun` too. All currently locked versions predate the window, so a clean install is unaffected; future toolchain bumps wait three days Raised `.bun-version` from 1.3.11 to 1.3.14, the current release and the version local validation runs. Every workflow reads this file, so it stays the only place the version lives Rewrote the package description: the library runs on Node, Bun, and browsers, and "Bun-optimized" undersold that Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Bumped `package.json` from `3.0.0-beta.0` to `3.0.0` Regenerated `src/version.ts` via `generate:version` Renamed the `[Unreleased]` changelog section to `[3.0.0] - 2026-07-30` and repointed the link reference definition at the tag Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
edloidas
force-pushed
the
claude/v3-release-prep-ifsqmr
branch
from
July 30, 2026 23:30
4bcd01e to
cb2da13
Compare
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.
Cuts v3.0.0 stable from
3.0.0-beta.0. Three commits: the release notes and docs, a repo hygiene pass, then the dedicated release commit to tag.Changelog: the
[Unreleased]section was missing the build and packaging track that landed after beta.0, so it now covers the per-filetscemit, the generatedsrc/version.ts, the droppedmain/typesfields, theunpkg/jsdelivrfields (#125), the packed-tarball and browser smoke gates plus workflow hardening (#126, #149), and the bench sampling-mode fix (#143). Renamed to[3.0.0] - 2026-07-30with the link reference repointed at the tag.Added
MIGRATION.md, shipped in the tarball viafiles. v3 carries nine breaking changes across two prereleases, and a consumer upgrading from 2.x otherwise had to reconstruct the path from two prerelease sections. Every claim was checked against the built library, which surfaced two behaviours the prerelease sections do not state: v2's4d10!>8f1does not parse in v3 at all (v2's>Nmeant>=N, and a bare!combined with a success count reads the threshold as the explode target), and v2 clamped pool totals withMath.max(result, 0)where v3 returns the real negative.README: install instructions narrowed to
pnpmandbun,npm/yarnfences dropped,npx roll-parserkept.@nextstripped from the install, CDN, and CLI examples; both badges repointed off the prerelease dist-tag; status block rewritten for a stable release.Related projectsremoved, along with the competitor reference inapplyPenetratingExplode's doc comment. Author URL corrected toedloidas.io.Hygiene pass (#153): deleted the four superseded planning docs under
.claude/docs/, harvesting three limitations they tracked that were documented nowhere else — division does not floor,**has no overflow guard, and integer literals aboveNumber.MAX_SAFE_INTEGERlose precision. All three verified against the build and added to the README, so they land inside the tag. AddedexpectRollErrorand converted 72toThrow+try/catch+ code-check blocks; the helper is excluded from bothtsconfig.build.jsonandfiles, and the tarball still packs 150 files. Synced.claude/rules/testing.mdwith the error-code contract gate and the in-process CLI policy.Note on merging and tagging:
release.yml'sprecheckjob gates publishing on the tag commit being onorigin/master, so the tag needs to go on master's tip after this merges. Do not squash — the release commit is deliberately dedicated to the version bump, and squashing folds the docs and hygiene changes into it.Closes #153
Claude Code session