Skip to content

Version 0.7.0 release - D City Rock

Choose a tag to compare

@kokic kokic released this 25 Feb 17:44

Commit range: c8a6794..7932e39

Highlights

  • Added kodama check as a no-side-effect validation command, including --strict mode.
  • serve moved further toward true incremental behavior with in-memory shallow cache reuse.
  • Added cache versioning and automatic invalidation for hash/entry caches.
  • Added kodama upgrade to migrate legacy config files into the current schema.
  • Output writes are more robust with atomic overwrite paths for main.css, kodama.json, and kodama.graph.json.

Behavior changes and migration notes

  • kodama snip --section now refreshes indexes in memory and no longer emits kodama.json by default.
  • Slug parsing now preserves dotted names unless the suffix is a known source extension (.md, .typst), fixing cases like a.b.
  • Include/embed/local-link URLs are normalized at parse stage, making relative and root-based references more consistent.
  • kodama check --strict treats warnings as failures.

Features and improvements

  • Added check command with graph validation and diagnostics output.
  • Added config upgrade command for schema migration and rewrite.
  • Improved parser pipeline with TextElaborator CJK tagging (lang="zh/ja/ko" defaults and split behavior).
  • Added and refined GFM alert blockquote rendering and styles.
  • Improved serve watch logs with duplicate-line folding and cleaner strategy injection points.
  • Improved Typst diagnostics with clearer typst-root hinting for missing input files.

Performance

  • serve keeps parsed shallows in memory between rebuilds to reduce repeated parse/load overhead.
  • serve avoids full HTML rewrite on assets-only changes.
  • main.css sync is content-aware and skips unchanged writes.
  • Watch log folding reduces repeated console noise during bursty file events.

Stability and error handling

  • Added cache version files and automatic stale-cache cleanup behavior.
  • check now surfaces Typst image elaboration failures and include file read failures as errors.
  • Artifact writing for JSON outputs now uses atomic temp-file + rename semantics.
  • Fixed mutable borrow conflict in the text elaborator iterator path.
  • Missing trees directory handling now returns an empty workspace in readonly scan mode instead of mixed skip/fail behavior.

Code organization and naming

  • Split compiler internals into focused modules (source_scan, incremental, serve_session, stale, artifacts).
  • Split serve implementation into watch/process submodules and extracted watch strategy helpers.
  • Split environment helpers into config/path/import/hash/cache modules.
  • Removed unused helpers such as serve_dir, build_dir, and output_html_path.
  • Simplified TextElaborator struct implementation by removing unnecessary lifetime parameters.

Testing and testability

  • Added regression tests for environment path/hash edge cases.
  • Added serve-watch tests for duplicate-log folding and path behavior.
  • Added readonly source-scan coverage for missing trees directory.
  • Added unit tests around artifact write/update behavior and parser pipeline changes.

Full commit list

  • 7932e39 refactor(text_elaborator): simplify struct implementation by removing lifetime parameters feat(environment): add is_build function to check build mode
  • caadb78 refactor: reorder imports and clean up whitespace in multiple files
  • 68bc50c refactor(paths): remove unused output_html_path helper
  • 9a90ff6 perf(serve): avoid full html rewrite for assets-only changes
  • 81ad9a5 refactor(artifacts): write json outputs atomically
  • b428278 fix(check): report include read failures as diagnostics
  • d9e623f test: add unit test for all_trees_source_readonly with missing trees directory
  • b134150 refactor(env): remove unused build_dir and serve_dir helpers
  • bf82f9b fix(check): fail on typst image elaboration errors
  • 3164910 feat(check): add no-side-effect validation command with strict diagnostics
  • abd24cb style(css): update blockquote alert labels for consistency and clarity
  • a4979e8 style(css): adjust alert blockquote border style for improved visibility
  • a79a9bc fix(css): add periods to alert blockquote labels for consistency
  • 555d429 style(css): update alert blockquote styles and consolidate color variables
  • 69b4f41 feat(build): sync main.css by content and atomically overwrite on changes
  • d973969 feat(parser): add alert styles for blockquotes and update test case with Japanese text
  • 3ba4af2 fix(parser): resolve mutable borrow conflict in TextElaborator iterator
  • f0cdfbf feat(parser): emit lang attributes for CJK spans with zh default
  • 674073d feat(parser): split CJK span classes by Han/Japanese/Korean
  • 79c1f87 feat(parser): add TextElaborator process for CJK span wrapping
  • 98ee808 fix(snip): update snippet prefix to include title and slug for better clarity
  • 0cf46b3 fix(snip): default missing taxon to empty description
  • e961585 fix(config_access): remove unused serve_dir export
  • 5f912d4 style: format code for improved readability and consistency
  • 8f0db02 feat(snip): refresh section indexes in memory without emitting kodama.json
  • 5f6d49f chore: bump version to 0.7.0 in Cargo.toml and Cargo.lock
  • 01ab806 fix(serve-watch): fold duplicate change logs across debounce batches
  • 91bd6ca fix(embed): normalize include/embed/local-link URLs at parse stage
  • 1588de3 feat(serve): keep in-memory shallow cache for incremental rebuilds
  • 3e3a3d3 feat(cache): add versioned cache invalidation for hash and entry
  • 5a305d1 refactor(serve): inject watch logging and debounce strategy
  • 4ecb1b7 test(environment): add path/hash edge-case regression coverage
  • 6dc23ec chore: bump version to 0.5.2 in Cargo.toml and Cargo.lock
  • cd8ec63 refactor(environment, parser): clean up public exports and enhance markdown options
  • cf22d0e refactor(environment): split config, path, import, and hash helpers
  • 24503f8 refactor(serve): split watch and process logic into submodules
  • 25c1fd5 refactor(compiler): split compiler internals into focused modules
  • 016a29f feat(serve): fold consecutive duplicate watch change logs
  • 113ae85 fix(cli): change rebuild failure message color to warning for user editing
  • 83dd0be fix(typst): hint typst-root when source file is missing
  • f53c66e chore: bump version to 0.5.1
  • cbfdf97 fix(slug): preserve dotted names without source extensions
  • a27cad2 feat(cli): add upgrade command for config migration
  • e647658 refactor(cli): enhance documentation for output control arguments and commands