80e6e91e

Author: Valentin Hirschi <valentin.hirschi@gmail.com>

Committer: GitHub <noreply@github.com>

Add an animated front-page tour with soundtrack (#118)

* add an animated front-page tour with a generated soundtrack

Embed a time-seekable showcase of the CLI, process generation, Monte Carlo
integration, the Rust and Python APIs, and the crate ecosystem on the portal
landing page. The stage is a pure function of time, so the same assets drive
the browser embed and `just showcase-video`, which renders an MP4 through
Playwright and ffmpeg. A seeded slow-blues piano score is composed and
synthesized both in the browser and for the video, so no media is checked in.
NixCI stays disabled while the change is under review.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0178cbipLJ24TZTQ3T8jDcbP

* use Kevin MacLeod's Hard Boiled as the tour soundtrack

Replace the synthesized score with the first 1:41.5 of "Hard Boiled" by
Kevin MacLeod (incompetech.com, CC BY 4.0), faded over its last 2.5 s and
re-encoded at 160 kb/s. The page plays it through an audio element whose
clock drives the animation while sound is on, the video render muxes the
same file, and the landing page, the outro, and the assets README carry
the attribution the license requires.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0178cbipLJ24TZTQ3T8jDcbP

* show both loop momenta in the tour's Local Unitarity scene

Write the integral over d^3k d^3l with the cut terms bracketed on (k, l),
let a second marker carry l along the gluon rung, and place the green
"finite at every k and l" line below the equation. Inline scene styles now
use the scoped --gl-* tokens, which restores the red cut lines, numerals,
caption, and term highlights that the embed refactor had made invisible;
highlighted terms colour their subscripts too.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0178cbipLJ24TZTQ3T8jDcbP

* slow down the tour's Local Unitarity scene and hold its conclusion

Pace the scene 1.5x slower and keep it on screen for five more seconds
after the finite statement, which now reads "Finite at every momenta k and
l !" centred beneath the equation. The k marker circulates clockwise around
the left triangle and l anti-clockwise around the right one, and cut
numerals stay hidden until their cut starts. The integration summary holds
two seconds longer, so the tour runs 1:55.8 and the soundtrack excerpt is
re-trimmed to match.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0178cbipLJ24TZTQ3T8jDcbP

* fix the tour's code panes and hold the integration summary longer

The embed assembly had indented every line after the first inside the
Python and Rust snippets, so both panes showed misplaced indentation and
the Rust pane scrolled its opening lines away. Restore the snippets, fit the
Rust example in its pane, and colour Rust literals as keywords. The
integration summary holds two more seconds, so the tour runs 1:57.8 and the
soundtrack excerpt is re-trimmed to match.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0178cbipLJ24TZTQ3T8jDcbP

* highlight line-continued strings in the tour's rust pane

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0178cbipLJ24TZTQ3T8jDcbP

* enable nixci for final review

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0178cbipLJ24TZTQ3T8jDcbP

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>

Total

10m32s

Time to Start Worker time Duration Time to finish Idle
Config 15s 1s 1s 17s 15s
Eval 17s 1m08s 1m08s 1m26s 0s
Build 1m25s 0s 0s 1m25s 0s
Test 1m27s 14m52s 8m51s 10m19s 0s
Deploy 10m43s 4s 4s 10m47s 23s
Suite 15s 16m07s 10m32s 10m47s 40s

Timeline

Config Eval Build Test Deploy Compressed gap
0s1m2m3m4m5m6m7m8m9m10m