Repository navigation
Engine v2.7
The engine keeps its internals to itself, beats can be silent or held to a minimum, and music can be set up before the beats. Books made with v2 need no change.
Private internals
- The engine body runs in a closure. The 117 documented API names stay global; 67 internal names (
clock,fit,frame,last,ui,segs,frameStep, …) are private, so a chapter can declare its own without "Identifier already declared" and a blank page. engine.md lists every global name.
Beats
- Silent beats:
{ dur: s }on a beat with no clip and no TIMINGS entry (a series card without voice no longer needs a silent clip). { minDur: s }: the least a beat lasts, for mirrored beats that must match.?lengthsprints each beat's voice length against its real length, to find beats a tween pastDlengthened.
Sound
music()andsfx()may be called beforeBEATSexists.
Checked
- Full suite: 141 of 143 pass, plus the known, unrelated failure; after rebasing onto main,
walk_pageswalks all 118 pages with no errors. - Old against new engine: every beat of 125 chapters in 12 books seeked; every chapter's total length identical, no new page errors. SCORM still reports the finish.
Syncing
engine.py in the Skill syncs from the latest compatible release, now engine-v2.7.