CHANGELOG.md
# Changelog
All notable changes to this project will be documented in this file.
## [0.10.1] - 2025-08-11
### ๐ Features
- Export required keys from generated struct modules
### โ๏ธ Miscellaneous Tasks
- Fix JSON tests for elixir 1.17
## [0.10.0] - 2025-07-10
### ๐ Features
- Define and expect schema modules to export json_schema/0 instead of schema/0
- Allow to call defschema with a list of properties
- Added the defschema/3 macro to define schemas as submodules
### ๐ Bug Fixes
- Ensure defschema with keyword syntax supports module-based properties
## [0.9.0] - 2025-07-05
### ๐ Features
- Provide a schema representing normalized validation errors
- Deprecated the schema composition API in favor of presets
### ๐ Bug Fixes
- Emit a build error with empty oneOf/allOf/anyOf
- Reset errors when using a detached validator
- Ensure casts are applied after all validations
- Revert default normalized error to atoms
### โ๏ธ Miscellaneous Tasks
- Define titles for normal validation error schemas
## [0.8.1] - 2025-06-29
### โ๏ธ Miscellaneous Tasks
- Export the locals_without_parens formatter opts for public macros
## [0.8.0] - 2025-06-23
### ๐ Features
- Declare formatting support from main JSON codec
- Added the JSV.validate! bang functions
- Added explicit error when a sub schema is not buildable
- Export JSV.resolver_chain/1 for integration in 3rd parties
- [**breaking**] Defschema does not automatically define $id anymore
- Added string_to_number and string_to_boolean casters
- Return sub errors when oneOf has no matches
- Order sub-errors by ascending item index in array validation
- Added ability to build only a nested schema or multiple schemas
- Expose the map extensions helpers
- Added the prewalk traverse utility for schema normalization
- [**breaking**] Error normalizer will now sort error by instanceLocation
- [**breaking**] Changed caster tag of defschema to 0
- Allow custom formats to validate other types than strings
- Provide a function to create reference from a list of path segments
### ๐ Bug Fixes
- Ensure keys are json-pointer encoded in instanceLoction in errors
- Return meaningful error for unknow keys in :required in defschema
- Fixed typespec on JSV.build_key!
- Fixed typespec and argument name in Builder.build!
### ๐ Refactor
- Renamed Schema.override/2 to Schema.merge/2
- Defined different typespecs for normal schema and native schema
- Build error will now be raised with a proper stacktrace
- Removed useless accumulation of atoms when normalizing schemas
- [**breaking**] Changed order of arguments for Normalizer.normalize/3
- Renamed build_root to to_root as it is not building validators
### ๐ Documentation
- Rework Decimal support limitations
### ๐งช Testing
- Verify that unknown formats are ignored when formats assertion is disabled
### โ๏ธ Miscellaneous Tasks
- Clarify defschema error when no properties are given
- Fix warning when Poison.EncodeError is not defined
- Updated JSON Schema Test Suite
- Renamed keycast module attribute to jsv_keycast in defschema
- Provide correct line/column in debanged functions
- Allow to customize Inspect for Builder and Resolver
- Fix Elixir 1.19 warnings
## [0.7.2] - 2025-05-08
### ๐ Features
- Added the non_empty_string schema helper
- Atom enums will use string_to_atom to support compile-time builds
### โ๏ธ Miscellaneous Tasks
- Updated JSON Schema Test Suite
- Enhanced JSTS updater
- Fixed warning on code when Decimal is missing
## [0.7.1] - 2025-04-27
### ๐ Bug Fixes
- Fixed hex package definition
## [0.7.0] - 2025-04-27
### ๐ Features
- Mail_address dependency is no longer used
- Validation support for Decimal
### ๐ Documentation
- Updated doc examples with generated code
### ๐งช Testing
- Enable tests for the 'uuid' format
- Enable tests for the 'hostname' format
- Enable tests for all uri/iri/pointer formats
### โ๏ธ Miscellaneous Tasks
- Changed JSON schema test suite updater
## [0.6.3] - 2025-04-13
### โ๏ธ Miscellaneous Tasks
- Fix missing file in hex package breaking installs
## [0.6.2] - 2025-04-13
### ๐ Features
- Added Jason/Poison/JSON encoder implementations for JSV.NValidationError
## [0.6.1] - 2025-04-13
### โ๏ธ Miscellaneous Tasks
- Use mix_version for release process
## [0.6.0] - 2025-04-13
### ๐ Features
- Resolvers do not need to normalize schemas anymore
- Added support to override existing vocabularies
- Schema definition helpers do not enforce a Schema struct anymore
- Provide a generic JSON normalizer for data and schemas
- Allow resolvers to mark schemas as normalized
- [**breaking**] Use jsv-cast keyword in schemas for struct and cast functions
### ๐ Bug Fixes
- Removed conversion to string in codec format_to_iodata
### ๐ Documentation
- Fix documentation grammar and typos
- Organize docs sidebar in categories
### โ๏ธ Miscellaneous Tasks
- Update Elixir Github workflow (#17)
- Use absolute path for JSTS ref file
## [0.5.1] - 2025-03-28
### ๐ Bug Fixes
- Fixed compilation with Mix.install
### โ๏ธ Miscellaneous Tasks
- Release v0.5.1
## [0.5.0] - 2025-03-25
### ๐ Features
- Added JSV.Resolver.Local to resolve disk stored schemas
- Special error format for additionalProperties:false
- Provide correct schemaLocation in all errors
- Added defschema_for to use different modules for schema and struct
- Provide ordered JSON encoding with native JSON modules
### ๐ Bug Fixes
- Check presence of JSON module in CI
### ๐งช Testing
- Make JSON codecs easier to test
- Fixed assertions for JSON codec on old OTP versions
### โ๏ธ Miscellaneous Tasks
- Refactored schema normalization
- Removed unused alias
- Use readmix to generate formats docs
## [0.4.0] - 2025-02-08
### ๐ Features
- Support module-based schemas with structs
## [0.3.0] - 2025-01-08
### ๐ Features
- Added a default resolver using static schemas
### ๐ Bug Fixes
- Upgrade abnf_parsec to correctly parse IRIs and IRI references
## [0.2.0] - 2025-01-03
### ๐ Documentation
- Document atom conversion
- Document functions with doc and spec
## [0.1.0] - 2025-01-01
<!-- generated by git-cliff -->