Commit graph

4562 commits

Author SHA1 Message Date
Doxa Maps
abdc5dfe61 Merge remote-tracking branch 'origin/development' into deep-research-plugin/lang-menu2 2026-10-01 10:22:23 +00:00
Doxa Maps
952d3c0d7e Rebuild poster-design for the Sizes tab, the Styles thumbnails and the rounded Share 2026-10-01 10:19:40 +00:00
Doxa Maps
fd43836920 Poster Design: Styles draws the Bless wall panels from the shared panel geometry
wall.bless-panels drew nothing. It now draws the ladder's 5 x 8 ft size
(60x96: three 60 x 36 in sheets, 6 in joins) through panelSheets'
planPanels and screenLayout, the same plan the Bless print uses: the
sheets pulled apart, each join a red glue band with a dashed edge, a
banner on the first sheet, a footer on the last, and rows of portrait
cards inside each sheet's content box, never crossing a join.

The cards are a layout (src/panelsSvg.js): the Bless wall draws its real
cards in its own plugin, which the gallery cannot import. The card is not
offered for printing here.
2026-10-01 10:18:56 +00:00
Doxa Maps
02ba16a7de i18n posterDesign: the Bless panels note says what is drawn and what is a layout
The Styles tab now draws the Bless wall panels from the shared panel
geometry, so missing.bless no longer says the gallery cannot draw them.
It says the sheets, the glue strips and the card rows come from the
shared geometry, and the cards are shown as a layout because the Bless
wall draws its cards in its own plugin.
2026-10-01 10:18:55 +00:00
Doxa Maps
6164cb6190 Poster Design: Styles draws the prayer packet and every card stock
The seven templates that showed 'preview unavailable' for the packet and
the cards now draw from the shared renderers with the Nepal sample:
- each card stock is the deck the wall prints (createCardRenderer with
  that stock, buildDeck), its first card the thumbnail;
- each packet variant is the packet renderer's page 1, its map page,
  built from the sample's map-only sheet as the wall's packet builds it.

src/pageThumb.js turns a document's first page into an image: it keeps
that page, re-serialises it as XHTML inside an SVG foreignObject and
returns it as an SVG image, which a plain <img> draws. Photos are inlined
only from the page's own origin; the people-group photo host sends no CORS
headers, so a card's photo frame stays empty in the thumbnail (the printed
deck still carries the photo), and no refused fetch reaches the console.

A card stock's print button prints its whole deck. A packet card is not
offered for printing here, since only its page 1 is built.
2026-10-01 10:18:55 +00:00
Doxa Maps
6341be6070 i18n posterDesign: drop the two 'cannot draw yet' notes the packet and the cards no longer need
The Styles tab now draws the prayer packet's page 1 and every card stock,
so missing.packet and missing.cards are referenced nowhere. Only the notes
for the two templates still not drawn (the Bless panels, the map print)
remain.
2026-10-01 10:18:32 +00:00
Doxa Maps
828fd22e86 Poster Design: the Sizes tab draws every ladder size to scale; the header's Share is a rounded square
Sizes reads the one shared ladder (POSTER_LADDER in POSTER_LADDER_ORDER)
and feeds each size's sheets straight into the library's PanelSheets, the
component the Wall uses for its 5 x 8 ft preview: multi-sheet sizes show
their sheets pulled apart with the red glue strip. A lineup draws every
size at one scale on one baseline, its scale fitted to the row's width so
a phone keeps every size in view. Each card also states the sheets, the
glued overlap, whether photos fit beside names, and how it prints.

The sheets carry the 3 x 3 ft country poster's layout at that size
(src/layoutSvg.js: header, map, names, table, scripture footer, no words),
labelled as a layout, since the renderer does not draw the large sizes
yet. Every size is sized from panelSheets' own screenLayout, so the fit
computed here is the box PanelSheets renders.

The composite header's Share button takes the header form
(shape="rounded-square"), as Big Picture's top bar does.
2026-10-01 10:18:32 +00:00
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
6f9ab54986 Rebuild posterverse for the language menu, 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-01 10:17:26 +00:00
Doxa Maps
067979ae71 Posterverse: the shell language menu in the phone bar and at the bottom of the rail
Fills VerticalTabsLayout's #phone-end and #rail-end slots with the shared
ShellLanguageMenu. A pick first asks the host (doxa-language-request); only an
uncancelled pick reaches setLocale, which keeps the pick with the host language
value it was made over and saves it. The pick wins only while that value is
unchanged; a new value from the host takes over and drops the pick. The saved
choice is never read as a source, since it falls back to the browser's
language and would override the host page.
2026-10-01 10:17:26 +00:00
Doxa Maps
ec32bf3c34 Rebuild doxa-maps-spa for its language menu, and regenerate the tree 2026-10-01 10:08:46 +00:00
Doxa Maps
840c373e8f Rebuild the five LegendMobile bundles for the seated card image, and regenerate the tree 2026-10-01 10:08:20 +00:00
Doxa Maps
ccc3a038ea Bible Posters: the profile says what it is (its @description), and the capability exemplars list it 2026-10-01 10:08:05 +00:00
Doxa Maps
8b83e97449 P: rebuild 3 bundle(s) from the merged source, and regenerate the tree and SRI 2026-10-01 10:02:51 +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
d6a92665af Merge origin/development into gospel/lm-image-seat 2026-10-01 10:02:21 +00:00
Doxa Maps
929d35f17f Research Gallery: the language menu in the phone bar and at the bottom of the rail
The gallery fills the tab layout's two new slots (the end of the phone bar, and the bottom of the desktop
rail) with the shared ShellLanguageMenu, showing the language in effect. The menu first asks the host with a
cancelable doxa-language-request. A host that takes it changes the language itself and sets `language`.
Otherwise the gallery switches on its own, and that pick holds over a `language` the host never updates, until
the host changes it. A saved choice never outranks the host page's own language. EMBED.md shows the listener.
2026-10-01 10:02:16 +00:00
Doxa Maps
56d9a111f6 Merge origin/development (a77a3280f) into studio/bible-push 2026-10-01 10:02:11 +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
b32ccdc832 Bible push: merge 0ab6ca169 2026-10-01 09:08:47 +00:00
Doxa Maps
245eea9cb7 Bible push: merge 12e2ebafa 2026-10-01 09:08:47 +00:00
Doxa Maps
c0eafc4e10 Bible push: merge 0a4e53993 2026-10-01 09:08:46 +00:00
Doxa Maps
0a4e539935 Bible Posters: consume the shared poster size table
Replace the temporary local size mirror with the shared ladder
(library/constants/posterSizes.js via resolvePosterSize): the plugin selects its
five keys (paper, 36x36, 36x60, 66x66, 60x96), mapping widthIn/heightIn from the
entry's inches and the panel count from its sheets, and keeps its own
locale-neutral dimension labels until the shared picker lands. One remaining
comment reference is neutralized.
2026-10-01 08:52:21 +00:00
Doxa Maps
2da7f15ec7 Bible Posters: neutral source comments + CSP note for the text host
- Reword source comments in agent-written, neutral terms and drop internal task-file
  paths, so shipped source cites no process documents or attributions (passes
  check:no-new-driver-references).
- documentation/how-to.md: note that Bible Posters needs https://bible.helloao.org in
  connect-src (text is fetched per book at render time; none is bundled), so a host
  under a strict CSP does not silently block it.
2026-10-01 08:44:14 +00:00
Doxa Maps
cdf0df268d Bible Posters: language-tagged columns, atomic book fetch, cleaner credits
Address studio's 5B nits (non-blocking, folded in before the first render):
- Tag each translation with a BCP-47 code and set lang on the poster (html + body)
  so hyphens:auto works in narrow justified columns — removes rivers on Latin text.
- Fetch a whole book atomically: a single chapter failure now aborts the sibling
  requests and surfaces the error, instead of leaving a half book.
- Drop the English word "via" from the per-poster credit lines (a bare separator).
- Correct the entry comment: defineMapElement installs i18n; the hook only adds provides.
2026-10-01 08:44:14 +00:00
Doxa Maps
5c44b3cdcd Add Bible Posters plugin: a whole book of the Bible on one poster
A new experimental generator (Posterverse) that renders an ENTIRE BOOK of the Bible
in justified, phone-width columns with a bold book-name header, in the languages of
the unreached people groups. Text is fetched at render time from public-domain
translations via the Free Use Bible API; no Bibles are stored in the repo or public/.

v1 offers strict public-domain texts only, with a per-poster credit line: the World
English Bible plus the prayer packet's Reina-Valera 1909, Ostervald, Luther 1912,
Synodal and Van Dyck (Arabic, right-to-left). Book, text-language and size pickers;
the generator reports which size fits a book at a readable type size, and standard
paper is honestly shown as too small for a whole book. Interface strings are
localized in all 11 locales. Starts from the 12 books the UPG-100 packet cites.
2026-10-01 08:44:14 +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
7d67757961 Merge origin/development into gospel/lm-image-seat 2026-10-01 08:39:57 +00:00
Doxa Maps
1e925c4d71 Gospel checks: the field-card shards are expected from the roster, not read as one file, and German 'Ring' is the same word on purpose 2026-10-01 08:37:17 +00:00
Doxa Maps
b8cf0db0c8 Merge remote-tracking branch 'origin/development' into upg100/pg-names
# Conflicts:
#	package.json
2026-10-01 08:35:25 +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