v1.9 backports
In this release
- (#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.
In previous releases
- (#13369): Fix failure in theme compilation when
brand.color.primary is specified for light or dark but not both.
- (#13383): Fix failure when combining
minimal: true with brand.yml.
- (#13396): Fix
quarto publish connect regression.
- (#13418): Resolve logo paths specified directly in
brand.logo.{size}.
- (#13445): Brand logo shortcode will not add
.light-content, .dark-content classes when light or dark is specifically requested.
- (#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.
v1.8 changes
Regression fixes
- (#6607): Add missing beamer template update for beamer theme options:
colorthemeoptions, fontthemeoptions, innerthemeoptions and outerthemeoptions.
- (#12625): Fire resize event on window when light/dark toggle is clicked, to tell widgets to resize.
- (#12657): Load Giscus in generated script tag, to avoid wrong-theming in Chrome.
- (#12780):
keep-ipynb: true now works again correctly and intermediate .quarto_ipynb is not removed.
- (#13051): Fixed support for captioned Markdown table inside Div syntax for crossref. This is special handling, but this could be output by function like
knitr::kable() with old option support.
- (#13441): Catch
undefined exceptions in Pandoc failure to avoid spurious error message.
- (#13456): Ensure that the
axe YAML completion only appears in HTML formats.
Backwards-compatibility breaking changes
Dependencies
- Update
bootstrap-icons to version v1.13.1 from v1.11.1.
Projects
website
- (#10284): a11y - Fix keyboard navigation for tabset panels when using an HTML theme. Tabs now properly receive keyboard focus.
- (#12551): Improve warning issued when
aliases would overwrite an existing document.
- (#12616): find SVG images in image discovery for listings.
- (#12693): Prevent resource exhaustion on large websites by serializing
NotebookContext information to file instead of the environment.
- (#12949): Ensure redirects preserve
hash and search when possible.
Crossrefs
- (#12615): Adds
algorithm to theorem environments. (author: @jeremy9959)
Lua Filters and API
- (#11750): Extend filter path resolution to support
at/path filters from extensions.
- (#12727): Do not crash in the presence of malformed tabset contents.
- (#12806): Use pandoc APIs to handle codepage conversion on Windows.
- (#12811): Add support for YouTube Shorts in
video shortcode.
- (#13112): Add
quarto.format.format_identifier() API entry.
- (#13128): Avoid meta shortcode crash on bad input.
- (#13246): Add
quarto.variables.get() and quarto.metadata.get() APIs.
- (#13334): Fix wrong function being called on
is_html_slide_output and is_markdown_with_html_output.
Commands
inspect
- (#12733): Add installed extensions to
quarto inspect project report.
add
- (#12627): Don’t actually install extension when user responds
yes to first prompt but no to second.
create
- (#12965): Prevent automatic opening of new editor sessions when creating projects in Posit Workbench context. The
--open flag is now ignored in this environment to avoid issues with Workbench session management.
Extensions
- (#12559): New extension type:
brand for distributing brand.yml configurations with associated assets.
Engines
- (#13171): Provide execution information to all engines uniformly via QUARTO_EXECUTE_INFO environment variable. It points to a file on disk containing a JSON object describing the execution environment for code cells to use.
jupyter
- (#12753): Support change in IPython 9+ and import
set_matplotlib_formats from matplotlib_inline.backend_inline in the internal setup.py script used to initialize rendering with Jupyter engine.
- (#12839): Support for
plotly.py 6+ which now loads plotly.js using a cdn in script as a module.
- (#13026, #13151), #13184: Use
jsdelivr CDN for jupyter widgets dependencies.
knitr
- Correctly detect R binary on Windows when
R_HOME is set - this fixes issue with quarto::quarto_render() that will now correctly use the same R version as the R session it is called from.
julia
- (#12870): Update
julia engine from 0.17.0 to 0.17.3 to improve juliaup detection on Windows systems and correctly set Base.source_path() output to match REPL and script usage.
Languages
- (#13098): Fox a minor inappropriate phrasing in the Chinese localization of
environment-proof-title (@sun123xyz).
Other fixes and improvements
- (#11321): Follow recommendation from LaTeX project and use
lualatex instead of xelatex as the default PDF engine.
- (#12782): fix bug on
safeRemoveDirSync’s detection of safe directory boundaries.
- (#12853): fix replaceAll() escaping issue with embedded notebooks containing
$ in their Markdown.
- (#12939): Upgrade
mermaidjs to 11.6.0.
- (#13031): Add
.quarto_ipynb files to .gitignore by default.
- (#13085): Avoid
kbd shortcode crashes on unknown OS keys.
- (#13164): add
julia to execute schema to allow autocomplete suggestions. (@mcanouil)
- (#13121): Allow
contents shortcode to find inline elements.
- (#13216): Properly disable
downlit (code-link) and enable code-annotations when non-R code blocks are present.
Quarto Internals
- (#13155): Process
pandoc-reader-FORMAT raw blocks through pandoc.read(FORMAT).
- (#13255): Move some Lua code to use Pandoc’s Lua API.