Skip to content

Version 0.7.5 release - Stamina Rose

Choose a tag to compare

@kokic kokic released this 27 Feb 11:57

Commit range: e67d63e..3b43aa8

Highlights

  • Added Typst subtree support end-to-end, including parser extraction, generated section metadata, and kodama.typ helper APIs.
  • Improved serve watch behavior to reduce redundant rebuilds with better debounce batching and dirty-path invalidation scope.
  • Added subtree source tracking metadata (source-slug, source-pos) and editor-link position suffix support for VSCode-family URL schemes.
  • Hardened markdown pipeline around subtree/embed/link edge cases (shared references, empty paragraph cleanup, safe attribute escaping).

Behavior changes and migration notes

  • Typst subtree is now supported via kodama-subtree and #subtree(...) helper output in kodama.typ.
  • Typst subtree sections now carry source-slug metadata; edit-link generation can resolve source file ownership correctly.
  • Serve dirty-path strategy now treats direct typst source edits as local rebuilds, while typst dependencies still trigger broader invalidation.
  • Anonymous subtree nodes are excluded from TOC links and output as structural-only nodes.

Features and improvements

  • Added minimal Typst subtree section generation through direct embed construction.
  • Added kodama.typ subtree helper with option and metadata mapping support.
  • Expanded Typst metadata handling and compatibility with updated kodama.typ conventions.
  • Added --watch-stats in serve and improved flag visibility/aliases for watch diagnostics and snippet commands.
  • Added watch dirty-path classification stats and noise filtering for temp and directory events.
  • Added VSCode-family editor URL position suffix support for precise source navigation.

Performance

  • Serve watch batching now uses a trailing debounce window to collapse burst events into fewer rebuild runs.
  • Incremental invalidation no longer upgrades every .typst source change into “all typst sources dirty”.
  • Reduced repeated recompiles triggered by noisy watcher event streams across Linux and Windows.

Stability and error handling

  • Fixed broken local-link tooltip/title rendering caused by HTML content leakage.
  • Fixed link attribute escaping to prevent malformed HTML titles.
  • Fixed metadata parsing strategy for plain-text keys to avoid over-elaboration side effects.
  • Fixed embed pipeline buffering to keep inline HTML inside link-state content capture.

Code organization and naming

  • Refined subtree parsing flow for markdown and typst pipelines with clearer ownership metadata.
  • Removed unused serve-watch helper paths and tightened watch-side extension/source classification.
  • Bumped cache schema after subtree/paragraph cleanup changes to prevent stale artifact reuse.

Testing and testability

  • Added/updated subtree extraction and parsing tests (named and anonymous subtree behaviors).
  • Added watch debounce and dirty-path scope regression tests for incremental rebuild behavior.
  • Added tests for source metadata propagation and TOC exclusion behavior for anonymous subtree nodes.

Full commit list

  • 3b43aa8 feat(typst): update metadata structure and enhance compatibility with kodama.typ
  • 48bfce1 feat(typst): enhance metadata handling and add subtree support
  • f06ef75 fix(serve): reduce redundant rebuilds and typst over-invalidation
  • 2b49d90 fix(typst): set source-slug for subtree sections
  • f4627ef feat(typst): add subtree helper in kodama.typ
  • af251da feat(typst): add minimal subtree sections via direct embeds
  • c1a4f36 chore: fmt
  • fe43fa2 fix(writer): exclude anonymous subtree nodes from toc links
  • 941e8e7 fix(parser): share root reference defs with subtree parsing
  • a7393e9 fix(parser): drop empty paragraphs around embeds and bump cache schema
  • 1a1c1ab feat(edit-link): support vscode-family position suffix schemes
  • ecd20dd feat(parser): give anonymous subtree internal section structure
  • fdd94c4 feat(subtree): record source slug and source position metadata
  • 55075a5 fix(parser): constrain subtree slug to single relative component
  • 4e3ee1d fix(metadata): parse plain keys without markdown elaboration
  • a45d654 fix(state): use plain-text tooltip for local links
  • 85bbec1 fix(html): escape link attributes to prevent broken title markup
  • 0ed05d1 fix(embed): keep inline html inside link content buffers
  • 3819665 fix(snip): update link label formatting to support spaces in markdown
  • 4f3f277 feat(parser): enhance anonymous subtree handling and add tests for extraction refactor(html): remove unused inline-section template and related script
  • 1ecd0f5 Refactor Markdown Parsing and Source Management
  • 08d8afc feat(cli): change argument visibility for watch_stats and snippet commands to short form
  • dfe7bcc feat(serve): add --watch-stats flag for watch diagnostics
  • bee1073 refactor(serve-watch): remove unused compose_dirty_paths
  • c279d3a feat(serve-watch): filter noisy paths and print dirty change stats
  • ee61be5 chore: update version to 0.7.5 and fix image source in README