Commit graph

4726 commits

Author SHA1 Message Date
Doxa Maps
2d01e80002 Merge the pilot (development 3184b58c8, the packet's tally columns, description and pace table) into the poster header branch 2026-10-02 20:03:09 +00:00
Doxa Maps
3184b58c8c Rebuild the packet text's pin carriers on the merged pilot: packet-strings re-pinned, its importers rebuilt, the tree and SRI regenerated 2026-10-02 19:47:03 +00:00
Doxa Maps
75e581019e UPG-100 packet page 1 is the full UPG-100 poster: the letter sheet with its title, scripture banner, three-column header and footer, generated at the click
generateSheet gains `sparse` (default: every format but 'packet', so every existing caller is unchanged);
the UPG-100 zone sheet answers the packet's 'packet' request with the full letter poster, the same
1500x1941 page. check:poster-browser-equiv compares that sheet with Node's letter format without SPARSE.
2026-10-02 19:44:34 +00:00
Doxa Maps
381abd0623 Merge the pilot (development 9222c7f36) into the poster header branch 2026-10-02 19:42:57 +00:00
Doxa Maps
36eb0cc66a Merge the pilot (development 9222c7f36, the pinned-file cache fix) into the packet pace branch 2026-10-02 19:41:57 +00:00
Doxa Maps
9222c7f36b Merge origin/development into studio/pinned-fresh 2026-10-02 19:35:39 +00:00
Doxa Maps
4feaf751d9 Merge remote-tracking branch 'origin/development' into cities-plugin/circular-layout 2026-10-02 19:30:23 +00:00
Doxa Maps
550a69b8b9 check-circular-layout: use globalThis.gc, not the free identifier global
check:no-free-identifiers (gates:post) flagged `global` at the budget
arm's optional gc() call. globalThis is the portable form. Script only.
2026-10-02 19:30:09 +00:00
Doxa Maps
7ffda69ef3 Rebuild 8 bundles for pinned print files that refetch a stale cached copy, and regenerate the tree and SRI 2026-10-02 19:23:49 +00:00
Doxa Maps
84e40a965f Merge origin/development (9652986c1) into studio/pinned-fresh 2026-10-02 19:18:54 +00:00
Doxa Maps
c74b642ebd README print section: only UPG-100 List prints when the poster picture is clicked 2026-10-02 19:17:52 +00:00
Doxa Maps
832294ffd8 README print section: the poster read's corrections
India's whole-country poster is withheld for now, so it leaves the needs-a-computer list and step 1 says
its state posters print. The poster walls print Letter and offer no size choice, so the large-size
paragraph names the two plugins that do (Bible Posters and the Wall of People Groups, up to 5 x 8 ft) and
describes only the glued print that ships today: the Wall's 5 x 8 ft poster as 3 sheets, one per page,
with a 6 in overlap, numbered and marked "glue here".
2026-10-02 19:16:57 +00:00
Doxa Maps
3b871aa024 README print section: only the whole-India card needs a computer; its state posters print on a phone 2026-10-02 19:15:45 +00:00
Doxa Maps
536989a3d5 UPG-100 posters: the scripture banner sits under the title, then one three-column band like the footer's (the facts | Jesus' strategy | What is a UPG-100 List?), the text a size larger; the series is named UPG-100 List
Opt-in per series (series.json poster.headColumns, on for upg100 only), so every other series' sheet is
unchanged. The band is laid out by ONE function that both measureHeader() and the renderer call, so the
predicted header height is the drawn one. Each block is centred in an equal column between short rules,
with the inset the first column lacked. The footer's three blocks are drawn at the 13.5px they are wrapped
and spaced for (they were drawn at 12px), so the text grows with no change to the lines or the band's
height, and they are centred for that size.
SOURCE ONLY: the served copies, the integrity pin and its bundles are regenerated at landing.
2026-10-02 19:14:35 +00:00
Doxa Maps
9d0a818768 Merge development into repo/print-first-poster 2026-10-02 19:14:20 +00:00
Doxa Maps
774004ffd8 README: print your first poster
A short section after "On a phone" for readers: open a poster wall (UPG-100 List, Country Posters,
Regions), pick Poster Map, Prayer List or Card Deck under Print Options, and the browser's print window
opens as the preview, with Save as PDF to keep a file. It says which page and card sizes print, that
the large sizes (18 x 24 in and up) go to a print shop as a PDF with one page per sheet, that 66 x 66 in
and 5 x 8 ft print as 2 and 3 sheets glued with a 6 in overlap, and what a phone can print, including
the few prints that need a computer. The labels and sizes are the ones the code uses.
2026-10-02 19:14:11 +00:00
Doxa Maps
9652986c1a Rebuild posterverse for the Bless India rail label, and regenerate the tree
BUNDLE=posterverse vite build, then bun run tree and fix:sri. Only the
posterverse entry changes in the manifest (its integrity).
2026-10-02 19:08:38 +00:00
Doxa Maps
d329a3a612 Posterverse: the Bless India Posters rail label is the plugin's own title
The rail row now uses the plugin's own title in all 11 locales, copied from its
catalogue (blessIndiaPosters.title), so the rail and the plugin name it the same
way. Copied rather than read at runtime: naming that catalogue area from the
shell would ship the plugin's whole catalogue inside posterverse.js.
check:posterverse-shelf arm F asserts the two stay equal in every locale; its
self-test plants a drifted label.
2026-10-02 19:08:38 +00:00
Doxa Maps
06d0e16e26 Merge origin/development (988bc0cf5) into studio/pinned-fresh 2026-10-02 19:08:36 +00:00
Doxa Maps
b95607cadc check:packet-render counts the prayer wheel the way it is drawn now: its filled arc segments and its wheel-label runs
The wheel took the source's hex palette, rim badges with a minutes tag and a Start-here mark; the gate still
counted fill^=hsl paths (0) and every non-numeric text (25), so it failed every packet with a correct wheel,
the pilot's included. Two-sided: PASS on the lightweight packet in en and ar; FAIL on a copy with the
segment labels blanked (0 labels) and on one with the segments unfilled (0 segments).
2026-10-02 19:08:11 +00:00
Doxa Maps
b391988a0f Print files: a transient failure to load the places table is retried on the next print
loadPlaces memoised an empty table on ANY failure, so one network error meant no
city dots for the rest of the session, while the other pinned loaders retry. A
table that is not served (or a reader offline) is now forgotten, so a later print
tries again; wrong bytes, refused after the fresh refetch, stay refused for the
session.
2026-10-02 19:07:51 +00:00
Doxa Maps
ef439a5d8e Print files: a stale cached copy of a pinned file is fetched once more, fresh
The print-time files are pinned (poster-render.js and its classic copy,
packet-strings.json, ne-places.json, india-states.json) and were fetched with
cache: 'force-cache', which returns any cached copy, however old. After a
re-pin, a reader who had printed before kept the previous copy: it failed its
pin on every print and the print fell back without a word. Page 1 became the
stored poster, a non-English packet would print in English, and India's state
cards would be lost.

sha384.js fetchPinned fetches force-cache first (fast, and offline once
cached) and, when the copy is not served or fails its pin, once more with
cache: 'reload', which skips and refreshes the HTTP cache; only that answer
decides. posterSheets (the generator and the places table), packetStrings and
indiaStates all fetch through it. The classic-script path refreshes the cache
the same way and retries a refused tag once.

check:pinned-fetch-fresh models the HTTP cache with stale copies: page 1 still
draws, the packet keeps every language, India keeps its 36 states; a matching
cached copy is used with one request; wrong bytes are refused. The previous
loaders fail it. Self-test poisons: no fresh refetch, never the cache, a
mismatch accepted, a loader fetching its pinned file directly.
2026-10-02 19:05:37 +00:00
Doxa Maps
988bc0cf51 Merge remote-tracking branch 'origin/development' into repo/readme-swarm-2 2026-10-02 19:03:56 +00:00
Doxa Maps
8dcbba6dbe Packet list wording, after the scripture read: the pace note ties daily prayer to praying for every group on the list, x11; the blessing credits all name ebible.org with an en dash; Russian column questions without a gendered past tense 2026-10-02 19:01:28 +00:00
Doxa Maps
db5cd42841 Packet list: the first page explains the list before it lists anyone, with a prayer-pace table, x11
What the three columns ask; the blessing to pray over each group, Numbers 6:24-26 in full with its credit
(the public-domain text per language, compared verse by verse with its source; ro and hi print the English,
as the packet's other scripture does); one line of further blessing references (the Synodal's own Psalm
numbers in Russian); the prayer wheel at the end; and a pace table, daily (strongest) to every three months
(slower), weekly marked as the healthiest, each pace's daily load computed from the list's size.
The first page holds 11 rows (16 before); later pages keep 18. Measured with a 100-group list in all 11
languages: the longest first pages (ru, hi) keep 77px under their last row, the references fit one line.
check:packet-variants asserts the description, once, before the first row, and the computed pace; the
render gate follows the new pagination.
2026-10-02 18:54:44 +00:00
Doxa Maps
e5e5b55e77 Merge remote-tracking branch 'origin/development' into drp/gospel-railname 2026-10-02 18:50:32 +00:00
Doxa Maps
bba4c0c79f Packet list: three tally columns headed by the questions asked of Jesus (Did I bless them? / What do you want me to know? / What do you want me to do?), x11
The tick boxes become tally cells, on the lightweight worksheet and on the full packet's profile rows, so a
list prayed through again and again counts every time. The headings are the questions themselves, broken
into balanced lines; the worksheet's tally columns widen to 160px so English heads take two lines. The
worksheet's note no longer says there is no pace to keep. Measured in all 11 languages: every worksheet
sheet and every profile row still fits (16 + 18 rows a sheet unchanged).
2026-10-02 18:48:17 +00:00
Doxa Maps
0f6ecd978d README + diagram: "landing" means only the landing branch
A change joins the pilot; only the landing branch is landed on. The swarm section and the diagram used
"land" for both, so the harness paragraph, step 5, the kitchen list, the alt text and the diagram's
centre, panel title and second card now say "join". The lock "works like a merge queue": it lets one
change through at a time, while the order comes from the coordinator. The kitchen list says "landing
server", and the glossary says main moves only when a person approves publishing development. The PNG
is re-rendered at 2x from the SVG source.
2026-10-02 18:47:41 +00:00
Doxa Maps
a1bb974651 circularLayout: register check:circular-layout after merge
Re-add the circular-layout catalogue entries (script, gates:pre,
description) in a separate commit, since the merge took development's
package.json.
2026-10-02 18:46:38 +00:00
Doxa Maps
ad63cd56d8 Merge remote-tracking branch 'origin/development' into cities-plugin/circular-layout
# Conflicts:
#	package.json
2026-10-02 18:46:19 +00:00
Doxa Maps
6e6afb1499 Research Gallery: a short rail name for Gospel × Internet in 11 languages
The Experimental row showed the titleized id ("Gospel Internet") in every
language: tabLabel() translates a discovered tab only when strings.js has
'tab.<id>', and the manifest carries no title. Add 'tab.gospel-internet'
after 'tab.bless-india-posters' in each locale, with the plugin's own
strings. Rebuilt the gallery bundle; it differs from the pilot's only by
these 11 strings.
2026-10-02 18:45:39 +00:00
Doxa Maps
7438c25230 README + diagram: the agent swarm at scale, and where to publish
The swarm section now says what each branch is for: the landing branch ships and moves only when a
person approves a publish; the pilot branch is where reviewed PR branches come together; each plugin
or feature has its own PR branch. A new paragraph says how it scales (many people, each with several
agents, on many plugins: one PR branch each, seen on the pilot server once it joins). Step 5 names the
lock as a merge queue. Publishing to a public host happens only from the landing branch, when it is
ready, and a self-hosted git service is recommended because an agent can publish by accident.
The diagram gets the same: "a person approves" for the landing, "landing server", and a bottom band
for the scale and publishing rules. The PNG is re-rendered at 2x from the SVG source.
2026-10-02 18:31:10 +00:00
Doxa Maps
e855e6f371 Rebuild the wording's bundles on the merged pilot
The merge took the pilot's built files where both sides had rebuilt them; this rebuilds the landing's
freshness scope (22 bundles, now including bless-india-posters) on the merged source, then the tree and
SRI. Against the pilot's bundles, with data-v ids normalised and the old->new wording applied, eight are
identical, gospel-resources differs only by minifier renaming, and gospel-internet's one further change
is notice.pin no longer passing {country}. Pages and manifests differ from the pilot only in integrity
hashes.
2026-10-02 18:21:00 +00:00
Doxa Maps
fc946bd5fe Merge development into repo/p2-neutral (built files from development; rebuilt next) 2026-10-02 18:13:27 +00:00
Doxa Maps
d63951cf39 Merge remote-tracking branch 'refs/remotes/origin/development' into deep-research/bless-india-label 2026-10-02 18:08:26 +00:00
Doxa Maps
224b477158 Rebuild the gallery for the Bless India label, and regenerate the tree and SRI 2026-10-02 17:46:43 +00:00
Doxa Maps
f89c353548 Merge origin/development (a57ecb2aa) into studio/phone-print-keep 2026-10-02 17:46:38 +00:00
Doxa Maps
421a13edc8 Gallery: Bless India Posters' Experimental row takes the plugin's own title in every language 2026-10-02 17:44:16 +00:00
Doxa Maps
540e9ee04a Merge origin/development (8845347f8) into studio/phone-print-keep 2026-10-02 17:44:16 +00:00
Doxa Maps
a57ecb2aa5 Rebuild bless-india-posters (localized poster header) 2026-10-02 17:40:48 +00:00
Doxa Maps
db1c1da808 Localize the poster header per locale (phrase, not scripture)
The poster sheet's own header 'Bless India in Jesus' name' printed in
English for every reader. It's a phrase, so add a posterHeader key x11
and pass the reader's-locale header to the generator. The footer verse
stays the English PD blessing until the strict-PD per-locale sourcing
lands. Verified: ar poster header = باركوا الهند باسم يسوع.
2026-10-02 17:33:17 +00:00
Doxa Maps
3eb10d637b Rebuild prayer-walk-planner regions-dashboard upg-neighbor wall-of-people-groups for phone prints that save what the preview shows, and regenerate the tree and SRI 2026-10-02 17:29:35 +00:00
Doxa Maps
8845347f8e Rebuild bless-india-posters (ar localization) 2026-10-02 17:25:29 +00:00
Doxa Maps
bc1e82a93e Rebuild 7 bundles for phone prints that save what the preview shows, and regenerate the tree and SRI 2026-10-02 17:24:01 +00:00
Doxa Maps
6cd0a8b73c Localize Bless India plugin UI in all 11 locales + RTL
The plugin's own page chrome (title, intro, buttons, stats, notes) was
English in every locale, and in RTL shells its full stops jumped to the
start. Add the page strings to blessIndiaPosters.json x11, look them up
from the reader's locale (profile-config from the shells; ?lang / <html
lang> on the standalone leaf), set dir=rtl for ar/he/fa/ur, and format
counts via the locale. Verified: ar leaf draws dir=rtl with the Arabic
title; en draws dir=ltr.
2026-10-02 17:22:33 +00:00
Doxa Maps
967457f65e Phone print: going away again cancels a pending drop; a 60 s grace; no early touch
A second read measured a hole in the phone print keep: a touch after print()
started the grace, and if the print UI then opened (the page hidden, or the
window blurred), nothing cancelled it, so the document could go while the
reader was still choosing Save as PDF. Now:

- going away again during the grace cancels the pending drop, and the next
  "back" counts;
- BACK_GRACE_MS is 60 s (was 5 s): a slow phone can still be writing an
  11-page packet after its dialog closes, and the kept document is invisible
  on screen and replaced by the next print;
- a touch in the first TOUCH_SETTLE_MS (2 s) after print() is not "back" (a
  double tap while the preview builds).

check:phone-print-keep gains arm H (a touch, then the print UI, by hiding and
by blur: still mounted past the grace, released after the next back) and arm I
(a touch in the settle window), with the poisons "no cancel when away again"
and "no touch settle window"; arm C now taps Print a few seconds after the
document is ready and stays in the dialog past the grace. The first cut fails
H and I; the pilot's file fails A to H. Desktop stays byte-identical.
2026-10-02 17:15:56 +00:00
Doxa Maps
0b1fcde1db Phone print: keep the in-page document until the reader is back, so a saved PDF is the preview
On a phone, printDocument mounts the document into the page (#dxm-print-root and
a print-only style) and calls window.print(). It dropped both at afterprint. But
Android Chrome's print() does not block: afterprint fires once the preview is
built, and the file "Save as PDF" writes is rendered later, after the reader
taps Save, from the page as it is then. The preview showed a packet's 11 pages
and the saved PDF was the bare host page.

The document now stays until the reader is back on the page: shown again after
being hidden, focused again after losing focus, or touched after print(), then
BACK_GRACE_MS more for a job still rendering. A new print replaces it, a
cancelled one drops it, and the ten-minute ceiling stays. Listening starts at
print(), so the Print tap of a late print does not count. printImageBlob's
object URL now follows the document (onRelease) instead of afterprint. On
screen the document is display:none, as before. Desktop prints through the
frame exactly as before.

check:phone-print-keep runs the phone timeline on fake timers and a stub DOM
with an Android user agent; the previous file fails it (gone after afterprint,
image revoked). Its self-test poisons the old drop at afterprint, no release
when back, listeners armed at mount, no grace, printImageBlob revoking at
afterprint, and no ceiling.
2026-10-02 17:10:09 +00:00
Doxa Maps
2e0800c5ad Rebuild bless-india-posters (asset-base fix) on merged pilot 2026-10-02 16:59:11 +00:00
Doxa Maps
44ca332b65 Merge remote-tracking branch 'origin/development' into reg-post/bless-india-posters 2026-10-02 16:53:19 +00:00
Doxa Maps
824a7ef2c2 Fix Bless India asset base: resolveAssetsBase(profileConfig) not runtime deriveTreeBase
deriveTreeBase() called inside build() returned '' (document.currentScript is
null by then), so the India boundaries loaded from /assets (the host's HTML
page) and the poster failed with 'Unexpected token <'. Use the house helper
resolveAssetsBase(profileConfig): the shells pass an absolute assetsBase, and
the standalone leaf falls back to the bundle's own tree root (import.meta.url,
captured at load). Verified: the leaf draws the 3-sheet poster, 0 errors.
2026-10-02 16:52:55 +00:00