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)

[0.1.0] - 2025-01-01