Commit graph

4430 commits

Author SHA1 Message Date
Doxa Maps
29227cb6d3 i18n posterDesign: the Sizes tab's words, in all 11 locales
The Sizes tab now draws every ladder size, so it needs its own words: the
intro, the to-scale lineup, the paper names (Letter / A4), the dimension
patterns in feet and inches, the per-size rows (sheets, each sheet, glued
overlap, photos beside names, how it prints) and the note that the sheets
show the 3 x 3 layout. The placeholder sentence that said the tab was
waiting for the size table is removed. Only the posterDesign area changes.
2026-10-01 10:18:32 +00:00
Doxa Maps
448ef0ac70 Merge development (a77a3280f: the shell header, the docs) into the whole-India landing
# Conflicts:
#	package.json
2026-10-01 10:02:25 +00:00
Doxa Maps
a77a3280f3 Merge origin/development (d6950c008) into studio/shell-header 2026-10-01 09:52:20 +00:00
Doxa Maps
bf214c8741 Rebuild country-posters, my-upg-100-list, poster-design and regions-dashboard (and the served poster-render copy) for the whole-India sheet 2026-10-01 09:48:43 +00:00
Doxa Maps
88402cf272 Merge development (78a461588, Prayer Progress pin opacity) into the whole-India landing 2026-10-01 09:46:44 +00:00
Doxa Maps
d6950c0089 Merge remote-tracking branch 'origin/development' into repo/b13-docs 2026-10-01 09:46:43 +00:00
Doxa Maps
edda4017b3 Merge development (d6a53486f, UPG-100 wall count) into the whole-India landing
# Conflicts:
#	package.json
#	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 09:46:12 +00:00
Doxa Maps
838008b991 Desktop-only cards on a phone: the list, packet and cards say "This needs a desktop or laptop computer."
On a phone, India's Prayer List (Full detail, Lightweight) reported "that list has no people groups to print" on a
card of 855: its rows resolved [] and the print path read that as an empty list. Now, in the wall and the Regions
list alike, a desktop-only card's rows REJECT with the notice before any record is fetched, and the card shows the
same words: a new poster.phoneLimitAll ("This needs a desktop or laptop computer.", all eleven locales). The
existing "the largest sizes are off" stays for cards that are only partly blocked.
check:country-sheet-one-path arm F asserts it for both callers, with a poison for each.
2026-10-01 09:45:34 +00:00
Doxa Maps
2f163e04c1 Large side-lane sheets: photos print in the sheet's own document, and a raster never draws a broken image
Measured on the 60x96 print: every photo beside a name rasterised as the browser's broken-image glyph. An SVG
rasterised through <img> is an isolated document that fetches no external resource, and none of the people-group
photo hosts (media.joshuaproject.net, joshuaproject.net, images.peoplegroups.org and its resizer,
peoplegroupspublic.blob.core.windows.net, s3.doxa.life) sends CORS, so a photo cannot be inlined as data: in the
browser either.
- poster-raster.js: rasterPoster drops every <image> whose href is not data: (the basemap tiles are data: and stay),
  so a download shows the paper, never the glyph. hasExternalImages() says when a sheet carries such photos.
- PosterWall: printing a generated sheet that carries photos prints THE SHEET ITSELF through printDocument, where
  the photos load, on its own @page (60in 96in), instead of a raster shrunk onto letter. Same HUD steps.
- check:side-lanes: photo arms (0 external images reach the raster; the wall prints such a sheet as a document),
  each with a poison in its self-test.
- check:side-lane-photo-pixels: the pixel side, a browser gate (a data: photo draws red; 99/99 external slots stay
  flat; without the strip 0/99 do). Declared on-demand until its first browser-seat run.
2026-10-01 09:45:33 +00:00
Doxa Maps
78a461588d Merge remote-tracking branch 'origin/development' into prayer-progress-plugin/pin-opacity 2026-10-01 09:42:26 +00:00
Doxa Maps
d6a53486f6 Merge remote-tracking branch 'origin/development' into upg100/wall-count
# Conflicts:
#	package.json
2026-10-01 09:34:09 +00:00
Doxa Maps
9775eb7494 Rebuild country-posters, my-upg-100-list, poster-design and regions-dashboard, the served poster-render copies and India's previews, for the whole-India sheet 2026-10-01 09:24:37 +00:00
Doxa Maps
4ff39c9b8a P: rebuild 3 bundle(s) from the merged source, and regenerate the tree and SRI 2026-10-01 08:43:25 +00:00
Doxa Maps
9a40b864bd Merge origin/development (42bc19889) into studio/shell-header 2026-10-01 08:42:57 +00:00
Doxa Maps
a9d55acd5f Merge development (42bc19889, the shared poster sizes) into the whole-India landing: package.json gates unioned (check:side-lanes added) 2026-10-01 08:42:55 +00:00
Doxa Maps
2c9d30d8bd Rebuild my-upg-100-list on the merged tree, and regenerate the tree and SRI 2026-10-01 08:30:26 +00:00
Doxa Maps
7e4172a2a3 Rebuild doxa-simple-map from the merged source (the pin-opacity fix on development 353bf078c), then the tree and SRI 2026-10-01 08:30:09 +00:00
Doxa Maps
70ea389db3 Docs: "reusable by default" in the library guides, and Deep Research by its name
- library/components/WARNING.md, library/dashboards/README.md and
  documentation/contributing/README.md taught "graduate into the library at the second
  consumer". They now teach the plugin-designer skill's rule (section 3): a component that
  could serve more than one map is built once in library/, driven by props, and landed through
  the build owner; one-off or experimental pieces stay in a map's folder; a new pattern is a
  pilot, then approved, then rolled out. The contributing guide's "full reasoning" link pointed
  to an index without it; it now points to the skill.
- The app shell doxa-maps-spa is labelled Deep Research. Ten docs still called it the Research
  Gallery (15 mentions): DEPLOY.md, the desktop how-to, embeddability, develop-a-plugin,
  reference-universal-props, reference.md, the shell's EMBED.md, and the plugin-designer skill
  with two of its references. Identifiers (doxa-maps-spa, branch and route names) are unchanged;
  README.md is not touched.
2026-10-01 08:27:04 +00:00
Doxa Maps
8896ad2130 Merge remote-tracking branch 'origin/development' into upg100/wall-count
# Conflicts:
#	internal/check-batch-selection-export.mjs
#	package.json
#	plugin-designs/my-upg-100-list/data/selection-export.js
#	plugin-designs/my-upg-100-list/poster-wall.vue
#	plugin-designs/my-upg-100-list/upg-100-list.vue
#	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 08:24:48 +00:00
Doxa Maps
a1c74004a0 Merge development (353bf078c) into the whole-India landing: package.json gates unioned (check:side-lanes added), poster-render re-pinned on the merged file 2026-10-01 08:24:45 +00:00
Doxa Maps
8df007818f Merge remote-tracking branch 'origin/development' into prayer-progress-plugin/pin-opacity
# Conflicts:
#	public/dx-maps/doxa-maps-spa/manifest.json
#	public/dx-maps/doxa-simple-map/doxa-simple-map.js
#	public/dx-maps/doxa-simple-map/doxa-simple-map/adoption/index.html
#	public/dx-maps/doxa-simple-map/doxa-simple-map/engagement/index.html
#	public/dx-maps/doxa-simple-map/doxa-simple-map/index.html
#	public/dx-maps/doxa-simple-map/doxa-simple-map/prayer/index.html
#	public/dx-maps/manifest.json
2026-10-01 08:23:57 +00:00
Doxa Maps
42bc198898 Merge origin/development (353bf078c) into studio/poster-sizes 2026-10-01 08:22:35 +00:00
Doxa Maps
353bf078c8 Rebuild template-bundle from today's source (it is outside the manifest, so no landing's freshness check had rebuilt it) 2026-10-01 08:04:14 +00:00
Doxa Maps
cbafb21921 Merge origin/development (86a81cc44) into studio/shell-header 2026-10-01 07:49:52 +00:00
Doxa Maps
9b0f815e7c Merge origin/development (86a81cc44) into studio/poster-sizes 2026-10-01 07:49:08 +00:00
Doxa Maps
d01087a9cc Country Posters: the header share button is a rounded square, like Big Picture's and UPG 100's 2026-10-01 07:32:43 +00:00
Doxa Maps
86a81cc442 P: rebuild 2 bundle(s) from the merged source, and regenerate the tree and SRI 2026-10-01 07:26:32 +00:00
Doxa Maps
f8b8609854 P: rebuild 7 bundle(s) from the merged source, and regenerate the tree and SRI 2026-10-01 07:21:53 +00:00
Doxa Maps
5c991cccae P: rebuild 7 bundle(s) from the merged source, and regenerate the tree and SRI 2026-10-01 07:16:37 +00:00
Doxa Maps
7ea7195646 Pin hint: an inner scroller counts as a scrolling page, a map off the viewport is on one, and a stale lift is dropped
DX Life's /pray at 1440 kept the pill at the viewport's bottom until the map's bottom came into view: the page
scrolls a container, not the document, so the document-only test saw a full-screen page and kept the fold.
pageScrolls now also walks out from the pill, across shadow roots, for an ancestor scroller whose content is
taller than it; a map wholly below or above the viewport is treated as on a scrolling page; and a lift is
cleared when the pill goes off screen, so a lift set while the map was half visible does not survive into the
next view. check:pin-hint-floor adds the inner-scroller, shadow-crossing and map-below-the-fold fixtures; its
self-test refuses 9 planted defects.
2026-10-01 07:11:18 +00:00
Doxa Maps
c4d249dd0f P: rebuild 1 bundle(s) from the merged source, and regenerate the tree and SRI 2026-10-01 06:57:03 +00:00
Doxa Maps
9e0b52386d Merge origin/development (6dc2206c8) into studio/pinhint 2026-10-01 06:56:45 +00:00
Doxa Maps
68527062da P: rebuild 2 bundle(s) from the merged source, and regenerate the tree and SRI 2026-10-01 06:49:40 +00:00
Doxa Maps
f7275efd59 P: rebuild 7 bundle(s) from the merged source, and regenerate the tree and SRI 2026-10-01 06:45:02 +00:00
Doxa Maps
77fc773033 P: rebuild 7 bundle(s) from the merged source, and regenerate the tree and SRI 2026-10-01 06:39:22 +00:00
Doxa Maps
6dc2206c83 Rebuild my-upg-100-list for the state-only selection title, and regenerate the tree and SRI 2026-10-01 06:32:53 +00:00
Doxa Maps
ba022f68f9 Merge origin/development (d3b879c94) into studio/pinhint 2026-10-01 06:32:47 +00:00
Doxa Maps
852437e981 Merge remote-tracking branch 'origin/development' into upg100/state-packet 2026-10-01 06:32:09 +00:00
Doxa Maps
8d63a0a04d Poster Design: draw India at 5.5 x 5.5 ft and 3 x 5 ft too
countrySheet.js now lets a requested side-lane format win over a large
country's default sheet, so the shared path draws India at 66x66 and
36x60 as well as 60x96. The two cards that were listed but not drawn now
draw the real whole-India poster at their own size, and the note that
said no country printed at those sizes (missing.largeFormat, 11 locales)
is removed: nothing refers to it.
2026-10-01 06:07:49 +00:00
Doxa Maps
6d0253d909 countrySheet: a requested large size wins; LARGE_SHEETS only supplies India's 60x96 default
India can print at 60x96 (the default), 66x66 or 36x60. makeCountrySheet used to map any non-packet request to the
default, so a 66x66 or 36x60 request drew the 60x96 sheet. sheetFormatFor(item, format) (exported, pure) now keeps
a requested size the country can print at, falls back to its default otherwise, keeps a packet page a page, and
returns exactly what was asked for every other country.
check:country-sheet-one-path asserts that table (India 66x66/36x60/60x96/letter/3x4/packet; Nepal 3x3/letter;
China 3x4), with two poisons: India ignoring a requested 66x66, and a packet page turned into a large sheet.
2026-10-01 06:07:48 +00:00
Doxa Maps
cb5200d296 Poster Design: the catalogue lists the large side-lane sheets, and draws India's 5 x 8 ft one
poster-render gains three side-lane formats (60x96, 66x66, 36x60), and
check:poster-design-catalogue requires SHEET_FORMATS to list exactly what
FORMATS defines, so it failed on those three. They are now listed, near
the top after the 3 x 3 sheet, with India as their sample: India is the
one country countrySheet.js prints on a large sheet (LARGE_SHEETS).

map-sheet.country.60x96 draws through makeCountrySheet, the one country
sheet path, so its card shows the real whole-India poster. 66x66 and
36x60 are listed but not drawn: no country prints at those sizes yet, and
the shared path would hand back India's 5 x 8 ft sheet under their label.
Their details say so (posterDesign.missing.largeFormat, 11 locales).

The check fails on the three formats without this commit and passes with
it.
2026-10-01 06:05:41 +00:00
Doxa Maps
1af359ac42 poster-render: side-lane CSS adds no byte to other formats; photos only from the known photo hosts
5B fixes on the side-lane mode:
- The side-lane styles' template slot sat on its own line, so every OTHER format's page gained one newline. It is
  now joined onto </style>, emitting nothing at all off side lanes.
- A photo is drawn only over https from the hosts that serve people-group photos (media.joshuaproject.net,
  joshuaproject.net, images.peoplegroups.org, peoplegroupspublic.blob.core.windows.net), never the generic
  placeholder; anything else is dropped. Re-pinned.
check:side-lanes' seeded data now also carries photos on a host that is NOT allowed; none may be drawn.
2026-10-01 06:03:48 +00:00
Doxa Maps
d3b879c940 P: rebuild 22 bundle(s) from the merged source, and regenerate the tree and SRI 2026-10-01 06:01:49 +00:00
Doxa Maps
31e5c3e5f9 UPG-100 batch selection: a state-only selection prints its Prayer list and Card deck
The packet and card-deck title named the selection's zones and countries only.
Since India's states bring people, a selection of states alone had no names, and
reduce() threw "Reduce of empty array with no initial value" at the reader.
selectionTitleNames (data/selection-export.js, pure) adds the states and union
territories that brought people. A province with no table is not named. A
selection that brought nobody (Mizoram or Nagaland alone) gives the keyed
"no people groups to print" instead.

check:batch-selection-export arm A6 tests it on the real served table: Gujarāt
alone is titled "Gujarāt", a state + a country names both, a province beside it is
not named, and Mizoram alone reads the keyed text. Its negative control shows the
old naming is empty and reduce() throws. The call site is pinned in arm C. Four
mutants each fail.
2026-10-01 06:00:55 +00:00
Doxa Maps
4f85edf9ba P assembly: the Gospel x Internet tables regenerated by their builders (only the provenance notes change) 2026-10-01 05:57:40 +00:00
Doxa Maps
269226318d Merge origin/development (863174825) into studio/p-assembly 2026-10-01 05:57:02 +00:00
Doxa Maps
386e269fe6 Regions list: India's card follows the large-sheet rule, printing the whole-India poster on a desktop and saying so on a phone 2026-10-01 05:56:49 +00:00
Doxa Maps
455fa8ab7d One rule for countries too large for paper: countrySheet.js's LARGE_SHEETS; whole-India list, packet and cards on a desktop
CORRECTS the previous commit's "no prayer list, packet or cards for whole India": the current direction is that
whole India's poster, list, packet and cards (about a thousand pages) are offered DESKTOP-ONLY, and a phone shows
the existing poster.phoneLimit sentence instead of failing.
countrySheet.js now exports LARGE_SHEETS ({ IND: 60x96, desktopOnly }) and largeSheet(item), and makeCountrySheet
itself prints such a country in its large format (a packet page stays a page) with its "Administrative Areas"
cell from the shared state table ("36 states and union territories"). So every caller gets the same sheet: the
Regions list's India no longer has to disagree with Country Posters (regions-list's own lines follow, from regions).
The wall drops its India-only code and follows the same rule.
2026-10-01 05:55:55 +00:00
Doxa Maps
1c61cbb926 Country Posters: the whole-India poster prints, every group named
India's card is no longer "too many to fit": it prints as the 60x96 side-lane sheet (all 855 groups named beside
the map, crossing-free leaders, real photos), whatever paper the wall asks for, until the shared size picker
offers 66x66 and 36x60 too. Its facts row reads "36 states and union territories" (English, from the wall
head's plural key). As ruled, the whole-India card offers no prayer list, packet or cards; the state cards keep
theirs. Its card preview is the real sheet.
check:side-lanes (+ :self-test, gates:pre): the three side-lane formats on a seeded worst case (855 groups,
stacked and clustered) through the real renderer: every name once, 0 crossings re-measured from the SVG, no
overflow, photos only where real; without the lane clamp the same data crosses 36 times, and the arm fails.
2026-10-01 05:52:47 +00:00
Doxa Maps
1bb5b90984 Country sheets: photos reach the renderer, and a caller can name the "Administrative Areas" cell
pinsFrom carries image_url (only side-lane sheets draw it; every other sheet ignores it). countryZone and makeCountrySheet accept an optional adminAreas for the facts row (India: "36 states and union territories"); without it the cell shows the country's name as before.
2026-10-01 05:52:47 +00:00