All notable changes to this project are documented in this file. The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.4.0] - 2026-06-02

Added

  • defconst/defenum now raise a CompileError when the same constant name is defined more than once. Duplicate values remain supported (constant_of/1 returns a list).
  • Static analysis in CI: mix credo --strict and mix dialyzer run in a dedicated quality job.

Changed

  • Bumped GitHub Actions to their latest major tags (actions/checkout@v6, actions/cache@v5).

Fixed

  • mix docs no longer warns about a missing LICENSE reference (added LICENSE to docs extras).

[0.3.0] - 2026-06-02

Added

  • GitHub Actions CI across Elixir 1.15–1.19 / OTP 26–28 (test matrix + dedicated format job).
  • Automated Hex release workflow: publishing a GitHub Release (tag matching @version) publishes the package and docs via CI.
  • Pinned toolchain via .tool-versions (Elixir 1.19.5 / OTP 28.1+).
  • Test coverage for constant_of/1 duplicate-value (list) and missing-value (nil) paths.
  • CHANGELOG.md (now shipped in the Hex package and rendered in the docs).

Changed

  • Declared minimum supported Elixir as ~> 1.15, now verified in CI (was an unverified ~> 1.6).
  • Modernized ex_doc to the latest line, ~> 0.40 (dev-only; no runtime impact).

Removed

  • Deprecated config/config.exs (use Mix.Config); the library has no runtime config.

Fixed

  • Corrected the value_of/1 documentation example (it referenced constant_of).
  • Renamed internal normalize_contant typo to normalize_constant.
  • Documented constant_of/1's polymorphic return (name / list / nil).
  • Resolved a duplicate-@doc compile warning on Defconst.Enum.DefaultGenerator.next_value/2.

[0.2.5] - 2020-01-08

Last previously published release. Included constants/0, constant_of/1, and value_of/1. (Its mix.lock resolved the dev-only ex_doc to 0.21.2; the constraint stayed ~> 0.20.)