Release · v1.115.0
Add beta v2 site and refactor shared rendering
feat(v2): add beta v2 site and refactor shared rendering
Details
Add a separate /v2/ beta layout (hero, stats, about, pillars, education, experience, publications, teaching/talks, awards, news, footer) reachable via a "Beta" pill on the classic site. Shared content stays in frontend/index.md and frontend/assets/sections/*.md; v2 only adds presentation. Centralize public-but-rotatable runtime config (GA4 measurement ID, gist owner/id) in frontend/_data/runtime.yml, generated at build time from env or GitHub secrets via backend/scripts/generate_runtime_config.sh and exposed to layouts/JS through _includes/runtime_head.html. Extract DB-asset resolution and news fetching into a shared assets/ts/db_assets.ts used by both sites. Load it on the classic layout (was missing, breaking applyDbLinks) and refactor news_box.html to call the shared fetchNewsItems instead of re-implementing it inline. Add a v2 markdown helper (_includes/v2/_markdown.html) that escapes " | " so kramdown's GFM parser stops emitting <table> elements for "[A](u) | [B](u)" link rows. The awards include also collapses the blank line before its link row so each fellowship renders as a single full-width card. Hide the leftover <hr> from the shared "# Title\n---" header so each section shows exactly one divider line. Replace dead external links (Helmholtz HIDA, Microsoft AutoGen) and remove the Google Tag Manager row in backend/seeds/seed_links.sql, with a migration to apply the same to the live Supabase DB. Made-with: Cursor
Files changed (40)
| .github/workflows/ci.yml | +9 | −0 |
| .gitignore | +4 | −0 |
| README.md | +47 | −0 |
| _config.yml | +0 | −1 |
| _config_ci.yml | +0 | −1 |
| backend/config/.env.runtime.template | +11 | −0 |
| backend/migrations/migrate_fix_dead_external_links.sql | +20 | −0 |
| backend/scripts/generate_runtime_config.sh | +50 | −0 |
| backend/seeds/seed_links.sql | +2 | −3 |
| frontend/_data/runtime.yml.template | +19 | −0 |
| frontend/_includes/news_box.html | +6 | −69 |
| frontend/_includes/runtime_head.html | +21 | −0 |
| frontend/_includes/v2/_markdown.html | +11 | −0 |
| frontend/_includes/v2/about.html | +12 | −0 |
| frontend/_includes/v2/awards.html | +28 | −0 |
| frontend/_includes/v2/education.html | +17 | −0 |
| frontend/_includes/v2/experience.html | +16 | −0 |
| frontend/_includes/v2/footer.html | +43 | −0 |
| frontend/_includes/v2/hero.html | +42 | −0 |
| frontend/_includes/v2/nav.html | +27 | −0 |
| frontend/_includes/v2/news.html | +16 | −0 |
| frontend/_includes/v2/pillars.html | +43 | −0 |
| frontend/_includes/v2/publications.html | +17 | −0 |
| frontend/_includes/v2/stats.html | +31 | −0 |
| frontend/_includes/v2/teaching_talks.html | +27 | −0 |
| frontend/_layouts/default.html | +3 | −3 |
| frontend/_layouts/v2.html | +42 | −0 |
| frontend/_sass/v2.scss | +950 | −0 |
| frontend/assets/css/style.scss | +51 | −0 |
| frontend/assets/css/v2.scss | +4 | −0 |
| frontend/assets/ts/commit-date.ts | +21 | −4 |
| frontend/assets/ts/db_assets.ts | +136 | −0 |
| frontend/assets/ts/google_analytics.ts | +0 | −6 |
| frontend/assets/ts/load-section.ts | +8 | −163 |
| frontend/assets/ts/v2.ts | +153 | −0 |
| frontend/index.md | +1 | −1 |
| frontend/scripts/local.sh | +3 | −0 |
| frontend/v2.md | +25 | −0 |
| package-lock.json | +6 | −7 |
| test/verify_google_analytics.mjs | +11 | −15 |