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.

[Unreleased]

[0.4.0] - 2026-05-08

Changed

  • Modernized mix.exs configuration (renamed module to Luhn.MixProject, updated deps)
  • Made double/3 private — it was an internal implementation detail exposed publicly
  • Improved @doc and @spec annotations across all public functions
  • Updated CI to test against Elixir 1.15–1.19 and OTP 26–28
  • Minimum Elixir version bumped to 1.13
  • Replaced ExCoveralls with Mix's built-in coverage; enforces 80% minimum threshold
  • Fixed incorrect doctest expected values for checksum/2 and valid?/2

Added

  • .formatter.exs for enforced code formatting
  • Credo for static analysis (mix credo --strict)
  • Dialyxir for type checking (mix dialyzer)
  • CHANGELOG.md (this file)
  • Doctest integration in test suite
  • Edge case tests (single digit, error handling)

Removed

  • power_assert dependency (unmaintained, unused)
  • benchfella dependency (replaced by standard benchmarking)
  • excoveralls dependency (replaced by built-in Mix coverage)

[0.3.3] - 2019-08-18

Added

  • Guard clause for base validation (base >= 2)
  • ex_doc dependency for documentation generation

Changed

[0.3.2] - 2016-09-01

Added

  • Hexadecimal (base 16) support
  • Arbitrary base support for Luhn validation

[0.3.1] - 2015-07-28

Added

  • Support for integer input (in addition to strings)

[0.3.0] - 2015-07-03

Changed

  • Performance improvements

[0.2.0] - 2015-06-29

Added

  • checksum/2 function

[0.1.0] - 2015-06-26

Added

  • Initial release
  • valid?/1 function for Luhn number validation