doxa-maps/plugin-designs/country-posters
doxa-maps-88655c70 6c32623856 refactor(poster): the 100-list wall stops carrying its own copies
Finishes the half this card left open last tick. The shared print composable
existed but the 903-line 100-list wall did not use it, so the card deck lived in
TWO places — I wrote both this flight, and they could already drift.

Two duplicates removed:

  printCardDeck   now delegates to usePosterPrints, sharing THIS wall's
                  exportState so the HUD keeps rendering one surface. The bundle
                  still owns what cannot be shared — fetchListRecords knows the
                  people-groups API, the selector evaluator and the pg_slugs
                  special case — and hands it over as the `records` provider. The
                  preview-only "no API configured" hint is preserved, because the
                  shared action cannot know about it.

  openPrintWindow was a local reimplementation of printInPlace.js — same
                  off-screen iframe, same doc.write, same autoprint script,
                  differing only in an unused `title` argument. A FOURTH copy of
                  one mechanism is how a fix to the blank-first-page behaviour
                  reaches one caller and not the others. Now a one-line adapter.

★ AND check:share-policy CAUGHT A REGRESSION I HAD CAUSED. Adding the
country-posters two-tab MFE last tick gave that bundle a second ShareButton —
the BUG-UPG100-DOUBLE-SHARE state the 100-list already fixed once. Fixed the
same way the 100-list fixed it: the MAP's button is REMOVED and the MFE header
owns sharing. Removed, not flag-gated — a `v-if="false"` button is dead code
that still reads as an affordance to every reader and every counter, which is
exactly why the gate counts tags rather than renders.

Verified by clicking the REAL button in a browser, not by driving the renderer:
116 cards at 2.5in 3.5in with 116 QR codes, and 3.5in 2.5in when the stock
picker is switched to landscape — so records provider, picker, language, shared
composable and print frame are connected end to end. check:mfe-two-tab still
reports exactly one share affordance on the country-posters MFE.
2026-09-24 05:10:44 +00:00
..
assets/previews Rename app-profiles -> plugin-designs; build green under new naming (load-bearing paths updated, guards pass) 2026-09-17 18:18:18 +00:00
src/colors Rename app-profiles -> plugin-designs; build green under new naming (load-bearing paths updated, guards pass) 2026-09-17 18:18:18 +00:00
countries-map.vue refactor(poster): the 100-list wall stops carrying its own copies 2026-09-24 05:10:44 +00:00
country-poster-wall.vue Regions: expand a region to its country posters, reusing the shared wall 2026-09-24 04:26:29 +00:00
country-posters-mfe.meta.json feat(country-posters): two-tab element, reusing the shared view switcher 2026-09-24 04:32:05 +00:00
country-posters-mfe.vue Country boundaries load on MapLibre in the shared library, not per plugin 2026-09-24 05:09:12 +00:00
index.html Session work: strobe fix, grid layout, stacked tree legend, selection camera, chip bounding, asset inheritance, gates 2026-09-20 04:49:25 +00:00
index.js Complete app-profiles->plugin-designs sweep across comments/docs; build green; layouts kept at root (load-bearing) 2026-09-17 18:18:19 +00:00