All notable changes to this project will be documented in this file.
[0.22.0] - 2026-08-07
๐ Features
- Implement uniqueItems for Decimal (lud)
๐ Bug Fixes
- Raise explicit message on defschema without :properties (lud)
๐ Refactor
- Extract test suite generation into JSV.TestSuiteGenerator (Ludovic Dem)
๐งช Testing
- Render floats as erlang would decode them when generating test suite (lud)
- Updated JSON Schema Test Suite (lud)
- Updated JSON Schema Test Suite and updated conformity tests (lud)
โ๏ธ Miscellaneous Tasks
- Document invalid JSON files in JSON Schema Test Suite (lud)
[0.21.2] - 2026-07-10
๐ Bug Fixes
- Ignore httpc cache chmod tests on windows (Ludovic Dem)
- Add missing type: object on arprops schema helper (lud)
๐ Documentation
- Added missing docs for public API (lud)
[0.21.1] - 2026-07-06
๐ Features
- Allow to define @doc above defschema to document jsonschema/0 generated function (_lud)
[0.21.0] - 2026-07-05
๐ Bug Fixes
- Prevent infinite recursion in cross ref schemas (lud)
- [breaking] JSV.Resolver.Httpc security defaults (no redirects, TLS verification, private atomic cache, size/timeout limits) (lud)
- Bound regex backtracking cost in pattern and patternProperties matching (lud)
- Support dynamicAnchor in id-less root schemas and fail gracefully on malformed keywords (lud)
๐ Documentation
- Document internal resolver security considerations (lud)
๐งช Testing
- Updated JSON Schema Test Suite (lud)
- Updated JSON Schema Test Suite (lud)
[0.20.0] - 2026-06-26
๐ Features
- Removed NimbleOptions dependency and changed internal options to use maps (lud)
๐ Refactor
- Skip tracking casts and unevaluated paths when schemas do not need it (lud)
[0.19.6] - 2026-06-25
๐ Bug Fixes
- Support unicode general categories in pattern/patternProperties (lud)
๐งช Testing
- Updated JSON Schema Test Suite (lud)
[0.19.5] - 2026-06-15
๐ Bug Fixes
- Properly handle Draft-7 style anchor IDs (lud)
๐งช Testing
- Updated JSON Schema Test Suite (lud)
[0.19.4] - 2026-06-07
๐ Bug Fixes
- Fixed nested anchor resolution without root namespace (lud)
[0.19.3] - 2026-05-30
๐ Bug Fixes
- Allow module-based schemas in schema helpers typespecs (lud)
[0.19.2] - 2026-05-29
๐ Bug Fixes
- Make local resolver work on Windows (#95) (Ludovic Dem)
- Reject +/- prefixes on 'date' format (lud)
โ๏ธ Miscellaneous Tasks
- Updated JSON Schema test suite (lud)
- Fix compilation warnings for Elixir 1.20 (lud)
[0.19.1] - 2026-05-13
๐ Features
- Return better stacktraces in builder warnings (lud)
[0.19.0] - 2026-05-10
๐ Features
- [breaking] New cast system see https://hexdocs.pm/jsv/002-api-changes-v0-19.html (#90) (Ludovic Dem)
- [breaking] Converted schema presets to new cast system (lud)
- Added schema build warnings on atom casters (#91) (Ludovic Dem)
- Pass raw schema to casters at build time (lud)
- Added the aprops and arprops helpers to cast properties schemas to atom keys (lud)
- Removed the deprecated schema presets in JSV.Schema (lud)
- [breaking] Support Decimal 3.0 and drop support for Poison (lud)
๐ Bug Fixes
- MultipleOf with Decimal support (lud)
- Ignore examples keyword when scanning schema (lud)
- Nullable() will now add nil to enums (lud)
๐ Documentation
- Document buildkey usage with refs (_lud)
- Reference drop of Poison support in migration guide (lud)
โ๏ธ Miscellaneous Tasks
- Added roadmap section to readme (lud)
- Refactor of the JSON Schema test suite generators (lud)
- Simplify built-in casts output syntax (lud)
[0.18.3] - 2026-04-21
๐ Bug Fixes
- Fixed schema scanning around non-schemas like properties (lud)
- Allow to dereference numeric pointers from maps in refs (lud)
โ๏ธ Miscellaneous Tasks
- Updated JSON Schema Test Suite (lud)
[0.18.2] - 2026-04-19
๐ Bug Fixes
- Allow root $ref to resolve against root $id in Draft-7 (lud)
๐ Documentation
- Fixed documentation for httpc resolver (lud)
โ๏ธ Miscellaneous Tasks
- Updated JSON Schema test suite (lud)
[0.18.1] - 2026-04-08
๐ Features
- Return a BuildError instead of raising a RuntimeError for :invalidproperties (_Bruce Williams)
[0.18.0] - 2026-04-02
๐ Features
- [breaking] Removed support for deprecated schema/0 export from schema modules (lud)
[0.17.1] - 2026-03-19
๐ Bug Fixes
- Revert undesired regex compilation change (lud)
โ๏ธ Miscellaneous Tasks
- Relax idna version requirements (lud)
[0.17.0] - 2026-03-19
๐ Features
- New return type signature for custom error formatters (lud)
- [breaking] Read and consume module attributes for defschema/3 (lud)
๐งช Testing
- Upgraded JSON Schema Test Suite (lud)
โ๏ธ Miscellaneous Tasks
- Updated license to Apache-2.0 (lud)
[0.16.0] - 2026-01-20
๐ Features
- [breaking] Changed schema titles for JSV.KeywordError, JSV.ValidationError and JSV.ValidationUnit (lud)
[0.15.2] - 2026-01-19
๐ Bug Fixes
- Fixed type error on serialization optional values (lud)
[0.15.1] - 2026-01-06
๐ Features
- Added :asroot option for normalize_collect (_lud)
๐ Bug Fixes
- Do not add description to schema with defschema/3 if nil (lud)
[0.15.0] - 2026-01-06
๐ Features
- Added JSV.Schema.normalizecollect to generate self-contained schemas from modules (_lud)
- Added the nullable/1 schema helper (Jaden)
๐ Documentation
- Fixed docs for the optional helper (lud)
[0.14.0] - 2025-12-30
๐ Features
- Allow to use schema helpers with import JSV and defschema/3 (lud)
- Added json serialization skip option in optional() properties (lud)
[0.13.1] - 2025-11-26
๐ Bug Fixes
- Invalidate empty labels in hostname validation (lud)
[0.13.0] - 2025-11-25
๐ Features
- Relax additional properties in error schemas (lud)
- Support the @skipkeys attribute for structs created with defschema (_lud)
- New hostname validator based on :idna (new JSON Schema suite tests) (lud)
[0.12.0] - 2025-11-19
๐ Features
- Support normalizing structs into non-map values in the Normalizer (lud)
- Added support for collecting additionalProperties in structs (lud)
[0.11.5] - 2025-11-12
๐ Bug Fixes
- Relax Poison dependency version constraints (lud)
๐ Documentation
- Document function groups in main JSV module (lud)
[0.11.4] - 2025-10-23
๐ Bug Fixes
- Ignore all error values from Code.ensurecompiled (_lud)
[0.11.3] - 2025-10-23
๐ Bug Fixes
- Fixed module-based schema loading in Elixir 1.19 (lud)
[0.11.2] - 2025-10-13
๐ Documentation
- Fixed doc on schema preset helpers (lud)
[0.11.0] - 2025-09-16
๐ Features
- [breaking] ABNF parsers are now automatically enabled (lud)
๐งช Testing
- Updated JSON Schema Test Suite (lud)
โ๏ธ Miscellaneous Tasks
- Updated README.md (lud)
[0.10.1] - 2025-08-11
๐ Features
- Export required keys from generated struct modules (lud)
โ๏ธ Miscellaneous Tasks
- Fix JSON tests for elixir 1.17 (lud)
[0.10.0] - 2025-07-10
๐ Features
- Define and expect schema modules to export jsonschema/0 instead of schema/0 (_lud)
- Allow to call defschema with a list of properties (lud)
- Added the defschema/3 macro to define schemas as submodules (lud)
๐ Bug Fixes
- Ensure defschema with keyword syntax supports module-based properties (lud)
[0.9.0] - 2025-07-05
๐ Features
- Provide a schema representing normalized validation errors (lud)
- Deprecated the schema composition API in favor of presets (lud)
๐ Bug Fixes
- Emit a build error with empty oneOf/allOf/anyOf (lud)
- Reset errors when using a detached validator (lud)
- Ensure casts are applied after all validations (lud)
- Revert default normalized error to atoms (lud)
โ๏ธ Miscellaneous Tasks
- Define titles for normal validation error schemas (lud)
[0.8.1] - 2025-06-29
โ๏ธ Miscellaneous Tasks
- Export the localswithout_parens formatter opts for public macros (_lud)
[0.8.0] - 2025-06-23
๐ Features
- Declare formatting support from main JSON codec (lud)
- Added the JSV.validate! bang functions (lud)
- Added explicit error when a sub schema is not buildable (lud)
- Export JSV.resolverchain/1 for integration in 3rd parties (_lud)
- [breaking] Defschema does not automatically define $id anymore (lud)
- Added stringto_number and string_to_boolean casters (_lud)
- Return sub errors when oneOf has no matches (lud)
- Order sub-errors by ascending item index in array validation (lud)
- Added ability to build only a nested schema or multiple schemas (lud)
- Expose the map extensions helpers (lud)
- Added the prewalk traverse utility for schema normalization (lud)
- [breaking] Error normalizer will now sort error by instanceLocation (lud)
- [breaking] Changed caster tag of defschema to 0 (lud)
- Allow custom formats to validate other types than strings (lud)
- Provide a function to create reference from a list of path segments (lud)
๐ Bug Fixes
- Ensure keys are json-pointer encoded in instanceLoction in errors (lud)
- Return meaningful error for unknow keys in :required in defschema (lud)
- Fixed typespec on JSV.buildkey! (_lud)
- Fixed typespec and argument name in Builder.build! (lud)
๐ Refactor
- Renamed Schema.override/2 to Schema.merge/2 (lud)
- Defined different typespecs for normal schema and native schema (lud)
- Build error will now be raised with a proper stacktrace (lud)
- Removed useless accumulation of atoms when normalizing schemas (lud)
- [breaking] Changed order of arguments for Normalizer.normalize/3 (lud)
- Renamed buildroot to to_root as it is not building validators (_lud)
๐ Documentation
- Rework Decimal support limitations (lud)
๐งช Testing
- Verify that unknown formats are ignored when formats assertion is disabled (lud)
โ๏ธ Miscellaneous Tasks
- Clarify defschema error when no properties are given (lud)
- Fix warning when Poison.EncodeError is not defined (lud)
- Updated JSON Schema Test Suite (lud)
- Renamed keycast module attribute to jsvkeycast in defschema (_lud)
- Provide correct line/column in debanged functions (lud)
- Allow to customize Inspect for Builder and Resolver (lud)
- Fix Elixir 1.19 warnings (lud)
[0.7.2] - 2025-05-08
๐ Features
- Added the nonempty_string schema helper (_lud)
- Atom enums will use stringto_atom to support compile-time builds (_lud)
โ๏ธ Miscellaneous Tasks
- Updated JSON Schema Test Suite (lud)
- Enhanced JSTS updater (lud)
- Fixed warning on code when Decimal is missing (lud)
[0.7.1] - 2025-04-27
๐ Bug Fixes
- Fixed hex package definition (lud)
[0.7.0] - 2025-04-27
๐ Features
- Mailaddress dependency is no longer used (_lud)
- Validation support for Decimal (lud)
๐ Documentation
- Updated doc examples with generated code (lud)
๐งช Testing
- Enable tests for the 'uuid' format (lud)
- Enable tests for the 'hostname' format (lud)
- Enable tests for all uri/iri/pointer formats (lud)
โ๏ธ Miscellaneous Tasks
- Changed JSON schema test suite updater (lud)
[0.6.3] - 2025-04-13
โ๏ธ Miscellaneous Tasks
- Fix missing file in hex package breaking installs (lud)
[0.6.2] - 2025-04-13
๐ Features
- Added Jason/Poison/JSON encoder implementations for JSV.NValidationError (lud)
[0.6.1] - 2025-04-13
โ๏ธ Miscellaneous Tasks
- Use mixversion for release process (_lud)
[0.6.0] - 2025-04-13
๐ Features
- Resolvers do not need to normalize schemas anymore (lud)
- Added support to override existing vocabularies (lud)
- Schema definition helpers do not enforce a Schema struct anymore (lud)
- Provide a generic JSON normalizer for data and schemas (lud)
- Allow resolvers to mark schemas as normalized (lud)
- [breaking] Use jsv-cast keyword in schemas for struct and cast functions (lud)
๐ Bug Fixes
- Removed conversion to string in codec formatto_iodata (_lud)
๐ Documentation
- Fix documentation grammar and typos (lud)
- Organize docs sidebar in categories (lud)
โ๏ธ Miscellaneous Tasks
- Update Elixir Github workflow (#17) (Ludovic Dem)
- Use absolute path for JSTS ref file (lud)
[0.5.1] - 2025-03-28
๐ Bug Fixes
- Fixed compilation with Mix.install (lud)
โ๏ธ Miscellaneous Tasks
- Release v0.5.1 (lud)
[0.5.0] - 2025-03-25
๐ Features
- Added JSV.Resolver.Local to resolve disk stored schemas (lud)
- Special error format for additionalProperties:false (lud)
- Provide correct schemaLocation in all errors (lud)
- Added defschemafor to use different modules for schema and struct (_lud)
- Provide ordered JSON encoding with native JSON modules (lud)
๐ Bug Fixes
- Check presence of JSON module in CI (lud)
๐งช Testing
- Make JSON codecs easier to test (lud)
- Fixed assertions for JSON codec on old OTP versions (lud)
โ๏ธ Miscellaneous Tasks
- Refactored schema normalization (lud)
- Removed unused alias (lud)
- Use readmix to generate formats docs (lud)
[0.4.0] - 2025-02-08
๐ Features
- Support module-based schemas with structs (lud)
[0.3.0] - 2025-01-08
๐ Features
- Added a default resolver using static schemas (lud)
๐ Bug Fixes
- Upgrade abnfparsec to correctly parse IRIs and IRI references (_lud)
[0.2.0] - 2025-01-03
๐ Documentation
- Document atom conversion (lud)
- Document functions with doc and spec (lud)