Build log · Software & apps

Master Fusion Workbook — 55 slides, 284 images and 14 videos rescued from a locked deck

Software & appsdone1 versionsGoogle SlidesCDPPythonHTMLffmpeg

reflection not written yet · every fact below is generated from this project’s own spec and files

What it is

A Google Slides deck with download and copy disabled, rebuilt slide by slide — then its hidden media rebuilt too: deduplication was eating 70 images, Googles resize endpoint was flattening the animations, and the links were SVG anchors my scan could not see. Now a full-screen presenter with clickable hotspots and working video cards.

Version history

Straight from the project’s own card data — what each version added.

—

Files on the site

What broke, and what I’d change

Not written yet. This is the part only I can write — what actually went wrong, and what I’d do differently. It lives in builds/reflections/fusion-workbook.md (see _TEMPLATE.md); as soon as that file has words in it, this section fills in on the next build.

Everything else on this page — the spec, the version history, the file counts — is generated from the project’s own build notes and files, so nothing here is guesswork.

Build spec

The project’s own build notes, rendered. Open the raw .md ↗

Show the spec

Master Fusion Workbook — build spec

Source: a Google Slides deck with download and copy disabled (owner restriction). Target: a 55-slide, full-screen presenter with every image and every animation working.

Method

  1. Open /present in an offscreen Chrome on a debug port, signed in.
  2. Launch with --disable-backgrounding-occluded-windows and friends, or every DOM read costs 5-11s.
  3. Jump to each slide with present?slide=id.<pageId>; a bare pageId silently lands on slide 1.
  4. Capture 3840x2160 PNGs, one per slide, then downscale to 960x540 PDF pages.
  5. Fetch every image slot in one in-page Promise.all per slide, original bytes, saved per slot. Never dedupe slots.
  6. Transcode each GIF to H.264 MP4; never trust the resize endpoint to keep animation.
  7. Harvest shape links from SVG <a> elements (xlink:href), normalise against the 1419x798 stage, render as hotspots.

Verify

  • 0 broken images, 0 fetch errors, 55/55 slides.
  • A video element currentTime must advance, not just report playing.
  • A Drive player iframe must be present after clicking a video card.
  • Hotspot count per slide must match the SVG anchor count.