39 Commits

Author SHA1 Message Date
Vijay Janapa Reddi
5a6c71911d Standardize shared footer and version pill across Quarto sites
Add shared/config/footer-common.yml (mirrors navbar-common.yml) and point
slides, labs, kits, and instructors at it via metadata-files, replacing their
drifted inline footers. The release pill now lives in the footer right slot
(not dangling below the page) as a fixed muted-gray chip, pinned so it looks
identical regardless of each site's theme accent. mlsysim and the book keep
their own footers (dual license / build stamp) but carry the same pill span.
release-pill.html is now assets-only and populates every data-release-pill
span from each site's own release-manifest.
2026-06-03 15:27:50 -04:00
Vijay Janapa Reddi
c005be91aa chore(announcements): drop self-link CTAs from Line 1 of every subsite
Every subsite's announcement bar Line 1 carried a 'Start reading →' / 'Start building →' / 'Get started →' link that pointed at the very subsite the reader was already on. Clicking it was a no-op self-navigation.

Strip the CTA from Line 1 across all 8 sites that have the regression:
  - announcement-vol1.yml  drop 'Start reading →'
  - announcement-vol2.yml  drop 'Start reading →'
  - tinytorch              drop 'Start building →'
  - mlsysim                drop 'Get started →'
  - kits                   drop 'Get started →'
  - labs                   drop 'Preview →'
  - slides                 drop 'Browse decks →'
  - instructors            drop 'Start here →'

Line 1 keeps the bold identity statement, which is what readers came for. The other lines (Vol I / II links, sibling row, newsletter CTA) keep their navigations since they DO lead somewhere new.

announcement-book.yml is unchanged — its Line 1 already points at the ecosystem root (https://mlsysbook.ai/), not at /book/ where the reader is.
2026-05-13 20:35:33 -04:00
Vijay Janapa Reddi
11194193c0 feat(bars): add StaffML to ecosystem cross-link row across 8 Quarto sites
For the public launch, every site's "Alongside the book" (or "Build
with your students") row now lists StaffML alongside TinyTorch, Hardware
Kits, MLSys·im, and Labs. Two coupled changes:

  • StaffML appended with verb "practice" — pairs cleanly with the
    existing verbs (build / deploy / model / explore / practice).
  • MLSys·im verb changed from "simulate" to "model" to match the
    project's own self-description ("first-principles analytical
    modeling for ML training and inference; model the physics before
    you build"). MLSys·im is analytical, not Monte-Carlo simulation;
    the new verb is more honest and the audience reads it cleanly.

Also restores tinytorch/quarto/config/announcement.yml to the canonical
4-line ecosystem template. That file had been silently rewritten to a
release-only banner ("🎉 v0.1.11 released — ...") by the
tinytorch-publish-live workflow, dropping the ecosystem cross-links
entirely. Restoration here; workflow fix is a separate commit.

Per-site row state after this commit (each site omits itself):

  site, vol1, vol2:  TinyTorch · Kits · MLSys·im · Labs · StaffML
  instructors:       TinyTorch · Kits · Slides · StaffML
  kits:              TinyTorch · MLSys·im · Labs · StaffML
  labs:              TinyTorch · Kits · MLSys·im · StaffML
  mlsysim:           TinyTorch · Kits · Labs · StaffML
  tinytorch:         Kits · MLSys·im · Labs · StaffML
  slides:            (teacher-focused row, unchanged)

The staffml site itself has its own Next.js ecosystem navbar
(EcosystemBar.tsx) which is out of scope for this Quarto-only sweep
and audited separately.
2026-05-12 09:55:35 -04:00
Farhan Asghar
415487748f fix(kits): make code blocks readable in dark mode (#1624)
Quarto re-loads the light syntax-highlighting CSS via a "quarto-color-scheme-extra" link that the color-toggle JS never disables, so it overrode the dark theme's code-block background and token colors. Force the github-dark palette and dark `#2c2c2c` background on `div.sourceCode pre.sourceCode` with !important, and split highlight-style into a light/dark pair so Quarto emits the dark syntax bundle.
2026-05-02 09:00:18 -04:00
Vijay Janapa Reddi
6921b80c88 feat(kits|labs|instructors): tier-B versioning batch
Adds the Tier B (lite) versioning pattern to all three Quarto-only
sites in one commit — they have identical shape, so fragmenting would
add review burden without isolation benefit.

For each project:
  - workflow_dispatch inputs: release_type/description/site_only/
    explicit_version/confirm. Same shape as Tier A workflows so
    operators see one consistent UI across the monorepo.
  - New `prepare:` job calls _release-prepare.yml with tier=B and the
    project's previous_tag_pattern.
  - New manifest emit step before deploy: hashes the project's content
    directory (excluding _build, .quarto, etc.) and writes
    release-manifest.json into the build output. URL convention
    matches the deploy path: /kits/, /labs/, /instructors/.
  - New create-tag job: tags <project>-v<release_id> on success.
    Tier B intentionally skips AI-generated release notes — the
    description plus auto-generated commit list (where available) is
    sufficient given the rapid iteration cadence and lower citation
    stakes than book/staffml/tinytorch/mlsysim.
  - Quarto _quarto.yml: <meta name="release-manifest"> in
    include-in-header and shared/release/release-pill.html in
    include-after-body.

No changes to Marimo notebook structure (labs), Quarto build commands,
PDF builds, or any project's content files.
2026-04-28 18:19:53 -04:00
Vijay Janapa Reddi
400f0e3027 docs: clarify MLSysBook ecosystem paths
Align public README and site messaging around the curriculum components, adoption paths, and current early-release status so newcomers can move from reading to building, deployment, practice, and teaching.
2026-04-25 08:48:38 -04:00
Vijay Janapa Reddi
ad98437b4c docs(announcements): unify announcement bars across nine Quarto sites
Every site's announcement bar now follows one template:

  Line 1  — identity + primary CTA (what is THIS site)
  Line 2  — the book (or, on book sites, the other volume)
  Line 3  — "Alongside the book:" sibling row (3 most-relevant verbs)
  Line 4  — newsletter

The book is the anchor of the curriculum; every other site is a verb
applied to it — TinyTorch (build), Hardware Kits (deploy), MLSys·im
(simulate), Labs (explore), Slides + Instructors (teach). Making that
shape visible in every bar turns nine independent sites into chapters
of one curriculum.

Removed stale copy: "Happy New Year!" on kits + labs, "coming in 2026"
on labs (we are in 2026; replaced with "Coming Summer 2026"), TinyTorch
v0.1.10 single-line release notice (belonged in a release changelog,
not the always-visible nav bar).

Normalized outbound links: /book -> /vol1/ and /vol2/, consistent
trailing-slash hygiene on every URL. Newsletter link points to
https://mlsysbook.ai/newsletter/ (the actual Quarto page) instead of
#subscribe (which only resolves on the landing page).

The landing site (mlsysbook.ai) uses a 5-line variant that covers all
four learner verbs + the teacher-tools row; every other site uses the
4-line form.

StaffML is a Next.js app, not a Quarto site, so its banner is out of
scope for this PR and will ship as a separate React component change.
2026-04-23 16:35:57 -04:00
Vijay Janapa Reddi
69f330b2db fix(shared): centralize font loading via site-head.html + fix carousel
- Replace inline Google Fonts <link> tags in all 8 site configs with
  a single `- file: shared/config/site-head.html` reference, so fonts
  (Inter 400-800, JetBrains Mono) and Font Awesome are inherited from
  one shared file instead of duplicated across every _quarto.yml
- Add missing Inter weight 800 (was only in site-head.html, not configs)
- Add carousel CSS + JS for MLSys·im landing page (arrows, dots, slides,
  auto-rotation, keyboard nav) — fixes non-functional < > buttons
2026-04-18 16:26:39 -04:00
Vijay Janapa Reddi
a3160d83e5 refactor(monorepo): remove redundant navbar props — shared config handles it
Tested: Quarto metadata-files merge DOES inherit responsive properties
(background, pinned, collapse, collapse-below) from navbar-common.yml.
Local configs only need logo, search, title, and site-specific left: items.

Removed 4 redundant lines from each of: mlsysim, labs, kits, instructors, site.
Single source of truth: shared/config/navbar-common.yml
2026-04-03 08:49:41 -04:00
Vijay Janapa Reddi
035ac5d00f fix: navbar responsive props in labs/kits actual config files (symlink targets) 2026-04-03 08:49:41 -04:00
Vijay Janapa Reddi
3b5b4fe4e7 feat(covers): update hardcover mockups, standardize naming, fix references
Update vol1/vol2 hardcover mockup images with boosted colors. Rename
cover_image_title files to hyphenated cover-image-title for consistency.
Remove old non-vol-suffixed duplicates. Update all config and index
references to use vol-specific filenames.
2026-04-03 08:49:20 -04:00
Vijay Janapa Reddi
396506d29d refactor(site): unify 4 site subsites into single Quarto project
Architecture:
- Merge landing, about, community, newsletter into one site/ project
- Move navbar-common.yml to shared/config/ (used by 12 configs)
- Create shared/config/footer-site.yml for centralized footer
- Create shared/scripts/subscribe-modal.js as canonical copy
- Single _quarto.yml replaces 4 independent configs
- One site_libs/ copy replaces four

Features gained:
- Google Analytics on ALL hub pages (was only on book volumes)
- Subscribe modal on landing page (was missing)
- Centralized footer with consistent links

Workflows updated:
- site-preview-dev.yml: matrix strategy → single build job
- site-publish-live.yml: loop over subsites → single build + deploy
- sync-newsletter.yml: builds from unified site project
- publish-all-live.yml: removed stale subsite input
- rewrite-dev-urls.sh: added --shallow flag for unified builds

All 12 navbar-common.yml references updated:
  book vol1/vol2, site (unified), slides, instructors, interviews,
  kits, labs, mlsysim
2026-03-21 13:30:24 -04:00
Vijay Janapa Reddi
d3a6c96d60 feat(subsites): add navbar dropdown for kits and sidebar for slides
Kits gets a Hardware Kits dropdown with links to all platforms.
Slides gets a floating sidebar with Overview, Vol I, and Vol II sections.
2026-03-20 07:32:26 -04:00
Vijay Janapa Reddi
665af60f85 refactor(site): use native Quarto metadata-files for shared navbar
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
2026-03-19 10:48:41 -04:00
Vijay Janapa Reddi
5790e2706c feat(site): centralize navbar across all subsites
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.
2026-03-19 10:41:25 -04:00
Vijay Janapa Reddi
bfb9aecbeb chore: update CI workflows, Quarto configs, and landing site
Update labs preview/publish workflows. Add config entries across all
Quarto sub-sites. Update landing site index and codespell ignore list.
2026-03-18 14:53:03 -04:00
Vijay Janapa Reddi
f6fe16a198 feat(ecosystem): add Lecture Slides to all site navbars and landing page
- Landing site: Added "Slides" to quick links and navbar dropdown
- Instructors: Added "Lecture Slides" link in navbar Textbook menu
- Labs: Added "Lecture Slides" link in navbar menu
- Kits: Added "Lecture Slides" link in navbar menu
- Slides portal: Fixed teaching guide anchor links

All ecosystem sites now cross-link to the slides portal at mlsysbook.ai/slides/
2026-03-16 16:08:31 -04:00
Vijay Janapa Reddi
863d7d8e63 fix: rename MLSYSIM to MLSys·IM in navbar across kits and newsletter 2026-03-15 09:27:10 -04:00
Vijay Janapa Reddi
b020293934 fix(ci): resolve validation failures in Labs and Kits workflows
- kits-validate-dev.yml: rewrite image ref check as Python (shell
  grep regex was being mangled by GitHub Actions)
- labs-validate-dev.yml: use Python 3.12 (lab notebooks use PEP 701
  f-string nested quotes requiring 3.12+)
- labs/config/_quarto-html.yml: remove invalid aria-current property
  from navbar menu item (Quarto 1.8 schema validation rejects it)
- kits/config/_quarto-html.yml: same aria-current fix
2026-03-14 13:11:12 -04:00
Vijay Janapa Reddi
c0560a402a feat(mlsysim): add ecosystem workflows, navbar integration, and variable-driven CI
- 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
2026-03-12 16:04:49 -04:00
Vijay Janapa Reddi
62b98edee1 Updates book content and configuration
Refines book abstracts, table of contents, and diagram configurations for improved clarity and structure.

This commit enhances the descriptions of both Volume I and Volume II, emphasizing their respective focuses. It also introduces a framework decision tree to guide the selection of parallel training strategies and inference frameworks, and diagrams for visualizing hardware constraints.
2026-02-21 08:19:01 -05:00
Vijay Janapa Reddi
f31355c889 feat(volumes): implement volume separation for textbook
Add infrastructure for publishing Volume I and Volume II as standalone sites:

Volume Configs:
- Add _quarto-html-vol1.yml, _quarto-pdf-vol1.yml, _quarto-epub-vol1.yml
- Add _quarto-html-vol2.yml, _quarto-pdf-vol2.yml, _quarto-epub-vol2.yml
- Update navbar cross-links in all configs (book, kits, labs)

Volume Content:
- Add vol1/index.qmd, vol1/frontmatter/, vol1/backmatter/
- Add vol2/index.qmd, vol2/frontmatter/, vol2/backmatter/

Landing Page:
- Create landing/index.html with AI Engineering branding
- Add navigation to all resources (Vol I, Vol II, Full, TinyTorch, Kits)

Workflows:
- Add build_target input to book-build-container.yml (combined/vol1/vol2/all)
- Add deploy_target input to book-publish-live.yml
- Add matrix entries for volume-specific builds (Linux)
- Update deployment to handle /book/, /vol1/, /vol2/, and root

CLI:
- Update binder CLI to support --vol1 and --vol2 flags

Documentation:
- Update README.md with volume links and new URL structure
- Update book/README.md with correct paths

URL Structure:
- mlsysbook.ai/ -> Landing page
- mlsysbook.ai/book/ -> Full textbook
- mlsysbook.ai/vol1/ -> Volume I standalone
- mlsysbook.ai/vol2/ -> Volume II standalone
2026-01-10 09:28:25 -05:00
Vijay Janapa Reddi
c0a91c0467 fix(kits): repair broken lab links and clarify XIAOML Kit terminology
Lab links using @sec-... cross-references were not resolving in
markdown links, causing 404 errors. Replaced with relative file paths.

Also clarified the distinction between XIAO ESP32S3 Sense (Vision/Sound)
and XIAOML Kit (Vision/Sound/Motion via expansion board IMU) throughout
the kits documentation for consistency.
2026-01-07 08:33:40 -05:00
Vijay Janapa Reddi
abcd7e668f feat: add Happy New Year announcement banners across all sites
- Book: New Year greeting + navbar, TinyTorch, Kits, Newsletter
- Kits: New Year greeting + navbar, Kits intro, Textbook link
- Labs: New Year greeting + navbar, Labs coming 2026, Textbook link
2026-01-05 18:55:22 -05:00
Vijay Janapa Reddi
34b350dbec refactor: rename collabs to labs
- Rename collabs/ directory to labs/
- Rename workflow files: collabs-publish-*.yml → labs-publish-*.yml
- Update all paths in workflows, Quarto configs, and navbars
- Update cross-references in book, kits, and dev-landing
- Update site-url to mlsysbook.ai/labs/

Note: GitHub repo variable DEV_COLLABS_PATH needs to be renamed
to DEV_LABS_PATH in repository settings.
2026-01-05 18:45:50 -05:00
Vijay Janapa Reddi
63a7984c87 feat(kits): add dev preview announcement banner 2025-12-30 22:29:23 -05:00
Vijay Janapa Reddi
9b4888f0ea feat: ecosystem consistency improvements
- Add custom 404 pages for Kits, Collabs, and TinyTorch
- Update OG images to use high-res book cover (1200x630px)
- Add PWA support with site.webmanifest and apple-touch-icon
- Enable TOC for Collabs (was disabled)
- Move subscribe-modal.js to _brand as shared asset
- Add theme-color meta tags matching project accent colors
2025-12-30 22:23:09 -05:00
Vijay Janapa Reddi
fddbca7e2f Add Open Graph and Twitter Card metadata to all Quarto sites
- Book: site-url, description, og:image with cover art
- Kits: site-url, description, og:image with favicon
- Collabs: site-url, description, og:image with favicon

Enables proper social media previews when sharing links on
LinkedIn, Twitter, Facebook, Discord, Slack, etc.
2025-12-30 22:00:11 -05:00
Vijay Janapa Reddi
fc971d47d3 Unify navbar, fonts, and styles across book, kits, and collabs
- Add Google Fonts loading (Inter, JetBrains Mono) to all projects
- Align typography and navbar styling across ecosystem
- Update _brand/base.scss as canonical reference for shared styles
- Update _brand/tokens.scss to match book crimson accent
- Add consistent mobile responsive styles to collabs
- Document architecture for maintaining style consistency
2025-12-30 21:41:48 -05:00
Vijay Janapa Reddi
21f444d45e fix: add favicon config to Kits and Co-Labs html configs 2025-12-29 22:27:06 -05:00
Vijay Janapa Reddi
91ebd7b7ed feat: add Co-Labs placeholder infrastructure
- Add collabs/ directory with Quarto project configuration
- Create landing page with "Coming 2026" placeholder content
- Add CI/CD workflow for dev deployment (collabs-publish-dev.yml)
- Update navbar in book and kits to link to /collabs/
- Add .gitignore to exclude tex build artifacts from book
2025-12-28 15:21:51 -05:00
Vijay Janapa Reddi
d4edaea714 style: unify subscribe modal branding and use relative navbar links
- Update all subscribe modals to show just "MLSysBook" branding
- Change navbar project links to relative paths for dev site compatibility
- Update book, kits, and tinytorch configs consistently
2025-12-28 15:04:02 -05:00
Vijay Janapa Reddi
849c69a8a9 feat(ci): add PDF build and publish workflow for Hardware Kits
- Create kits-build-pdfs.yml using Docker container with TeX Live
- Update kits-publish-dev.yml to build PDF and deploy with site
- Update kits-publish-live.yml to build PDF and deploy with site
- Add Downloads menu to navbar with Hardware Kits PDF link
- Add _redirects for /kits/pdf shortcut
2025-12-28 13:38:47 -05:00
Vijay Janapa Reddi
0492ebaaac feat(kits): add custom TikZ cover page with circuit board design
- Create custom LaTeX cover page using labdivision-style circuit decorations
- Use teal brand color with traces, nodes, and subtle geometric background
- Display HARDWARE/KITS title on two lines with authors and companion text
- Remove titlepage extension config in favor of custom LaTeX implementation
- Add titlepage-bg.tex for potential future background customization
2025-12-28 13:25:55 -05:00
Vijay Janapa Reddi
959c6cbedf style: redesign Kits PDF cover per MIT Press guidance
- Remove background image (was too similar to main textbook)
- Use teal (#0d9488) solid color cover with white text
- Update author attribution: 'Marcelo Rovai, with Vijay Janapa Reddi'
- Add 'A Companion to Introduction to Machine Learning Systems' tagline
- Creates distinct visual identity while maintaining series connection
2025-12-28 12:10:39 -05:00
Vijay Janapa Reddi
c9d0daf8d7 feat: add cover background image to Kits PDF
- Copy cover-image-transparent.png from book
- Add coverpage-bg-image and bg-image positioning config
- Add coverpage-author array for proper cover formatting
- Creates visual consistency with main textbook
2025-12-28 11:28:32 -05:00
Vijay Janapa Reddi
920b1a418b fix: correct PDF config for part filter and author formatting
- Fix filter-metadata format for inject_parts.lua (nested under filter-metadata.part-summaries)
- Change author to array format for proper newline separation
- Update titlepage elements with separate author lines
2025-12-28 11:24:15 -05:00
Vijay Janapa Reddi
8327c98696 feat: add subscribe popup modal to Kits site
- Copy subscribe-modal.js from book
- Update navbar Subscribe link to use local #subscribe
- Add script include to HTML format config
- Modal now opens in-place instead of redirecting to mlsysbook.ai
2025-12-28 11:21:54 -05:00
Vijay Janapa Reddi
f87c88f699 refactor: switch from profiles to symlink config approach for PDF builds
- Move _quarto.yml to config/_quarto-html.yml
- Move profile PDF config to config/_quarto-pdf.yml
- Create symlink _quarto.yml -> config/_quarto-html.yml
- Update Makefile to switch configs via symlink (matches book approach)
- This fixes the per-file PDF rendering issue caused by profile merging
2025-12-28 11:17:30 -05:00