All notable changes to this project are documented here.
No unreleased changes.
This release publishes the finalized 1.0 public API artifact after the npm
1.0.0 package had already been published.
The current package keeps the same core concept set, but its published surface
now matches the locked 1.0 API: relative insert/move targets, payload-only
document paste, exported edit target/result types, strict: false default
execution policy, reasoned undo/redo command results, and the finalized
result/error contract.
- Added lab
@interactive-os/json-document-grid-rangeto delegate rectangular grid paste/fill planning over sparse JSON records while hosts own coordinate naming and parsing. - Added lab
@interactive-os/json-document-sparse-recordto delegate sparse JSON record entry add/replace/remove/no-op patch planning across one or more record roots. - Added
@interactive-os/json-document-id-resolveras an official headless extension for resolving scoped stable ids to current JSON Pointers. - Added
@interactive-os/json-document-patch-previewas an official headless extension for previewing schema-safe JSON Patch changes before applying them. - Added
@interactive-os/json-document-search-replaceas an official headless extension for searching and replacing JSON string fields. - Added
@interactive-os/json-document-proposed-changesas an official headless extension for reviewing, accepting, and rejecting proposed JSON Patch changes. - Added
@interactive-os/json-document-commentsas an official headless extension for review comments anchored to JSON Pointers. - Added
@interactive-os/json-document-form-draftas an official headless extension for keeping temporary invalid input outside schema-valid JSON documents until commit. - Added
@interactive-os/json-document-protected-rangesas an official headless extension for guarding edits to locked JSON Pointer ranges before core capability checks. - Added
@interactive-os/json-document-snippetsas an official headless extension for inserting reusable JSON payload snippets through schema-safe paste.
- Changed lab
@interactive-os/json-document-grid-rangefill to accept a host-ownedgenerateFillIntenthook so products can preserve arithmetic/date/formula series semantics while json-document owns sparse record application. - Clarified the
@interactive-os/json-document-search-replacedelegation boundary: literal JSON string-field find/replace is standardized, while regex engines, rendered text extraction, advanced search ranking, and regex replace-all capture policy remain host-owned. - Renamed lab extension packages toward common editor command names:
batch-settobatch-update,clear-valuestoclear-contents,coercetoconvert-type,collection-sorttosort-items,computed-fieldstocalculated-fields,convert-node-kindtoconvert-block-type,cycletotoggle-value,ensure-fieldstoapply-defaults,fill-emptytofill-blanks,forward-filltofill-down,grid-pastetopaste-cells,limittolimit-items,move-selectiontomove-selected,number-steptoincrement-number,padtopad-text,paste-compatibletopaste-special,presence-cursorstolive-cursors,reindextorenumber-items,set-membershiptotoggle-option,slugifytogenerate-slug,swaptoswap-items,text-transformtochange-case,truncatetotrim-text, andwrap-unwraptowrap-selection. - Changed the default document execution error policy to
strict: false. Callers that wantJSONDocumentErrorthrows now opt in withstrict: true. - Changed top-level
doc.undo()anddoc.redo()to returnJSONCapabilityResultinstead of boolean so command execution follows the samecan* -> command -> resultshape. - Changed clipboard, paste, duplicate, web clipboard, and persistence failure
diagnostics to use
reasoninstead of result-levelmessage. Validationviolations[].messageand JavaScriptError.messageremain unchanged.
- Added lab extension runtime import smoke coverage so generated
distartifacts cannot contain invalid JavaScript identifiers after feature renames. - Clarified clipboard spread docs: multi-source clipboard buffer paste spreads
by default at array insertion targets, while direct array payload insert uses
explicit
spread: true. - Added semantic contract references for result/error, selection, and schema introspection to LLM-facing docs.
- Added the stable document facade for schema-guarded JSON editing:
find,insert,replace,delete,move,duplicate,copy,cut,paste,undo, andredo. - Added matching
can*probes for the document editing verbs so command UIs can show disabled reasons without mutating state. - Added selection-backed defaults for editing verbs where the source or target is naturally the current selection.
- Added
@interactive-os/json-document/reactas the React adapter entrypoint for the sameJSONDocumentsurface. - Added extension-lab packages to test whether core concepts can support annotation anchors, autosave, checkpoints, clipboard, persistence, dirty state, schema forms, presence cursors, patch logs, bulk editing, computed fields, collection sorting, document diffs, document outlines, field drafts, patch previews, Pointer bookmarks, document-wide text search, and drag/drop intents without expanding the core API.
- Added
@interactive-os/json-document-clipboard-webas a browser clipboard extension boundary. - Added
@interactive-os/json-document-collectionas the first official collection editing extension for ordered JSON arrays. - Added
@interactive-os/json-document-schema-formas an official schema-backed field descriptor extension. - Added
@interactive-os/json-document-dirty-stateas an official clean-baseline dirty tracking extension. - Added
@interactive-os/json-document-bulk-editas an official JSONPath replace-all/delete-all extension. - Added
@interactive-os/json-document-patch-logas an official applied-patch recording and replay extension. - Added
@interactive-os/json-document-persist-webas an official local document persistence extension for browser storage-like hosts. - Added deterministic
persist-web.watch().flush()/status()affordances for downstream integration tests. - Added optional
bulk-editcommand metadata forwarding for labeled replace-all and delete-all changes. - Added standardization checks, public conformance tests, and API Lab coverage for the public facade.
- Promoted editor feature verbs to the primary document surface while keeping
JSON Patch through
patchandcommitas the explicit escape hatch. - Standardized document command names around common editing-tool vocabulary: Insert, Delete, Find, Replace, Cut, Copy, Paste, Duplicate, Move, Undo, Redo.
- Standardized docs around the outside-in flow:
schema -> document -> pointer/query -> can* -> change -> result. - Moved browser/system clipboard responsibility out of core and into extension composition.
- Updated Workbench/API Lab to expose the public facade directly instead of teaching nested internal paths first.
- Kept React lifecycle concerns in
@interactive-os/json-document/react; the root package remains headless and React-free.
- Aligned
duplicate()withcanDuplicate()so both can use the current primary selection when the source pointer is omitted. - Removed stale documentation references that presented nested clipboard methods as the primary mutation surface.
- Aligned extension docs with shipped packages and kept lab candidates out of the official extension list.
- Core owns JSON state, JSON Pointer, JSON Patch, JSONPath search, schema validation, headless selection, headless clipboard payload flow, undo/redo history, and reasoned capability probes.
- Core does not own rendering, DOM focus, keyboard policy, drag and drop, command palette UI, system clipboard integration, persistence, transport, CRDT/OT conflict resolution, or product-specific command names.