Changelog
What changed, and when.
1
1.6
1.6.0 (2026-10-05)
New Features
- feat: Add the
--code-window-bgand--code-window-title-bgvariables, so a theme can set the window and title bar colours in light and dark modes. (#76)
Bug Fixes
- fix: Follow the theme’s background in the code window, so the window and its highlighted-lines chip stay readable on a dark Quarto or Reveal.js theme. (#76)
- fix: Keep the title bar’s own tint on dark Quarto themes and on Reveal.js, where Quarto’s fixed grey replaced it. (#76)
- fix: Let a theme’s own
:rootrule override the theming variables, which lost to the extension’s defaults before. (#76)
1.5
1.5.2 (2026-10-04)
Bug Fixes
- fix: Darken the filename and the highlighted-lines chip in the title bar for HTML and Typst, so both meet the WCAG AA contrast ratio with the usual dark-on-light and light-on-dark body text. The filename was as low as 2.5:1 on a light HTML theme and 3.2:1 on a dark Typst page before. (#74)
- fix: Wrap a long filename in the title bar instead of scrolling it on a narrow screen, and wrap a long highlighted-lines chip between its ranges instead of cutting it off. The scrolling title bar had no keyboard access, which accessibility checks report. (#74)
1.5.1 (2026-09-23)
New Features
- feat: Report a key nested inside an option that the schema does not declare, such as a typo in a nested setting. Only top-level keys were checked before. (#60)
Bug Fixes
- fix: Stand the Skylighting hot-fix down when the filter is off, so a Typst document that sets
enabled: falsecompiles. It failed on an undeclared name before. (#71) - fix: Keep a block’s own language where the filter derives no name for it, which means the filter is off, or
auto-filenameis off, or the output format is neither HTML nor Typst. The block was relabelled asdefaultbefore, and the language the author wrote was lost. (#66) - fix: Keep inline code in a Typst document as a code element, so Pandoc writes the syntax highlighting definitions for it. A document with inline code and no code block failed to compile before. (#65)
- fix: Remove the code-window attributes from a block that sets code-window-enabled=“false”, and from a block that sets code-window-lines when lines-label is off. They reached the HTML output as data-code-window-* attributes before. (#63)
- fix: Remove the extension’s own label attribute when the output format gets no window chrome, so a writer that keeps attributes no longer prints it. (#63)
- fix: Check every code block attribute in the code-window group against the schema, so a value nothing validated before, such as code-window-enabled, is now reported when it is wrong. The extension’s own duplicate warnings for an invalid code-window-style or code-window-collapse are removed, since the schema already names the same mistake. (#60)
- fix: Honour an explicit code-window-no-auto-filename=“false”, which previously suppressed auto-filename exactly like “true”. (#60)
- fix: Honour
code-window-collapse="false"on a block, which could not turn off a document that setscollapse. The block fell back to the document setting and was folded anyway. (#69) - fix: Remove the extension’s own duplicate collapse and style warnings at the document option level, now that the schema reports each mistake once. (#60)
- fix: Match the code-window-collapse attribute schema to the string Pandoc always provides, so a documented “true” or “false” value no longer warns. (#60)
- fix: Validate a code block’s attributes on the HTML path the same way the Typst path already does, so an invalid attribute on a block holding executed-cell output is now reported on HTML too, instead of being silently accepted. (#60)
- fix: Gate the options check on the html and typst formats so non-acting formats stay silent. (#60)
- fix: Report that nested key as a warning rather than an error, so the typo does not invalidate the whole configuration. (#60)
Documentation
- docs: Add worked examples for the derived filename, the highlighted-lines chip, the executed-cell output, the
enabledoption, the Typst wrapper name, and the Typst hot-fixes. (#61) - docs: Serve the extension’s social card as the Open Graph image, so a shared link shows the card rather than the first image on the page. (#58)
Refactoring
- build: Update the vendored Lua modules to 2.3.0. A module no longer carries a version line in its header, so its checksum changes only when its code changes. (#59)
- build: Update the vendored Lua modules to 2.5.0, which adds the accessors that read what the schema resolves an option, an element’s attributes and a format’s options to. The schema validator moves to its own release train and is pinned at
schema-v2.2.0, which accepts onlytrueandfalseas a boolean. (#60)
1.5.0 (2026-09-06)
New Features
- feat: Check the document configuration against the extension schema and report what it does not accept. (#54)
Refactoring
- build: Declare the vendored Lua modules in
_extensions/code-window/_dependencies.ymland move them to_extensions/code-window/_vendor/. Each module names the release it came from, so it can be checked against that release. (#53)
1.4
1.4.0 (2026-09-01)
New Features
- feat: Add the
cell-outputoption. The output of an executed cell is no longer framed, andcell-output: trueframes it again. (#39)
Bug Fixes
- fix: Remove the internal
code-window-auto-labelattribute from the rendered document.
1.3
1.3.3 (2026-08-02)
Refactoring
- refactor: Target the Quarto Wizard v2 extension schema in
_schema.yml.
1.3.2 (2026-08-01)
Documentation
- docs: Document the filter as
filters:with the barecode-windowname. The long formpath/atoverrides the entry point of every filter the extension contributes, so the documentedat: pre-quartopulled the Typst title hotfix frompost-quartotopre-quarto; the manifest already carries both entry points.
1.3.1 (2026-08-01)
Bug Fixes
- fix: Honour a boolean option written as a bare YAML
false, such asauto-filename: false,enabled: false, orlines-label: false. The value was read as an absent option, so the default applied instead and only the quoted string worked.
Documentation
docs: Correct the reference and the examples page, which said a derived filename frames nothing in HTML. It frames the block through the injected script, as the rest of the HTML chrome does.
docs: Add a documentation website under
docs/, built on theatelierproject type and published to https://m.canouil.dev/quarto-code-window/, framed by the extension itself.docs: Record that the filter claims code blocks at
pre-quarto, which preventstypst-renderfrom seeing its own{typst}blocks and double-decorates alongsidelanguage-cell-decorator.docs: Trim
README.mdto a landing page pointing at the website.docs: Add the Pages workflow, which renders
docs/on pull requests and deploys it from the release tag.docs: Add the Quarto Extensions Updates workflow, scanning
docsfor the website’s own dependencies.
1.3.0 (2026-07-22)
New Features
- feat: code blocks with no language or an unknown language are now framed like highlighted code cells instead of being left as bare blocks. A no-language block is labelled
default; an unknown language keeps its original token as the label. Override per block with an explicitfilename,code-window-no-auto-filename="true", orcode-window-enabled="false", or globally withauto-filename: false.
1.2
1.2.1 (2026-07-10)
Bug Fixes
- fix(typst): remove
sticky: truefrom the title-bar block so page-sized code windows start on the current page instead of being postponed, leaving near-empty pages behind (orphaned heading, then an empty window frame). The title bar may now occasionally sit alone at the bottom of a page; the code body still breaks across pages correctly.
1.2.0 (2026-05-31)
New Features
- feat: render a highlighted-lines chip alongside the filename in the code-window title bar (HTML, Reveal.js, and Typst). Uses Quarto’s
code-line-numbersattribute or a newcode-window-linesattribute. The chip can be disabled globally vialines-label: false. - feat: collapsible code windows via a
<details>wrapper (HTML/Reveal.js). Per-block opt-in with thecode-window-collapseattribute (true/false/open/closed) or document-wide via thecollapseoption. - feat: expose CSS custom properties (
--code-window-macos-icon,--code-window-windows-icon,--code-window-macos-icon-width,--code-window-windows-icon-width,--code-window-icon-height) so users can override the window-button icons.
Documentation
- docs: document
code-line-numbersintegration, the newcollapseoption, and the CSS custom properties for icon overrides.
Refactoring
- refactor: synchronise shared modules (
html,logging,metadata,pandoc-helpers,string) with canonical versions.
1.1
1.1.5 (2026-04-21)
Bug Fixes
- fix: propagate
#| filename:chunk option into the code-window wrapper for HTML and Typst output. Previously, using#| filename:(instead of thefilename=Pandoc attribute) caused a double.code-with-filenamewrapper in HTML and the wrong auto-generated filename in Typst.
1.1.4 (2026-04-20)
Bug Fixes
- fix: wrap code-window blocks in a plain Div when they are direct children of a Quarto layout div (
layout-ncol,layout-nrow,layout), so that Quarto’s grid assigns one column per code block instead of one column per raw block.
1.1.3 (2026-04-15)
Refactoring
- refactor: Synchronise shared module (
logging.lua) with canonical version.
1.1.2 (2026-04-15)
Bug Fixes
- fix: use CSS
Canvassystem colour so code-window chrome and body render against the page background, not a parent container’s background.
1.1.1 (2026-04-13)
Bug Fixes
- fix: apply Typst code-window styling to code blocks inside lists, blockquotes, and definition lists.
1.1.0 (2026-04-12)
Bug Fixes
- fix: preserve code-annotation structure for HTML/Reveal.js auto-filename blocks.
1.0
1.0.1 (2026-04-10)
Bug Fixes
- fix: reduce Reveal.js code-window title bar height by 35% so it is proportional to slide content.
1.0.0 (2026-03-29)
New Features
- feat: derive Typst window chrome colours from page background for dark theme support.
0
0.4
0.4.0 (2026-03-29)
Bug Fixes
- fix: unwrap Quarto’s
DecoratedCodeBlockDiv to prevent double filename wrapping in Typst output. - fix: evaluate theorem/example title strings as Typst markup so inline code renders correctly instead of being stringified.
- fix: normalise code blocks with no or unknown language class to
defaultfor consistent styling across all formats. - fix: default to
#comment symbol for unknown code block languages (default,txt, etc.) in annotation detection. - fix: support code annotations with
syntax-highlighting: idiomatic(native Typst highlighting) via ashow raw.linerule.
New Features
- feat: replace global
hotfix.quarto-versionwith per-hotfix thresholds for independent auto-disable.
Refactoring
- refactor: extract language normalisation into dedicated
_modules/language.luamodule.
0.3
0.3.0 (2026-03-23)
New Features
- feat: add multiple window decoration styles for code blocks (
macos,windows,default). - feat: add Typst code-annotations hot-fix with annotation markers, circled numbers, and bidirectional linking.
- feat: add
hotfix.quarto-versionthreshold to auto-disable temporary hot-fixes when Quarto reaches a specified version.
Bug Fixes
- fix: HTML-escape auto-generated filename in code block headers to prevent XSS.
- fix: skylighting hot-fix now respects custom
wrappername instead of hardcodingcode-window-circled-number.
Style
- style: adjust padding and height for title bar in code window.
Refactoring
- refactor: consolidate
skylighting-fixoption into nestedhotfixconfiguration key withcode-annotationsandskylightingtoggles. - refactor: introduce
main.luaentry point for filter assembly and dependency wiring. - refactor: move hotfix modules (
code-annotations.lua,skylighting-typst-fix.lua) into_modules/hotfix/. - refactor: split Typst function definitions so annotation helpers are only injected when at least one hot-fix is active.
- refactor: update Typst processing to return block sandwich.
- refactor: use utility functions for code-window extension.
- refactor: Replace monolithic
utils.luawith focused modules (string.lua,logging.lua,metadata.lua,pandoc-helpers.lua,html.lua,paths.lua,colour.lua).
0.1
0.1.1 (2026-03-01)
Style
- style: tweak traffic lights size.
0.1.0 (2026-02-27)
New Features
- feat: Initial release.