Conversation
✅ Deploy Preview for adorable-belekoy-acde02 ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
ardoco.de ran on a pre-v1, vendored-theme al-folio fork. Upstream has since
moved to a gem-based v1, so the fork sat on a dead branch: 27 gems and 14
workflows, and 20 MB of downloaded vendor libraries, to serve 25 MB of content.
fuchss.org hit the same wall last week and its author put the general case
well — "every design decision I cared about lived inside theme internals".
Same content, same URLs, different machinery.
before after
dependencies 27 gems 11 npm packages
workflows 14 1
tracked files 329 112
homepage requests 27 1
homepage weight 2.1 MB 32 KB
build ~30 s 1.5 s (31 pages)
Content moves into six Zod-validated collections. The joins that Jekyll
resolved as string lookups are now Astro references, so a conference naming an
approach that does not exist, a BibTeX abbr with no venue entry, or an
html = {/c/<slug>} pointing at a missing page all stop the build instead of
rendering blank. That immediately surfaced two latent bugs: abbr = {SE} had no
venues.yml entry, so those badges rendered grey and unlabelled, and the
children[] array in _pages/conferences.md silently drove both the navbar order
and the front-page publication order. Each conference entry now carries its own
navOrder.
The URL surface is unchanged and was checked against gh-pages during the
migration: build.format: 'preserve' emits both /approaches/<slug>/ and the flat
/c/<slug>, the five legacy /c/se* stubs still redirect, and the PDFs and images
are served byte-for-byte from public/ and pinned by SHA-256. public/CNAME is
now committed — it previously survived only because Jekyll's keep_files
preserved it on the branch, and a full-replace deploy of a new tree would have
dropped the custom domain.
Also fixed along the way: four GI proceedings papers typed as @Article with the
publishing society in a journal field, and non-breaking spaces hidden inside
two titles that broke word wrapping and the publications filter.
New: a real /conferences/ index, Highwire citation_* tags and ScholarlyArticle
JSON-LD on every paper page (the old site emitted neither), and email addresses
that appear nowhere in the served bytes. npm run verify asserts all of it,
including the two NEVER CHANGE THIS LINE comments that mcse.kastel.kit.edu
scrapes.
The site is dark only.
dfuchss
force-pushed
the
feature/astro
branch
from
September 14, 2026 15:44
7a40b8c to
4a8c992
Compare
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.
Same content, same URLs, different machinery.
ardoco.deran on a pre-v1, vendored-theme al-folio fork. Upstream has since moved to agem-based v1, so the fork sat on a branch nobody maintains any more: 27 gems, 14 workflows and 20 MB
of build-time-downloaded vendor libraries, to serve about 25 MB of actual content.
fuchss.orghitthe same wall last week and wrote it up; this
ports that approach to ARDoCo, with its own design.
Data errors now stop the build
Content lives in six Zod-validated collections —
publications(16, parsed frompapers.bibatbuild time),
conferences(16: 11 paper pages + 5 redirect stubs),approaches(8),people(6),authors,venues.The joins that Jekyll resolved as string lookups are Astro
reference()s now, so a conferencenaming an approach that does not exist, a BibTeX
abbrwith no venue entry, or anhtml = {/c/<slug>}pointing at a missing page fails the build instead of rendering blank.That surfaced two latent bugs immediately:
abbr = {SE}had novenues.ymlentry, so those badges rendered grey and unlabelled.children[]array in_pages/conferences.mdsilently drove both the navbar order and thefront-page publication order, so the two could drift. Each conference entry now carries its own
navOrder.URLs are unchanged
Checked against the live
gh-pagesbranch during the migration; every published path stillresolves.
build.format: 'preserve'emits both shapes from one config:/approaches/<slug>/as a directoryand
/c/<slug>as a flat.html, exactly as Jekyll did.se24,se25,se26-exarch,se26-lissa,taas26) still redirect to thepapers that superseded them.
public/and pinned by SHA-256.public/CNAMEis now committed. It previously survived only because Jekyll'skeep_filespreserved it on the branch; a full-replace deploy of a new tree would have dropped the custom
domain and left the site reachable only at
ardoco.github.io./_pages/conferences/— an accidental Jekyll address, published because that page had nopermalink:— is retired in favour of a real/conferences/index.Bibliography fixes
@articlewith the publishing society in ajournalfield. They are proceedings: retyped@inproceedings, bogus field dropped, LNI seriesnamed on the two carrying a
P-nnnvolume.wrapping, were copied into anyone's
.bibvia the BibTeX button, and stopped the publicationsfilter matching a typed space.
month = {04}, two rawüwhere the rest of the file uses LaTeX escapes, and a duplicate ISSN.Crossref still reports print-vs-electronic ISSN differences and shortened venue names — both are
correct as they stand, and the GI/ACM 2026 DOIs are simply not Crossref-registered.
Also new
/conferences/index; the 11 paper pages were dropdown-only before.citation_*tags andScholarlyArticleJSON-LD on every paper page — the old siteemitted neither (
serve_og_metaandserve_schema_orgwere bothfalse).as
hey (at) kit (dot) eduwithout JS. The oldjekyll-email-protectoutput survived oneunescapecall.Review
npm run verifyasserts: the 32 assets are byte-identical,CNAMEand.nojekyllare emitted, all568 internal links and 191 fragments resolve, WCAG contrast holds, all 50 images carry intrinsic
dimensions, no text runs into a link, no address leaks,
www.youtube.com(the two screencasts) isstill the only third-party origin, and the two
NEVER CHANGE THIS LINE B/Ecomments thatmcse.kastel.kit.eduscrapes are present verbatim with their three paragraphs intact.Worth a look by hand:
/c/icsa25(the richest page),/c/taas26(should bounce toicsa25),/people/#dominik-fuchß(anchor reached from a publication author link), and/approaches/lissa/(reverse-joined publications).
Notes
prettier --check,astro check,buildandverify,then publishes
dist/togh-pages.astro checkreports 2 hints insrc/pages/c/[slug].astro, claiming two used imports are unused.That is a checker limitation with the early
returnin Astro frontmatter; exit code is 0 and thebuilt stubs prove the branch runs. Documented in the file.
It is an explicit allow-list entry in the audit, so a second one cannot appear unnoticed.
Follow-ups (not in this PR)
.pptxdecks that duplicate their own PDFs.icsa26-archguard.svg(1.1 MB) andaire25-aire.svg(711 KB) are oversized; optimising themchanges bytes at pinned URLs, so it is a deliberate separate decision.
abbr, whichwas true before this PR too.