diff --git a/shared/config/.lycheeignore b/shared/config/.lycheeignore index f56358aa4..81501e804 100644 --- a/shared/config/.lycheeignore +++ b/shared/config/.lycheeignore @@ -33,3 +33,18 @@ # Lychee treats anything after # as a fragment to verify, but for these # single-page-apps the # is part of the URL semantics. Skip fragment check. ^https://star-history\.com/# + +# --- Unrendered JS template literals (false positives) --- +# When Lychee parses a .qmd that contains JavaScript using template literals +# like `https://github.com/${m.github}`, the template literal is URL-encoded +# in the AST as `$%7B…%7D` and reported as a broken URL. The literal is +# substituted at runtime with the actual value, so it is never a real URL. +# Pattern matches any `${ANY.ANY}` template literal residue. +^https?://[^/]+/[^?#\s]*\$%7B[A-Za-z_][A-Za-z0-9_]*\.[A-Za-z_][A-Za-z0-9_]*%7D + +# --- GitHub avatar URLs (lychee unreliably HEADs them) --- +# `https://github.com/.png(?size=N)?` returns 200 in browsers but lychee +# regularly returns 4xx/timeout against them due to GitHub's HEAD throttling +# for unauthenticated avatar requests. Manually verified: every avatar URL +# flagged by the link-rot tracker is reachable in a browser. +^https://github\.com/[A-Za-z0-9][A-Za-z0-9-]*\.png(\?size=\d+)?$ diff --git a/slides/teaching.qmd b/slides/teaching.qmd index fdf0a510b..e759d931c 100644 --- a/slides/teaching.qmd +++ b/slides/teaching.qmd @@ -91,7 +91,7 @@ All diagrams are authored as **SVG files** in each chapter's `images/` directory To modify a diagram: 1. Edit the `.svg` file in any vector editor (Inkscape, Illustrator, Figma) -2. Follow the [SVG style guide](https://github.com/harvard-edge/cs249r_book/blob/main/.claude/rules/svg-style.md) for colors and typography +2. Follow the SVG style guide (palette, typography, canvas conventions) used by the book figures 3. Rebuild the deck; the Makefile handles SVG-to-PDF conversion ### Theme Customization