Releases: kodama-community/kodama
Releases · kodama-community/kodama
Release list
Version 1.0.1 release - BRIGHT STREAM
Highlights
- Added
--no-serverand--print-jsonflags toservecommand for headless watch-only workflows and editor integrations. - Fixed Typst HTML parsing to correctly handle
<html>tags with attributes (e.g.<html lang="en">).
Behavior changes and migration notes
--print-jsonrequires--no-server; the combination emits line-delimited JSON events (ready,rebuilt) on stdout for machine consumption.- When
--print-jsonis active, terminal escape sequences and watch status messages are suppressed to keep stdout clean.
Features and improvements
- Added
--no-serverflag: builds and watches but does not spawn the static server process. - Added
--print-jsonflag: outputs structured JSON events for editor/tooling integration. - Watch runtime now accepts a
quietparameter to suppress watch-path display and batch-change logging when JSON output is active.
Stability and error handling
- Fixed
<html>tag detection to find tag boundaries using attribute-aware parsing instead of exact string match on<html>. - Added test coverage for
html_to_body_contentwith HTML attributes on the root element.
Full commit list
8d740fdfix: parse typst html output with html attributes6a827c8feat: serveno_server&print_json
Version 1.0.0 release - forest
v1.0.0 refactor: adjust the architecture and naming
Version 0.9.9 delta
v0.9.9-delta feat: add theme-lock configuration option and implement dynamic CSS a…
Version 0.9.9 gamma
Refactor HTML figure generation in Typst - Updated the `kodama.typ` file to improve the structure of the `with-target-check` function, enhancing readability and maintainability. - Modified the CSS in `main.css` to ensure consistent styling across various elements, including updates to class names and styles for better alignment with design specifications. - Changed the image handling in `typst_image.rs` by renaming the `html_figure` function to `html_typst_figure` for clarity and consistency in the codebase.
Version 0.9.9 beta
v0.9.9-beta fix: update theme-options pseudo-elements to only display when not empty
Version 0.9.9 alpha
v0.9.9-alpha feat: add support for multiple section formats and improve section pa…
Version 0.8.0 release - Ga1ahad and Scientific Witchery
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
1for 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 whenshow_slugis disabled. - Hash-id generation preserves anonymous suffix formatting for slugs like
{source_slug}/:{ordinal}(for examplebook/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_slugstate management for collision-safe anonymous slug allocation. - Added dedicated
subtree_slugutilities 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 (
subtreevstypst 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_INITIALsemantics.
Version 0.7.9 release - 霞光
Highlights
- Added nested markdown subtree extraction and strengthened anonymous subtree slug handling to avoid collisions.
- Added anonymous subtree support in Typst subtree flow, including internal slug allocation and structural-only behavior alignment.
- Enabled metadata values to use local links in Typst via
local(...), matching markdown-style author/reference linking workflows. - Expanded Typst helper capabilities in
kodama.typ, including semantic subtree helpers and improved local-link ergonomics. - Refined
upgradeworkflow with dedicated subcommands and Typst library sync support. - Continued modular refactors across parser, serve watch, html rendering, and content writing paths.
Behavior changes and migration notes
upgradenow exposes focused subcommands (config,typst-lib) with clearer argument behavior.- Typst
local(...)helper now supports optional text, improving parity with markdown local-link usage patterns. - Typst subtree authoring gained semantic helper aliases (for example
lemma,theorem,proof) that map to subtree taxons. - Serve command invocation now forwards explicit port values to
miniserve.
Features and improvements
- Added nested markdown subtree extraction support.
- Added robust anonymous subtree slug allocation and improved slug attribute handling.
- Added
with-target-checkfor cleaner HTML/paged target branching in Typst helper APIs. - Added Typst semantic subtree sugar helpers aligned with markdown-style structural tags.
- Added upgrade-time sync for
trees/_lib/kodama.typ.
Performance
- Reworked serve global-change handling to reuse in-memory shallows.
- Moved Typst SVG generation into a separate stage for cleaner pipeline boundaries.
- Simplified writer catalog generation and related compile-state anonymous filtering paths.
Stability and error handling
- Fixed anonymous subtree slug collision cases in nested markdown scenarios.
- Fixed serve/miniserve command wiring to include port.
- Added/kept focused test coverage for asset-link title sanitization with inline HTML input.
- Finalized release versioning back to
0.7.9after transient0.8.0bump.
Code organization and naming
- Split parser subtree logic and tests into dedicated modules.
- Split serve watch internals into strategy/analysis/runtime components.
- Split content writer and tests into submodules.
- Split
html_flakeintocore,header, and document-oriented modules. - Refactored upgrade command internals into subcommand-oriented structure.
- Replaced long HTML header argument list with a struct-based API.
Testing and testability
- Added
embed_markdowntest for stripping inline HTML from asset-link titles. - Improved readability of shared test setup helpers for shallow section construction.
- Kept subtree parsing improvements covered through parser-level regression tests.
Full commit list
6c5f6f3feat(typ): add semantic subtree sugar helpers for markdown tagscec8d1afix(serve): update command to include port for miniserve9e5980bfix(local): handle text parameter as optional in local function4692a23fix(version): downgrade kodama version from 0.8.0 to 0.7.9a5cf22cfeat(parser): implement anonymous subtree slug handling and improve slug attribute managementfb9f713refactor(subtree): enhance parameter handling and improve readability4f3f1bffeat(target-check): implement with-target-check for HTML and paged compatibilityf024035test(embed_markdown): add test for asset link title stripping inline HTML9466868fix(parser): avoid anonymous subtree slug collisions in nested markdown1a531defeat(parser): support nested markdown subtree extraction56cb7ccrefactor(graph): normalize anonymous subtree filtering in compile state12378f8chore(version): bump kodama version to 0.8.0f451506refactor(process): split content writer and tests into submodules6d8dddfrefactor(serve): split watch into strategy, analysis, and runtime modulescc265b7refactor(parser): split subtree logic and tests into submodules999a31drefactor(html_flake): split into core, header, and document modulesd1856deperf(serve): rewrite global changes from in-memory shallows380ab82refactor(writer): simplify catalog HTML generation logic65a6a05refactor(scan): move typst svg generation to separate stage191d034chore(clippy): clear warnings in typst tests and html_flake6f82f08refactor(main): reorder typst_cli module and update upgrade command description3524cf4refactor(upgrade): move config/output flags into subcommands3881091docs(upgrade): clarify top-level args apply without subcommandbc12a05refactor(html): replace header arg list with struct7bc7c43refactor(tests): improve readability of shallow_section_with_content function57c8960refactor(upgrade): split config and typst-lib into subcommands884bc40feat(upgrade): sync trees/_lib/kodama.typ during migrationf7509a3chore: add changelog for version 0.7.5 release with highlights, features, and fixes
Version 0.7.5 patch
Full Changelog: v0.7.5...v0.7.5-patch
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