Commit graph

92 commits

Author SHA1 Message Date
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
swift-river542
7dd67156e5 Research map: drop the provider badge on Mapbox — its own wordmark already sits bottom-left
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 13:37:18 -05:00
swift-river542
0f9027f592 Public hygiene: sync:dropin excludes staging pages by default; check:public-hygiene gate scans a drop-in for leaks, secrets, source maps, docs and preview surfaces
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 13:04:36 -05:00
swift-river542
7b36255dc2 sync:dropin never mirrors documentation into a served folder; protects nothing by default
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 12:43:56 -05:00
swift-river542
f1575839af README: one story, told once — BLUF and Training-for-Trainers roles up top, the Playbook as the single campaign section with the verified embed platforms
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 12:37:22 -05:00
swift-river542
46798b0d3d README: lead with the story — one sign-up site is the bottleneck, the map embeds on every partner team's site, Training-for-Trainers roles, the share-button campaign, private CRM for the team list
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 12:34:59 -05:00
doxa-maps
5e31e93b82 README: the movement bottom line leads — multiply the prayer surface
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
A global prayer movement cannot run on one website: coverage stalls when there
is one place to see the task and one place to sign up. The opening now leads
with that insight and the fix (the same living map on every partner team's own
site — ownership breeds stewardship), trains three roles in the T4T spirit
(map maker / map multiplier / prayer mobilizer, t4tonline.org), and adds THE
PLAYBOOK: list partner teams -> keep the list in a secure collaborative CRM
(Disciple.Tools; the list is an attack surface) -> commission mobilizers ->
embed everywhere (Share button + utm attribution) -> train the trainer. The
craft story, glossary and quickstart remain for the map-maker persona.
2026-09-16 17:31:09 +00:00
swift-river542
7599e2a1a0 Rebuild the served tree after merging the all-people-groups bundle
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 12:13:11 -05:00
swift-river542
a876e5e97b Host-agnostic share links, token-endpoint chain, dev playground as reusable modules, share/asset gates, validated profile-type vocabulary
- ShareButton resolves its link from where the bundle is hosted (profile-config.shareUrl ->
  embedBaseUrl -> window.MAP_EMBED_BASE_URL -> the bundle's own script URL); profiles pass
  tree-relative embed pages, so links work in the playground, on doxa.life and on any CDN
- Generated leaf pages try token endpoints in order (override -> configured absolute URL ->
  same-origin) and only then offer the paste-once box; build config points at the canonical
  https://doxa.life/api/maps/token
- Dev playground extracted from vite.config.js into internal/playground/{discover,render,dev-plugin}.mjs;
  serves /assets/* like the built site so data-driven maps initialise; passes assetsBase +
  shareUrl to every element; header ladder with a Start-here primer and the five kinds of
  mounting files (single-element, preset-element, multi-view-element, composite-element, app-shell)
- New gates: smoke:playground (every element boots, with status text + data diagnostics),
  smoke:share (Share URL resolves and reopens the same map), sync:dropin (mirror public/ into a
  host checkout, never credentials), deploy:dev (build + sync)
- MapToolbar + ShareButton on every map profile; UPG-100 composite (map + prayer lists) on the
  pane layout; shared --map-radius token consumed by the legend components
- docs/reference.md: profile types table, profile-config assetsBase/shareUrl/embedBaseUrl, gates
2026-09-16 12:10:38 -05:00
doxa-maps
22eb9205a0 All People Groups: the whole task around the DOXA assignment (new bundle)
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
Every people group on earth (peoplegroups.org, 12,379 group-country rows) in
four colors: BLACK doxa (live ROP3 match vs the prayer API), RED frontier
(GSEC 0-1), YELLOW unreached (GSEC 2-3), GREEN reached (GSEC 4-6). Clickable
legend filters a category and fits the view to all of it; popups carry GSEC,
language, religion; DOXA dots link to pray with utm attribution. Uses the
shared static dataset + the standard pray-tools pipeline; renders fully by
GSEC even if the API is down. Wired into the SPA nav (the 'soon' placeholder
is now a real map) + deep-link preload. Smoke: mounts with live canvas.
2026-09-16 07:34:08 +00:00
doxa-maps
a5214fd48c Research map: all six tabs live again (typeof-null trap x3)
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
An API record with rop1:null passed 'typeof x === object' (null is 'object' in
JS) and read null.label — killing the component on the first semantic tab and
leaving every later tab dead. Null-guarded all three extractors in the affinity
tree builder; SemanticTreeLegend additionally prunes null nodes at its prop
boundary (defense in depth, warns on data holes). Headless verification:
Prayer/Engagement/People Groups/Regions/Languages/Religions all render with
live canvases.
2026-09-16 05:40:40 +00:00
doxa-maps
9c521f11d5 Public builds carry zero platform surface + copy-embed on staging
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
- Compile-time gate __DOXA_QA__ (default off): the QA corner and every string
  it carries are dead-code-eliminated from public bundles; platform builds
  opt in with DOXA_QA=1. Shell QA becomes ?qa=1 opt-in. Audit: zero platform
  strings across all bundles + shell.
- One Mapbox wordmark per page (first live map claims it; released on destroy).
- Coach-mark points at the need: 'Tap a red dot — someone still needs prayer.'
- Pray-click glow: locally-prayed groups render as Has Prayer for that visitor
  (localStorage, 7-day TTL) — lasting glow comes from the real signup via the API.
- Staging forge gains 'copy embed': snippet built at click time from
  location.href, so it carries the FULL URL of whatever host serves the tree.
2026-09-16 05:13:44 +00:00
doxa-maps
3fee91a193 Release governance: field-access data is private, never shipped
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
data-private/ is born: datasets whose publication could help close doors stay
out of the web-root and out of public repos, permanently. field-access-visas
moved there; the tables index no longer lists it; the key-cities Field Access
tab is removed from the public build; the table generator routes it (and any
future PRIVATE_TABLES entry) to data-private/ and excludes it from the index.
Public-good data (internet gaps, gospel-resource gaps, people-group pairings)
ships as before.
2026-09-16 04:34:33 +00:00
doxa-maps
e1d9393227 Every generated embed snippet teaches traffic attribution
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
The one bundler script that generates all the map pages now stamps
?utm_source=YOUR_SOURCE on every copy-paste iframe snippet (profiles AND
instances) and utmSource:"YOUR_SOURCE" in every script snippet — the same
placeholder pattern as YOUR_MAPBOX_TOKEN. A partner replaces it once and every
people-group click-through from their embed attributes to them.
2026-09-16 04:24:32 +00:00
doxa-maps
d5ad3aab0b utm_source inherits from the embed URL (the question-mark mechanism)
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
The page URL's ?utm_source= now outranks config/global/default in every outbound
people-group link — an iframe embedded as <page>?utm_source=agwm, a partner page
carrying its own ?utm_source, or a host page like /embed/map/?utm_source=agwm
all attribute their traffic automatically. Applied in the shared popup and both
dashboard drawer links.
2026-09-16 04:04:35 +00:00
doxa-maps
78fa7ac10a Docs reconciled with shipped reality: MapLibre on main, search opt-in documented
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
how-to's provider note said MapLibre was 'shipping on a branch / preview' — it is
on main with token-free generated pages and a living demo instance, guarded by the
embed smoke. reference.md: provider line updated (token-free, no tk needed under
maplibre) and the geocoder search-bar opt-in is now documented (simple-map ships
search OFF by design; research-map keeps it).
2026-09-16 03:05:53 +00:00
doxa-maps
2f458033b6 MapLibre pages: token-free embeds, no Mapbox peer, no token gate
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
A profile/instance whose config says provider:'maplibre' now generates a page
that loads the MapLibre peer (jsdelivr, same versions as useMapInstance) and
mounts IMMEDIATELY — the token ladder is skipped entirely. Mapbox pages are
unchanged. demo-map (the example vibe coders copy) is now provider-aware via
resolveMapProvider, and ships a 'maplibre' instance as the living token-free
demo. embed-smoke covers instance pages; verified 2/2 with live canvases —
including the maplibre one with NO token anywhere.
2026-09-16 02:53:38 +00:00
doxa-maps
e800f10681 Frame-policy as a real artifact + docs discoverability
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
- The build now emits public/_headers implementing the embeddability split
  (direct-embed pages framable anywhere; staging preview-only) — Netlify/CF
  Pages consume it automatically; serving/traefik-embed-headers.yaml is the
  proxy-side reference. The contract is auditable in-repo, not just documented.
- README: docs table gains how-to, layouts/README (the SPA machinery), and
  docs/architecture; Quickstart gains bun run serve + bun run phone.
2026-09-16 02:37:19 +00:00
doxa-maps
680a714bdc embed-smoke: prove every map embeds (17/17 pages mount cleanly)
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
New permanent harness (bun run smoke:embeds): loads every profile page from the
partner-facing manifest headless (SwiftShader software WebGL — no GPU needed),
asserts the custom element defines + populates its shadow DOM, no ProfileLoader
error card, and a WebGL canvas on map profiles. First full run: 17/17 pass —
8 map profiles paint a canvas, 9 DOM profiles (lists/tables/charts/walls)
populate. Exit 1 on any failure, so CI can gate on it.
2026-09-16 02:25:33 +00:00
doxa-maps
eb5545da69 Deep-link preload + library/README (architecture clarity)
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
- Deep links (#/research-map etc.) now get a modulepreload for their resolved
  bundle at parse time, parallelizing the fetch with the Mapbox peer — the
  static preload only warmed the default landing bundle. Map mirrored from the
  PROFILES registry with cross-referenced maintenance comments.
- library/README.md: the missing top-level orientation for the shared template
  (@map) — folder-by-folder, paired with app-profiles/README and the
  components WARNING.
2026-09-16 02:02:24 +00:00
doxa-maps
98aa53b16a SPA composition gaps: wire the charts pane, honest 'soon' badges
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
- gospel-resources gains its built-but-never-composed Charts pane (public/
  doxa-maps/gospel-resources/charts/ existed since the build; now it's a pane).
- The three nav items that render permanent placeholders (All People Groups,
  Nationmapper, Outreach Planner) carry an honest 'soon' badge; the shell's
  badge renderer generalized from the hardcoded desktop-only case to any
  n.badge value.
2026-09-16 01:49:58 +00:00
doxa-maps
5ef3c01c8d Data out of public/ (phase 2): posters + tables live in data/
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
posters/ (42M webp set the poster walls fetch) and tables/ (the merged served
table set — its index.json is the merge; per-profile data/tables remain the
build-time sources) now live in data/ with build copy-steps. Byte parity
verified; served paths unchanged. public/ is now FULLY regenerable — every
source-of-truth folder has a home outside the web-root.
2026-09-16 01:37:52 +00:00
doxa-maps
eca13ac2ff Data out of public/: sources live in data/, the web-root is generated
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
public/ was confusing because three source-of-truth folders lived ONLY inside it.
They now live in data/ (people-groups, vendor, external-bundles) and the build
copies them into the served tree (same pattern as boundaries), so served paths
are unchanged and public/ is fully regenerable. data/README.md states the law.
2026-09-16 01:24:41 +00:00
doxa-maps
f818799cd0 Conversion coach-mark: one-time animated pin hint on every map
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
library/components/hints/PinHint.vue — a tasteful pill ('Tap a glowing dot — meet
a people group') that teaches the one gesture behind every conversion: tap a pin
-> detail card -> Pray (utm-attributed). Self-gates on a real map canvas in the
shadow root (lists/tables never see it), shows once per session, dismisses on
first map touch / x / 14s, honors prefers-reduced-motion, dark-aware. Default ON;
opt-out profile-config pinHint:false; label override pinHintLabel. Wired in
ProfileLoader; visually verified live.
2026-09-16 01:11:42 +00:00
doxa-maps
bc8bd971b4 Outbound conversion tracking: utm_source on every people-group link
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
Every outbound people-group link (pray / adopt / research, popup + dashboard
drawer) now carries a standard utm_source so the destination site's analytics can
measure traffic arriving through the maps. Per-embed override via profile-config
utmSource or window.DOXA_UTM_SOURCE; default 'agwm'. Legacy source=doxalife kept.
Also: three stale shell comments corrected (panes grid is live; bundles use the
window.mapboxgl global, not a rollup external; Gospel Access items are wired).
2026-09-16 00:43:33 +00:00
doxa-maps
5c73248c6e README: lead with the SPA-composition trinity + visual proof (desktop & mobile)
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
The headline capability was buried mid-bullet. Now the opening leads with it: one
build composes all your maps, tables, and dashboards into a single-page app that
runs as a website, installs as a mobile app, and embeds on partner sites — with
side-by-side desktop + phone screenshots of the composed SPA as proof.
Also: the story gains the collapsed-platform / mobile-dream beat, and claims are
squared with the audit (Vue is what ships — React concepts transfer; Android
project committed today, iOS scaffolds via Capacitor).
2026-09-16 00:17:45 +00:00
doxa-maps
7c4916e533 README: remove the License section
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-15 23:56:39 +00:00
doxa-maps
ccf6938e4f README: reflow into a narrative arc (story-first), impact-ordered for vibe coders
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
Reorder sections so it reads like a journey (indirect, no cheesy labels): the dream
+ the wall you hit → the language (glossary) → what you get → the powers → the honest
decision → the commitment → first steps → the data caveat → docs → the mission.
Same ideas + section content; only the order changed so the most impactful part (the
story) leads.
2026-09-15 23:45:32 +00:00
doxa-maps
d2b8ad979f README: front-load the opening (drop the 'bottom line up front' label), tighten for brevity
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
Lead with the one-liner + the two commands immediately after the tagline; punchier
bullets; condensed the data caveat. Same content, fewer words, essence first.
2026-09-15 23:39:01 +00:00
15205d3ce1 Update README.md
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-15 23:36:34 +00:00