Skip to content

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 31 Aug 03:50
· 46 commits to main since this release
v0.9.0
e56259c

Release Notes - Version 0.9.0

Release Date: August 31, 2026

Summary

This release introduces comprehensive directive completion and hover support across both the VS Code extension and Obsidian plugin, adds a versatile new divider standard component, and centralizes layout attributes as data within @markii/stdlib. It also fixes an issue where prose colons were incorrectly parsed as text directives, ensuring clean text handling for times, ratios, and key-value pairs.

Added

  • Directive completion and hover in both hosts: VS Code extension and Obsidian plugin; shared logic in the private host package. Typing an opener suggests component names in the forms the component's kind allows; inside the braces it suggests the component's attributes plus the reserved width and align, and enumerated values for attributes that have them. Accepting a name inserts the same skeleton the Insert command builds. VS Code also shows hover documentation for a directive name. Pack components complete by name and description; declaring kind in pack.json narrows which forms offer them.
  • A divider standard component (@markii/stdlib, @markii/react, @markii/html): a leaf directive for a section break that carries a label or a chosen look: ::divider, ::divider{label="Part 2" variant="dots"}. variant is one of line, dots, or ornament, defaulting to line when absent or unrecognized; label is optional and, when present, is centered in the break and also carried as the separator's aria-label. Both renderers emit the same mk-divider separator markup, so doc.css covers both, and the insert catalog, directive completion, and hover documentation pick it up from STANDARD_COMPONENTS automatically. A plain --- thematic break keeps its own CommonMark meaning and is untouched.
  • **@markii/stdlib: a neutral layout.ts**: exporting the docs/format.md layout system as data — LAYOUT_ATTRIBUTE_KEYS (width, align), WIDTH_PRESETS (normal, narrow, wide, full), ALIGN_PRESETS (left, center, right), and LAYOUT_ATTRIBUTES, the same two attributes expressed as AttributeSchemas so a tool that documents or completes attributes reads them exactly like a component's own. This is the one source both renderers' layout.ts now build their class maps from, replacing two independently hand-copied literals.

Changed

  • **@markii/react and @markii/html: the reserved layout-attribute keys and preset values now come from @markii/stdlib**: instead of a hand-copied literal in each renderer's own layout.ts. Each renderer's width/align class map is now derived mechanically from @markii/stdlib's preset lists (mk-width-<preset> for every width preset but normal, mk-align-<preset> for every align preset). No behavior change: the produced classes, the normal-is-classless rule, and the null-prototype defense against a hostile value are exactly as before.

Fixed

  • @markii/core: a prose colon no longer parses as a text directive: Previously any single colon could open a text directive, so a clock time (12:34), a Bible verse (John 3:16), a ratio (a:b), or a key:value pair was misread as a directive and every renderer showed an "unknown component" fallback box in the middle of an ordinary sentence. A text directive is now recognized only when its name starts with an ASCII letter and the colon sits at a word start (the start of the document, or preceded by anything other than an ASCII letter or digit). A colon that fails this rule is left as plain text, byte-identical to the source. Leaf (::) and container (:::) directives are unaffected, since they only ever occur at the start of a line.

Install

The renderer pulls the rest in as dependencies:

npm install @markii/react@0.9.0

All eight packages, if you want them explicitly:

npm install @markii/core@0.9.0
npm install @markii/stdlib@0.9.0
npm install @markii/bundle@0.9.0
npm install @markii/pack@0.9.0
npm install @markii/runtime@0.9.0
npm install @markii/lua@0.9.0
npm install @markii/react@0.9.0
npm install @markii/html@0.9.0

Downloads

The attached tarballs are the packed npm packages. The names are stable across releases, so the latest of each is always at a fixed URL:

https://github.com/markii-org/markii/releases/latest/download/markii-core.tgz
https://github.com/markii-org/markii/releases/latest/download/markii-stdlib.tgz
https://github.com/markii-org/markii/releases/latest/download/markii-bundle.tgz
https://github.com/markii-org/markii/releases/latest/download/markii-pack.tgz
https://github.com/markii-org/markii/releases/latest/download/markii-runtime.tgz
https://github.com/markii-org/markii/releases/latest/download/markii-lua.tgz
https://github.com/markii-org/markii/releases/latest/download/markii-react.tgz
https://github.com/markii-org/markii/releases/latest/download/markii-html.tgz