[0.2.0] — 2026-08-03
Added
- Every public function now carries an
### Examplessection, and every example that can run without a database runs as a doctest on each test build. The library previously had none, so its documentation was never checked against its code.
Fixed
-
Recurring intervals stored in a
tempo_rangeortempo_multirangecolumn now load back intact. The meta format could not tell an open-ended endpoint from an absent one, so a value likeR5/2022-01-01/P1Mreturned withto: :undefinedand could no longer be rendered at all. -
Documented the storage contract accurately for week and day-of-year endpoints. Ordinal dates and full week dates are resolved to calendar dates while parsing and store normally; only a value still carrying those tokens — such as a bare
~o"2026-W10"— is refused.
Changed
-
The composite
metaformat is now version 2, which writes".."for an explicitly open-ended endpoint. Version 1 rows keep decoding exactly as before, so no migration is required, but a recurring interval written by 0.1.0 should be rewritten to regain its endpoint. -
Requires
ex_tempo ~> 1.1 and >= 1.1.1. The previous~> 0.16constraint could not resolve alongside Tempo 1.x, so the two libraries could not be used together. The 1.1.1 floor matters on its own: before it, casting a list whose members are not intervals raised rather than returning:error, so bad changeset input crashed instead of failing validation. -
Repository links point at the
elixir-tempoorganisation, and the README links the storage-contract guide on HexDocs rather than a GitHub blob. -
Requires Erlang/OTP 27 or later, inherited from
ex_tempo— OTP 26 is no longer supported and has been dropped from CI.