Commit graph

60 commits

Author SHA1 Message Date
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
doxa-maps
994b8d7dcf Prepare repo to the vision: BLUF vision-cast README, library warning, SRI injection, term scrub
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
- README rewritten as a BLUF-first vision cast for vibe coders (key-terms glossary,
  origin story, features, requirements, data caveat, developer's note).
- library/components/WARNING.md: prototype in your app-profile; only proven,
  parameterized components graduate into the shared library.
- generate-tree.mjs: inject Subresource Integrity (sha384) + crossorigin into the
  standalone page <script> tags and the copy-paste embed snippets (manifest = registry).
- Scrubbed identity-tied phrasing from comments/docs, keeping the technical rationale
  and the mission content.
2026-09-15 22:58:19 +00:00
doxa-maps
73165a0eca feat(qa): Start QA session — mint gateway token → create qhoot session → open room
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
The QA widget's Start now: GET /api/orgs → mint an RS256 gateway token via
/api/o/<slug>/mcp/mint (reads access_token) → POST /sessions to qhoot (Bearer) →
open /qhoot/assembly.html?c=<code>. Verified end-to-end (qhoot 201). Backend side
(qhoot iss/aud aligned to the mint; mint signing key pinned to certified green-key-1)
handled on the app-shell/qhoot infra.
2026-09-15 11:23:47 +00:00
doxa-maps
efdf6841e5 feat(security): SRI sha384 per bundle in the manifest (supply-chain integrity)
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
generate-tree now hashes each built bundle IIFE and writes integrity: 'sha384-…' into
manifest.json, so the app-shell can load embedded (direct-mounted) plugins with
integrity=… and refuse a tampered/CDN-swapped bundle. Pairs with the mount/locked
flags convert.py adds (DOXA=embedded, foreign=iframe, all locked).
2026-09-15 00:45:41 +00:00
doxa-maps
62b005fe17 perf: unblock SPA load (defer mapbox, preconnect, modulepreload) + preconnect embed pages
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
The SPA loaded mapbox-gl.js + geocoder as render-blocking <script> in <head> (~1.2MB
blocking parse) with no preconnect/preload — the ~10s cold load. Now: defer both (the
app module runs after them in doc order, so window.mapboxgl is still ready at mount),
preconnect api.mapbox.com + pray.doxa.life, and modulepreload the default profile
bundle so mapbox+bundle+API fetch in parallel. Measured headless: time-to-chrome 562ms,
time-to-widget 1068ms (was ~10s). Embed pages get preconnect too (kept mapbox sync there
since they use inline, non-module scripts).
2026-09-15 00:38:52 +00:00
doxa-maps
d16f5a6fe5 feat(qa): widget login — detect Nuxtinator session (/api/auth/me) + connect popup
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
The QA panel now checks the go-base session via same-origin GET /api/auth/me and
shows 'signed in as X' + Start; if not signed in it offers 'Log in with Nuxtinator'
(opens the same-origin /plugin-assets/qa-connect.html popup, which reads the session
and postMessages the identity back). Works when the plugin is same-origin; under
NUXT_PUBLIC_PLUGIN_SANDBOX_ISOLATE_ORIGIN=true the frame is origin-null so the check
is blocked (browser rule) and the button surfaces that. Connect page shipped to the
mfe-index volume root.
2026-09-15 00:18:23 +00:00
doxa-maps
f2b0c500b8 fix(qa): inject QA widget CSS via useShadowStyles so it renders in the shadow DOM
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
The widget mounted but was invisible: as a CHILD component of the custom element,
its <style scoped> block was silently dropped from the shadow root (Vue keeps only
the ROOT component's styles), so position/z-index never applied → it laid out as a
static full-width block. Switch to useShadowStyles (same pattern as legend/table/
map-panel) → the pill now floats bottom-right. Verified headless: absolute,
z-index 2147483000, visible, bottom-right.
2026-09-14 23:17:08 +00:00
doxa-maps
6f8c810943 fix(qa): make the QA corner widget actually visible (fixed + top z-index)
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
The widget rendered but was painted under map legends/panels and could be trapped
by a profile's full-bleed layout. Switch .qa-corner to position:fixed with a
top-of-stack z-index so it floats bottom-right over any map. (Plugin-open path
fixed separately in convert.py: a plugin now opens its representative MAP page,
not the multi-map staging directory — faster load + the widget shows.)
2026-09-14 22:19:39 +00:00
doxa-maps
24b315afdd feat(qa): bake QA corner widget onto generated embed pages (go-base plugin surface)
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
generate-tree now honors a qaWidget build flag (default true) and merges qa:true
into each generated embed page's profile-config, so standalone map plugins opened
in go-base show the QA corner widget too — not just the SPA. Partner embeds use the
copy-embed snippet with their own config, so they are unaffected. Opt out with
qaWidget:false in vite.doxa-maps-build-config.json.
2026-09-14 21:50:24 +00:00
doxa-maps
9ab4ea2d44 feat(qa): QA corner widget on maps (opt-in), on for the DOXA SPA surface
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
Adds library/components/qa/QaCorner.vue — a bottom-right floating 'QA' button +
panel (OIDC-onboarding shell: 'Log in with Nuxtinator', no key), rendered by
ProfileLoader over any profile. OPT-IN via profile-config.qa (default OFF) so the
same bundles that power partner embeds never show a QA button; the SPA shell sets
qa:true on every mount so it appears on all maps in the power app. Backend (qhoot /
nuxtbase-baas agent bridge + MCP) wired in a later pass — this is the visible shell.
Spec: _qa-cycle/01-ideation-research/qa-loops/qa-embeddable-qa-agent-bridge.md
2026-09-14 21:47:59 +00:00
doxa-maps
63bc1d77c1 feat(staging): gate profiles out of the generated tree (governance) + clean all-bundles staging
Some checks failed
Deploy to GitHub Pages / build (push) Has been cancelled
Deploy to GitHub Pages / deploy (push) Has been cancelled
Add a gatedProfiles config field (default [key-cities]) honored by the tree
generator: a gated bundle's .js still BUILDS via vite, but it never appears in
the staging root, the per-bundle staging pages, or manifest.json — the surfaces
generate-tree emits. This makes key-cities gated in ONE place for every surface
(convert.py already gates the go-base plugin index), instead of relying on the
box-side converter alone. The staging root now shows all 9 bundles + their
elements with no key-cities leak.
2026-09-13 00:52:24 +00:00
doxa-maps
852d49a8da fix(spa): drop icons from sidebar section headers — cleaner text separators
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
The section/subgroup headers are non-interactive group labels; their leading
icon added visual weight without meaning. Render them as plain text so the
sidebar reads as clean labelled separators. Nav ITEMS keep their icons, and
the collapsible Experimental folder keeps its icon+chevron (interactive row).
Rail mode already hides .sect-hdr entirely, so no empty headers there.
2026-09-12 22:55:24 +00:00
doxa-maps
5f2d7e6bbc fix(spa,dashboard): kill the top divider + reflow the map when the table collapses
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
- SPA sidebar: suppress the leading section divider on the FIRST nav group.
  Every section emitted a `.sep` rule before its header, so Prayer Mobilization
  (the first section) drew a 1px line directly under the header with nothing
  above it to divide. drawSide() now tracks a firstGroup flag and skips it.
- Research dashboard: when the table under the map collapses, resize the map to
  fill the freed space. The ResizeObserver alone missed the grid reflow at the
  instant the table cell flips to display:none (v-show), leaving the map canvas
  at its old size (gray gap). DashboardMapPanel now also resizes on the
  'toggleTable' bus event (rAF + a 280ms settle pass), with clean teardown.
2026-09-12 21:21:45 +00:00
doxa-maps
1cd2b46cd5 fix(spa): make embedded maps survive the sandboxed plugin iframe
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
Three fixes for the power-app SPA running as a go-base plugin (sandboxed
iframe, origin 'null' — where localStorage throws and root-absolute asset
paths misresolve under the /plugin-assets/<name>/ subpath):

- localStorage: wrap every theme/preference read+write in try/catch across
  the library (ProfileLoader, useMapTheme, uiStore). `typeof localStorage`
  is not enough — in a sandbox the object exists but ACCESS throws
  SecurityError. Sandboxed maps now boot themeless instead of crashing.
- assets: the SPA shell now injects an absolute assetsBase (derived from its
  own document.baseURI) into every mounted element's profile-config, so
  bundles fetch tables/vendor (Tabulator) from the correct subpath instead
  of a root-absolute /assets that 404s under /plugin-assets/doxa-maps-spa/.
- nav: revert the Prayer Mobilization section icon to 'heart' (the prayer
  glyph read as a header it is not).

Rebuilds every bundle (library-wide localStorage change).
2026-09-12 21:07:26 +00:00
doxa-maps
30a516a6a3 feat: apiBaseUrl as a first-class build-config field — every generated page bakes window.MAP_APP_API_URL (default pray.doxa.life); one knob to hot-swap to the self-hosted campaigns-server on go-base later, no code change
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-12 03:15:36 +00:00
doxa-maps
0f6d62c030 fix(shell): subpath-portable sibling-layout imports (../layout/ → ./layout/) so the SPA works served under any path, incl. as a go-base plugin at /plugin-assets/doxa-maps-spa/
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-12 02:31:32 +00:00
doxa-maps
b4db24c54c feat: migrate research dashboard into doxa-maps as app-profile research-dashboard (self-contained; reuses @map library; includes facet/rail collapse + table density 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-12 02:04:10 +00:00
doxa-maps
bd3c1eb2f5 revert: remove the vibe-coded prayer-map profile entirely (bundle, output, SPA nav/PROFILES) — the real prayer map is the doxa-simple-map prayer instance; rebuild tree+shell (9 bundles)
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-11 23:53:23 +00:00
doxa-maps
35c7b2e4ba docs: showcase the REAL prayer map (doxa-simple-map prayer instance, Semantic Tree Legend) — replace the vibe-coded prayer-map scaffold screenshot
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-11 23:51:14 +00:00
doxa-maps
6862846aaa docs: trim README showcase to research-map (example) + prayer-map (flagship); remove other map screenshots
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-11 23:47:09 +00:00
doxa-maps
2a76a3a062 docs: README showcase — screenshots of the real map outputs (bundle · element · color code) at the bottom, explanation stays at top
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-11 23:42:26 +00:00
doxa-maps
9cc8053ec2 docs: direct-embed vs staging framing contract — serving-layer owns frame-ancestors (direct=* , staging=self); per-host recipes
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-11 23:38:31 +00:00
doxa-maps
ee3ebf8700 feat(spa): register flagship prayer-map (MapLibre) in the power app's Experimental section + PROFILES — visible-but-labeled per the experimental-profile law
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-11 22:07:54 +00:00
doxa-maps
692b25e1f5 docs: slide-deck outline (BLUF hand-off pitch) from the handoff distillate
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-11 22:05:23 +00:00
doxa-maps
de054ca078 feat: origin-derived share URL — defaults to the map page's own location so embeds are correct on any CDN/host (GitHub Pages, host public/, external), explicit path still wins
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-11 22:04:51 +00:00
doxa-maps
f8eb75d239 feat: prayer-map profile — flagship prayer embed, MapLibre default (token-free, no SPOF for partner embeds), no search bar, style-by-props, 3-tier prayer legend
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-11 22:02:06 +00:00
doxa-maps
6747af069c merge: map provider swap (mapbox|maplibre) + MapLibre pin fix — verified both engines render pins, MapLibre token-free on OpenFreeMap
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-11 21:55:46 +00:00
doxa-maps
988e61144c fix: guard circle-emissive-strength (Mapbox-Standard-only) behind engine check — MapLibre renders all pin layers; add isMapboxMap/emissivePaint helpers 2026-09-11 21:55:46 +00:00
doxa-maps
a7450520ee fix: resolve map provider from ?provider url param + carry it through staging iframes 2026-09-11 21:47:25 +00:00
doxa-maps
c7260faaa3 feat: map provider swap — mapbox|maplibre engine + hybrid geocoder + provider badge; staging title doxa-maps 2026-09-11 21:47:25 +00:00
doxa-maps
0f38a5448c docs: decoupled-twin pairing section in why.md; composable/embeddable-first terms in one-liner; experimental-vs-production profile convention
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-11 19:24:27 +00:00
doxa-maps
756bb32c9f docs: close retest gaps — engine-swap recipe (provider param), instances.json recipe + schema, adopt embed-example into router
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-11 18:50:31 +00:00
doxa-maps
19e1213e71 docs: skimmer pass — README to 1 diagram + 2 tables; how-to task index; docs/ router; CONTRIBUTING 384→61 (patterns+history → architecture) 2026-09-11 18:50:31 +00:00