Skip to content

Publish MARP slide decks from the site, plus two assignment pages - #2

Merged
dannycab merged 3 commits into
mainfrom
slides-pipeline
Aug 30, 2026
Merged

Publish MARP slide decks from the site, plus two assignment pages#2
dannycab merged 3 commits into
mainfrom
slides-pipeline

Conversation

@dannycab

Copy link
Copy Markdown
Contributor

Sets up MARP decks to be viewable on the site and downloadable as PDF for D2L, and adds the two assignment pages that were linked but missing.

Slides pipeline

Deck sources moved from content/slides/ to slides/. Anything under content/ is rendered by Hugo as an ordinary page — /slides/lecture-01-welcome/ was live on msucerl.org serving the raw MARP source, slide separators and speaker notes included.

Output now goes to static/slides/ instead of public/. Hugo wipes public/ on every build and .gitignore excludes it, so nothing written there could ever have reached the deployed site.

CI runs ./build-slides.sh before Hugo, so no generated HTML or PDFs are committed.

Three silent failures in the build script

Problem Cause Effect
Theme never applied --css is not a marp-cli flag; unknown options are accepted and ignored Decks rendered in marp's stock default theme, no error
Images missing from PDFs No --allow-local-files, so the headless browser is blocked from reading slides/images PDF was 262 KB, now 8.4 MB with images embedded
Images broken in HTML marp leaves image srcs relative Images now copied next to the generated HTML

Theme

Switched to Roboto. font-family was declared only on body, which marp never applies to the slide <section> inside its SVG foreignObject — decks were falling back to the browser default serif, so the font was broken independently of which family was named.

Tightened leading and margins. Compounding line-heights (1.6 / 1.7 / 1.8) plus 12px list-item margins put a single bullet at 64px against a 600px budget:

Before After
Bullets that fit under a title 7 13

Slides 9, 13 and 16 have 9–10 content lines, so they were overflowing. Also switched justify-content from center to flex-start, so an overlong slide no longer clips its own title.

Fixed bold text rendering invisibly on dark slides — strong was hard-coded to --primary, the same color as the title slide background, which is why the course number never appeared.

Assignment pages

Adds attendance.md and individual-report.md. Both were linked from the assignments index with no page behind them, and the individual report link was misspelled (indvidual-report) so it would have 404'd. Each assignment's drop allowance now appears on its own page, matching the syllabus: attendance 3, exit tickets 3, forum posts 2, case analyses 1, individual report 1.

Verification

  • All 26 slides rendered to PNG and scanned for content clipped at the slide edge — none
  • Roboto Regular/Medium/Bold confirmed embedded as subsets in the PDF, so it travels with the file
  • Clean hugo build, no warnings; /slides/ index and both new assignment pages resolve

The deploy job is gated to pushes on main, so this PR exercises the build without touching the live site.

🤖 Generated with Claude Code

dannycab and others added 3 commits August 30, 2026 09:45
Move deck sources to slides/ so Hugo stops rendering them as ordinary pages,
and build HTML + PDF into static/slides/ rather than public/, which Hugo
wipes on every run and .gitignore excludes -- artifacts written there could
never reach the deployed site.

build-slides.sh fixes three silent failures:
- use --theme, not --css. There is no --css flag; marp-cli accepts unknown
  options and ignores them, so the custom theme was never applied and decks
  rendered in marp's stock default.
- pass --allow-local-files, without which the headless browser is blocked
  from reading slides/images and every image is dropped from the PDF.
- copy slides/images next to the generated HTML, since marp leaves image
  srcs relative.

CI runs the build before Hugo, so no generated artifacts are committed.
Adds a /slides/ index page driven by the generated data/slides.yaml.

Theme: switch to Roboto, and set font-family on section rather than body --
marp renders slides inside an SVG foreignObject, so a body rule never
reaches them and the deck fell back to the default serif. Tighten leading
and margins so a slide fits 13 single-line bullets instead of 7, and let
bold text inherit its color so it stops rendering invisibly on dark slides.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Both were already referenced from the assignments index but had no page
behind them; the individual report link was also misspelled and would have
404'd. Surface each assignment's drop allowance on its own page, matching
the syllabus: attendance 3, exit tickets 3, forum posts 2, case analyses 1,
individual report 1.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@dannycab
dannycab merged commit f210895 into main Aug 30, 2026
2 checks passed
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