Skip to content

Version 0.8.0 release - Ga1ahad and Scientific Witchery

Choose a tag to compare

@kokic kokic released this 14 Mar 11:24

Highlights

  • Unified anonymous subtree slug management across markdown and Typst pipelines with shared compiler modules.
  • Added hash-anchor navigation for internal anonymous subtree entries in catalog/TOC, avoiding dead page jumps.
  • Added header hash anchor ([#]) support when slug text is hidden.
  • Standardized anonymous subtree ordinal initialization to start from 1 for clearer catalog numbering alignment.
  • Preserved anonymous subtree hash-id suffix semantics for stable in-page anchor resolution.
  • Refined dependency feature flags and CLI help dependency wiring.

Behavior changes and migration notes

  • Anonymous subtree slugs now consistently start at :1 (instead of :0) in both markdown and Typst extraction flows.
  • Internal anonymous subtree catalog bullets now target in-page hash anchors (#...) instead of standalone page URLs.
  • Header rendering now appends [#] hash links when show_slug is disabled.
  • Hash-id generation preserves anonymous suffix formatting for slugs like {source_slug}/:{ordinal} (for example book/index/:1 -> book-index:1).
  • Subtree slug validation and duplicate diagnostics are now emitted through shared slug-resolution utilities with clearer error messages.

Features and improvements

  • Added dedicated anonymous_slug state management for collision-safe anonymous slug allocation.
  • Added dedicated subtree_slug utilities for subtree slug resolution and uniqueness checks.
  • Improved markdown nested subtree extraction flow with explicit root/nested extraction paths.
  • Improved catalog item rendering API to support hash-link mode for structural anonymous nodes.
  • Updated featured Typst demo subtree declaration to use semantic helper syntax (#exegesis(...)).

Performance

  • Simplified compile-time slug cleanup/generation paths by removing redundant cleanup branches.
  • Reduced duplicate filesystem cleanup work in compiler stale/output handling paths.

Stability and error handling

  • Improved anonymous subtree collision handling with source-slug-based allocation and consistent ordinal state.
  • Improved duplicate subtree slug diagnostics by distinguishing subtree kinds (subtree vs typst subtree).
  • Updated dependency graph and feature flags (including clap help support) for more reliable CLI behavior.

Code organization and naming

  • Split anonymous slug logic into compiler/anonymous_slug.rs.
  • Split subtree slug resolution/validation into compiler/subtree_slug.rs.
  • Refined parser subtree extraction naming (extract_subtrees_root / extract_subtrees_nested) and data flow.
  • Cleaned anonymous slug import usage and documented ordinal-initial constant intent.

Testing and testability

  • Added hash-id regression coverage for anonymous suffix separator preservation.
  • Added header rendering test coverage for hash anchor output when slug link is hidden.
  • Added/updated writer tests to verify TOC hash-link behavior for internal anonymous subtrees.
  • Updated parser/Typst subtree tests to align with ANON_SUBTREE_ORDINAL_INITIAL semantics.