All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.2.0 - 2026-06-02
Added
delimit/2— thousands separator (1_234_567→"1,234,567"), with:separatorand:precisionoptions. Integer-built, never scientific notation.truncate/3— string truncation with an ellipsis (:omission) and an optional word boundary (:break:char|:word). Grapheme-aware.list_join/2:maxoption — collapse long lists into a count (max: 2→"Alice, Bob and 3 others"), with:other/:othersnouns.
Changed
relative_time/2,3now supports a:formatoption (:short→"2d ago","in 3h","now") and extends past days to weeks, months and years. Months and years are coarse fixed-width approximations (30 / 365 days) for display only. Default (:long) output is unchanged for all previously supported ranges.
0.1.1 - 2026-05-31
Fixed
bytes/2andnumber/2now carry up to the next unit when rounding would otherwise produce a mantissa equal to the base (1000for decimal/SI,1024for binary/IEC) — e.g.999_950→"1.0 MB"instead of"1000.0 KB",999_999→"1.0M"instead of"1000.0K". Binary units correctly keep mantissas in the1000–1023range (e.g.1023GiB stays GiB, since it is still under 1 TiB).
0.1.0 - 2026-05-31
Added
bytes/2— human-readable file sizes with decimal (SI) and binary (IEC) units.duration/2— durations in seconds formatted as words (days down to seconds), with:unitsand:formatoptions.relative_time/2,3—DateTimeformatted relative to now or a reference time ("2 days ago","in 3 hours","just now").number/2— large numbers withK/M/B/Tsuffixes.ordinal/1— English ordinals, correctly handling the 11/12/13 exceptions.list_join/2— human-readable list enumeration with optional Oxford comma and custom conjunction.- English-only, zero-config, scientific-notation-free formatting throughout.