Version 0.7.5 release - Stamina Rose
Commit range: e67d63e..3b43aa8
Highlights
- Added Typst subtree support end-to-end, including parser extraction, generated section metadata, and
kodama.typhelper 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-subtreeand#subtree(...)helper output inkodama.typ. - Typst subtree sections now carry
source-slugmetadata; 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.typsubtree helper with option and metadata mapping support. - Expanded Typst metadata handling and compatibility with updated
kodama.typconventions. - Added
--watch-statsinserveand 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
.typstsource 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
3b43aa8feat(typst): update metadata structure and enhance compatibility with kodama.typ48bfce1feat(typst): enhance metadata handling and add subtree supportf06ef75fix(serve): reduce redundant rebuilds and typst over-invalidation2b49d90fix(typst): set source-slug for subtree sectionsf4627effeat(typst): add subtree helper in kodama.typaf251dafeat(typst): add minimal subtree sections via direct embedsc1a4f36chore: fmtfe43fa2fix(writer): exclude anonymous subtree nodes from toc links941e8e7fix(parser): share root reference defs with subtree parsinga7393e9fix(parser): drop empty paragraphs around embeds and bump cache schema1a1c1abfeat(edit-link): support vscode-family position suffix schemesecd20ddfeat(parser): give anonymous subtree internal section structurefdd94c4feat(subtree): record source slug and source position metadata55075a5fix(parser): constrain subtree slug to single relative component4e3ee1dfix(metadata): parse plain keys without markdown elaborationa45d654fix(state): use plain-text tooltip for local links85bbec1fix(html): escape link attributes to prevent broken title markup0ed05d1fix(embed): keep inline html inside link content buffers3819665fix(snip): update link label formatting to support spaces in markdown4f3f277feat(parser): enhance anonymous subtree handling and add tests for extraction refactor(html): remove unused inline-section template and related script1ecd0f5Refactor Markdown Parsing and Source Management08d8afcfeat(cli): change argument visibility for watch_stats and snippet commands to short formdfe7bccfeat(serve): add --watch-stats flag for watch diagnosticsbee1073refactor(serve-watch): remove unused compose_dirty_pathsc279d3afeat(serve-watch): filter noisy paths and print dirty change statsee61be5chore: update version to 0.7.5 and fix image source in README