Commit graph

121 commits

Author SHA1 Message Date
swift-river542
cb57fd6ed7 Rebuild bundles: image offset, gutter width
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
2026-09-16 22:08:48 -05:00
swift-river542
dc6bde1fe3 Phones: people-group image back to 16px above the sheet; scroll gutters exactly as wide as the control column 2026-09-16 22:07:36 -05:00
swift-river542
403bfe72d4 Rebuild bundles: watermark above the collapsed strip
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
2026-09-16 22:04:25 -05:00
swift-river542
63067ff7e6 Phones: the attribution watermark sits above the collapsed legend strip; an opened sheet covers it 2026-09-16 22:01:42 -05:00
swift-river542
7c6dada1d7 Rebuild bundles: phone controls back to their gutter-aligned geometry
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
2026-09-16 21:56:49 -05:00
swift-river542
3ee5c41e70 Rebuild bundles: attribution watermark
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
2026-09-16 21:54:47 -05:00
swift-river542
39b5863236 Phones: one attribution watermark bottom-right; corner controls stay at the map bottom under the open sheet 2026-09-16 21:53:27 -05:00
swift-river542
b95662d482 Rebuild bundles: phone sheet rows full width, one attribution row
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
2026-09-16 21:38:29 -05:00
swift-river542
b03553c1b1 Phone sheet: legend rows fill the width (clear button floats at the row edge); logo and attribution share one bottom-right row 2026-09-16 21:37:00 -05:00
swift-river542
9fa5b26ae3 Rebuild bundles: phone attribution bottom-right
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
2026-09-16 21:28:09 -05:00
swift-river542
db6aabe99f Phones: Mapbox logo and attribution both bottom-right so the detail sheet's image stays clear 2026-09-16 21:26:48 -05:00
swift-river542
39f21625fe Rebuild bundles: prayer yellow scoped
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
2026-09-16 21:22:25 -05:00
swift-river542
9ca6e04fa1 Keep the prayer yellow to the prayer palette; other palettes keep their orange 2026-09-16 21:21:07 -05:00
swift-river542
c0d8676d24 Rebuild bundles: prayer yellow
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
2026-09-16 21:20:14 -05:00
swift-river542
62da42999c Prayer palette: Has Prayer uses the site's yellow (#f0c64a) so legend, pins and progress bar match the prayer status block 2026-09-16 21:18:56 -05:00
swift-river542
c33681ff9c Rebuild bundles: tab label
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
2026-09-16 21:13:37 -05:00
swift-river542
3379fb586c Research map tab reads "People Groups (Affinity)" 2026-09-16 21:12:18 -05:00
swift-river542
01619c8a94 Rebuild bundles: tab label
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
2026-09-16 21:10:25 -05:00
swift-river542
a130ad81d2 Research map tab reads "People Groups (Ethnic Affinity)" 2026-09-16 21:09:01 -05:00
swift-river542
2157e948b7 Rebuild bundles: religion tab night
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
2026-09-16 21:02:49 -05:00
swift-river542
09471647cc Research map: religion joins prayer, adoption and engagement on the night look; only people, regions and languages are monochrome day 2026-09-16 21:01:37 -05:00
swift-river542
742a9481f7 Rebuild bundles: simple map night on all tabs
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
2026-09-16 21:00:57 -05:00
swift-river542
4038278d4e Simple map: prayer, engagement and adoption share the night look 2026-09-16 20:59:43 -05:00
swift-river542
c0b05d30d6 Rebuild bundles: embed link tab, rotating ring
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
2026-09-16 20:57:53 -05:00
swift-river542
b024d83d83 Share menu: first tab is "Embed link"; the rainbow ring rotates in every browser 2026-09-16 20:56:35 -05:00
swift-river542
445029677f Rebuild bundles: tab-driven basemap look, 380px legends
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
2026-09-16 20:52:00 -05:00
swift-river542
1b22fa419b Basemap follows the tab: prayer stays night, every other map is day in monochrome white
- useMapTheme: one look rule (any prayer strategy → night/default; everything else →
  day/monochrome) applied at boot and on every tab switch in the simple map and the
  research map; an unknown strategy keeps the current look
- Legends and the research search pill are 380px again; desktop numeric columns 70px at
  13px so every row stays on one line with no overlap
- Map containers carry their map instance for gates (no global)
2026-09-16 20:50:51 -05:00
swift-river542
1ae532481f Rebuild bundles: export button hidden
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
2026-09-16 20:35:34 -05:00
swift-river542
f496453016 Legend export button hidden on every map until the export packet works 2026-09-16 20:34:23 -05:00
swift-river542
388d04fe75 Rebuild bundles: share menu steps
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
2026-09-16 20:25:00 -05:00
swift-river542
d61aa9674e Share menu opens with the multiplication path: embed, list your city's sites, train them, train trainers, multiply maps everywhere for Jesus 2026-09-16 20:23:44 -05:00
swift-river542
38bee2fdaf Rebuild bundles: share button ring
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
2026-09-16 20:21:52 -05:00
swift-river542
d5d6c9231f Share button: a thin, slowly turning rainbow ring (reduced-motion safe) 2026-09-16 20:20:36 -05:00
swift-river542
b7d91e9aca Public data ships without working notes; unused data files stay out of the drop-in
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
- data/ tables and the people-groups file: meta blocks reduced to provenance (source, url,
  downloaded, rows, grain, attribution); the link-verification table keeps only state and detail
  per link; generators write the same shape
- dropin.exclude in the build config: people_groups.csv, open-doors.json, platform-reachability.json
  and tables/index.json are not shipped (nothing loads them); sync-dropin honours it
- public-hygiene --strict flags note-style meta keys in shipped data
- Rebuilt bundles and gallery
2026-09-16 20:16:08 -05:00
swift-river542
8aa3848bdc Prayer legend: bar only in the header (no numbers); research map search pill matches the legend width; Mapbox attribution on every map 2026-09-16 20:16:04 -05:00
swift-river542
9cefd6faa4 Plugin gallery: one generator for the dev server and the build
- internal/playground → internal/plugin-gallery; playground-smoke → plugin-gallery-smoke;
  generate-spa → generate-gallery (scripts: gallery, smoke:gallery; smoke:playground stays as alias)
- generate-gallery exports renderGallery(model, { mode }) — the dev plugin serves the same page
  at / from the discovered registry (dev mode imports the dev entries, ladder popovers on);
  the build writes public/index.html from the manifest (byte-identical to before)
- Docs and probes use the gallery vocabulary
2026-09-16 20:04:18 -05:00
swift-river542
60ad81bf5f Drop-in destination declared once in the build config (dropin.dest); sync-dropin and deploy:dev read it, DOXA_DROPIN_DEST overrides
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
2026-09-16 19:20:23 -05:00
swift-river542
3baa0afaf8 Website drop-in destination is public/embed/doxa-maps-build
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
2026-09-16 18:42:15 -05:00
swift-river542
063680bb4a UPG-100 bundle ships only the cluster lists from clusters.json
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
- upg-100-list and poster-wall import the three list arrays by name, so the data file's
  bookkeeping fields no longer end up in the bundle
- Share pages: one comment shortened
2026-09-16 18:30:23 -05:00
swift-river542
12d1fee133 Public build folder is three entries: index.html, assets/, doxa-maps/
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
- index.html is generated by internal/generate-spa.mjs from doxa-maps/manifest.json: one
  self-contained page that lists every bundle, profile and instance, mounts the chosen one,
  and offers Open page / Copy embed; build ends with `bun run spa` (the material shell is no
  longer installed; nav.js, icons.js, languages.js, pane-wrapper/, external/ and _headers
  leave public/)
- The website drop-in follows the same contract: dropin.include in the build config,
  sync-dropin --from-config --prune, public-hygiene --strict fails on any other root entry
- Production bundles no longer carry CSS comments: a build-only Vite plugin strips them from
  every shadow-style block (about 140 per map bundle, 5% smaller); remaining comments reworded
- Share pages and the pin renderer drop their note-style comments
2026-09-16 18:23:14 -05:00
swift-river542
7f6c2286f9 Legend table columns no longer overlap: numeric columns scale with the type
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
- SemanticTreeLegend: the UUPGs/Population columns were a fixed 44px, sized for the old
  9px header / 10.5px numbers; at the desktop scale "POPULATION" collided with "UUPGs"
  and "139.0M" spilled into the neighbouring column. Base column is now 60px, desktop
  76px (header 10px, numbers 13.5px, no wrapping)
- The panel follows --map-legend-width like the detail card and the geocoder pill; the
  research map's wide-host legend is 400px so "Full Prayer Coverage" stays on one line
- New probe: `bun run probe:legend-columns` measures cell boxes vs real text extents and
  fails on any spill or overlap (desktop and phone sheet)
2026-09-16 17:34:21 -05:00
swift-river542
011d686286 Rebuild bundles: prayer legend progress bar, desktop legend type scale, mobile sheet fixes
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
2026-09-16 16:42:39 -05:00
swift-river542
fff25e750a Prayer legend header shows progress: a hoverable three-colour bar and the title "Progress"
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
- New shared LegendProgressBar: [has-prayer span | needs-prayer remainder] with the
  full-coverage colour filling inside the has-prayer span; text "covered of total · %";
  each span is a focusable button with the legend's info popover (name · count · %),
  hover highlight, and click selects the matching legend row
- useLegendData exposes a `progress` payload for the prayer legend (mutually exclusive
  counts from /statistics: covered = has + full); null for every other legend
- SemanticTreeLegend and LegendRows render the bar as the header's second line and title
  the prayer legend "Progress" (desktop, mobile sheet, collapsed pill); profiles pass and
  provide the payload so the mobile sheet gets it unchanged
- legend.progress.* strings in all 11 locales
2026-09-16 16:36:14 -05:00
swift-river542
271ba0849c Mobile legend sheet: drags follow the finger, every state is reachable, and the Mapbox attribution lifts above the sheet
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
- No height transition while dragging; the resize grab zone is the top 44px (and, in detail
  mode, the content when it is scrolled to the top); one geometry source for the JS clamp and
  the CSS max-height; release snaps with hysteresis (open ↔ fullyOpen ↔ collapsed)
- The sheet publishes its height as --legend-sheet-h on the element host; the Mapbox/MapLibre
  bottom controls translate up by it, so the logo and attribution stay visible in every state
- New gate: internal/mobile-sheet-probe.mjs (Firefox, touch) taps a pin, drags the detail
  sheet up/down and checks heights, states and control overlaps
2026-09-16 16:26:10 -05:00
swift-river542
424d302064 Desktop legends read larger: title 14px, headers 13/11px, rows 15px, numbers 13.5px; the mobile sheet keeps its compact scale
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
2026-09-16 16:21:54 -05:00
swift-river542
159e2acf0c Desktop legends: one readable step up in type size (title 14, rows 14/12.5, headers 12/10); mobile sheet unchanged
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
2026-09-16 16:18:12 -05:00
swift-river542
fb1882420f Rebuild the served tree (basemap pin)
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
2026-09-16 15:11:47 -05:00
swift-river542
2e8b5f5932 Basemap never flashes light: the night preset travels in the Map constructor and is re-pinned after every style change
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
- useMapTheme: basemapConfig() is the single source of truth; bootConfig() hands Mapbox the
  Standard-style config at construction so the very first frame is already night; keepPinned
  re-asserts on style.load and styledata, writing only on drift; MapLibre maps are skipped
- useMapInstance passes that config to new Map() and stores the map in a shallowRef so
  Mapbox internals never run through Vue's reactive proxy
- Simple map's loading cover is dark like the research map's — the last light frame at boot
- New gate: internal/theme-flash-probe.mjs samples canvas luminance through boot, legend rows
  and tabs and fails on any light frame (21 phases, 0 flashes)
2026-09-16 15:08:30 -05:00
swift-river542
1c86528892 Rebuild the served tree (badge, long-frames)
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
2026-09-16 14:40:40 -05:00
swift-river542
7997f3b092 Maps stop running Mapbox's render loop through Vue's reactive proxy; prayer glow throttled
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
- The Mapbox Map instance is unwrapped (markRaw) at the profile boundary and the layers
  composable works on the raw map, so Mapbox internals no longer pay Vue's get/set traps on
  every frame; the geocoder control instance is a shallowRef for the same reason
- Prayer glow rings animate at 12 steps/s with paint transitions disabled, constants moved to
  addLayer, and the loop pauses while the map is off-screen — the map can idle again
- New gate: internal/long-frames-probe.mjs measures long animation frames, blocking time and
  DevTools rAF violations per phase (boot / idle / interaction); idle violations on the prayer
  and research maps dropped from ~100 to the no-animation baseline
2026-09-16 14:11:55 -05:00