chore: bump Zola to 0.22.0 (Giallo highlighting migration)#2
Merged
Conversation
Zola 0.22.0 replaces the Syntect highlighter with Giallo and moves all syntax-highlighting options from [markdown] into [markdown.highlighting]. - config.toml: move highlight_code into [markdown.highlighting]; replace highlight_theme = "css" with style = "class" and theme = "catppuccin-frappe" (matching the tabi 0.22 demo). Output stays CSS-class based, coloured by tabi's own stylesheet. - deploy-cloudflare-pages.yml: install-action zola@0.21.0 -> zola@0.22.0. - test-build.yml: shalzz/zola-deploy-action@v0.19.2 -> @v0.22.0. error_on_missing_language is left off: the 'flag' code fence in content/blog/idek2025_writeup.md has no Giallo grammar and would fail the build. Verified locally with a real zola 0.22.0 build (exit 0).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Bumps the build toolchain from Zola 0.21.0 to Zola 0.22.0 and performs the required highlighting-config migration.
Zola 0.22.0 replaces the Syntect syntax highlighter with Giallo (see the getzola/zola CHANGELOG). This is a breaking change: all highlighting options move from
[markdown]into a new[markdown.highlighting]table, andhighlight_themeis gone. Without this migration the site fails to build (unknown field highlight_theme/unknown field highlight_code).Production deploys ship the artifact built by
deploy-cloudflare-pages.yml(Cloudflare Pages does not rebuild), so that workflow's Zola version is authoritative and is bumped here.test-build.ymlis aligned to the same version.Config change (
config.toml)Before:
After:
Notes:
highlight_codehad to move into[markdown.highlighting](0.22.0 rejects it under[markdown]; the build error itself listed the valid[markdown]fields).highlight_theme = "css"is replaced bystyle = "class"(same effect: emit CSS classes, no inline colours) plustheme = "catppuccin-frappe". This matches the tabi 0.22 democonfig.tomlat the currently-vendored submodule commit5c90004.bottom_footnotesandsmart_punctuationremain in[markdown]and continue to work.Workflows
.github/workflows/deploy-cloudflare-pages.yml: stepInstall Zola 0.21.0->Install Zola 0.22.0,tool: zola@0.21.0->tool: zola@0.22.0..github/workflows/test-build.yml:shalzz/zola-deploy-action@v0.19.2->@v0.22.0(thev0.22.0tag exists and that action's tags track the Zola version; confirmed via the GitHub API). This also pulls the test build forward from the previously-lagging 0.19.2.Verification (real local build, macOS arm64, official zola 0.22.0 binary)
zola buildwith the migrated config: exit 0,Creating 8 pages (0 orphan) and 4 sections, zero warnings. (For comparison, the 0.21.0/Syntect build emitted "Highlight language not found" warnings fortext,verilog, andflag; under Giallotextandverilogno longer warn.)class="z-..."markup (e.g.z-keyword z-control,z-entity z-name z-function), and tabi'ssass/parts/_syntax_theme.scss(compiled intomain.css) defines those.z-*classes. So code blocks are styled, not left bare.blog/hitcon2025(verilog),blog/game0x2025w1(text), andblog/idek2025-writeup(flag) all containz-class markup.katex.min.cssemitted;katexmarkup in posts).error_on_missing_language decision
Left OFF (omitted). Enabling
error_on_missing_language = truewas tested and turns a missing grammar into a hard build error:flag(used incontent/blog/idek2025_writeup.md). This is a made-up fence label, not a real language.verilogandtext, which warned under 0.21/Syntect, are accepted by Giallo and do not error.Leaving the flag off keeps the build green. Follow-up (optional, not in this PR): change the
flagfence to plain```(ortext) and thenerror_on_missing_languagecould be enabled.Risks for the reviewer
style = "class", actual colours come from tabi's_syntax_theme.scss, not from thethemevalue, so this should be minimal — but it is worth a visual spot-check of a code-heavy post.public/giallo.css. tabi does not link it (its templates loadmain.css), so it is dead weight in the output but harmless.test-build.ymlchecks out submodules non-recursively (submodules: true). tabi has a nested submodule; the deploy workflow usessubmodules: recursive. This is pre-existing and unchanged here, but if the test-build job fails on a missing nested submodule that predates this PR.Not verified
zola 0.22.0 buildwas run. Thev0.22.0shalzz tag and thezola@0.22.0install-action target were confirmed to exist but the runners' end-to-end behavior was not exercised.