Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
3aebce4
Bump Pandoc to 3.10 and Typst to 0.15.0 in configuration
cderv Jul 9, 2026
f33a6e6
Bump Dart Sass to 1.101.0, esbuild to 0.28.1, veraPDF to 1.30.2
cderv Jul 9, 2026
2ef072b
Update all templates with pandoc 3.10 changes
cderv Jul 10, 2026
3d812e0
Fix jog.lua traverser for pandoc 3.10's typed TableBody
cderv Jul 10, 2026
646a0cd
Update Lua type stubs for pandoc 3.9-3.10 additive API changes
cderv Jul 10, 2026
57a2991
Fix mediabag-routed image paths breaking Typst 0.15 compile on Windows
cderv Jul 10, 2026
e8921e6
Fix pandoc 3.10 test regressions: version check + output-shape drift
cderv Jul 15, 2026
08deb91
Fix Windows backslash-path leaks into Typst output for brand logos, p…
cderv Jul 15, 2026
dea7b3c
Fix Typst figure caption leaking into alt text under pandoc 3.10
cderv Jul 15, 2026
d3a4452
Fix review findings: incomplete Typst path normalization and a mislea…
cderv Jul 15, 2026
8bc0407
Fix Typst bibliography paths with a leading dot under pandoc 3.10
cderv Jul 15, 2026
c3d5cf9
Drop changelog entry for the leading-dot bibliography fix
cderv Jul 15, 2026
fa64a90
Add Dependencies changelog entries for the pandoc 3.10 bump
cderv Jul 15, 2026
36d9f32
Fix Lua 200-local-variable overflow in the packaged filter bundle
cderv Jul 16, 2026
17422c5
Document the _quarto.modules registry convention for import()ed Lua f…
cderv Jul 16, 2026
d146b62
Fix feature-format-matrix typst regex drift from pandoc 3.10
cderv Jul 16, 2026
b28f7bd
Update some gitignore modified by Quarto from running tests
cderv Jul 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .claude/rules/filters/lua-development.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,20 @@ local md = require("modules/md")
import("./modules/patterns.lua")
```

### In `import()`ed Files, Prefer the `_quarto.modules` Registry Over a Fresh `require()`

Files loaded via `import()` are textually concatenated into one shared Lua chunk for
the packaged distribution build, so every top-level `local` they declare — including
`local x = require("modules/y")` — competes for Lua's hard 200-local-per-function
limit across *all* inlined files combined. Most `modules/*` are already registered
in `_quarto.modules` by `modules/import_all.lua` (a single global table assignment,
so it costs zero additional locals). In an `import()`ed file, reference
`_quarto.modules.<name>.<fn>(...)` directly instead of adding a new top-level
`local <name> = require("modules/<name>")`. This doesn't apply inside files loaded
via `require()` themselves — those get their own independent chunk and aren't
affected. See [llm-docs/lua-filter-bundle-local-limit.md](../../../llm-docs/lua-filter-bundle-local-limit.md)
for the full mechanism and why this keeps recurring.

## Custom Node Patterns

### Walking Custom Nodes
Expand Down
10 changes: 5 additions & 5 deletions configuration
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@
export DENO=v2.7.14
# TODO figure out where 0.1.41 apple silicon libs are available
export DENO_DOM=v0.1.41-alpha-artifacts
export PANDOC=3.8.3
export DARTSASS=1.87.0
export ESBUILD=0.25.10
export TYPST=0.14.2
export PANDOC=3.10
export DARTSASS=1.101.0
export ESBUILD=0.28.1
export TYPST=0.15.0
export TYPST_GATHER=0.2.3
export VERAPDF=1.28.2
export VERAPDF=1.30.2


# NB: we can't put comments in the same line as export statements because it
Expand Down
2 changes: 2 additions & 0 deletions dev-docs/feature-format-matrix/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,5 @@ qmd-files/**/*.md
qmd-files/**/*.mdx

/.quarto/

**/*.quarto_ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ _quarto:
ensureTypstFileRegexMatches:
-
# note css fuchsia #f012be is not the same as css fuchsia #ff00ff
- '\[#set text\(fill: fuchsia\); B\]'
- '\[#set text\(fill: fuchsia\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '\[#set text\(fill: rgb\(255, 0, 255\)\); B\]'
- '\[#set text\(fill: rgb\(255, 0, 255\)\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ _quarto:
ensureTypstFileRegexMatches:

-
- '\[#set text\(fill: rgb\(60, 179, 113\)\); B\]'
- '\[#set text\(fill: rgb\(60, 179, 113\)\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '\[#set text\(fill: rgb\("#000066"\)\); B\]'
- '\[#set text\(fill: rgb\("#000066"\)\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '\[#set text\(fill: rgb\(0, 0, 0, 0%\)\); B\]'
- '\[#set text\(fill: rgb\(0, 0, 0, 0%\)\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '\[#set text\(fill: maroon\); B\]'
- '\[#set text\(fill: maroon\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '#{set text\(font: \("Georgia", "serif"\)\); table\('
- '#{set text\(font: \("Georgia", "serif"\)\);\s*table\('
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '\[#set text\(size: 0.8em\); B\]'
- '\[#set text\(size: 0.8em\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '#{set text\(size: 6pt\); table\('
- '#{set text\(size: 6pt\);\s*table\('
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '#block\[\s*#set text\(style: "italic"\); Italic div\s*\]'
- '#block\[\s*#set text\(style: "italic"\);\s*Italic div\s*\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '\[#set text\(style: "italic"\); B\]'
- '\[#set text\(style: "italic"\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '\[#set text\(style: "normal"\); B\]'
- '\[#set text\(style: "normal"\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '\[#set text\(style: "oblique"\); B\]'
- '\[#set text\(style: "oblique"\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '#block\[\s*#set text\(weight: "semibold"\); Demi-bold div\s*\]'
- '#block\[\s*#set text\(weight: "semibold"\);\s*Demi-bold div\s*\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '\[#set text\(fill: rgb\(255, 0, 255\)\); B\]'
- '\[#set text\(fill: rgb\(255, 0, 255\)\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '\[#set text\(weight: "extralight"\); B\]'
- '\[#set text\(weight: "extralight"\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '\[#set text\(fill: rgb\("#85144b7f"\)\); B\]'
- '\[#set text\(fill: rgb\("#85144b7f"\)\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ _quarto:
ensureTypstFileRegexMatches:

-
- '\[#set text\(fill: rgb\(60, 179, 113, 50%\)\); B\]'
- '\[#set text\(fill: rgb\(60, 179, 113, 50%\)\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '\[#set text\(fill: rgb\(0, 0, 0, 50%\)\); B\]'
- '\[#set text\(fill: rgb\(0, 0, 0, 50%\)\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '\[#set text\(fill: rgb\(0, 0, 0, 100%\)\); B\]'
- '\[#set text\(fill: rgb\(0, 0, 0, 100%\)\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '\[#set text\(fill: rgb\(70, 130, 180, 17%\)\); B\]'
- '\[#set text\(fill: rgb\(70, 130, 180, 17%\)\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ _quarto:
ensureTypstFileRegexMatches:
-
# note the input is invalid, there is no "int alpha" input for rgb() in css
- '\[#set text\(fill: rgb\(70, 130, 180, 50%\)\); B\]'
- '\[#set text\(fill: rgb\(70, 130, 180, 50%\)\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '\[#set text\(fill: rgb\(70, 130, 180, 30%\)\); B\]'
- '\[#set text\(fill: rgb\(70, 130, 180, 30%\)\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '\[#set text\(fill: rgb\(94%, 42%, 0%, 37.5%\)\); B\]'
- '\[#set text\(fill: rgb\(94%, 42%, 0%, 37.5%\)\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '\[#set text\(fill: rgb\(90%, 85%, 30%, 50%\)\); B\]'
- '\[#set text\(fill: rgb\(90%, 85%, 30%, 50%\)\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '\[#set text\(fill: rgb\(70, 130, 180, 50%\)\); B\]'
- '\[#set text\(fill: rgb\(70, 130, 180, 50%\)\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '\[#set text\(fill: rgb\("#4682b440"\)\); B\]'
- '\[#set text\(fill: rgb\("#4682b440"\)\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '\[#set text\(fill: rgb\("#4682b47f"\)\); B\]'
- '\[#set text\(fill: rgb\("#4682b47f"\)\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '\[#set text\(fill: rgb\("#c1d4"\)\); B\]'
- '\[#set text\(fill: rgb\("#c1d4"\)\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '\[#set text\(fill: rgb\("#c1d7"\)\); B\]'
- '\[#set text\(fill: rgb\("#c1d7"\)\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '\[#set text\(fill: rgb\(70, 130, 180, 45%\)\); B\]'
- '\[#set text\(fill: rgb\(70, 130, 180, 45%\)\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '\[#set text\(fill: rgb\(70, 130, 180, 42%\)\); B\]'
- '\[#set text\(fill: rgb\(70, 130, 180, 42%\)\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '\[#set text\(fill: rgb\(94%, 42%, 0%, 36%\)\); B\]'
- '\[#set text\(fill: rgb\(94%, 42%, 0%, 36%\)\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '\[#set text\(fill: rgb\(94%, 42%, 0%, 50%\)\); B\]'
- '\[#set text\(fill: rgb\(94%, 42%, 0%, 50%\)\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '\[#set text\(fill: rgb\(94%, 42%, 0%, 42%\)\); B\]'
- '\[#set text\(fill: rgb\(94%, 42%, 0%, 42%\)\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '\[#set text\(fill: rgb\(94%, 42%, 0%, 50%\)\); B\]'
- '\[#set text\(fill: rgb\(94%, 42%, 0%, 50%\)\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- '\[#set text\(fill: rgb\(70, 130, 180, 50%\)\); B\]'
- '\[#set text\(fill: rgb\(70, 130, 180, 50%\)\);\s*B\]'
- []
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ _quarto:
- ["–"]
typst:
ensureTypstFileRegexMatches:
- ["--"]
- ['do-\\-not-\\-escape-\\-this'] # each hyphen pair is now escaped individually; still renders as literal -- (verified via pdftotext), not en dash
- ["–"]
latex:
ensureFileRegexMatches:
Expand Down
Loading
Loading