KSON v0.3.0 Release Notes¶
We are proud to release the next iteration in KSON's Beta, v0.3.0. This release consists of 63 pull requests grouped below by category. Some important themes to note in these changes are improved JSON Schema validation and IDE support, a new shared library designed to deliver KSON navigation and schema support to every KSON integration from one place, and improvements to KSON's embed block and its JSON-compatibility.
Syntax Changes (Breaking)¶
- #306 Syntax tweak: collapse embedMetadata into embedTag
- #309 KSON is JSON is KSON: fix embed tag handling
- #311 Syntax tweak: embed end-delimiter newline handling
Syntax Changes¶
Public Interface Changes (Breaking)¶
- #245 Get property by name from
KsonObject - #293 Pass extra context to
Kson.analyzeandSchemaValidator.validate - #322 Use a result type when constructing
EmbedRules - #338 Fix NumberFormatException for integers exceeding Int range
Public Interface Changes¶
- #243 Add
kson-tooling-lib - #295 Add
FormatOptionsto formatStringNodesasEmbedBlock's - #336 Add minLength to embed block rules
- #365 Migrate tooling diagnostics to public Kson API
- #413 Render Message, Result, and Position instances as readable text
Schema Validation¶
- #291 Improve JsonPointer navigation and add JsonPointerGlob (feature)
- #331 Accept embed blocks in Schema Draft7 meta schema (feature)
- #355 Improve schema validation error messages with actionable context (feature)
- #278 JSON Schema Validator improvements (fix)
- #324 Improve OneOfValidator error reporting (fix)
- #332 Update SchemaParser with embed block support (fix)
- #334 Resolve root $ref before navigating into schema nodes (fix)
- #377 Fix $ref resolution in schemas with root $id (fix)
- #380 Name anonymous combinator schemas by title or ref tail (fix)
- #398 Improve error message for subschema's with discriminator (fix)
Error Reporting and Diagnostics¶
- #397 Reject unquoted object keys that start with a digit or
-(feature) - #408 Improve invalid numbers/missing quotes errors (feature)
- #276 Improve duplicate key detection comparisons (fix)
- #286 Precise location reporting for sub-parsers (fix)
- #319 Stop ignoring parse errors in
parseToKson,parseToJsonandparseToYaml(fix) - #353 Harden error handling: eliminate silent failures in parser and schema validation (fix)
Formatting and Transpiling¶
- #285 fix bug in compact formatting (fix)
- #297 Embed escape fixes (fix)
- #298 Improve YAML transpiling for "simple" strings (fix)
- #304 Improve forward slash handling in transpiles (fix)
- #315 Fix renderKsonEmbedBlock for new end-%% syntax (fix)
- #382 Prevent formatter from throwing on malformed input with embed rules (fix)
- #396 Honor Monaco and VS Code editor indentation when formatting (fix)
Schema-Aware Editing¶
- #244 improve VS Code plugin with schema's, hover, and completions (feature)
- #247 Jump to definitions (feature)
- #248 Associate schemas with files (feature)
- #283 expand oneOf/anyOf/allOf combinators and filter completions by context (feature)
- #310 Add bundled schema support to LSP server and VS Code client (feature)
- #399 Schema-aware navigation: document-driven branch narrowing (feature)
- #358 Fix schema completion and $ref resolution for anyOf/oneOf schemas (fix)
- #373 Fix hover docs missing for embed block descriptions (fix)
Editor Experience (VS Code and LSP)¶
- #272 add jinja template in embed blocks (feature)
- #294 configure file extensions from package.json (feature)
- #342 Improve VS Code and LSP (feature)
- #374 Walk AST instead of token stream for folding ranges (feature)
- #296 shorten vscode path (fix)
- #346 Move LSP feature logic into kson-tooling with shared parse via ToolingDocument (fix)
- #361 Thread filepath through ToolingDocument to Sourcecontext (fix)
- #372 Route all TextDocument parses through parseTextDocument helper (fix)
- #414 Fix embed block language matching (fix)
Web Embedding (Monaco)¶
- #343 Replace monaco-languageclient with lightweight LSP bridge and add iframe embedding (feature)
- #385 Refcounted registering, improved demo's and react integration (feature)
- #376 Harden iframe embed: suppress setValue echo + stabilize Playwright tests (fix)
JetBrains Plugin¶
- #367 Remove pluginUntilBuild and handle 2025.3 artifact rename (fix)
- #368 Cache IFileElementType to prevent IElementType registry overflow (fix)
Command Line Interface¶
Build, Packaging, and Platform Support¶
- #246 Switch from Kotlin/Native to GraalVM and Krossover (fix)
- #326 Fix platform-agnostic native artifact check in build backend (fix)
- #404 Make a fresh clone build on Windows (fix)
Full Change List¶
For the complete, unfiltered list of pull requests merged in this release, including internal tooling, CI, and dependency maintenance, see the full list.
Contributors¶
Thanks to everyone who contributed to this release: Bart Dubbeldam, Daniel Marcotte, Adolfo OchagavĂa, Joe Pollard, Mark Marcotte, and Elvis Kahoro.