All notable changes to the Sigil spec will be documented here. Follows Keep a Changelog and Semantic Versioning.
- Document header now accepts arbitrary
key: valuemetadata fields (e.g.asof:,x-user:,x-project:); parsers preserve them inheader.meta - Header field keys may contain hyphens (
[a-z][a-z0-9_-]*)
- SPEC.md: section flatness rule now includes explicit before/after examples and alternatives
- SPEC.md: open header fields documented with examples
- Code fence tracking — lines inside
```fences (including# comments) are no longer misclassified as Sigil block sigils - Content indentation — multi-line block content now preserves relative indentation through parse and serialize
- Example labels —
~ example: labelcorrectly roundtrips; theexample:prefix was previously stripped during parsing - Serializer:
/ counter,! warn,* fact,?,$ stepblocks with multi-line content now indent continuation lines correctly - Serializer:
^ contextcontinuation lines now indent one level deeper than the sigil line
- Conformance test suite (
tests/conformance/) — 20 cases covering every block type, all annotation keys, all reference relationship types, and key error conditions make conformtarget — builds the reference impl and runs the full conformance suitesigil-langpublished to npm
- README updated with install instructions, CLI reference, and API quickstart
- Reference implementation (
reference-impl/) published as thesigil-langnpm package parse(input, options)— tokenizer + AST builder with strict and lenient modesvalidate(doc)— full spec rule enforcement: doctypes, warn/counter labels, annotation value constraints, reference relationship typesserialize(doc, options)— AST to.sgltext, roundtrip-safe with configurable indent sizefromMarkdown(md)/toMarkdown(doc)— best-effort converters between Sigil and Markdown- Typed error classes:
SigilParseError,SigilValidationError,SigilSerializationError - Formal PEG grammar (
grammar.peggy) for annotation and reference sub-expressions - 79 tests across parser, validator, serializer, and converter modules
- TypeScript 5.9, ESLint 10, Prettier 3.8, Vitest 4 toolchain
Initial spec release.
- Document header (
%%) with 13 doctypes, semver versioning, and queryable metadata fields - Block type vocabulary — 18 block types across 11 sigils
- Three warning severity levels:
! note,! warn,!! critical - Conditional blocks:
$ if,$ else if,$ else(one level of nesting) - Inline annotations:
{confidence:},{asof:},{status:},{source:},{lang:}andx-custom keys - Typed references (
->) with 6 relationship types andx-custom types - Indentation rules: 2-space strict, with strict and lenient parser modes
- Two annotated example documents in
examples/