Skip to content

v0.6.0 — the deck runtime

Choose a tag to compare

@robertblust robertblust released this 01 Sep 07:03
· 14 commits to main since this release

The four decks' runtimes were ~420 lines each, of which ~349 were already identical. What
differed was not layout but behaviour — and each difference had a reason written beside it, so this
release began by deciding them rather than taking a majority.

The four decisions

difference decided
companygraph's #langtoggle container, its click handler, the stopPropagation it forced onto each button, toggleLang(), and the divider between DE and EN removed — all four take the plain two-button control
companygraph's N and L key bindings removed — all four keep only the navigation keys
clipsSeen blust.ch's two lines — and it was never a difference at all
per-talk title and desc stay per-deck, as a payload the fence reads

clipsSeen is worth the detail. companygraph's eight-line version read as a lazy check and was not
one: it memoised true and probed nothing, under a comment claiming it "makes no network request
until someone actually presses play"
— which neither version does. All four decks carry recordings,
40 to 48 clips each, so the optimism was correct everywhere and only the ceremony differed.

blocks/deck-runtime.js

UI's 28 transport labels stay in the block — they describe the bar, not the talk, and are
identical on all four decks. The 4 that describe the talk come from a TALK payload the page
declares above the fence:

var TALK = { de:{ title:'…', desc:'…' }, en:{ title:'…', desc:'…' } };

That seam is invisible to design:check, which compares only the bytes between markers, so the
block states the contract in its own comment.

deck transport → v2

Two things. The transport had no disabled styling at all — not even a hover suppression, which
matters more than the dimming: without it a disabled button still lights up under the pointer and
reads as clickable. go() has always clamped at both ends of the deck; render() now says so.

And .lcd:has(.n.msg) joins the block. Below 400px .lcd{display:none} hides the counter to make
room, but lcdMessage() puts transient text in that same element — so companygraph's and
guestgraph's decks could never show a message at that width
. blust.ch's two had the rule; the
other two never did.

One thing corrected across all four

Two comments quoted "muss zuerst wissen, Gast" as an example. That phrase lives in guestgraph's
speaker notes and in no other deck's content — copied from deck to deck until three of the four
files carrying it quoted something they do not contain. All four now use the deck-agnostic wording.

118 tests.