In a right-to-left footer the range "10:11–15" printed as "15–10:11": the numbers of each reference now sit in a
left-to-right isolate (packet-render's own split of book and numbers). The research-map-plus-grid composite
forwards the host's mapTitle to its map, which it did not pass on before. And the packet strings are fetched
when the map mounts (when the browser is idle), so the print's 3 s wait reads them from the cache instead of
dropping the line on a slow network.
An engine can mark its credit compact only after the map is ready, and the
fold stopped polling at a credit that was present but not yet compact, so
on such a map the credit never folded. It now stops only once the credit is
compact and already folded (a drag or a tap got there first), and keeps
looking, for up to 30 s as before, while it is not yet compact.
- Two lines, each its own string, in a new catalogue area only PinHint names (line1 / line2 x 11,
taken from today's one-sentence text at each locale's own separator; that text is untouched).
- 44px tall like the ☰, 12px text, a smaller bob. Capped to the width left between two ☰ footprints
(--map-fab-beside), so it is centred with equal room and never reaches the ☰; with no ☰ it is
simply centred.
- In the ☰'s row: while the layout shows the ☰, the base is the ☰'s own 12px bottom, and the clamp
lifts it to 8px above the legend sheet, the gap the layout keeps for the ☰.
- It no longer reads --map-fab-clearance, which now carries the ☰'s scroll-tracked lift: inside the
map, beside the legend, the pill stays over it by itself, and positioned from that lift it moved
against the legend on every scroll.
The layout's round menu button now sits fixed in the bottom corner on the
start side and never moves, so the sheet no longer insets itself beside it:
it is always full width. The collapsed strip pads its start edge by
--map-fab-beside, the room the button takes, so its caret and title stay
clear of it (0 where there is no button); the detail footer, placed
absolutely, gets the same inset. Open, the sheet keeps its full width under
the button's small corner. The floating image returns to the start edge. The
'dxmaps:legend-sheet' event is still dispatched.
The ☰ no longer rides above the legend sheet: that lift made it fly on
scroll and re-animate on a tab switch. It is now 40px, 8px from the
bottom-start corner of the layout (plus the safe area; bottom-right in
Arabic), and never moves: no lift, no scroll tracking, no transition.
It sits over the corner of the legend sheet; the collapsed sheet pads
its start edge by --map-fab-beside (now 56px = 8 + 40 + 8) so its caret
and title clear it. --map-fab-clearance stays 56px. The legend-sheet
listener, its measurement and --map-fab-sheet-inset are removed (the
sheet may keep dispatching its event). The open drawer keeps z 100000.
Both CSS copies change identically.
The new READ THE WORD sheet reused the points page's footer, so a packet
printed three Metacamp attributions where check:packet-browser counts
exactly two (the wheel and the points). The sheet already carries its
own credit line, the scripture's; the footer goes. Rebuilt the five
bundles that compile the renderer; the tree and SRI regenerated.
The attribution rule for a map without a footer sheet: the credit keeps the bottom corner (bottom-left in
right-to-left, where the round button sits bottom-right), above the scroll-edge strips; on a phone it folds
to its (i) three seconds after it first shows, and a tap expands it again; MapLibre's optional logo is
hidden, as its licence allows. Desktop is unchanged.
Point 4 (READ THE WORD) again prints Mark 5:1-20 in full, the texts the
packet shipped before a80f4fd6e (the public-domain versions on file for
en, es, fr, de, ru and ar; the English WEB text elsewhere, as before).
Verse 19 is in bold: point4_passage_bold holds it verbatim from the same
text, so the bold is a substring match and never a second rendering of
scripture. THE HEAVENLY FATHER'S HEART follows the passage.
The passage at a readable size (24px) and the twelve points at theirs do
not share one sheet, so point 4's reading has its own page right after the
points ("4. READ THE WORD"), and the points page gains more space between
points. Both sheets fit in all 11 locales.
The gates count the new sheet (packet-render +3, poster-prints 5 sheets,
a1-structure "... points · word") and assert the passage in full again,
verse 19 in bold and the seven readings. packet-strings.json is re-pinned,
and the five bundles that compile the pin are rebuilt (country-posters,
doxa-research-map, my-upg-100-list, regions-dashboard, upg-neighbor),
with the tree and SRI regenerated.
The map's "Export poster…" now prints through a shared template: always landscape Letter; a header with the
map's name (from the host's profile-config mapTitle), the view on screen as its subtitle; the legend as a
side panel; and a footer line from the prayer packet's final page (prayer point 6 with Luke 10:2 and
John 10:11-15, in the reader's language). While it renders, a loading screen like the poster wall's shows
the renderer's own progress. Without a mapTitle the view on screen stays the title, as before.
At the top of every "What can this map do?" panel: a "Short description" header and the map's
intro, on a pale band with the Rudder blue as its accent bar and the text in a darker shade of that
blue (5.6:1), so the eye finds it first. Below it, the strategy is a collapsed "Strategy ▾" disclosure
(a native details element, collapsed again on every open) instead of a tab; the examples follow
wherever a map has them. The tab machinery goes. New label mapInfo.shortDescription in all 11
locales.
The pair (a80f4fd6e) changed library/scripts/posters/packet-strings.json
(point 4's reading list) without re-running the pin script, so the served
copy (assets/lib/packet-strings.json) no longer matched
PACKET_STRINGS_SHA384. The print then refused it and fell back to the
bundled English block: every non-English packet printed in English.
check:poster-render-pinned has failed on development since.
Re-pinned (library/packet/poster-render.integrity.js, packet-strings only;
the generator and places pins are unchanged), and rebuilt the five bundles
that compile the pin in: country-posters, doxa-research-map,
my-upg-100-list, regions-dashboard, upg-neighbor. The tree and SRI
regenerated. check:poster-render-pinned: FAIL (2) on 7744a8418, PASS here.
The open phone drawer was z-index 1000, the same as the phone legend
sheet (LegendMobile), so where the two share a stacking context DOM
order decided which one is drawn on top. It is now 100000: above every
plugin layer, still below a modal's scrim (MapInfo, 2147483000), which
must cover the drawer. Both CSS copies change identically.
"Posters per row" offered 2-5 at every width, and the grid clamps a count
to what the viewport holds, so on a phone "3" and "4" still showed two.
The choices are now Auto plus every count up to what fits, capped at 5:
Auto / 1 / 2 on a 390px phone, up to 5 on a desktop. A stored preference
above the fit is shown as what is rendered and stays stored, so the
desktop keeps its choice. 1 joins the counts for the phone.
After "Show on map" isolated a zone, the only way back was re-tapping the
same legend row, inside a collapsed sheet on a phone. While a zone is
isolated (batch mode off), a chip above the map's floor names it with an
x that shows every zone again, through the wall's own deselect path
(applySelectZone(null)). Its label is the existing buttons.clearSelection.
Rebuilt: my-upg-100-list, country-posters, regions-dashboard; the tree and
SRI regenerated.
On the all-regions map a pin tap jumped to the country's dashboard; a pin tap now opens the people
group's popup everywhere, and a tap on a country with no pin under it picks that country. The
invisible tap target is at least 7 px at every zoom, so pins answer a finger. On phones the maps are
half again as tall as they are wide (the square was too small for a popup), the left scroll-past
strip is off, and the popup is compact and lets a pinch through to the map. Desktop is unchanged.
On a map with the legend sheet the engine's credit keeps its top-start
corner, now above the scroll-edge strips, and folds to its (i) 3 s after it
first shows expanded. The full-width sheet, the 'dxmaps:legend-sheet' event
and the hidden MapLibre logo control stay.
A map's phone legend (LegendMobile) announces its sheet with the composed
'dxmaps:legend-sheet' event, dispatched from the sheet element. The layout
measures that element itself and lifts the circle to 8px above the sheet's
top edge: collapsed or open, wherever the map ends (Simple Research's map
stops 102px above the viewport, with its grid below), so the two never
overlap. It re-measures on each event, on the sheet's own resize (a
ResizeObserver, so the box is read after layout), on the pane's scroll
and on window resize, coalesced to a frame with a 100ms backup for a page
that gets no frames. Only a sheet on screen counts: another tab's pane
(hidden or inert), a scrolled-away map, or state 'gone' leave the circle
where it is today. With no event at all the placement is unchanged.
--map-fab-clearance rises with the circle, and --map-fab-sheet-inset:0
is published only while a sheet lifts it, so that sheet can take the
full width. The circle moves by transform (no layout property). Both CSS
copies change identically.
Measured with a stand-in sheet planted in a plugin's shadow root (it
announces after its box is laid out, as the real sheet does), at 390 in
en and ar, twice each: collapsed, open, after a scroll, another tab's
sheet ignored, gone back to today. All pass.
The engine's credit moves from the top corner to the end side just above the
sheet, and folds to its (i) four seconds after it first shows expanded. The
logo corner sits beside the menu button, and MapLibre's optional logo control
is hidden. The sheet announces itself with a 'dxmaps:legend-sheet' event
(bubbling, composed), so the layout can lift its round menu button above it.
The sheet takes the full width while the layout says it lifts the button
(--map-fab-sheet-inset); otherwise it stays beside the button. The older
corner rules are scoped to .lm-on, so they end with the last sheet.
The all-regions map drew its pins at their zoom-2 size below zoom 2, which is where a phone's globe
sits, so they read far too large. They now shrink below zoom 2 (unchanged from zoom 2 up, so desktop
keeps them), and an invisible hit twin with the old radii takes the click and the cursor, so a tap
selects exactly what it did before.
The poster dialog's default is 24x36 in at 300 dpi, a 78-megapixel render: minutes on a desktop, and
beyond a phone's canvas limit, so "Export poster" appeared to do nothing on a phone. On a phone it now
opens on Letter at 150 dpi, and sizes or resolutions over the phone canvas limit are disabled with the
reason shown, in every locale. Desktop is unchanged.