Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
quarto-dev
GitHub Repository: quarto-dev/quarto-cli
Path: blob/main/news/changelog-1.9.md
6453 views

All changes included in 1.9:

Regression fixes

  • (#13396): Fix quarto publish connect regression.

  • (#13441): Catch undefined exceptions in Pandoc failure to avoid spurious error message.

  • (#13046): Use new url for multiplex socket.io server https://multiplex.up.railway.app/ as default for format: revealjs and revealjs.multiplex: true.

  • (#13506): Fix navbar active state detection when sidebar has no logo configured. Prevents empty logo links from interfering with navigation highlighting.

  • (#13616): Fix fatal error when rendering manuscript projects with custom blocks like ConditionalBlock.

  • (#13625): Fix Windows file locking error (os error 32) when rendering with --output-dir flag. Context cleanup now happens before removing the temporary .quarto directory, ensuring file handles are properly closed.

  • (#13633): Fix detection and auto-installation of babel language packages from newer error format that doesn't explicitly mention .ldf filename.

  • (#13694): Fix notebook-view.url being ignored - external notebook links now properly use specified URLs instead of local preview files.

  • (#13732): Fix automatic font package installation for fonts with spaces in their names (e.g., "Noto Emoji", "DejaVu Sans"). Font file search patterns now match both with and without spaces.

Dependencies

  • Update pandoc to 3.8.3

  • Update typst to 0.14.2

  • Update esbuild to 0.25.10

  • Update deno to 2.4.5

  • (#13601): Update mermaid to 11.12.0 (author: @multimeric)

Formats

gfm

  • (#13421): Do not word-wrap titles in header.

  • (#13603): Fix callouts with title but no body content causing fatal error when rendering to GitHub Flavored Markdown.

html

  • (#11929): Import all brand.typography.fonts in CSS, whether or not fonts are referenced by typography elements.

  • (#13413): Fix uncentered play button in video shortcodes from cross-reference divs. (author: @bruvellu)

  • (#13508): Add aria-label support to video shortcode for improved accessibility.

  • (#13883): Fix unequal top/bottom spacing in simple untitled callouts.

typst

  • (#13362): Remove unused blockquote definitions from template.

  • (#13452): Wraps subfigure captions generated by quarto_super() in block function to avoid emitting par elements. (author: @christopherkenny)

  • (#13474): Heading font for title should default to mainfont.

  • (#13555): Add support for icon=false in callouts when used in format: typst.

  • (#13589): Fix callouts with invalid ID prefixes crashing with "attempt to index a nil value". Callouts with unknown reference types now render as non-crossreferenceable callouts with a warning, ignoring the invalid ID.

  • (#13602): Fix support for multiple files set in bibliography field in biblio.typ template partial.

  • (#13775): Fix brand fonts not being applied when using citeproc: true with Typst format. Format detection now properly handles Pandoc format variants like typst-citations.

  • (#13868): Add image alt text support for PDF/UA accessibility. Alt text from markdown captions and explicit alt attributes is now passed to Typst's image() function. (Temporary workaround until jgm/pandoc#11394 is merged.)

  • (#13249): Update to Pandoc's Typst template following Pandoc 3.8.3 and Typst 0.14.2 support:

    • Code syntax highlighting now uses Skylighting by default.

    • New template variables mathfont, codefont, and linestretch for font and line spacing customization.

    • New template variables linkcolor, citecolor, and filecolor for link color customization.

    • New template variable thanks for title footnote acknowledgment.

    • New template variable abstract-title for abstract header customization.

    • PDF accessibility metadata: document title, author, and keywords are now set for PDF readers.

    • Two-column layout now uses set page(columns:) instead of columns() function, fixing compatibility with landscape sections.

    • Title block now properly spans both columns in multi-column layouts.

  • (#13870): Add support for alt attribute on cross-referenced equations for improved accessibility. (author: @mcanouil)

  • (#13950): Replace ctheorems with theorion package for theorem environments. Add theorem-appearance option to control styling: simple (default, classic LaTeX style), fancy (colored boxes with brand colors), clouds (rounded backgrounds), or rainbow (colored start border and colored title).

  • (#13954): Add support for Typst book projects via format extensions. Quarto now bundles the orange-book extension which provides a textbook-style format with chapter numbering, cross-references, and professional styling. Book projects with format: typst automatically use this extension.

  • ([#13978])(https://github.com/quarto-dev/quarto-cli/pull/13978)): Keep term and description together in definition lists to avoid breaking across pages. (author: @mcanouil)

pdf

  • (#4426): Add pdf-standard option for PDF/A, PDF/UA, and PDF version control. Supports standards like a-2b, ua-1, and versions 1.7, 2.0. Works with both LaTeX and Typst formats.

  • (#10291): Fix detection of babel hyphenation warnings with straight-quote format instead of backtick-quote format.

  • (#13248): Fix image alt text not being passed to LaTeX \includegraphics[alt={...}] for PDF accessibility. Markdown image captions and fig-alt attributes are now preserved for PDF/UA compliance.

  • (#13661): Fix LaTeX compilation errors when using mermaid-format: svg with PDF/LaTeX output. SVG diagrams are now written directly without HTML script tags. Note: mermaid-format: png is recommended for best compatibility. SVG format requires rsvg-convert (or Inkscape with use-rsvg-convert: false) in PATH for conversion to PDF, and may experience text clipping in diagrams with multi-line labels.

  • (rstudio/tinytex-releases#49): Fix detection of LuaTeX-ja missing file errors by matching both "File" and "file" in error messages.

  • (#13667): Fix LaTeX compilation error with Python error output containing caret characters.

  • (#13730): Fix TinyTeX detection when ~/.TinyTeX/ directory exists without binaries. Quarto now verifies that the bin directory and tlmgr binary exist before reporting TinyTeX as available, allowing proper fallback to system PATH installations.

  • (#13919): Fix margin citations with citeproc showing unresolved ?quarto-cite: placeholders in PDF output. Caused by Pandoc 3.6+ adding \protect before \phantomsection in bibliography anchors.

  • (#13249): Update to Pandoc's LaTeX template following Pandoc 3.8.3 support:

    • New RTL support for LuaTeX with \RL, \LR commands and RTL, LTR environments.

    • New shorthands variable for Babel language shortcuts control.

    • New pdf-trailer-id support for reproducible PDF builds.

    • New cancel package support for \cancel command in math.

revealjs

  • (#13722): Fix light-content / dark-content SCSS rules not included in Reveal.js format. (author: @mcanouil)

ipynb

  • (#13956): Fix crash when rendering to ipynb format with figure labels (#| label: fig-*) on cells for cross references.

Projects

  • (#13892): Fix output-dir: ./ deleting entire project directory. output-dir must be a subdirectory of the project directory and check is now better to avoid deleting the project itself when it revolves to the same path.

website

  • (#13524): Add support for Plausible Analytics via plausible-analytics configuration option. Users can either paste their Plausible script snippet directly in YAML or provide a path to a file containing the snippet using plausible-analytics: { path: _plausible_snippet.html }.

  • (#13525): Algolia Insights now uses privacy-friendly defaults: useCookie: false with random session tokens when cookie consent is not configured. When cookie-consent: true is enabled, Algolia scripts are deferred and only use cookies after user grants "tracking" consent, ensuring GDPR compliance.

  • (#13547)cookie-content: { type: express } is now the default. Previously it was type: implied. It now means this will block cookies until the user expressly agrees to allow them (or continue blocking them if the user doesn't agree).

  • (#13570): Replace Twitter with Bluesky in default blog template and documentation examples. New blog projects now include Bluesky social links instead of Twitter.

  • (#13716): Fix draft pages showing blank during preview when pre-render scripts are configured.

  • (#13847): Open graph title with markdown is now processed correctly. (author: @mcanouil)

  • (#13910): Add support for logo: false to disable sidebar and navbar logos when using _brand.yml. Works in website projects (sidebar.logo: false, navbar.logo: false) and book projects (book.sidebar.logo: false, book.navbar.logo: false).

  • (#13951): Fix image-lazy-loading not applying loading="lazy" attribute to auto-detected listing images.

book

  • (#13769): Apply repo-link-target and repo-link-rel options to tools in book sidebar for consistent link attribute handling with website projects. (author: @mcanouil)

manuscript

  • (#10031): Fix manuscript rendering prompting for GitHub credentials when origin points to private repository. Auto-detection of manuscript URL now fails gracefully with a warning instead of blocking renders.

Publishing

Confluence

  • (#13414): Be more forgiving when Confluence server returns malformed JSON response. (author: @m1no)

Lua API

  • (#13762): Add quarto.paths.typst() to Quarto's Lua API to resolve Typst binary path in Lua filters and extensions consistently with Quarto itself. (author: @mcanouil)

Commands

use brand

call build-ts-extension

  • (): New quarto call build-ts-extension command builds a TypeScript extension, such as an engine extension, and places the artifacts in the _extensions directory. See the engine extension pre-release documentation for details.

install verapdf

  • (#4426): New quarto install verapdf command installs veraPDF for PDF/A and PDF/UA validation. When verapdf is available, PDFs created with the pdf-standard option are automatically validated for compliance. Also supports quarto uninstall verapdf, quarto update verapdf, and quarto tools.

preview

  • (#13804): Fix intermittent preview crashes during re-renders by properly managing project context lifecycle. Resolves issues with missing temporary directories and quarto_ipynb files when editing notebooks and qmd files together.

Extensions

  • Metadata and brand extensions now work without a _quarto.yml project. (Engine extensions do too.) A temporary default project is created in memory.

  • New Engine Extensions, to allow other execution engines than knitr, jupyter, julia. Julia is now a bundled extension. See the prerelease notes and engine extension documentation.

Engines

jupyter

  • (#13748): Fix stdin encoding to UTF-8 on Windows to correctly handle JSON in documents containing non-ASCII characters.

  • (#13936): Add support for q/kdb+ programming language in percent format notebooks and code cell options. (author: @benlubas)

  • (#13936): Fix isJupyterPercentScript regex to correctly detect percent scripts with [raw] cells and cells not at the start of the file. The regex now properly groups the alternation (markdown|raw) and uses multiline mode.

knitr

  • (#13958): Use max precision for ojs_define number like this is the case for jupyter or julia engine.

Other fixes and improvements

  • (#8730): Detect x64 R crashes on Windows ARM and provide helpful error message directing users to install native ARM64 R instead of showing generic "check your R installation" error.

  • (#13402): nfpm (https://nfpm.goreleaser.com/) is now used to create the .deb package, and new .rpm package. Both Linux packages are also now built for x86_64 (amd64) and aarch64 (arm64) architectures.

  • (#13528): Adds support for table specification using nested lists and the list-table class.

  • (#13575): Improve CPU architecture detection/reporting in macOS to allow quarto to run in virtualized environments such as OpenAI's codex.

  • (#13656): Fix R code cells with empty lang: "" option producing invalid markdown class attributes.

  • (#13832): Fix license.text metadata not being accessible when using an inline license (license: "text"), and populate it with the license name for CC licenses instead of empty string. (author: @mcanouil)

  • (#13856): Add code annotation support for Typst and Observable.js code blocks. (author: @mcanouil)

  • (#13890): Fix render failure when using embed-resources: true with input path through a symlinked directory. The cleanup now resolves symlinks before comparing paths.

  • (#13907): Ignore AI assistant configuration files (CLAUDE.md, AGENTS.md) when scanning for project input files and in extension templates, similar to how README.md is handled.

  • (#13935): Fix quarto install, quarto update, and quarto uninstall interactive tool selection.

  • (#13992): Fix crash when rendering div with both cross-reference ID and conditional visibility to PDF.

  • (#13997): Fix Windows dart-sass theme compilation failing when Quarto is installed in a path with spaces (e.g., C:\Program Files\) and the project path also contains spaces.

  • (#13998): Fix YAML validation error with CR-only line terminators (old Mac format). Documents using \r line endings no longer fail with "Expected YAML front matter to contain at least 2 lines".