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.
0.1.0 - 2026-02-22
Added
- Added
Exdantic.Settingsenv-based settings loader with:load/2,load!/2, andfrom_system_env/2- field-driven env lookup with
env_prefixandenv_nested_delimiter - field-level absolute env override via
extra: %{"env" => "KEY"} - test-friendly
env: %{}injection (no process env mutation required) - loader-level errors:
:env_cast,:env_json,:env_key_conflict
Changed
- Settings decoding and merge behavior now documented and validated by property tests:
- precedence:
input > env > defaults - structured types are JSON-only
- exploded nested values deep-merge over top-level JSON values
- conservative union env decoding (no union-level scalar coercion probing)
- no exploded addressing into arrays in v1
- precedence:
0.0.2 - 2025-01-05
Changed
- Updated CI workflow files to show proper error output
0.0.1 - 2025-01-05
Initial release of Exdantic, a powerful schema definition and validation library for Elixir, based on the original Elixact project by LiboShen.
Added
- Core schema definition and validation functionality
- Support for basic types: string, integer, float, boolean, atom, any, map
- Support for complex types: arrays, maps with typed keys/values, unions, tuples
- Compile-time schema definition with
use Exdantic - Runtime schema creation with
Exdantic.Runtime - Model validators for cross-field validation
- Computed fields for deriving additional fields from validated data
- TypeAdapter for schemaless validation
- Wrapper models for single-field validation
- RootSchema for non-dictionary validation
- Comprehensive constraint system for all types
- Custom type support
- Struct generation with
define_struct: true - Enhanced JSON Schema generation with LLM provider optimization
- DSPy integration patterns
- Configuration system with presets and builder pattern
- Path-aware error messages
- Type coercion with configurable strategies
- Extensive test coverage
- Documentation and examples