Repository navigation
The Map Redrawn: an explorable map of Japan 1868–1878 - #38
Merged
Merged
Conversation
Japan from the eve of the Restoration to Okubo's death: the domains in 1868 village by village, the prefectures of August 1871, the 3 fu 72 ken of 1871-72 and the 3 fu 35 ken of 1876, with Fukuzawa, Ito, Saigo and Tsuda walking the map a year at a time. The playback is adapted from Time of the Magicians (MIT); the map data is CC BY-SA 4.0 from Kyudaka_agrivillage v2.01 joined to MAFF 2015 census boundaries. Adds the cover and a place on the documentaries shelf. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ture-book stop stays out of the video engine.md and the four style.json templates still named engine-v2.8, which has no findWords or beds; engine.py's DEFAULT and the engine/ folder are engine-v2.9. The picture-book template's find stop gets video: PRE1 + TIMINGS.scene1.dur, as LRRH does, and export.py warns about a findWords beat with no video slot instead of holding its waiting picture in silence. stories.md's sfx.py line makes the room bed that scene1.js plays. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…levels at -18 for a cast; MathJax after math.js SKILL.md and stories.md named only LRRH and the Joke Collection as the picture-book bar, though Little Horse is the newest approved book and the source of the kit's beast rig and listen-and-find. stories.md said a picture book's clips sit at -18 LUFS but not that eleven.py levels to -14 unless given --lufs -18, as Little Horse's audio script does. lessons.md said mathjax.js loads right after engine.js; engine.md says after math.js when a chapter loads it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ader A film's ask (a listen-and-find stop) stops playback as a lesson's question does; the run said only that it did not reach the --to beat. It now names the beat it stopped in, says the page waits there, and gives the --from that plays on. review.md says so. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ssons and documentaries block The guide is drawn only on a lesson's cover and question cards, so its note moves from core/publish.md to lessons/cover.md (rule 4). style.md listed pacing as in every tier; the picture-book and shorts templates have none. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…picture books are voiced with it Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
films.md gave lengths in minutes with no way to reach them in words (rule 5); the Tulip Mania cold run's first script ran 3:19 for a 3:00 brief. The figure is from that run's own timings: about 2.4 words a second of film for the kit's Edge voice, holds included. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…; films.md says the series page has no credits yet A chapter's const BGM (the Tulip Mania cold run's) shadows window.BGM, which export.py mixes from, and lint said nothing; it now warns for sfx, music, SFX, SFX_BED, BGM, MUSIC_OFF and MUSIC_UP_IN_PRE (a warning, since older books such as the Joke Collection keep their own player on purpose). films.md said a documentary's index has a credits section; the page new_book.py copies is the picture book's light page without one, so it now says to add it, from both SOURCES.tsv files, after The Pandemic's. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
new_book.py --lang ar named narration.ar.json and audio/ar/, but left the copied chapter and cover at <html lang="en">, CHAPTER.language 'en' and audio/en/timings.js. Following its printed next step (tts.py into audio/ar/), the pilot chapter 404s on audio/en/timings.js and stops with "Cannot read properties of undefined (reading 'dur')", in English, left to right. Seen by running new_book.py lesson|documentary|shorts|picture --lang ar into a scratch root and opening each page headless. Now the cover/series page and the pilot chapter's html/js get the language in all three places; with --lang ar the lesson kit plays, right to left, with no console error. publish.md's rule (narration, audio folder, CHAPTER.language and <html lang> agree) is unchanged and now true from the start. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A region name that matches nothing lights nothing, without a word (the Tulip Mania cold run's 'Noord-Holland'; Natural Earth has 'North Holland'). region() is a function, so map.js cannot tell; geo.py now prints each country's region names as it writes them, and map.js's header says where the names come from. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…2.9, find stop video, tools that say what they skip) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…into the pages Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…book's own pictures; cut.js moves them - lift.py: silhouettes with the paper inside kept, parts on pivots with caps, page sets with lettering erased and holes inpainted or patched, layers, ink-only lettering pieces, a contact sheet, a grid to read coordinates; one baked shadow per figure; sets lie on a sheet of their paper colour. - lib/cut.js in the picture-book kit: cutPuppet, pagePos, cutWalk, trot, lettering, CUT_FACE mouths. - paper.js: cam.layer(name); a set's paper colour fills past its edges. - eleven.py: a run stopped partway (402 for credit) still writes timings.js for the beats it finished and names the rest. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…gures as sets and paper puppets The whole 1928 book as one narrated film (17 scenes, 7.1 min): her pages are the sets, her drawings lifted off them with lift.py and moved on pins (lib/cut.js), her hand lettering stamped in word by word for every refrain, one listen-and-find stop (find the kitten). ElevenLabs voices to scene 9; scenes 10-16 have Edge placeholder voices until OpenRouter credit is back. An original waltz and synthesized effects. Not on the bookshelf; first cut for the owner's viewing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…eo, the pond in order, refrains whole, cats build Director round 1 fixes: the find beat's video keeps its story lines; the kitten is taken up clean; the pond is drunk dry to bare paper; refrains sit whole on clear paper; the 'I am!' shouts build; the hill of cats turns on its own line; cats stay in the vignettes; page turns shortened; a lighter vignette; no Georgia end card. lift.py: parts overlap their cut lines (no seams); per-part shadows drawn under all parts; cut.js pagePos handles spreads. Holes trimmed: the video is 7:04. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…refrain in order, the run home framed on the page Director round 2 fixes: the clean kitten sits in the high grass and is the find stop's target; the pick-up close shows no page rectangles; kitten close-ups stay within the scan; scene16's refrain stamps each word on its own spoken word; the run into the house fills the frame with Gág's page; two-shots at the door; the 'I am!' run never stands still and follows its clips. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ar at the door Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pipe and chimney smoke as curling ink ribbons, cats split into legs, tail and head
(walking with the ground, swishing, twitching), heads and hands for the speakers,
swaying flowers and tufts, drifting clouds, the pond and grass going, a seething
quarrel, a shivering kitten, bath steam, lapping, a lamp flame and knitting needles.
The refrain's stamp no longer runs two words together ("Catshere"); the old man's
head stays in frame on p13.
Kit: catLife, inkSmoke, pose sk/w (cut.js), catCrowd walk/seethe, paperCam.move;
lift.py frac parts, faces, a run lock and stale-picture cleanup; still.py --hold-cam
and --tsv.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rds, the kitten kept on its mound until it is taken, runs that plant their feet Director m1 must-fixes: p20's grass stays whole until "Each cat ate a mouthful"; the kitten acts its own lines and is picked up last; the runs in scene11 and scene13 step on the ground and go in at the door; the old woman's hands move on her lines; the two-shot keeps the old man whole; the hills spread joined without its gutter; the refrain's last line kept clear of cats; a parade of big cats under the third refrain; the last refrain on cream paper; the thought bubble cream with an ink rim. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…out of frame, the run down the ridge in planted steps, the last refrain in full ink Director m2 must-fixes: scene2's shots each stay on one page of the out-of-register p06/p07 spread and follow the old man along the road; scene13's run lands each step on the ridge's edge and holds it two frames; scene16's last refrain cuts to clean paper with full-ink cats walking under the letters; the old woman's gesture kept small enough not to open her bodice. Should-fixes: the pond pulls back to a third, refrain cats stamp in, the picked-up kitten held before the cut, smudges inked over. lift.py: a part's "under": "fill" (body inpainted behind it). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…mbers, the pond drying in Gág's strokes Director m3 must-fix: scene6's five jump cuts on "hundreds … trillions" are one continuous pull-back. Should-fixes: the pond dries from the bank in hand-drawn strokes as they sip; the last refrain cuts back to the room; the refrain slip's feather narrowed so no cat looks faded. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…n/woman" tags dropped
The owner kept five tags: "sighed the very old woman", "asked the very old man" (who is
who), and the three that carry an action ("and he did", "and he called to the cats",
"and he pointed"). The other eleven went without re-voicing: eight whole clips removed
(n01d n01e n09 n11 n12b n12c n14 n14b) and the tag cut off the head of n04f, n06c and
n07b, their marks, cues and word times moved back; the scene clips re-joined.
Scenes 1, 4, 7, 8, 10, 13, 14 and 16 retimed. The shots that only held a tag are gone
(her second close-ups in scenes 14 and 16, the wide in scene4, a two-shot in scene10);
scene13's follow shot stays on her through "It's too bad!"; scene1's walk off keeps
2.6 s of its own. Film 7:04 to 6:45.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…opens on its speaker Director c1 must-fixes: scene13's follow shot is keyed to her size, so she is about a quarter of the frame from "I think they must have eaten…"; scene16 cuts to her as "And it is a very pretty cat" begins; scene4 cuts to him on "It would be a shame". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The join put scene2's 0.8 s hole 10.3 s into n02, inside "last" (10.18-10.73 s), so step 3 played "and at la- [0.8 s] -st he came", heard as the sound cutting out and sticking. The hole now sits in the clip's own pause after "time," (9.75 s). scene7's and scene8's holes moved into their pauses too (n06c 1.76 -> 1.8, n07b 1.94 -> 2.05; they clipped word tails by 20 and 70 ms). Clip lengths are unchanged, so no scene time moves. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… without live masks Firefox redrew a masked or clipped large image in software every frame: scene8's grass under its bite mask ran 55 ms a frame (perf.py), scene14's close shot with clip-paths on two body images 99 ms with 400 ms frames. scene8 now draws the bites as paper over the grass, clipped by the grass's grown silhouette traced once into a path; the clip stays put while its path, the bites and the stubble take the grass's sway (16.8 ms). scene14 swaps in body images cut once (img/cut/*-c14.webp) on the close shot (19.6 ms). Frames match the old ones (pixel diff <= 0.14 %). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s holes painted - Scenes 10-16 and the find stop's asks: the Edge placeholders replaced by ElevenLabs takes in the cast and settings of scenes 0-9 (eleven.py --only, 51 lines), levelled, re-joined; every gesture, cut and effect moved through the old and new takes' word times. - The holes behind lifted figures on 11 pages (p18-p29, p33, the hills spread) are now painted patches in Gág's ink, pasted inside the holes only; the sets rebuilt with lift.py. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…p edge papered, the fifth "I am!" held - p22: the painted leg hole carried his coat hem's hatching into its top, and the patch file's own coat ink bled through the mask's blur as a hairline; both now paper. - scene10: the close-ups on the fifth "I am!" hold 1.05 s again (0.5 s after the re-voice), and the cut to him lands on the start of "Oh yes!" instead of inside "yes". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ure book cut from the 1928 pages; lift.py and cut.js in the picture-book kit Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> # Conflicts: # .claude/skills/papermorph/SKILL.md # .claude/skills/papermorph/references/core/review.md
…tle Pigs and Tulip Mania to the Archive as spines Cover cut from the book's own art (960x540). Tulip Mania is the 2026-11-04 cold-run benchmark, copied from the build with its unused passe.webp left out. Spines keep their titles on one line; narrower than the desktop shelf they lie flat in a stack. The archive's placeholder note goes, and the cats page gets a real description. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…1928 book to read How it was made: pages lifted with lift.py, puppets cut into parts, ink smoke and walking cats in Gág's line, the image model only for the holes (21 low-quality pictures, $0.43), eight ElevenLabs voices by role, one listen-and-find, ~$0.85 in all; two scan/film pairs. Read the book: the 32 pages of the 1928 book (cover, title page, story) as 1600 px webp, lazy-loaded, each with its text as alt; the later printing's pages and the joined p06+p07 spread left out. Scan credited to the Internet Archive (millionsofcatsgg). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e Little Pigs and Tulip Mania in the Archive; the cats page says how it was made and holds the 1928 book Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s and The Map Redrawn The Documentaries row is back to four cards: the two map cards become one, "Explorable maps", linking to the new series page /maps/, and Shooting an Elephant has its fourth slot again. The series page lists each map as a card in a two-column grid, so a third or fourth map starts the next row. Its cover is cut from the two map covers (Europe left, Japan right) with ffmpeg. The Magicians intro now points back to /maps/ instead of the shelf; The Map Redrawn has no back link, so it is unchanged. The map pages keep their URLs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
A new explorable map in the style of Time of the Magicians: Japan from 1868 to 1878, as the domains become prefectures and the map is redrawn twice. Four lives walk it a year at a time: Fukuzawa, Itō, Saigō and Tsuda Umeko.
The map is not drawn by hand. Each of 66,581 villages carries its 1868 lord, from Kyudaka_agrivillage v2.01 (Honda, Natsume and Nemoto; CC BY-SA 4.0), joined to the MAFF 2015 census community boundaries (CC BY; 99.18 % matched by area). The 1871 and 1876 prefectures then follow the decrees county by county (
notes/ken-1871.csv,notes/ken-1876.csv); the inferred and rule-split counties are listed in the credits.Evidence
check_site.py: 15 books linted, 455 scripts and 196 inline scripts checked, 0 failed.check_skill.py: 0 problems in 26 docs.check_tts_text.py: ok.era1through 1871, switches toera2at 1872 and back toera1at 1871, with no console errors. The music is ducked to 30 % under narration, through Web Audio as in Time of the Magicians.Merge Danger
Door: two-way
Removing it means deleting
site/meiji/, the cover and the four lines on the shelf; nothing else depends on them.Blast Radius: contained
engine/is unchanged and so are the other books; the only shared file edited is the shelf insite/index.html.site/meiji/is 23 MB (5.5 MB narration, 11.7 MB music, 2.1 MB map).data/LICENSE-map.txt.gpt-image-2.5-flare), and the credits say so.notes/sources.mdare marked as from memory, still to be checked against a printed chronology.🤖 Generated with Claude Code