Skip to content

feat(media): add the OO-LD tutorial series - #165

Merged
simontaurus merged 1 commit into
mainfrom
feat/tutorial-series
Sep 15, 2026
Merged

simontaurus merged 1 commit into
mainfrom
feat/tutorial-series

Conversation

@simontaurus

Copy link
Copy Markdown
Contributor

Five short tutorial episodes, embedded in the guide as video and as a slideshow.

What is here

  • media/tutorials/ - five episodes sharing one design system, authored with rendiv. They reuse the explainer's toolchain rather than installing a second copy of it.
  • guide/tutorials.md - one section per episode, each with a video and a View as slideshow toggle over that episode's beat stills. Linked from the guide index, in the intro and under Beyond the concepts.
  • Light and dark cuts from a single composition, selected by a theme input prop, matching the site palette.

Silent

The episodes ship silent: the on-screen prose carries the script. A narration track was prototyped and is kept behind a voiced input prop, off by default, because every reviewer found a voice competes with the text rather than adding to it. src/narration.json keeps the scripts.

Unlike the landing-page hero these do not autoplay. They carry controls and a poster taken from the episode's first beat.

Nothing binary in the tree

Cuts and stills publish to a reusable tutorials-latest release and are staged into docs/assets/tutorials/ at build time by scripts/stage_tutorials.sh, which is gitignored. A missing episode is not an error: the page renders the ones it has and removes the slideshow button for the rest.

A guard worth keeping

scripts/check-theme.mjs fails the build on a module-scope palette capture or a hard-coded hex. applyTheme swaps the shared colors object once per render, so a top-level const c = colors.ink freezes the light value and the dark cut renders half light - with no error, and nothing to notice unless someone looks at the right frame. Six such captures existed before the check went in.

Episode 5 and oold-python 1.0.0

Episode 5 is written against v1.0.0: validation first, then the graph-object binding, then the DSL. Both link declaration forms appear, with the conventional one presented as supported rather than deprecated, and code generation and the DSL are labelled experimental on screen.

Its reviewer built a venv from the v1.0.0 tag and executed every snippet shown, including reproducing the validation finding from the CLI and confirming the JSON-LD block is byte-for-byte what to_jsonld() returns.

Not decided here

The episodes were drafted before the clarity line in #161 was ratified. Nothing in the series depends on that line, but the series and the explainer should agree on vocabulary before either is promoted beyond dev.

- five episodes in media/tutorials, light and dark cuts from one
  composition via a theme input prop
- guide/tutorials page with a per-episode video and a slideshow over
  the beat stills, linked from the guide index
- silent by default; narration stays behind a voiced input prop
- check-theme.mjs fails on module-scope palette captures, which
  silently render the dark cut half light
- cuts and stills publish to a reusable tutorials-latest release and
  are staged at build time, never committed
@simontaurus
simontaurus merged commit db88708 into main Sep 15, 2026
5 checks passed
@simontaurus
simontaurus deleted the feat/tutorial-series branch September 15, 2026 06:58
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