Skip to content

Generate the site from content instead of hand-written HTML - #1

Merged
Tewf merged 2 commits into
mainfrom
build-pipeline
Aug 15, 2026
Merged

Generate the site from content instead of hand-written HTML#1
Tewf merged 2 commits into
mainfrom
build-pipeline

Conversation

@Tewf

@Tewf Tewf commented Aug 15, 2026

Copy link
Copy Markdown
Owner

Phase 1 of the redesign: the plumbing, with nothing visual changed yet.

Why

The redesign needs a bundler and a second language, and hand-written HTML gives
neither. Three.js cannot come from a CDN under this site's own rules, so it has
to be bundled; and a French counterpart for every page would mean sixteen files
with the prose written twice.

What changed

Content moved into content/, one file per page holding every language.
tools/build-pages.mjs renders it through src/templates/ into .gen/, which
Vite builds into dist/. Deployment moves from branch-serving to Actions.

The rendered site is unchanged. Verified against the live pages with
Playwright: text content identical character for character, nine groups of
computed styles identical, and every element count (cards, reductions, headings,
preview images) identical.

Two things improve on the way past:

  • The header, breadcrumb and footer were fetched and assembled in the browser.
    They are now in the HTML, so the site reads with JavaScript switched off
    rather than only mostly reading.
  • The design tokens were copy-pasted into five repositories and had already
    drifted into three different versions. They are now one file at
    /site/tokens.css. The project sites are same-origin, so they can link it
    instead of keeping copies. A rename there would restyle four live sites with
    no signal anywhere, so the names are pinned in site/tokens.lock.json and the
    build fails if one goes missing.

The README claimed no build step and no framework. Two thirds of that stops
being true, so it now says what is still true: nothing from a CDN, no
third-party code in the browser, every dependency bundled.

Before merging

The Pages source has to be flipped first, or deploy-pages fails:

gh api -X PUT repos/Tewf/Tewf.github.io/pages -f build_type=workflow

Order matters. The previous deployment keeps serving in the gap. The API call
reverses cleanly, but the repo layout does not: once main holds content/ and
src/ instead of servable HTML, reverting to branch-serving would serve a
broken site.

Known dependency, not introduced here

b0280da moves the tournament's credit to the coursework repository, but
University-Coursework has 10 unpushed commits and that path is still a 404 on
GitHub. Until it is pushed, two preview images and one card link on
/research/strategic-pricing/ are broken:

  • .../Prolog/StrategyTournament/results/leaderboard.png
  • .../Prolog/StrategyTournament/

Still to come

Direction round, the visual world, motion, the French pages, repointing the four
sibling repos at the shared stylesheet, and the social cards.

🤖 Generated with Claude Code

Tewf and others added 2 commits August 15, 2026 17:03
The redesign needs a bundler and a second language, and hand-written HTML
gives neither. Three.js cannot be loaded from a CDN under this site's own
rules, so it has to be bundled; and a French counterpart for every page
would mean sixteen files with the prose written twice.

So content moves into content/, one file per page holding every language,
and tools/build-pages.mjs renders it through src/templates/ into .gen/,
which Vite builds. Pages deploy from CI rather than straight off the
branch. Nothing about the rendered site changes: text, computed styles
and element counts match the live pages exactly.

Two things improve on the way past. The header, breadcrumb and footer were
fetched and assembled in the browser; they are now in the HTML, so the
site reads with JavaScript switched off rather than only mostly reading.
And the design tokens, which were copy-pasted into five repositories and
had already drifted into three different versions, are now one file at
/site/tokens.css. The project sites are same-origin, so they can link it
instead of keeping copies. Renaming a token there would restyle four live
sites with no signal anywhere, so the names are pinned in
site/tokens.lock.json and the build fails if one goes missing.

The README claimed no build step and no framework. Two thirds of that
stops being true here, so it says what is still true instead: nothing from
a CDN, no third-party code in the browser, every dependency bundled.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This page attributed four things to the GAEL internship that belong to a Prolog
course project which happened to be submitted in the same repository: the two
tournament agents, the standings, the equilibrium analysis and the error found
in it later. The report's own game is not the 5x5 undercutting game, and that
project has since moved to the coursework repository.

The story is kept, because it is the better of the two, but it is now labelled
as coursework and linked there. What the internship itself produced, the survey
and the imitation model, now leads the page instead of trailing it.

Two preview images pointed at paths that only still resolve because neither
repository has been pushed since the move. They now point at the coursework
repository, where those figures actually live.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Tewf
Tewf merged commit 7826e74 into main Aug 15, 2026
2 checks passed
Tewf added a commit that referenced this pull request Aug 29, 2026
Generate the site from content instead of hand-written HTML
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant