Joshua Shay Kricheli NeuroSymbolic AI
v2 v1

Release · v1.115.0

Add beta v2 site and refactor shared rendering

feat(v2): add beta v2 site and refactor shared rendering

feat v1.115.0 April 30, 2026 krichelj 1dcfd35

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