1.10 Release Notes
v1.11 backports
In this release
- (#14936): Accept and ignore static engine declaration keys (
name,claims,file-extensions,claims-files— including an optionalprocessoronclaims-filesentries) in theexternal-engineschema, so extensions can declare them for Quarto 2’s engine resolution without breaking Quarto 1 validation. No Quarto 1 behavior change. - (#15143): Fix PDF rendering with
pdf-standardfailing with\DocumentMetadata not supported!after updating to KOMA-Script 3.49.3, which provides the default document classes.
In previous releases
- (#14920): Correct the Windows ARM diagnostic for x64 R crashes with stable native ARM64 R installation guidance, including reinstalling packages and configuring
QUARTO_R. - (#14731): Fix
QUARTO_VENDOR_BINARIES=falsebuilds silently succeeding with missing binaries. Theconfigurestep’s “is it on PATH?” check fortypst-gather,typst,pandocandesbuildcompared an unawaitedPromiseagainstundefined, so the guard never fired. A build withtypst-gatherneither vendored nor on PATH reported success and produced a Quarto tree without it, surfacing only at render time astypst-gather analyze failed; staging all packages as fallback. The missing-binary error message now also names the path that was checked and theQUARTO_TYPST_GATHERenvironment variable. - (#14741): Fix PDF rendering of a cross-referenced table failing with
! Extra }, or forgotten \endgroup.when theendfloatpackage deferslongtableenvironments (\DeclareDelayedFloatFlavor*{longtable}{table}). - (#14857): Fix
quarto install chrome-headless-shell(andquarto install chromium) failing with a 404 on Linux arm64 due to a stale Playwright CDN URL. - (#14993): Fix Typst output dropping a brand font from a
font-familylist when another document in the same directory or project was rendered first with different brand fonts.
v1.10 changes
All changes included in 1.10:
Regression fixes
- (#13583): Fix “Show All Code” and “Hide All Code” in the
code-toolsmenu doing nothing whencode-copyis enabled. (author: @mcanouil) - (#14267): Fix Windows paths with accented characters (e.g.,
C:\Users\Sébastien\) breaking dart-sass compilation. - (#14281): Fix transient
.quarto_ipynbfiles accumulating duringquarto previewwith Jupyter engine. - (#14298): Fix
quarto previewbrowse URL including output filename (e.g.,hello.html) for single-file documents, breaking Posit Workbench proxied server access. - (#14489): Restore
--output-dirsupport forquarto previewof single files when no_quarto.ymlis present (e.g. R-package workspaces). Regression introduced in v1.9.18. - (#14683): Fix
quarto previewof a knitr document in a project subdirectory failing when run from that subdirectory with a bare filename (the shape RStudio’s Render button uses). Regression introduced in v1.9.18. - (rstudio/rstudio#17333): Fix
quarto inspecton standalone files emitting project metadata that breaks RStudio’s publishing wizard.
Dependencies
- (#14291): Update
denoto v2.7.14 (fixes silent crash on Windows builds older than 16299). - (#14664): Update more dependencies:
- Update
pandocto 3.10. - Update
typstto 0.15.1. - Update
typst-gatherto 0.2.3. - Update
dart-sassto 1.101.0. - Update
esbuildto 0.28.1.
- Update
- (#14677): Bundle
axe-core4.10.3 (used by theaxeHTML accessibility option), previously loaded at runtime from the Skypack CDN.
Accessibility
- (#14468): The
axeaccessibility report UI (HTML overlay, revealjs report slide, dashboard offcanvas) now uses its own theme-independent colors instead of inheriting frombrandor theme. Keeps the report readable regardless of page styling, and stopsaxefrom clobbering brand colors set via_brand.yml. - (#14602, #14632): Fix ORCID profile link having no accessible name for screen readers in HTML, Reveal.js, and ipynb title-block author metadata. (author: @mcanouil for #14602)
- (#14604): The
axeaccessibility report UI now shows each violation’s WCAG conformance level (e.g.WCAG 2.0 AA (1.4.3)) orBest Practice, derived from the violation’s axe-core tags. - (#14607): Add
standardandbest-practiceoptions toaxe.standardscopes accessibility checks to a WCAG conformance level (e.g.standard: wcag21aa), including the rules axe-core keeps off by default for that level (such as AAA color contrast);best-practicecontrols whether axe’s best-practice rules (recommendations not required by any WCAG success criterion) are checked. - (#14655): Add accessible names to code line-number links so screen readers and accessibility audits no longer report them as empty links.
- (#14676): The
axeaccessibility report UI now lists violations most-important-first: by impact (critical first), then WCAG conformance level (A before AA, current criteria before Best Practice and obsolete ones), then rule id.output: jsonstill emits axe-core’s raw, unsorted result. - (#14677): The
axeoption now uses a copy of axe-core bundled with Quarto instead of loading it from the Skypack CDN in the reader’s browser. Accessibility checking now works offline, and viewing a rendered document no longer triggers a request tocdn.skypack.dev. The axe-core version is unchanged (4.10.3), so scan results are identical. - (#14680): Fix the
axeaccessibility report overlay inheriting page-level text centering (e.g. from thejollaabout template) in HTML output; the overlay is now always left-aligned. - (#14680): Fix hovering a selector in the
axeaccessibility report overlay scrolling the highlighted element underneath the overlay; the element now settles in the viewport area above the report. - (#14680): Fix the
axeaccessibility report overlay in HTML output failing axe’s ownscrollable-region-focusablerule: a report long enough to scroll could not be scrolled by keyboard. The overlay is now a focusable, labeled region.
Formats
All Formats
- (#14530): Add
quarto.*Pandoc template variable namespace.format.languageis now exposed as$quarto.language.<key>$in custom Pandoc templates via the defaults-filevariables:section, with no leakage into rendered output.
pdf
- (#13588): Fix Lua error when rendering PDF with
reference-location: marginand a footnote alongside a figure withfig-cap. (author: @mcanouil) - (#14553): Fix font fallbacks (
mainfontfallback,sansfontfallback,monofontfallback) crashing LuaLaTeX on TeX Live 2026 (luaotfload v3.29+) instead of filling in missing glyphs. Bare fallback names (e.g."DejaVu Sans") are now automatically colon-terminated as luaotfload requires; names that already carry a terminator or feature options (e.g."FreeSans:","Noto:mode=harf") are left untouched. A clear, actionable error is also reported if a fallback crash is still detected. - (#14553, #14558): Fix PDF render failing instead of auto-installing a missing font referenced by
monofontfallback(and othermainfont/sansfont/monofontfallbacks). - (#14575): Fix caption being placed inside the table body instead of below it for cross-referenceable computational (knitr/Jupyter) tables with
tbl-cap-location: bottom.
typst
- (#12556): Filter unavailable fonts from CSS
font-familyfallback lists before passing them to Typst, suppressingunknown font familywarnings from Typst 1.12+ for fonts not installed locally. Available fonts are enumerated viatypst fontsand cached per project. - (#14261): Fix theorem/example block titles containing inline code producing invalid Typst markup when syntax highlighting is applied.
- (#14460): Fix CSS
borderandborder-colordeclarations losing tokens that precede anrgb()/rgba()color (e.g.border: 0px solid rgb(255, 0, 0)rendering as a 2.25pt border instead of being suppressed). Also fixes:var(--brand-NAME)references crashing the Typst CSS translator whenNAMEcontained digits (e.g.--brand-red-50); a crash when anrgba()alpha is unparseable; thedvminlength unit being silently rejected (a stray space in the unit table); CSS keywords likeBOLDnot matching asbold(CSS keywords are case-insensitive); invalid hex colors like#fffffbeing silently accepted as 2-component colors. - (#14511): Fix brand fonts downloaded for a Typst book project not being passed to
typst compile, causingunknown font familywarnings and fallback to Libertinus Serif. - (#14524, quarto-ext/orange-book#4): Fix orange-book Typst book running header not honoring
lang:— chapter heading band stayedChapter N.instead of the locale’s word (e.g.Chapitre N.forlang: fr). Also fixes the orange-booklist-of-figure-title/list-of-table-titletemplate pipes which were silently rendering as empty strings. Consumes the$quarto.language.*$template-variable namespace from #14530.
revealjs
dashboard
ipynb
- (#14693): Fix an empty level-1 heading (
#) being emitted in the first markdown cell when rendering a document with notitletoipynb.
Projects
Manuscripts
- (#14613): Fix dynamically generated figures missing from the rendered manuscript on Windows on the first render when using the knitr engine with
freeze: auto.
Websites
- (#13565, #14353): Fix sidebar logo not appearing on secondary sidebars in multi-sidebar website layouts.
- (#14562): Fix a heading inside
content-hidden when-format="llms-txt"(visible in HTML) losing its<section>wrapper andidin a website withllms-txtenabled, which broke its table-of-contents link, anchors, and cross-references. - (#14563): Fix a fatal error when a shortcode is used inside conditional content (e.g.
content-visible when-format="llms-txt") in a website withllms-txtenabled. - (#14667): Fix the clean-URL rewrite in
quarto-nav.jsbreaking links to files whose names merely start withindex.html, such as theindex.html.md“Other Formats” links produced whenoutput-file: index.htmlis paired with a markdown format (e.g. by nbdev for llms.txt workflows). The rewrite now only stripsindex.htmlat the end of the path.
Lua API
- (#14297): Fix
quarto.utils.is_empty_node()returning inverted results for text nodes (Str,Code,RawInline).
Commands
quarto preview
- (#10392): Fix
quarto previewof a website or book project showing stale HTML for non-index pages after editing the source.qmd. - (#14281): Avoid creating a duplicate
.quarto_ipynbfile on preview startup for single-file Jupyter documents. - (#14533): Fix
quarto previewnot detecting a frontmatterformat:change until the second render request. The first request after the edit now correctly restarts the preview process with the new format. - (#14593): Fix
quarto previewignoring a_brand.ymladded or removed while the preview is running. The brand change is now applied on the next render instead of requiring a preview restart. - (#14594): Fix
quarto previewof a book or website project crashing withBadResource: Bad resource IDwhen re-rendering pages.
install
- (#11877, #9710): Add arm64 Linux support for
quarto install chrome-headless-shellusing Playwright CDN as download source, since Chrome for Testing has no arm64 Linux builds. - (#11877): Deprecate
quarto install chromium— the command now transparently redirects tochrome-headless-shell. Installingchrome-headless-shellautomatically removes any legacy Chromium installation. Usechrome-headless-shellinstead, which always installs the latest stable Chrome (the legacychromiuminstaller pins an outdated Puppeteer revision that cannot receive security updates). - (#14304): Fix
quarto install tinytexsilently ignoring extraction failures. When archive extraction fails (e.g.,.tar.xzon a system withoutxz-utils), the installer now reports a clear error instead of proceeding and failing with a confusingNotFoundmessage. - (#14363): Add retry logic for tool downloads to handle transient network failures (connection resets, CDN timeouts) during
quarto install. - (#14538):
quarto install tinytexandquarto update tinytexnow set the TeX Live repository to the TinyTeX CDN-backed mirror at https://tlnet.yihui.org when reachable, falling back tomirror.ctan.org’s automatic redirect and the existing US university mirrors otherwise. Matches the default in the R tinytex package since March 2026. Override the resolved repository with theQUARTO_TINYTEX_REPOSITORYenvironment variable, or withCTAN_REPO(also honored for parity with the R tinytex package). See https://yihui.org/en/2026/03/tinytex-ctan-mirror/ for background.
check
- (#11877):
quarto check installnow shows a deprecation warning when legacy Chromium (installed viaquarto install chromium) is detected, directing users to installchrome-headless-shellas a replacement.
quarto create
- (#14250): Fix
quarto createproducing read-only files when Quarto is installed via system packages (e.g.,.deb). Files copied from installed resources now have user-write permission ensured.
Engines
Jupyter
- (#11150): Fix
dashboardformat showing spurious intermediate text output (e.g. aText(...)repr or a matplotlib object repr) next to a figure when a cell’s top-level plotting calls echo their return values. - (#13582): Fix
application/pdfandtext/latexMIME types not being preferred overimage/svg+xmlwhen rendering Jupyter notebooks to PDF, which caused errors whenrsvg-convertwas not available. (author: @jkrumbiegel) - (#14374): Avoid a crash when a third-party Jupyter kernel (observed with Maple 2025, built on XEUS) returns
execute_replywithout the requiredstatusfield. The failing cell is recorded as an error instead of aborting the render. (author: @ChrisJefferson)
Other fixes and improvements
- (#6092): Fix the
default-image-extensionbeing appended to an extensionless URL ending in a slash (e.g.), which broke the embed/iframe image syntax. - (#6651): Fix dart-sass compilation failing in enterprise environments where
.batfiles are blocked by group policy. - (#11703): Fix SCSS color-variable export (
--quarto-scss-export-*) being silently skipped when a theme rule contains consecutive semicolons (e.g.max-height: 100% !important;;). - (#12401): Fix
QUARTO_DOCUMENT_PATHbeing a relative path for single-file renders, inconsistent with project renders where it was absolute. Execution target paths are now normalized to absolute at a single point, so single-file and project renders behave the same. - (#14255): Fix shortcodes inside inline and display math expressions not being resolved.
- (#14342): Work around TOCTOU race in Deno’s
expandGlobSyncthat can cause unexpected exceptions to be raised while traversing directories during project initialization. - (#14359): Fix intermediate
.quarto_ipynbfile not being deleted after rendering a.qmdwith Jupyter engine, causing numbered variants (_1,_2, …) to accumulate on disk across renders. - (#14445): Fix intermittent
Uncaught (in promise) TypeError: Writable stream is closed or errored.aborting renders on Linux.execProcessnow awaits and swallows the rejection fromprocess.stdin.close()when the child closes its stdin first. The captured stderr is now also surfaced whentypst-gather analyzefalls back to staging all packages, so failures are diagnosable without bypassingquarto. - (#14461): Fix
quarto render --to pdfaborting withERROR: Problem running 'fmtutil-sys --all' to rebuild format tree.when an automatically-installed LaTeX package’s post-update format rebuild fails. Format-tree rebuild is now treated as best-effort housekeeping (matching upstreamtinytexR behavior) — the failure is logged as a warning and the package install completes. - (#14472): Add support for Kotlin in code annotations and YAML cell options.
- (#14529): Fix bundled Julia engine path leaking into rendered YAML metadata and pandoc log output when running an installed Quarto. The internal subtree-engine filter only matched the source-tree share-path layout (
resources/extension-subtrees/) and missed installed layouts where the path isshare/extension-subtrees/. - (#14576): Fix website render hanging when sidebar titles contain double-underscore (dunder) names.
- (#14577): Fix an embedded notebook with no explicit title using a Python comment inside a code cell as the notebook title. Heading extraction now skips fenced code blocks, so a comment that merely looks like a heading is never promoted; first real markdown heading anywhere in the notebook markdown body is still used as before if not
titleprovided. - (#14582): Fix format detection for extension formats (e.g.
acm-pdf) in project preview, manuscript notebooks, MECA bundles, and website format ordering. - (#14583): Fix a shortcode used as an image source (e.g.
) getting thedefault-image-extensionappended, producing a doubled extension once the shortcode resolves. - (#14595): Fix reload preview in code-server environment. (author: @micedre)
- (#14669): Fix markdown output being deleted when
output-filehas an.htmlextension and an html format is paired with a markdown format. - (#14687): Fix SCSS color-variable export (
--quarto-scss-export-*) being silently skipped when a theme rule places a declaration on the same line as the opening brace with no space after the colon (e.g..example {width:100px;}). - (#14722): Fix
{{< placeholder >}}shortcode failing to render on non-SVG formats after an external image service was retired; placeholders now render locally with no network access.