Commit graph

9 commits

Author SHA1 Message Date
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
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
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
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
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
d5ba21fa76 doxa-maps — portable bundler for embeddable JAMstack maps
Standalone repo that builds embeddable JAMstack map bundles (web components),
composes them into a lazy-loaded SPA via layouts/, and optionally wraps a
Capacitor Android/iOS app — one build, choose your output/CDN. Diátaxis docs.

History reset to a single clean commit; no PII, IPs, or internal terms.
2026-09-10 01:53:07 +00:00