Skip to main content

CHANGELOG.md

# 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.html).

## [0.2.0] - 2026-06-02

### Added

- `delimit/2` — thousands separator (`1_234_567` → `"1,234,567"`), with
  `:separator` and `:precision` options. 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` `:max` option — collapse long lists into a count
  (`max: 2` → `"Alice, Bob and 3 others"`), with `:other` / `:others` nouns.

### Changed

- `relative_time/2,3` now supports a `:format` option (`: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/2` and `number/2` now carry up to the next unit when rounding would
  otherwise produce a mantissa equal to the base (`1000` for decimal/SI, `1024`
  for 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 the `1000`–`1023` range (e.g. `1023` GiB 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 `:units` and `:format` options.
- `relative_time/2,3` — `DateTime` formatted relative to now or a reference time
  (`"2 days ago"`, `"in 3 hours"`, `"just now"`).
- `number/2` — large numbers with `K`/`M`/`B`/`T` suffixes.
- `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.

[0.2.0]: https://github.com/ivan-podgurskiy/humanizer/releases/tag/v0.2.0
[0.1.1]: https://github.com/ivan-podgurskiy/humanizer/releases/tag/v0.1.1
[0.1.0]: https://github.com/ivan-podgurskiy/humanizer/releases/tag/v0.1.0