Move about/, community/, landing/, newsletter/ into site/ to
declutter the repo root. Instructors stays top-level as curriculum
content alongside book/, kits/, labs/, etc.
- Create unified site-preview-dev.yml (replaces 3 individual workflows)
- Create site-publish-live.yml for live deployment of all site subsites
- Add deploy_site and deploy_instructors to publish-all-live.yml
- Update all workflow paths, _quarto.yml relative paths, and scripts
- Fix landing page skip-list to include about/community/newsletter
- Update .gitignore newsletter paths
- Remove hero/splash layouts from slides, instructors, newsletter
- Switch all subsites to default Quarto layout (sidebar + TOC) matching kits pattern
- Add Google Fonts (Inter + JetBrains Mono) to slides portal
- Change instructors and interviews navbar from dark to light for consistency
- Replace indigo accent with crimson in instructors SCSS to match ecosystem
- Add slide preview carousel with 7 actual Beamer slide renders across Vol I and Vol II
Replace the generate-navbar.py script approach with direct metadata-files
references to navbar-common.yml. Quarto natively merges navbar arrays,
so site-local dropdowns defined inline in each _quarto.yml get appended
to the shared navbar automatically.
- Delete generate-navbar.py script (no longer needed)
- Delete all _navbar-generated.yml and _navbar-local.yml files
- Each subsite now references ../book/quarto/config/shared/html/navbar-common.yml
directly via metadata-files
- Sites with local dropdowns (slides, instructors, mlsysim) define them inline
in their _quarto.yml navbar.left — Quarto merges with the shared left items
- Zero tooling, zero generated files, zero maintenance scripts
Single source of truth for the navigation bar in navbar-common.yml.
New 5-dropdown structure: Read | Build | Teach | Community | About.
- Add generate-navbar.py script to merge shared + site-local dropdowns
- Add _navbar-local.yml for slides, instructors, mlsysim (site-specific menus)
- Generate _navbar-generated.yml for all 6 subsites (committed, no CI changes needed)
- Strip hardcoded navbars from all _quarto.yml configs (landing, vol1, vol2, slides,
instructors, mlsysim, kits, labs, newsletter)
- Add community/ and about/ paths to rewrite-dev-urls.sh for dev preview
To update navbar: edit navbar-common.yml, run generate-navbar.py --all, commit.
- Update PROTOCOL.md and TEMPLATE.md to reflect the 4-5 Part tabbed
structure (replacing stale 2-Act spec), fix duration targets to 45-55 min
- Fix Vol 2 index.qmd: correct all 16 lab link slugs, titles, and count
- Rewrite labs README from placeholder to full 33-lab inventory
- Move PROTOCOL.md and TEMPLATE.md canonical copies to .claude/docs/labs/,
leave thin pointers in labs/
- Move internal planning docs (lab plans, review notes, audit reports,
AI prompts, content strategy) from tracked dirs to .claude/docs/
- Add internal doc paths to .gitignore to prevent future leakage
- Add mlsysim-validate-dev, mlsysim-preview-dev, and mlsysim-publish-live workflows
- Move mlsysim docs config to config/ dir with symlink (matching kits/labs pattern)
- Add MLSYSIM to ecosystem navbar across all 7 site configs
- Add mlsysim/ URL rewrite to book-preview-dev for dev site
- Replace hardcoded paths with GitHub variables in kits and labs workflows
- New repo variables: MLSYSIM_ROOT, MLSYSIM_DOCS, DEV_MLSYSIM_PATH, KITS_ROOT,
KITS_DOCS, LABS_ROOT, LABS_DOCS
Adds newsletter infrastructure: CLI commands (new, list, preview, publish,
fetch, status) integrated into binder, Quarto archive site config for
mlsysbook.ai/newsletter/, and 12-month editorial content plan. Drafts
are gitignored for private local writing; sent newsletters are committed
as the public archive.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>