Skip to content

Skill + engine overhaul: listen and find in the engine, a kit for storybook and four-legged puppets, landing pages polished - #37

Merged
DozenTwelve merged 12 commits into
mainfrom
skill-overhaul
Oct 31, 2026
Merged

DozenTwelve merged 12 commits into
mainfrom
skill-overhaul

Conversation

@DozenTwelve

Copy link
Copy Markdown
Owner

The Skill and engine overhaul after The Little Horse and Little Red Riding Hood, plus a design pass over every book's landing page. Released together as engine-v2.9 (which also carries #36's Arabic interface) once merged.

Engine

  • Listen and find (findWords) moves from the two picture books into the engine: a character asks for one thing at a time; a wrong tap says that thing's name and asks again, help grows (shake, stars, give-up after 20 s), nothing is ever called wrong. Keyboard works; the caption no longer sticks after a seek.
  • tapWords is removed (no book on the site uses it): code, CSS, strings, P.tapDemo. check_tapwords.py becomes check_find.py.
  • Every film ask keeps the scene drawing while the page waits (P.idleAt for export).
  • Beds that last: sfx(beat, at, name, vol, { loop: true, to }) lays a bed again every file length − 0.5 s to its end or the beat's, through an ask wait. Both books drop their own find.js and bed relay.
  • scripts/engine.py DEFAULT → engine-v2.9.

Picture-book kit

  • cast.js has three kinds of puppet: round-headed figures, storybook figures after LRRH (look, brow, blink, lean, crouch to pick, hat over hair, hold, a walker that stops cleanly), and a four-legged rig after Little Horse (two-bone legs, walk/trot by distance, flipTurn; example cat).
  • paperCam draws puppets after the layer sets.js marks stage: true, and warns about unknown layer names.
  • The template chapter ships a working listen-and-find stop and a looping room-tone bed.
  • series.html: hero picture and Watch button open episode 1 without scripting; one episode = no card grid; the cover is shown once.

Scripts

  • eleven.py writes a word cache (ElevenLabs voices get mouths.py/join.py --words) and moves words whisper puts inside a pause; mouths.py keeps the mouth open on long words.
  • lint.py checks findWords stops; export.py lays looping beds, holds film asks, names clashing page globals, levels to --lufs (default −16; was about −20), has the beat option video.
  • still.py names ask beats it skips, playlog.py logs engine music and MUSIC_OFF, music.py gaps measures every track over the whole film.

Landing pages (impeccable, then Hallmark)

Every site/*/index.html and the shelf went through an impeccable audit + polish (contrast, wrapped Watch pills, 44 px tap targets, focus rings, layout shift, missing links back to the shelf) and then a Hallmark audit whose findings were fixed at their source (series template, lesson cover in engine/contents.*, shelf focus ring and labels). Little Horse's page now has a making-of article.

Checks

check_site.py 0 failed, check_skill.py 0 problems, ruff clean; check_i18n, check_latex, check_find, check_volume pass. check.py on Little Horse and LRRH: 0 errors in Chromium and Firefox, film lengths unchanged (229.13 s, 207.99 s).

For the owner

  • The making-of essays are long (1,100–1,600 words); left as written unless you want them cut.
  • Left open: an Elephant still of the aim screen; a visible "Work with us" on the shelf.
  • No cold-start run of the Skill this time (owner's call).

🤖 Generated with Claude Code

DozenTwelve and others added 12 commits November 1, 2026 07:52
… mouths, export video option

eleven.py writes <narration>.timings.json so a picture book voiced by ElevenLabs gets
mouths.py and join.py --words; words whisper starts inside a pause move to where the
sound comes back (silence.silences()), and each move is printed. mouths.py keeps the
mouth open to the next word or silence. export.py: a beat's video option (false leaves
it out, seconds cut there), captions never overlap.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
One column width and a shelf link on Madness and Elephant; red text that failed
contrast on The Pandemic and its scroll page; Elephant's watched mark readable;
the Magicians map's subtitle contrast and phone tap targets.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… making-of

Watch pills that keep their label on one line, Pigs accent contrast and image sizes,
44px back links, focus rings, a way back to the shelf from Little Horse and Proteus.
Little Horse's page now tells how it was made, in the voice of the LRRH page, with six
stills and the shins-and-knees depth figure.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The cover's meta line reaches 4.5:1 (engine/contents.css, synced), back-to-shelf links
are full-size tap targets and no longer drop to a stray line on phones, Linear Algebra
gets its link back to the shelf, Physics Notebook's kicker passes contrast.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s needed

cast.js holds three kinds of puppet: the round-headed figures, storybook figures (look,
brow, blink, lean, crouch to pick, a hat over hair, hold; a walker that stops cleanly,
bigStep) after Little Red Riding Hood, and a four-legged rig (two-bone legs, walk and trot
by distance, flipTurn) after The Little Horse, with an example cat. paperCam draws puppets
after the layer sets.js marks stage: true unless told otherwise, and warns about unknown
layer names. The template chapter ships a working listen-and-find stop. puppets.md
describes all of it, including turning profile animals on a cut.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… last

findWords (a character asks for one thing at a time; wrong taps say their name, help
grows, never 'wrong') moves from the two picture books into the engine, with keyboard
use and a caption that no longer sticks after a seek. tapWords, P.tapDemo and their
strings are removed. Every film ask keeps the scene drawing while the page waits
(P.idleAt for export). sfx(beat, at, name, vol, { loop: true, to }) lays a bed again
every file length - 0.5 s to its end or the beat's, through an ask wait, so the books'
own relays go. check_tapwords.py becomes check_find.py. Little Horse and Little Red
Riding Hood drop find.js and BED_STEP. Skill DEFAULT points at engine-v2.9.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ay what they skip

lint checks findWords stops (clips, film flag, words that no thing has); export drops the
tapWords hold, lays looping beds, holds a film ask with P.idleAt, names a page's globals
that clash, and levels the film to --lufs (default -16). still.py names the ask beats
it measures or skips, playlog.py logs the engine's music and MUSIC_OFF, music.py gaps
measures every track over the whole film, loops included.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The series page template opens the first episode from its hero picture and Watch
button (no script needed), shows the cover once, and has no card grid for a single
film; Little Horse, Proteus, Madness and Elephant follow it. The lesson cover drops the
tracked eyebrow, the one italic word and the dotted meta (engine contents.*, all five
languages). The shelf's focus ring passes contrast and its labels are in sentence case;
the scroll page and the Magicians map get a small way back. stories.md describes the
new series page.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…Pigs, cut to about half

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@DozenTwelve
DozenTwelve merged commit a61f200 into main Oct 31, 2026
2 checks passed
@DozenTwelve
DozenTwelve deleted the skill-overhaul branch October 31, 2026 23:59
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