Skip to content

0.3.0 - #23

Merged
jackmisner merged 2 commits into
mainfrom
release/0.3.0
Aug 20, 2026
Merged

0.3.0#23
jackmisner merged 2 commits into
mainfrom
release/0.3.0

Conversation

@jackmisner

Copy link
Copy Markdown
Owner

Release branch for 0.3.0, plus a README correction found during release prep.

Status: 0.3.0 is already on npm

The publish workflow ran on the v0.3.0 tag push and completed the npm publish (published 11:10:35). I attempted to cancel mid-run to hold it for the README check, but the cancellation only caught the later GitHub release job — the publish step had already succeeded.

Two consequences:

  1. npm 0.3.0 carries the pre-fix README. The published code is correct and complete; only the docs in the tarball are behind. A 0.3.1 patch will correct it.
  2. There is no GitHub Release for v0.3.0 — that job was cancelled. The 0.3.1 release will create its own; v0.3.0 can be tagged retroactively on GitHub if you want the history complete.

What 0.3.0 contains

  • @jackmisner/utm-toolkit/server — DOM-free normalizeUtmParams / normalizeUtmUrl with total output and a never-throws contract for untrusted request bodies
  • captureUtmParametersWithReport — distinguishes "no campaign" from "campaign rejected", and both from an unparseable URL
  • Three capture optionslowercaseValues, sanitize.onMaxLength, sanitize.valuePattern
  • Toolchain — vitest 4, jsdom 30, advisories 14 → 1 (low, dev-only); CI on Node 22/24/26; engines.node >=20.0.0

The README fix in this branch

Three gaps, the first consumer-facing:

  • No Node requirement stated anywhere. engines.node moved >=16.0.0>=20.0.0, and the platform section covered browsers only — a conspicuous omission now the package ships a /server entry. Installation now states the requirement, and that nothing below Node 22 is actually exercised.
  • The TypeScript Types list omitted every type added this releaseCaptureReport, UtmRejection, UtmRejectionReason, the sanitizer/PII report types, and both server types. It reads as an inventory, so an incomplete one misleads.
  • captureUtmParametersWithReport had no API Reference entry, only prose. Added, along with onMaxLength / valuePattern / lowercaseValues in the captureUtmParameters options example.

Test Plan

  • npm test — 635 passing
  • npm run build — succeeds
  • npm run format:check — clean
  • README anchor links resolve (#telling-no-campaign-apart-from-campaign-rejected, #server-side-usage)

Merging this brings 0.3.0 and the README fix to main, after which npm run release:patch cuts 0.3.1 with correct docs.

jackmisner and others added 2 commits August 20, 2026 12:09
Caught during release prep. Three gaps, the first consumer-facing:

* No Node requirement stated anywhere. engines.node moved from >=16.0.0
  to >=20.0.0 in the toolchain upgrade, and the README's platform section
  covered browsers only — which is a conspicuous omission now that the
  package ships a /server entry point. Installation now states the
  requirement and that nothing below Node 22 is actually exercised, and
  the platform section covers Node explicitly.

* The TypeScript Types list omitted every type added in this release:
  CaptureReport, UtmRejection, UtmRejectionReason, the sanitizer and
  PII-filter report types, and the two server types. It reads as an
  inventory of exported types, so an incomplete one is misleading.

* captureUtmParametersWithReport had a prose section but no entry in the
  API Reference, which is where a reader looks for signatures. Added
  there, along with onMaxLength, valuePattern and lowercaseValues in the
  captureUtmParameters options example — the options were documented in
  the sanitization section but absent from the first place anyone reads.

Installation also now lists the three entry points, since /server made
the subpath exports worth stating rather than leaving to discovery.
🤖 Generated with [Nori](https://noriagentic.com)

Co-Authored-By: Nori <contact@tilework.tech>
@jackmisner
jackmisner merged commit 1071265 into main Aug 20, 2026
4 checks passed
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