v0.2.0
[0.2.0] — 2026-07-25
Two additive token groups. No behaviour changes to existing patterns — every 0.1.1
pattern formats and parses byte-identically.
Added
- 12-hour clock tokens
h/hh(hour 1–12) anda(AM/PM), valid on
PlainTime,PlainDateTimeandZonedDateTime.12:00 AMis midnight,12:00 PM
is noon; parsing accepts any case (pm,Pm,PM). This is fixed English text, not
CLDR data, so the zero-dependency and no-locale guarantees are unchanged.- A pattern mixing
Hwithh/ais rejected as contradictory
(InvalidPatternError). - On parse,
hrequiresaandarequiresh; an hour outside 1–12 fails loudly.
- A pattern mixing
- UTC offset variants
X(±HH, widening to±HHMMwhen minutes are non-zero),
XX(±HHMM) andXXX(±HH:MM). All three render UTC as the literalZand
acceptZon parse, normalizing it to+00:00. ExistingZZis untouched: always
±HH:MM, neverZ.- Sub-minute historical offsets can't be represented in any
Xform and throw a
FormatErrorpointing atZZ.
- Sub-minute historical offsets can't be represented in any
- Test suite: dedicated
reflectcoverage andtemporal-sql-style edge-case tests
(pre-1970 and proleptic/BC years, years ≥ 10000, leap-day validity, DST fall-back
fold, fractional-second and boundary-time precision), plus 12-hour and offset-variant
coverage plumbed into the fast-check round-trip properties. - CI: GitHub Actions workflow — a
checkmatrix on Node 18/20/22/24/26 (26 exercises
native Temporal) plus a separateattwtarball-gate job.