Commit graph

4330 commits

Author SHA1 Message Date
Doxa Maps
e380ab8cbb Wall of People Groups: UPG-style section dividers, the cornerstone line as the call to action, and the priestly blessing as the footer
The Bless poster follows the UPG 100 List posters' structure:
- the header and the prayer-themes chart close on dividers that run the page's width (to a quarter of the
  border from the sheet's edge), while the text stays in the content column;
- at the foot: the call to action in a band ruled across the page ("Jesus Christ is the cornerstone, and we
  are living stones. ... bless them in his name, and join the global family in prayer.", moved down from the
  header), then the journey's table, a page-wide rule, and the footer: the whole priestly blessing,
  Numbers 6:24-26 (World English Bible British Edition, public domain, verbatim), in two lines that fill
  the width, with its reference and the credit line.

Measured on the print at 3 x 4, 2 x 3 and 5 x 8 ft, en and ar: the blessing fills 99.2% of the text width
(49 pt at 3 x 4, 74 pt at 5 x 8); the call to action is one line, 97.6% of its band in English; no text
overflows (the only overflow is the dividers' intended reach past the column). Both em constants come from
those measurements. Cards: 3 x 4 0.49 in, 2 x 3 0.35 in, 5 x 8 0.92 in (one verse per row).
2026-10-03 04:13:07 +00:00
Doxa Maps
2bcf371f72 Wall of People Groups: the cornerstone line stays on the poster, as a dedication under the title
The footer is scripture only (the journey and Numbers 6:24). The poster's one line of its own words, "Jesus
Christ is the cornerstone, and we are living stones. These people groups are the reward of his suffering.
Take up our priestly calling: bless them in his name, and join the global family in prayer.", now sits in
the header, in small italic under the DOXA line, translated as before (wall.posterClosing). The header
gains one line; the title and the DOXA line keep their size. Measured on the print at every size in en
and ar: 0 overflowing blocks, the dedication included.
2026-10-01 07:47:28 +00:00
Doxa Maps
699d77167d Wall of People Groups, Social: the sign-up link opens in the reader's language
pray.doxa.life serves each group's page under /<lc>/ for ar, de, es, fr, hi, it, pt, ro, ru and zh (read
from its routes; /ar/abu-junuk and /ro/abu-junuk answer 200, and the Arabic page carries the same
#signup-section), and English unprefixed. The heart dialog's "Sign up to pray" link now takes the wall's
locale prefix, so an Arabic reader lands on the Arabic sign-up (measured: ar ->
https://pray.doxa.life/ar/abu-junuk#signup-section, en -> https://pray.doxa.life/abu-junuk#signup-section).
2026-10-01 07:33:34 +00:00
Doxa Maps
192c652ad4 Wall of People Groups, Social: comments say "coming soon", and the heart links to the group's prayer sign-up
- COMMENT (and "View prayers") showed an empty comments board; it now says "Comments are coming soon."
  The unreachable CommentsDialog is removed.
- HEART: "Yes, I'm praying" still stores the prayer in this browser (localStorage, wall-pg:prayers), and the
  dialog now links "Sign up to pray for <group>" to the group's sign-up on pray.doxa.life
  (https://pray.doxa.life/<slug>#signup-section, the page's own sign-up section), in a new tab.
- The prayer dialog scrolls when it is taller than the window: it clipped at 90vh with overflow hidden,
  so on a laptop everything under the photo could not be reached. The photo now gives way (at most 38vh),
  so the question, "Yes, I'm praying" and the sign-up link all show at 1440 x 900.
- SHARE already shares the group's pray.doxa.life page (unchanged).

The two sentences live in a NEW area, wallSocial (11 locales), which only this bundle names (0 other
bundles carry it). Exercised at 1440 in en and ar: the toast and the link (href, new tab, noopener).
2026-10-01 05:44:40 +00:00
Doxa Maps
b61cc36492 Wall of People Groups: the poster closes on scripture, "The LORD bless you, and keep you.", across the full width
The footer is now scripture only:
- the seven passages of the journey (Abraham to the church), unchanged;
- a full-width rule, the same as the header's;
- Numbers 6:24 from the World English Bible British Edition (public domain; verified at the source),
  set as its two clauses, "The LORD bless you," / "and keep you.", filling the footer's width;
- its reference, and a credit line naming both public-domain translations on the poster.

Removed: the long Numbers 6:22-27 block, and the closing sentence (it was our own words, not scripture).
The card rows now spread their spare height between them, so the photos fill each sheet.

BENEDICTION_FILL is the one number per size that sets how much of the width the verse fills (1 = all of
it). Measured on the rendered print, the longer clause fills 98.4% of the text width in en and ar at every
size, with nothing overflowing (the em constant comes from that measurement). At 5 x 8 ft a full-width
verse costs the per-card verses: the cards go from 1.04 to 0.91 in, with one verse per row; 0.3 there keeps
a verse under every card.
2026-10-01 05:39:57 +00:00
Doxa Maps
315dc92a65 Merge remote-tracking branch 'origin/development' into wall-of-people-groups-plugin/work 2026-10-01 05:31:29 +00:00
Doxa Maps
53fcf6d096 Rebuild PosterWall's consumers from the merged source (upg100's batch-tap stack + the section-head count), and regenerate the tree and SRI 2026-10-01 05:19:32 +00:00
Doxa Maps
cfab45ff97 Merge remote-tracking branch 'origin/development' into wall-of-people-groups-plugin/work
# Conflicts:
#	package.json
2026-10-01 05:19:07 +00:00
Doxa Maps
b6777218e3 Merge remote-tracking branch 'origin/development' into poster-design-plugin/zero
# Conflicts:
#	public/dx-maps/doxa-maps-spa/manifest.json
#	public/dx-maps/manifest.json
#	public/dx-maps/my-upg-100-list/my-upg-100-list.js
#	public/dx-maps/my-upg-100-list/poster-wall/index.html
#	public/dx-maps/my-upg-100-list/upg-100-list/index.html
#	public/dx-maps/my-upg-100-list/upg-100-mfe/index.html
2026-10-01 05:18:28 +00:00
Doxa Maps
7402738bb0 Rebuild PosterWall's consumers (country-posters, my-upg-100-list, regions-dashboard, poster-design) for the section-head count, and regenerate the tree and SRI 2026-10-01 05:14:07 +00:00
Doxa Maps
289d31e3f4 Merge remote-tracking branch 'origin/development' into upg100/batch-tap
# Conflicts:
#	public/dx-maps/doxa-maps-spa/manifest.json
#	public/dx-maps/manifest.json
#	public/dx-maps/my-upg-100-list/my-upg-100-list.js
#	public/dx-maps/my-upg-100-list/poster-wall/index.html
#	public/dx-maps/my-upg-100-list/upg-100-list/index.html
#	public/dx-maps/my-upg-100-list/upg-100-mfe/index.html
2026-10-01 05:12:05 +00:00
Doxa Maps
9de5da9e4a Country Posters: the India section's header counts its states and union territories, not "countries"
The India section's cards are India itself, its 34 state and union territory posters and the two with none listed,
so "· 37 countries" was untrue. Through PosterWall's sectionItemCountKey, that section alone counts its state cards
(36, from the data) with countryPosters.indiaItemCount; every other section keeps the countries count.
The key in all 11 locales, in each locale's own plural forms (the same form counts as regions.countryCount).
2026-10-01 05:11:52 +00:00
Doxa Maps
f3851da57c PosterWall: sectionItemCountKey, so one section can be counted in its own words
The Country Posters India section headed "855 people groups · 37
countries", which is untrue: its cards are India's own and one per state
and union territory. sectionItemCountKey (default null: every section
counted with item-count-key, as before) lets a wall answer, per section,
an i18n plural key, or { key, n } to count n rather than the section's
card count, or null to keep the default.

Walls that do not pass it render byte-identical trees before and after
(a differential render of an upg100-style and a country-posters-style
wall). check:poster-wall-host-seams arm K: a named section counts in its
own key and number, an unnamed one keeps the default; it fails with the
prop ignored.
2026-10-01 05:10:55 +00:00
Doxa Maps
d3ceb95711 Poster Design: Styles counts its sections in templates
The Styles wall passes item-count-key="posterDesign.templateCount", so a
section head reads "4 templates" where it read "0 people groups · 4
lists".
2026-10-01 05:10:55 +00:00
Doxa Maps
a56691bc09 i18n posterDesign: templateCount, the plural for a section of poster templates
"{n} template | {n} templates" in each locale's own plural forms (the
same form counts and order as regions.countryCount), so Poster Design's
section heads count templates rather than lists. check:plural-forms
passes.
2026-10-01 05:10:55 +00:00
Doxa Maps
24f3e4176a PosterWall: a section head names its people-group total only when there is one
A section head read "<n> people groups · <items>" always, so a wall whose
cards count no people (Poster Design's gallery of templates) showed
"0 people groups · 4 lists" on every head. The total and its " · " now
leave together when the total is 0, the rule the cards already follow with
v-if="item.count". The head is still one string in one interpolation, so a
section with a total renders exactly the text it always did, whitespace
included: a differential render of an upg100-style wall and a
country-posters-style wall, before and after, gives identical trees.

check:poster-wall-host-seams gains arm J (a head with people keeps its
total; one without reads its items alone); the old head line fails it.
2026-10-01 05:10:55 +00:00
Doxa Maps
effe847a38 README: the web folder's size after the 34 India state previews (1367 files, 163 MiB)
The 34 state posters add a 560 px card thumbnail and a 1500 px download each (68 files, about 5 MB), which takes
public/dx-maps past the README's stated size by more than check:readme-size's 10% margin. The row now states the
measured size, as the gate prescribes.
2026-10-01 01:03:51 +00:00
Doxa Maps
a37e831cf3 Rebuild PosterWall's consumers (sectionTotal) and country-posters (India first, its note), and serve the 34 India state previews 2026-10-01 01:03:51 +00:00
Doxa Maps
e38103149d Country Posters: previews for the 34 India state and union territory posters
Each state's sheet drawn from live records with the browser's own inputs (SPARSE 3x3, the indiaState series, the
served boundaries and places), shot in the shared browser at 3000 px, and reduced by make-previews.py to the 560 px
card thumbnail and the 1500 px download, as the country previews are. Every record pinned; every layout octilinear.
2026-10-01 01:03:51 +00:00
Doxa Maps
ddb7a4850c Country Posters: India is its own section, first, above Asia, counted once
India's country card, its 34 state and union territory posters and the two with none listed now share one section,
headed by India's name and counted once (855, through PosterWall's sectionTotal), which puts it above every regional
section. One line at the top of the wall says why India is set apart. Asia keeps every other Asian country.
check:country-sheet-one-path ARM E: the wall passes sectionTotal, India's card is in the India section, PosterWall's
default is still the card sum, and over the real data India comes first with 855 (India 855 > Asia 454 > Africa 314).
2026-10-01 01:03:50 +00:00
Doxa Maps
eeaea4c3e9 i18n: the Country Posters India note in all 11 locales; the unused India heading key removed
countryPosters.indiaNote: India has its own section, first, because it has far more unreached people groups than any
other country (the count is filled from the data). ru and ar are phrased so the number needs no case agreement.
countryPosters.indiaStatesHeading is gone: the section is now headed by the country's own name.
2026-10-01 01:03:50 +00:00
Doxa Maps
e16e204530 PosterWall: an optional sectionTotal, so a section whose cards overlap counts its people groups once
A section's total (its header count, and what orders the sections) defaults to the sum of its cards' counts,
unchanged for every wall that does not pass the prop. The Country Posters India section holds India's own card
and one card per state and union territory (the same 855 groups twice), so it passes India's count instead.
2026-10-01 01:03:50 +00:00
Doxa Maps
fe43c966f3 Merge remote-tracking branch 'origin/development' into repo/merge-main-bless 2026-10-01 00:54:28 +00:00
Doxa Maps
742057a979 Rebuild the PosterWall carriers and the wall (country-posters, my-upg-100-list, regions-dashboard, wall-of-people-groups) from the merged source, and regenerate the tree and SRI 2026-10-01 00:46:17 +00:00
Doxa Maps
c5687142ae Merge origin/development into studio/scrub 2026-10-01 00:46:07 +00:00
Doxa Maps
8f6d16e4f3 Build config: a dev-server measurement note names what was measured, not who 2026-10-01 00:27:13 +00:00
Doxa Maps
01c390a929 Rebuild country-posters, my-upg-100-list, regions-dashboard and poster-design (India state posters: the indiaState series, the countryPosters area) 2026-10-01 00:24:41 +00:00
Doxa Maps
848ea64b95 Wall of People Groups: the poster says up front that it is for a print shop, as a PDF
Every Bless size is 2-8 ft, paper no desktop printer takes, and the print dialog then shows a 3 ft
page with no hint of what to do with it. A note under the header (Bless mode) now says: "This poster
is for a print shop: in the print dialog, choose 'Save as PDF', then send the file to the print shop."

The sentence lives in a NEW catalogue area, wallPrint (11 locales), which only this bundle names, so it
ships in the wall's bundle and in no other (measured: 0 other bundles carry it; the shared wall area
ships in 9). Shown in en and ar at 1440.
2026-10-01 00:24:32 +00:00
Doxa Maps
8918d11c01 Wall of People Groups: desktop only; a phone gets the house notice instead of a poster it cannot finish
A 5 x 8 ft poster ran past 60 s on a phone without finishing, and no phone prints 3-8 ft paper. The
profile now declares mobile: desktop-only (SPEC-MOBILE-FLAG). On a narrow screen the shared screen
gate shows messages.desktopOnlyNotice ("... only supports desktop", all 11 locales) and never mounts
the wall: measured at 390, en and ar, no canvas and 0 photo requests. Desktop is unchanged (1440: the
wall mounts). The Research Gallery disables the tab on a phone, and Posterverse defers to the
child's own notice.
2026-10-01 00:22:31 +00:00
Doxa Maps
650b478a3e Regenerate the tree: the leaf pages' print-host comment, reworded (66 pages, 0 bundles) 2026-10-01 00:07:35 +00:00
Doxa Maps
7b1730e8aa Comments name what measured a fact, not who: the tree generator, the Mapbox draw gate, the profile metadata and the admin proxy 2026-10-01 00:07:34 +00:00
Doxa Maps
6bc7d70bf3 Wall of People Groups: the poster prints from 20 MB of photos instead of 133 MB, and says how far along it is
The print waits for every card's photo before the print dialog can open. 77 of the 939 photos are IMB
originals at 1024 px (~1.5 MB each), 114 MB of the 133 MB: on a home connection a minute or more
with nothing on screen but a busy button.

- Photos load at the size they print (photoUrl.js): the IMB host's own 320 px copies (1.3 MB for all
  77). 320 px covers the largest printed photo (5 x 8 ft, ~0.97 in, 291 px at 300 dpi) and the canvas's
  cap. A resized copy that fails falls back to the original, in print and on screen. Every other photo
  (Joshua Project, doxa, already 150-250 px) is untouched.
- Measured on the print flow, 3 x 4 ft: 133 MB -> 19 MB; 5 x 8 ft: 20 MB; 0 photos failed.
- While it prepares, the shared print card (MapPrintProgress) shows "Preparing the poster: n of N
  photos" with a clock and a bar, in the middle of the screen.

check:wall-photo-weight (gates:pre, headless) pins the mapping on both IMB hosts, the fallback, the
untouched hosts, and that the print HTML and the canvas both use it. It fails when either reverts to
the originals.
2026-10-01 00:03:56 +00:00
Doxa Maps
3a5b1b4803 README: the blessing stands as its own paragraph, apart from where the posters are 2026-09-30 23:51:12 +00:00
Doxa Maps
44762e6f40 README: a blessing for the people who bless the nations, and where every poster is
Four lines after the Bottom line up front: these maps and posters are given to bless the
people who bless the nations; we love them, thank them for their work and bless them in
Jesus' name. Every poster is in Posterverse (the UPG 100 List, Country Posters, Poster
Design and Wall of People Groups) and in the Plugin Studio.
2026-09-30 23:49:27 +00:00
Doxa Maps
1e300309c8 Country Posters: one poster for each of India's states and union territories
The unfiltered wall gains an "India — states and union territories" section: 34 cards, one per state or union
territory with people groups listed (from the shared india-states table, fetched and sha-checked only when the
section is shown), each with its poster, prayer packet and cards. Nagaland and Mizoram get a card saying no
unreached people groups are listed there, so no division silently disappears. A host's filtered wall
(countries/region) is unchanged and never loads the table.

src/indiaStateSheet.js draws a state's sheet through ONE path: its records by slug, its outline from the
ADM1 boundaries the renderer already loads (matched on shapeName; the shared collection is copied, never
mutated), India's hue, and the indiaState series ("India State Maps", map N of 34). Show on map for a state
frames India, since the countries map draws countries.

check:country-sheet-one-path grows the state arms: inside this plugin only the helper calls generateSheet,
the wall must use makeIndiaStateSheet, and over the served table + ADM1 file: 36 divisions, the 34 with groups
numbered 1..34 each with an outline, the rest named, the ADM1 collection unmutated. Self-test 10/10.
Rendered headlessly through poster-render for Gujarat (90 pins), Lakshadweep (1), Andaman and Nicobar (9):
the state's name as title, "India State Maps", its series position, no country-series text, no "Province".
2026-09-30 23:33:34 +00:00
Doxa Maps
c58c7a7baf i18n: a countryPosters area, with the India states section's heading and no-people-groups line, in all 11 locales
countryPosters.indiaStatesHeading ("India — states and union territories") and countryPosters.indiaStateNoGroups
("No unreached people groups are listed here."), for the Country Posters wall's India section. A NEW AREA that only
country-posters names, not the shared `messages` area: that one reaches 20 built bundles, so two strings only this
wall shows would have rebuilt nearly the whole tree. Each locale reuses its catalogue's term for unreached people
groups (lists.unreached) and its standard name for India's states and union territories; never "provinces".
2026-09-30 23:33:34 +00:00
Doxa Maps
51524b7897 A poster series for India's states and union territories; series-isolation sees shared wording and poster text correctly
series.json: a new `indiaState` series, modelled on `country`, so a state poster names itself honestly
("India State Maps", "What is a State Prayer Map?", one sheet for each state and union territory of India,
"which state God has put on their heart"). The country series' text would have called Gujarāt one of the
~170 Country Maps. Approved as the default wording; shown as editable.

check:series-isolation, two blind spots found by adding a third series:
- Shared wording was dropped from only the EARLIER series (sets were mutated while still being compared),
  so the later one kept it as a fingerprint and the earlier failed for carrying it. The shared set is now
  found on the original sets. Self-test: three series in any order; the old loop fails it.
- The contamination scan never read a series' `poster` block, where a country poster once printed the
  UPG-100 side box. It does now. The phrases that NAME country and indiaState are hand-listed, so a
  verbatim copy of one's framing into the other is caught even though symmetric dropping treats it as shared.
  Self-test 9/9, including both directions of a country/state copy.

countrySheet.js: the seriesFor comment no longer says "map 1 of 0" was printed; it was latent (the map-only
packet page prints no series line, and the India poster is gated), as a rendered check showed.
2026-09-30 23:33:34 +00:00
Doxa Maps
9f246e4710 UPG-100 batch-tap gate: the pin handler adds no second territory toggle (one pin tap in batch mode = exactly one toggle, from the tapestry listener); a double-toggle variant FAILS 2026-09-30 23:18:11 +00:00
Doxa Maps
2e6f6a59e6 UPG-100 batch mode: a tap on a people-group pin selects the territory under it and opens no detail sheet (the sheet covered the whole batch HUD on a phone, and in a dense state nearly every tap lands on a pin); outside batch mode pins behave as before. Gated; my-upg-100-list rebuilt with the tree and SRI 2026-09-30 23:17:20 +00:00
Doxa Maps
3f7d489409 Merge remote-tracking branch 'origin/development' into poster-design-plugin/land 2026-09-30 23:12:35 +00:00
Doxa Maps
cf8e7f2f51 README, agent section: a full-size link under the diagram, whose small text a phone can't read 2026-09-30 23:12:25 +00:00
Doxa Maps
d58ffb6a71 Rebuild poster-design from the merged source (the shared country-sheet path) 2026-09-30 22:54:57 +00:00
Doxa Maps
1f2dc22cbd composite-interop: Poster Design has no cross-pane links, by design
Its two panes, Styles and Sizes, are independent views of the poster
templates; neither drives the other, so it gets a NO_LINKS entry with
that reason rather than invented links.
2026-09-30 22:54:56 +00:00
Doxa Maps
111c17d499 Poster Design: draw the sample country sheet through makeCountrySheet
The Styles tab called generateCountrySheet directly and built the country
without its region, so the sample would have printed in the old flat teal
while the Country Posters wall prints it region-hued. It now draws through
the one shared path (library/packet/countrySheet.js), which carries the
region and computes the series the way the wall does; the inline series
arithmetic is gone. check:country-sheet-one-path passes.
2026-09-30 22:54:56 +00:00
Doxa Maps
1ea9cfc280 README, agent section: bring your own harness, and the branch strategy as steps to copy
Only "## Build it with an agent swarm" changes.
- Bring your own harness: dx-maps works with whatever agent or harness you already use. The
  repo gives the branch strategy, the checks (bun run gates:pre) and the Plugin Studio; it
  ships no harness. A coordinator or a gate-keeper is a job your harness gives its agents.
- "Set up the branch strategy", seven steps: main is production; create development once;
  a branch and worktree per agent (with bun install); a preview port per agent; land one at
  a time through a lock (rebase, gates:pre, push only if nothing fails, since gates:pre
  exits non-zero on a failure); one full-build owner and BUNDLE=<name> for the rest; release
  by fast-forwarding main to a checked commit, then tag it and deploy from the tag.
- The plain-words kitchen list and the glossary stay, in line with the steps (the glossary
  gains "tag"). Every command block parses, and every script it names exists.
2026-09-30 22:51:30 +00:00
Doxa Maps
28cb482c79 Merge remote-tracking branch 'origin/development' into wall-of-people-groups-plugin/work 2026-09-30 22:49:32 +00:00
Doxa Maps
6e766104ac Merge #8.6 (the Rudder screenshot) onto #8.5 + #8.7 2026-09-30 22:44:50 +00:00
Doxa Maps
daa3c28566 Rudder screenshot: blur the microphone field, whose clipped device name began to show
Only the field's box changes (x 90-287, y 268-309 of 435x941). The PNG still holds only
IHDR, IDAT and IEND.
2026-09-30 22:44:48 +00:00
Doxa Maps
39b8dd1d77 README: a new screenshot of Rudder, the offline voice-to-text desktop app, running
deploy5-desktop-rudder.png is replaced with a screenshot of Rudder running (Ready, with a
transcript). It carries no names, emails, paths, hostnames or tokens, and its metadata is
stripped: the PNG holds only IHDR, IDAT and IEND. The alt text says what it shows.
2026-09-30 22:42:59 +00:00
Doxa Maps
4129ad4bfd Build poster-design, regenerate the tree, SRI and the capability-exemplars table on the merged source
The composites both shells now name (doxa-maps-spa's Prayer Mobilization
row, posterverse's composes) resolve once poster-design exists, so the
tree is generated here, once, on the merged tree.
2026-09-30 22:42:56 +00:00