Skip to content

feat: adopt changesets for versioning and releases - #118

Merged
natemoo-re merged 11 commits into
mainfrom
nm/feat/changesets
Sep 1, 2026
Merged

feat: adopt changesets for versioning and releases#118
natemoo-re merged 11 commits into
mainfrom
nm/feat/changesets

Conversation

@natemoo-re

Copy link
Copy Markdown
Member

What does this PR do?

Replace the tag-triggered publish workflow with a changesets-driven flow and seed the historical changelog so future releases build on it.

package.json becomes the version source of truth (v0.8.0) and the published artifact produced by dnt derives from that.

Type of change

  • Bug fix
  • Feature
  • Refactor (no behavior change)
  • Documentation
  • Performance improvement
  • Tests
  • Chore (CI + tooling)

Checklist

  • All tests pass (pnpm test)
  • Files are formatted (pnpm format)
  • I have added/updated tests for my changes (if applicable)
  • I have added a changeset

AI-generated code disclosure

  • This PR includes AI-generated code

Replace the tag-triggered publish workflow with a changesets-driven
flow and seed the historical changelog so future releases build on it.

- package.json becomes the version source of truth (0.8.0, private);
  the publishable artifact remains build/npm produced by dnt.
- .changeset config uses @changesets/changelog-github against
  bombshell-dev/tty.
- release.yml runs changesets/action on main: it opens a "Version
  Packages" PR from pending changesets, and on merge runs the publish
  command (npm run release).
- tasks/release.ts wraps the Deno/dnt flow: build:npm, publish
  build/npm, then tag v<version> and push. It no-ops when the version
  is already on npm, because changesets/action runs the publish command
  on every changeset-less push to main. Tags keep the existing
  v<version> format for continuity with v0.0.0..v0.8.0.
- CHANGELOG.md seeds all 14 releases in changelog-github format, with
  PRs attributed by the tag range their merge commit falls in and
  authors credited.
- deno.json fmt excludes CHANGELOG.md/.changeset so deno fmt does not
  rewrap changesets output.
@socket-security

socket-security Bot commented Sep 1, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addednpm/​@​changesets/​cli@​3.0.1991007497100
Addednpm/​@​changesets/​changelog-github@​1.0.01001009594100

View full report

@pkg-pr-new

pkg-pr-new Bot commented Sep 1, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/@bomb.sh/tty@118

commit: 4135d43

Comment thread package.json Outdated
Bump @changesets/cli ^2.29.7 -> ^3.0.1 and @changesets/changelog-github
^0.5.1 -> ^1.0.0, tracking the transitive @changesets/config@4.0.0 in the
config schema URL.

v3 stops versioning private packages by default. @bomb.sh/tty is
`private: true` (root is a build source; publish happens from build/npm via
tasks/release.ts), so opt back in with privatePackages.version. Leave
privatePackages.tag off because release.ts owns git tagging.
Cover everything landed since v0.8.0 that affects the published package;
resolves to a 0.9.0 minor bump.

- #116 border sides reserve layout space (minor, breaking within 0.x)
- #103 hardware cursor via text() caret (minor)
- #89 compile out Clay debug-tools, ~35% smaller wasm (patch)
- #49 correct width for non-printable/surrogate codepoints, Unicode 17 (patch)

Dependabot/CI bumps, the 2048 example, and docs-only commits get no
changeset.
Rework the backfilled history to match the changeset message style used
for new entries:

- Third-person present verbs throughout (Adds/Fixes/Renames), so future
  changeset-generated entries read consistently against the history.
- Reframe entries toward user-visible impact, dropping wire-format and
  build-mechanism detail that consumers can't act on.
- Drop non-user-facing entries (CI, tooling, tests, benchmarks, examples,
  internal docs); keep LICENSE since it ships in the package.
- Hoist the breaking Op->directive/name->id rename to the top of its
  Patch section (bump stays patch; it already shipped).

@dreyfus92 dreyfus92 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

awesome job @natemoo-re, left a few comments 🤘🏻

Comment thread deno.lock Outdated
Comment thread .github/workflows/publish.yml
Comment thread .github/workflows/release.yml Outdated
Comment thread tasks/release.ts Outdated
Comment thread tasks/release.ts Outdated
Comment thread tasks/release.ts
@natemoo-re

Copy link
Copy Markdown
Member Author

bonus fix: the changeset action inputs changed in v2, updated ours to match in f96244f

@natemoo-re
natemoo-re requested a review from dreyfus92 September 1, 2026 04:12

@dreyfus92 dreyfus92 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good to me! thank you @natemoo-re 💜

Trim to the level of detail each bump warrants: patches to a single
sentence, the caret minor to one paragraph. The breaking border change
keeps its two paragraphs plus migration diff.

@jbolda jbolda left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We might also want to consider a couple new rulesets.

  • As we have a script which runs as part of our publish process, we may want to require extra reviews or from specific code folks if one edits the build script in a PR.
  • We could also consider more reviews on the release PR as a require. For example, 1 review to merge, 2 to publish? This feels up more for discussion than the previous bullet point.

Approval as I don't see any of these as hard blocks.

Comment thread .changeset/README.md
Comment thread deno.lock
Comment thread tasks/release.ts Outdated
Comment thread .github/workflows/publish.yml
Rely on structured --json output instead of plain-text stdout when
checking whether the version is already on npm.
@natemoo-re
natemoo-re merged commit 619d2d4 into main Sep 1, 2026
12 checks passed
@natemoo-re
natemoo-re deleted the nm/feat/changesets branch September 1, 2026 19:33
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.

4 participants