Version 0.7.0 release - D City Rock
Commit range: c8a6794..7932e39
Highlights
- Added
kodama checkas a no-side-effect validation command, including--strictmode. servemoved further toward true incremental behavior with in-memory shallow cache reuse.- Added cache versioning and automatic invalidation for hash/entry caches.
- Added
kodama upgradeto migrate legacy config files into the current schema. - Output writes are more robust with atomic overwrite paths for
main.css,kodama.json, andkodama.graph.json.
Behavior changes and migration notes
kodama snip --sectionnow refreshes indexes in memory and no longer emitskodama.jsonby default.- Slug parsing now preserves dotted names unless the suffix is a known source extension (
.md,.typst), fixing cases likea.b. - Include/embed/local-link URLs are normalized at parse stage, making relative and root-based references more consistent.
kodama check --stricttreats warnings as failures.
Features and improvements
- Added
checkcommand with graph validation and diagnostics output. - Added config
upgradecommand for schema migration and rewrite. - Improved parser pipeline with
TextElaboratorCJK 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-roothinting for missing input files.
Performance
servekeeps parsed shallows in memory between rebuilds to reduce repeated parse/load overhead.serveavoids full HTML rewrite on assets-only changes.main.csssync 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.
checknow 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, andoutput_html_path. - Simplified
TextElaboratorstruct 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
7932e39refactor(text_elaborator): simplify struct implementation by removing lifetime parameters feat(environment): add is_build function to check build modecaadb78refactor: reorder imports and clean up whitespace in multiple files68bc50crefactor(paths): remove unused output_html_path helper9a90ff6perf(serve): avoid full html rewrite for assets-only changes81ad9a5refactor(artifacts): write json outputs atomicallyb428278fix(check): report include read failures as diagnosticsd9e623ftest: add unit test for all_trees_source_readonly with missing trees directoryb134150refactor(env): remove unused build_dir and serve_dir helpersbf82f9bfix(check): fail on typst image elaboration errors3164910feat(check): add no-side-effect validation command with strict diagnosticsabd24cbstyle(css): update blockquote alert labels for consistency and claritya4979e8style(css): adjust alert blockquote border style for improved visibilitya79a9bcfix(css): add periods to alert blockquote labels for consistency555d429style(css): update alert blockquote styles and consolidate color variables69b4f41feat(build): sync main.css by content and atomically overwrite on changesd973969feat(parser): add alert styles for blockquotes and update test case with Japanese text3ba4af2fix(parser): resolve mutable borrow conflict in TextElaborator iteratorf0cdfbffeat(parser): emit lang attributes for CJK spans with zh default674073dfeat(parser): split CJK span classes by Han/Japanese/Korean79c1f87feat(parser): add TextElaborator process for CJK span wrapping98ee808fix(snip): update snippet prefix to include title and slug for better clarity0cf46b3fix(snip): default missing taxon to empty descriptione961585fix(config_access): remove unused serve_dir export5f912d4style: format code for improved readability and consistency8f0db02feat(snip): refresh section indexes in memory without emitting kodama.json5f6d49fchore: bump version to 0.7.0 in Cargo.toml and Cargo.lock01ab806fix(serve-watch): fold duplicate change logs across debounce batches91bd6cafix(embed): normalize include/embed/local-link URLs at parse stage1588de3feat(serve): keep in-memory shallow cache for incremental rebuilds3e3a3d3feat(cache): add versioned cache invalidation for hash and entry5a305d1refactor(serve): inject watch logging and debounce strategy4ecb1b7test(environment): add path/hash edge-case regression coverage6dc23ecchore: bump version to 0.5.2 in Cargo.toml and Cargo.lockcd8ec63refactor(environment, parser): clean up public exports and enhance markdown optionscf22d0erefactor(environment): split config, path, import, and hash helpers24503f8refactor(serve): split watch and process logic into submodules25c1fd5refactor(compiler): split compiler internals into focused modules016a29ffeat(serve): fold consecutive duplicate watch change logs113ae85fix(cli): change rebuild failure message color to warning for user editing83dd0befix(typst): hint typst-root when source file is missingf53c66echore: bump version to 0.5.1cbfdf97fix(slug): preserve dotted names without source extensionsa27cad2feat(cli): add upgrade command for config migratione647658refactor(cli): enhance documentation for output control arguments and commands