Changelog
Synced from GitHub Releases.
-
v0.3.0 Adds a built-in JSON Schema vocabulary to skema. Schemas whose config type is JsonSpec now render to a full JSON Schema document with no mapper required, and schemas with their own config types can opt in per entry through the mapper overload.
- feat: add the JsonSpec sealed type covering JSON Schema draft 2020-12.
- feat: add primitive variants Bool, Null, Int, Long, Num, Str, Enum, and Const.
- feat: support numeric bounds: min, max, exclusiveMin, exclusiveMax, and multipleOf.
- feat: support string bounds: minLength, maxLength, pattern, and format.
- feat: add compound variants Array and Object with full per-spec configuration.
- feat: add composition operators OneOf, AnyOf, AllOf, and Not.
- feat: add the Nullable wrapper as sugar for spec-or-null.
- feat: add IfThenElse for conditional schemas.
- feat: add the Ref variant and a defs parameter on toJsonSchema for root-level definitions.
- feat: add the Annotated wrapper for title, description, default, examples, deprecated, readOnly, writeOnly, and comment.
- feat: add the toJsonSchema extension on SchemaDef returning a draft 2020-12 document.
Full Changelog: https://github.com/Eignex/skema/compare/v0.2.0...v0.3.0
-
v0.2.0 Improves Java interop on the SchemaDef extension functions, refreshes the toolchain, and adds KDoc across the public API.
- feat: improve Java interop on the SchemaDef extension functions.
- docs: add KDoc to public Schema, SchemaDef, and SchemaDiff members.
- chore: use kotlinx-serialization pinned by the KMP plugin.
- chore: drop the deprecated macosX64 target.
- chore: bump KMP to 1.2.1 and Gradle to 9.5.1.
- chore: bump kbuild to 1.1.5 and run lintDocs in CI.
Full Changelog: https://github.com/Eignex/skema/compare/v0.1.1...v0.2.0
-
v0.1.1 Patch release fixing inline-function visibility so the register helper works from outside the module.
- fix: route register's inlined add through a @PublishedApi internal.
Full Changelog: https://github.com/Eignex/skema/compare/v0.1.0...v0.1.1
-
v0.1.0 Initial release of skema, a Kotlin Multiplatform library for schemas that work as both typed Kotlin code and serialized wire data, with the same definition surface serving compile-time access on the producer and runtime by-name decoding on the consumer.
- feat: provide Schema<C> with assignment (
val flag = bool("flag")) and delegate (val flag by bool()) declarators. - feat: add SchemaDef<C> as a Map<String, C>-keyed wire wrapper.
- feat: pin the
$typediscriminator and suppress defaults via SchemaJson. - feat: add SchemaDef.diff for per-entry change detection.
- feat: add SchemaDef.plus and namespaced for plugin-style composition with strict overlap checking.
- feat: target JVM, JS, WasmJs, WasmWasi, and native via Kotlin Multiplatform.
Full Changelog: https://github.com/Eignex/skema/compare/913a66b...v0.1.0
- feat: provide Schema<C> with assignment (