quarto-dev / quarto-dev/quarto-cli
Lightbox cell option ignored when using Jupyter engine
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 6k
- Forks
- 458
- Avg merge
- 1d 9h
- Merged PRs (30d)
- 41
Description
Bug description
When a .qmd/.ipynb document uses engine: jupyter, the lightbox.group cell option set via #| YAML comments is silently ignored (passed on to "metadata" in Jupyter notebook).
Each figure ends up in its own auto-generated gallery instead of the shared gallery specified by group.
The same option works correctly with the knitr engine.
This was reported in Discussion #14392.
Steps to reproduce
---
title: "Lightbox Example"
format:
html:
lightbox:
match: auto
engine: jupyter
---
## First plot
```{python}
#| label: fig-sine
#| fig-cap: "Sine plot"
#| lightbox:
#| group: figs
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
plt.figure()
plt.plot(x, np.sin(x))
plt.title("Sine")
plt.show()
```
## Second plot
```{python}
#| label: fig-cosine
#| fig-cap: "Cosine plot"
#| lightbox:
#| group: figs
plt.figure()
plt.plot(x, np.cos(x))
plt.title("Cosine")
plt.show()
```
Actual behaviour
Clicking either figure opens the lightbox, but no gallery navigation arrows appear — each image is in its own isolated gallery.
The rendered <a> elements have data-gallery set to auto-generated values (quarto-lightbox-gallery-1, quarto-lightbox-gallery-2) rather than figs.
Expected behaviour
Both figures should be in the same gallery (data-gallery="figs"), so the lightbox shows navigation arrows that cycle between the two plots.
Your environment
- OS: macOS 25.3.0
Quarto check output
Quarto 99.9.9
[✓] Checking environment information...
Quarto cache location: /Users/mcanouil/Library/Caches/quarto
[✓] Checking versions of quarto binary dependencies...
Pandoc version 3.8.3: OK
Dart Sass version 1.87.0: OK
Deno version 2.4.5: OK
Typst version 0.14.2: OK
[✓] Checking versions of quarto dependencies......OK
[✓] Checking Quarto installation......OK
Version: 99.9.9
commit: 2355f229b2764eae02b1f9916ac6e208d0909d02
Path: /Users/mcanouil/Projects/quarto-dev/quarto-cli/package/dist/bin
[✓] Checking tools....................OK
TinyTeX: v2026.02
Chrome Headless Shell: (not installed)
VeraPDF: (not installed)
[✓] Checking LaTeX....................OK
Using: TinyTex
Path: /Users/mcanouil/Library/TinyTeX/bin/universal-darwin
Version: 2025
[✓] Checking Chrome Headless....................OK
Using: Chrome from QUARTO_CHROMIUM
Path: /Applications/Brave Browser.app/Contents/MacOS/Brave Browser
[✓] Checking basic markdown render....OK
(/) Checking R installation...........ℹ R version 4.5.3 (2026-03-11)
! Config '~/.Rprofile' was loaded!
[✓] Checking R installation...........OK
Version: 4.5.3
Path: /Library/Frameworks/R.framework/Resources
LibPaths:
- /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library
knitr: 1.50
rmarkdown: 2.30
[✓] Checking Knitr engine render......OK
[✓] Checking Python 3 installation....OK
Version: 3.14.4
Path: /Users/mcanouil/Projects/quarto-dev/quarto-cli/tests/.venv/bin/python3
Jupyter: 5.9.1
Kernels: quarto-brand, uv, julia-1.12, python3
[✓] Checking Jupyter engine render....OK
[✓] Checking Julia installation...
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing how the Jupyter engine transfers #| cell options into rendered figure metadata, then compare that path with the working knitr engine. Reproduce the example and verify that both generated elements use data-gallery="figs" and show shared navigation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, jupyter, python
- Domain
- frontend, web-dev
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100