# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0/). ## [Unreleased] - restore the README's Synopsis and Examples sections: a quick-start recipe plus real-world examples (primitive-union dispatch, a fallback, a property union narrowed by the tagged-union matcher, and a widening variant) - document the public API in the README: the four factories, when to use each, what the `W` (widening) suffix means, and examples that bind the handler-map function once - add TSDoc to the four public matcher factories ## [0.8.1] - 2026-09-23 - gate CI at 100% coverage: `test:ci` runs c8 with `--all --100` over `src/`, and a test loads the `index.ts` barrel so it is measured - pin the duplicate-tag union collapse (members sharing a tag dispatch through one handler) with tests ## [0.8.0] - 2026-09-23 - reject a universe that mixes a literal with a broad type (e.g. `"a" | \`x-${number}\``), which the finite-literal gate let through - narrow the tagged-union matcher's handler parameters for a union-valued or optional discriminant, and its fallback to the unhandled tags, instead of passing `never` ## [0.7.1] - 2026-09-23 - upgrade dependencies ## [0.7.0] - 2026-09-23 - reject broad universes (`string`, `number`, template literals) and value/stringification collisions (`true | "true"`, `1 | "1"`) at the factory - type handler parameters by the matched member, so a standalone `"true"` universe is typed `"true"` rather than `true` ## [0.6.0] - 2026-09-22 - add `getTaggedUnionMatcher` / `getTaggedUnionMatcherW` for discriminated unions - rename the primitive matcher to primitive-union: `getMatcher` / `getMatcherW` → `getPrimitiveUnionMatcher` / `getPrimitiveUnionMatcherW`, and `src/primitive.ts` / `src/primitive.test.ts` → `src/primitive-union.*` ## [0.5.0] - 2026-09-21 - reject a fallback when the handler map already covers the universe - allow boolean, null and undefined in the matcher universe ## [0.4.0] - 2026-09-20 - move the `_` fallback out of handlers ## [0.3.0] - 2026-09-18 - condensed primitive matcher factories down to 2 from formerly 4 - house shared test helpers under `src/util/__tests__/` ## [0.2.0] - 2026-09-16 - allow ternaries and lowercase comments in oxlint - switch `src/primitive.ts` prose from block comments to line comments - remove the template's `match`/`P` example modules and their documentation, and point `src/index.ts` at the primitive matchers ## [0.1.8] - 2026-09-16 - upgrade dependencies - ignore `@types/node` in `maintain:outdated` (misleading `latest` dist-tag) - require extremely concise prose in `development/` ## [0.1.7] - 2026-09-16 - require a short summary under `[Unreleased]` in the changelog before a branch is finished - let `create:branch` start from a `main` that is ahead of its upstream, so a finished merge no longer blocks the next branch until it is pushed ## [0.1.6] - 2026-09-15 - restructure the documentation: README.md for users, CONTRIBUTING.md for contributors, and development/ for the decisions, rejected alternatives and known issues - document the decisions and known issues for CI, tooling, testing, publishing and the workflow ## [0.1.5] - 2026-09-15 - improve CI configuration ## [0.1.4] - 2026-09-14 - fix CI to node from custom image - upgrade dependencies ## [0.1.3] - 2026-09-14 - change to custom image for CI ## [0.1.2] - 2026-09-14 - upgrade dependencies ## [0.1.1] - 2026-09-14 - upgrade dependencies ## [0.1.0] - 2026-09-14 - basic setup [Unreleased]: https://gitea.e1nsnull.de/tmu/tiny-pattern-ts/compare/0.8.1...main [0.8.1]: https://gitea.e1nsnull.de/tmu/tiny-pattern-ts/compare/0.8.0...0.8.1 [0.8.0]: https://gitea.e1nsnull.de/tmu/tiny-pattern-ts/compare/0.7.1...0.8.0 [0.7.1]: https://gitea.e1nsnull.de/tmu/tiny-pattern-ts/compare/0.7.0...0.7.1 [0.7.0]: https://gitea.e1nsnull.de/tmu/tiny-pattern-ts/compare/0.6.0...0.7.0 [0.6.0]: https://gitea.e1nsnull.de/tmu/tiny-pattern-ts/compare/0.5.0...0.6.0 [0.5.0]: https://gitea.e1nsnull.de/tmu/tiny-pattern-ts/compare/0.4.0...0.5.0 [0.4.0]: https://gitea.e1nsnull.de/tmu/tiny-pattern-ts/compare/0.3.0...0.4.0 [0.3.0]: https://gitea.e1nsnull.de/tmu/tiny-pattern-ts/compare/0.2.0...0.3.0 [0.2.0]: https://gitea.e1nsnull.de/tmu/tiny-pattern-ts/compare/0.1.8...0.2.0 [0.1.8]: https://gitea.e1nsnull.de/tmu/tiny-pattern-ts/compare/0.1.7...0.1.8 [0.1.7]: https://gitea.e1nsnull.de/tmu/tiny-pattern-ts/compare/0.1.6...0.1.7 [0.1.6]: https://gitea.e1nsnull.de/tmu/tiny-pattern-ts/compare/0.1.5...0.1.6 [0.1.5]: https://gitea.e1nsnull.de/tmu/tiny-pattern-ts/compare/0.1.4...0.1.5 [0.1.4]: https://gitea.e1nsnull.de/tmu/tiny-pattern-ts/compare/0.1.3...0.1.4 [0.1.3]: https://gitea.e1nsnull.de/tmu/tiny-pattern-ts/compare/0.1.2...0.1.3 [0.1.2]: https://gitea.e1nsnull.de/tmu/tiny-pattern-ts/compare/0.1.1...0.1.2 [0.1.1]: https://gitea.e1nsnull.de/tmu/tiny-pattern-ts/compare/0.1.0...0.1.1 [0.1.0]: https://gitea.e1nsnull.de/tmu/tiny-pattern-ts/compare/20308c5a6d8cccfb09b02ac2ebebd8055e91cd11...0.1.0