Full detail: the question no longer repeats under every tally cell; the heads stand once per page over the cells' own columns, and each cell is all tally room (96px columns, taller boxes). The worksheet's boxes get a little more room too. Both lists' first page: the intro and the blessing (Numbers 6:24-26, its credit, one line of references, the wheel pointer) at full width, then ONE band like the poster's (ruled above and below, three columns between short rules): the pace table (strongest to slower, weekly marked, each load computed from the list), what the three columns ask, and an EXAMPLE row of tally cells under the table's own heads, exactly as wide as the tally block and directly over it. One code path (explainTop, explainBand) for both packets. Measured with a 100-group list in all 11 languages: the worksheet's first page holds 10 rows (the tallest, ru, keeps 67px), Full detail's 12 under a 640px block (the tallest uses 612); the example sits over the real cells to the pixel. Gates: packet-variants checks the band in BOTH packets (once, before the first row, computed paces, one example row, heads once per page); packet-render reads the page sizes from the renderer, fails a clipped first-page block, and measures text direction against the content box (a padded cell is still pinned left). New strings x11: howto_bless_col, example_title, example_note. |
||
|---|---|---|
| .. | ||
| data | ||
| fixtures | ||
| build-gallery.mjs | ||
| build-hd-gallery.mjs | ||
| emit-countries.mjs | ||
| export-public.mjs | ||
| generate.mjs | ||
| make-previews.py | ||
| osm-basemap.mjs | ||
| packet-strings.json | ||
| packet.mjs | ||
| pin-poster-render.mjs | ||
| poster-regions.mjs | ||
| publish-html.mjs | ||
| README.md | ||
| series.json | ||
| serve-persist.sh | ||
| serve.sh | ||
| shoot.mjs | ||
| verify-posters.mjs | ||
library/scripts/posters/ — UPG-100 poster generator
Renders one 3ft × 3ft print poster per zone (28 today) for the my-upg-100-list profile, from the profile's own data. It ships inside the repo alongside that data on purpose — reaching for the data via an env var once silently rendered stale posters (Nepal, Bangladesh, Bhutan vanished).
bun run posters -> posters:shoot -> (WebP previews) -> bun run build
HTML per zone PNG @3000² assets/previews/ app shows them
generate.mjsis the template;shoot.mjsscreenshots to PNG (Firefox only — privacy-first policy).- A template change is not visible in the app until previews are regenerated and the app rebuilt.
- Exported PNGs go to a sibling folder (
../../../upg-100-posters/), neverpublic/— Capacitor packagespublic/wholesale.
Full reference — files, env vars, gotchas, measurement discipline: ../../../documentation/architecture/poster-generation.md.