CHANGELOG.md
# Changelog
All notable changes to this project will be documented in this file.
## [1.2.0]
- Improve init opts verification:
- `:mask` and `:persist_prefix` must be booleans
- `:persist_prefix` requires `:prefix`
## [1.1.0]
- Add support for masked IDs using option `mask: true`.
- Merge `Once.Prefixed` into `Once` and soft-deprecate it. `Once` itself is a drop-in replacement.
## [1.0.0] - 2025-12-31
- Upgrade to NoNoncense >= 1.0, which has breaking changes. Be sure to read its [migration guide](https://hexdocs.pm/no_noncense/migration.html).
- Hard deprecate options `:encrypt?` and `:get_key` (the NoNoncense encryption key is now passed to its `init/1` function)
- Add `Once.Prefixed` type for Stripe-style prefixed IDs (e.g., `"usr_AV7m9gAAAAU"`), with optional `:persist_prefix` to store prefix in database or strip it on storage
- Add support for base32hex encoding as format `:hex32`
- Require Elixir 1.16
## [0.1.0] - 2025-12-09
- Use Elixir 1.19 features when possible (`Base.valid64?/2`)
- Improve `Once.to_format/2` and `Once.to_format!/2` by adding a third opts param. Add option `:parse_int` to parse numeric strings to ints ("123" -> 123).
- Clarify docs on sorting order
## [0.0.8] - 2025-09-04
- Lowercase hex encoding
## [0.0.7] - 2025-01-17
- Re-arrange readme
## [0.0.6] - 2025-01-16
- Add numeric strings parsing when `:ex_format` is integer
## [0.0.5] - 2025-01-15
- Rename :type to :nonce_type to avoid clashing with Ecto's :belongs_to opts
- Base type/1 output on :db_format instead of :ex_format
## [0.0.4] - 2025-01-13
- Add sortable nonce support
## [0.0.3] - 2025-01-08
- Change name of format :encoded to :url64, add format :hex
## [0.0.2] - 2025-01-08
- Improve documentation
## [0.0.1] - 2025-01-08
- Initial release