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

## [1.2.0] - 2026-11-03

### Added

- `Snowflakex.decompose/1` to split a snowflake into timestamp, machine id and
  sequence number.
- `Snowflakex.epoch/0` and `Snowflakex.max_machine_id/0`.
- Typespecs for the public API.
- Test suite and continuous integration.

### Changed

- Requires Elixir 1.15 or later.
- The application now fails to start with a descriptive error when the
  `:machine_id` is missing or out of range.
- A restarted worker no longer hands out IDs for the millisecond its
  predecessor may already have used, preventing duplicate IDs after a crash.
- The package license is declared with its SPDX identifier `Apache-2.0`, and
  `LICENSE` contains the full license text.
- Rewrote the documentation.

## [1.1.1] - 2020-07-04

### Changed

- Requires Elixir 1.5 or later.
- Updated documentation.

## [1.1.0] - 2017-02-15

### Added

- `Snowflakex.new!/0`, raising `Snowflakex.ClockError` when the system clock
  moved backwards.

## [1.0.0] - 2016-12-05

- Initial release.

[1.2.0]: https://github.com/meetnow/snowflakex/compare/76f1315...v1.2.0
[1.1.1]: https://hex.pm/packages/snowflakex/1.1.1
[1.1.0]: https://hex.pm/packages/snowflakex/1.1.0
[1.0.0]: https://hex.pm/packages/snowflakex/1.0.0
