Skip to main content
Kazari
On this page

Changelog

Release notes and version history for Kazari.

Every released version of Kazari and what changed in it. Entries follow Keep a Changelog, and version numbers follow Semantic Versioning.

The canonical copy lives in CHANGELOG.md at the repository root. Downloadable archives and release notes are on the GitHub releases page.

v1.2.1

Released 2026-08-09.

Fixed

  • Toolbar overflow on narrow viewports. Code block toolbars could extend beyond the block boundary on small screens. The toolbar now stays contained within the code block at all viewport widths.

v1.2.0

Released 2026-08-06.

Added

  • kazari process CLI. kazari process [dir] walks a folder of built HTML files and upgrades plain code blocks in place to framed, syntax-highlighted Kazari blocks with copy buttons, line numbers, and dual themes. It works on the output of any static site generator, including Hugo, Jekyll, Eleventy, mdBook, Sphinx, Zola, and Astro, with no Markdown pipeline integration. --check reports pending changes without writing and exits 1 when any exist. See Overview.
  • The process package. The engine behind the CLI is importable as github.com/frostybee/kazari/process, so Go programs can run the same post-build upgrade without shelling out.
  • Goldmark-parity source recovery. Code recovered from built HTML, whether plain blocks or highlighted markup from Chroma, Rouge, Prism, or Pygments, renders byte-identical to the same source going through the Goldmark path. Hugo hl_lines classes translate to Kazari line markers.
  • Hugo render hook. A render-codeblock.html template, shipped at integrations/hugo/render-codeblock.html, stashes the full Kazari meta string in a data-kz-meta attribute so per-block options survive the build instead of falling back to config defaults. See Render Hooks.
  • Example Hugo site. examples/hugo is a complete, runnable Hugo site demonstrating the render hook, an annotated config file, and a site-wide dark mode switch. A live version is deployed alongside these docs. See Hugo Integration.
  • Documented tier limits. Meta-string-only features (focus lines, labeled ranges, explicit collapse ranges, hybrid diff, per-block overrides, output panel controls) require the render hook; hook-less pipelines still get frames, copy buttons, line numbers, and dual themes with zero configuration. Inline text markers and regex markers cannot be expressed in a Hugo fence at all, since Hugo parses only key="value" pairs inside the brace group.

Fixed

  • Unstyled collapse sections without WithCollapsible. A collapse={N-M} meta token renders a <details> section on any engine, but the collapse stylesheet and its --kz-collapse-* variable defaults, including the expand and collapse icons, were only emitted when WithCollapsible was configured. The section rendered with browser default styling and no icons. Both are now always part of CSS(). The collapse JavaScript stays conditional, since only threshold-based collapse needs it and threshold markup never renders without the config. See Collapsible Sections.

v1.1.0

Released 2026-07-24.

Added

  • Output panel. The withOutput meta key plus a ---output--- separator line split a code block into a syntax-highlighted command section and a plain-text output panel below it. The panel is collapsible and carries its own toggle. See Output Panel.
  • Output panel keys in file-based config. outputPanel, outputDefaultCollapsed, and outputSeparator are now recognized in kazari.config.yaml and kazari.config.json. See File-Based Config.
  • WithPostRender callback. Register one or more callbacks that run after each block is rendered. Each receives the HTML string and a BlockInfo struct describing the block, and returns the HTML to use. Enables wrapping blocks, injecting elements, and adding attributes that built-in features and CSS cannot reach. See Post-Render Callbacks.
  • BlockInfo type. Metadata passed to WithPostRender callbacks.
  • External link affordances. Clickable code annotations created with @[text](url) now render an external link icon and open in a new browser tab. See Links.

Changed

  • The not-content class is now applied to every rendered block unconditionally. It previously required WithContentExclusion to be enabled. See Content Exclusion.
  • Scrollbars inside code blocks were restyled with a floating thumb, giving them a thinner appearance.
  • The output panel chevron-to-label gap increased from 0.35em to 0.5em.

Fixed

  • Threshold-based auto-collapse is now suppressed when any line marker carries a label. Labeled ranges exist to guide the reader through specific sections, so collapsing them by default defeated their purpose. An explicit collapse meta key still overrides the guard. See Collapsible Sections.
  • Per-block theme overrides now produce the correct toolbar background color, remap theme variables across all chrome variables, and no longer double-fade line numbers in themes that use alpha colors.
  • The per-block theme toggle now overrides terminal background variables, so terminal-framed blocks respond to it correctly.
  • An empty language string is treated as plaintext without emitting a warning.

Documentation

  • Added a Syntax Highlighting page, an ANSI rendering showcase, and cross-links between related pages.

v1.0.1

Released 2026-06-25.

Fixed

  • The collapsible section icon color now resolves through currentColor, so it inherits the surrounding text color instead of using a fixed value.
  • Demo: the no-frame example uses a Go snippet rather than a mismatched sample.
  • Demo: the dark theme switched from github-dark to github-dark-default.

v1.0.0

Released 2026-06-24. Initial release.

Added

  • Frames and chrome. Editor and terminal frames with macOS-style dots (colored or minimal), automatic frame detection from the language, title bars with file icons and language badges, and file name extraction from code comments. See Frames and Titles and Icons.
  • Toolbar. Copy to clipboard, word wrap toggle, fullscreen with font size controls, and a per-block theme toggle. See Toolbar.
  • Line markers. Highlight, insertion, and deletion markers with colored backgrounds and gutter accents, range syntax ({3, 5-8}), labeled ranges ({"API":3-7}), and documented overlap resolution. See Line Markers.
  • Inline markers. Literal text markers, regex markers with capture groups, and inline ins= and del= variants that span multiple tokens. See Inline Markers.
  • Focus lines. focus={N-M} dims every line outside the focused range. See Focus Lines.
  • Line numbers. Engine-wide, per-language, and per-block control, with startLineNumber=N and an auto-width gutter. See Line Numbers.
  • Word wrap. wrap, preserveIndent, and hangingIndent=N. See Word Wrap.
  • Collapsible sections. Threshold-based auto-collapse with a preview and expand button, plus range-based collapse={N-M}, across four collapse styles. See Collapsible Sections.
  • Code groups. :::code-group tabbed containers with tab labels, ARIA tab panel semantics, and cross-group tab sync. See Code Groups.
  • Diff highlighting. diff lang="go" strips diff prefixes, generates ins and del markers, and applies syntax highlighting to the cleaned source. See Diff Highlighting.
  • ANSI rendering. SGR escape sequences including the standard 16 colors, the 256-color palette, RGB true color, and text attributes. See ANSI Rendering.
  • Mermaid pass-through. lang="mermaid" emits a <pre class="mermaid"> block for client-side rendering. See Mermaid Pass-Through.
  • Inline links. @[text](url) renders clickable links inside code, with URL scheme validation. See Links.
  • Dual-theme rendering. Light and dark token colors are baked into the HTML as CSS custom properties. Theme switching is pure CSS with no flash on toggle or page load. See Dual-Theme Rendering.
  • Theme configuration. WithThemes, three dark mode strategies (selector, media query, both), per-block theme= override, a theme customizer callback, and OKLCH hue and chroma adjustments. See Themes and Dark Mode.
  • Accessibility. Per-token WCAG contrast enforcement with a configurable minimum ratio, ARIA labels, live regions, and screen reader announcements.
  • Style isolation. An all: revert reset, an optional @layer kazari cascade layer, and a not-content class for Tailwind Typography. See CSS Custom Properties.
  • CSS custom properties. Over 90 --kz-* variables covering every visual property, overridable from a stylesheet or through WithStyleOverrides and WithThemedStyleOverrides. See CSS Variables.
  • Pluggable highlighter. A Highlighter interface with adapters for Nuri and Chroma, plus an optional DualThemeTokenizer interface that halves dual-theme tokenization cost. See Custom Highlighters.
  • Goldmark extension. kazarimd.New(engine) for fenced code blocks and kazarimd.CodeGroups(engine) for :::code-group support. See Goldmark Extension.
  • File-based configuration. Auto-discovery of kazari.config.yaml, .yml, and .json with unknown-field rejection. See File-Based Config.
  • Localization. Built-in en-US, fr-FR, and ja-JP locales with per-string overrides. See Localization.
Edit this page

Last updated: