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 processCLI.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.--checkreports pending changes without writing and exits 1 when any exist. See Overview.- The
processpackage. The engine behind the CLI is importable asgithub.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_linesclasses translate to Kazari line markers. - Hugo render hook. A
render-codeblock.htmltemplate, shipped atintegrations/hugo/render-codeblock.html, stashes the full Kazari meta string in adata-kz-metaattribute so per-block options survive the build instead of falling back to config defaults. See Render Hooks. - Example Hugo site.
examples/hugois 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. Acollapse={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 whenWithCollapsiblewas configured. The section rendered with browser default styling and no icons. Both are now always part ofCSS(). 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
withOutputmeta 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, andoutputSeparatorare now recognized inkazari.config.yamlandkazari.config.json. See File-Based Config. WithPostRendercallback. Register one or more callbacks that run after each block is rendered. Each receives the HTML string and aBlockInfostruct 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.BlockInfotype. Metadata passed toWithPostRendercallbacks.- 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-contentclass is now applied to every rendered block unconditionally. It previously requiredWithContentExclusionto 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.35emto0.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
collapsemeta 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-darktogithub-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=anddel=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=Nand an auto-width gutter. See Line Numbers. - Word wrap.
wrap,preserveIndent, andhangingIndent=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-grouptabbed 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-blocktheme=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: revertreset, an optional@layer kazaricascade layer, and anot-contentclass for Tailwind Typography. See CSS Custom Properties. - CSS custom properties. Over 90
--kz-*variables covering every visual property, overridable from a stylesheet or throughWithStyleOverridesandWithThemedStyleOverrides. See CSS Variables. - Pluggable highlighter. A
Highlighterinterface with adapters for Nuri and Chroma, plus an optionalDualThemeTokenizerinterface that halves dual-theme tokenization cost. See Custom Highlighters. - Goldmark extension.
kazarimd.New(engine)for fenced code blocks andkazarimd.CodeGroups(engine)for:::code-groupsupport. See Goldmark Extension. - File-based configuration. Auto-discovery of
kazari.config.yaml,.yml, and.jsonwith unknown-field rejection. See File-Based Config. - Localization. Built-in
en-US,fr-FR, andja-JPlocales with per-string overrides. See Localization.