Commit graph

131 commits

Author SHA1 Message Date
driver
b1b5d2cf82 Research page: embed the doxa-maps Research Gallery (one capability-5 plugin) in place of the separate research map, UUPG list and regions link
JS embed exactly as the maps manifest ships it: one <script src> plus <doxa-maps-spa>.
The drop-in under public/embed/doxa-maps-build is refreshed from the current maps build
with the maps repo's own sync-dropin tool (--from-config).
2026-09-30 11:22:31 +00:00
swift-river542
9305706012 Map cards keep their rounded top on phones too 2026-09-17 02:45:54 -05:00
swift-river542
2a007897ec The map slot is a layout the map sits inside: an opaque rounded frame with the map inset, so no map layer can reach the corners 2026-09-17 02:36:05 -05:00
swift-river542
7031765717 Corner wedges get their own layer so the map's GPU layer cannot paint over them 2026-09-17 02:30:52 -05:00
swift-river542
95f8cd8d9d The map keeps its stacking inside itself so the slot's corner wedges paint over it 2026-09-17 02:28:05 -05:00
swift-river542
6b79d13f24 The map slot paints its own rounded corners over whatever it holds, so a canvas or an iframe can never square them 2026-09-17 02:19:59 -05:00
swift-river542
eeb6a8a471 One corner size for every map card; research header flows into its rounded top; drop-in rebuilt 2026-09-17 01:56:42 -05:00
swift-river542
fb7ecea6b2 Map slots publish their corner radius to the maps; drop-in rebuilt 2026-09-17 01:26:28 -05:00
swift-river542
dedb3b19ee Phone map slots are 80px taller (twice as tall as wide) 2026-09-16 23:11:51 -05:00
swift-river542
ec10b687c9 One place for the maps drop-in path
- MAPS_BASE in nuxt.config.ts is the single constant; runtimeConfig.public.mapsBase, the
  redirect targets and the frame-policy rule derive from it
- The map slots and the full-page maps view read mapsBase at runtime
- /api/maps/token also reports mapsBase, so the static embed page finds the bundles without
  a hardcoded folder
2026-09-16 19:20:00 -05:00
swift-river542
99873d85d9 Maps drop-in moves to /embed/doxa-maps-build; old /js links redirect
- The generated maps output now lives under public/embed/ next to the embed page;
  the site's map slots, the full-page maps view and the embed page point there
- /js/doxa-maps-build/** and the older /js/doxa-maps/** answer 301 to the new location,
  so links already shared keep working
- Frame policy follows the new path
2026-09-16 19:05:50 -05:00
swift-river542
4bd9f25194 Research page: remove the “See all our research maps” link under the map 2026-09-16 17:14:37 -05:00
swift-river542
b4329c007b One global research-map-link rule for the “→ more maps” invitation under every map; research page uses it too 2026-09-16 16:24:32 -05:00
swift-river542
06537ae4b7 Research page: “See all our research maps, there’s more! →” sits under the map’s bottom-right corner 2026-09-16 16:22:38 -05:00
swift-river542
dc9189b86c “Explore our research maps →” links use the body text size, matching “By Region →” 2026-09-16 16:13:06 -05:00
swift-river542
736733d784 Map slot: own compositor layer so the rounded clip applies from the first frame 2026-09-16 16:07:54 -05:00
swift-river542
5f280da46e Mobile map slots: 9:16 instead of 1:2 — shorter than before, still one screen tall 2026-09-16 16:05:40 -05:00
swift-river542
bedb90fb71 Map slots clip their rounded corners at paint time so the map never shows square corners while loading 2026-09-16 15:50:28 -05:00
swift-river542
3c9735974c People-group page: map card corners stay rounded while the map iframe loads (clip-path + radius on the frame) 2026-09-16 15:44:54 -05:00
swift-river542
aee7c01115 Home page map slot uses the prayer page's rounded-md so its corners match the map 2026-09-16 11:55:17 -05:00
swift-river542
c9ca2da642 Make map share links host-agnostic, add CORS to the token endpoint, align Mapbox GL to v3.24.0
- The Share button now derives embed URLs from where the bundle is actually hosted
  (profile-config.shareUrl -> embedBaseUrl -> window.MAP_EMBED_BASE_URL -> the bundle's own
  script URL), so generated links work on localhost, on doxa.life and on any CDN
- Generated map pages try token endpoints in order (override -> https://doxa.life/api/maps/token
  -> same-origin /api/maps/token) instead of failing on a single URL
- GET /api/maps/token sends Access-Control-Allow-Origin: * so map pages hosted on another
  origin can fetch a token
- useDoxaMap loads mapbox-gl v3.24.0 to match the bundles
- Refresh the doxa-maps drop-in: upg-100 combined map+lists page, share toolbar on every map,
  shared legend radius token
2026-09-16 11:45:59 -05:00
doxa-maps
c1d21e86fa Merge remote-tracking branch 'github/master' into doxa-maps-build 2026-09-16 05:43:25 +00:00
doxa-maps
a7035914b3 Bare pages get zero site chrome: feedback bubble opts out on layout:false pages 2026-09-16 05:01:05 +00:00
doxa-maps
14d762f9f1 /doxa-maps is a full page: layout:false (site header/footer overlapped the SPA) 2026-09-16 04:21:28 +00:00
doxa-maps
d0257609b6 Re-sync doxa-maps-build: embed-URL utm_source propagation + /doxa-maps forwards ?utm_source
Every embedded map now inherits ?utm_source= from its embed URL and stamps it on
people-group click-throughs (pray.doxa.life/<slug>?...&utm_source=<yours>) — the
question-mark traffic attribution the team asked for.
2026-09-16 04:04:37 +00:00
doxa-maps
946ccfd8f6 /doxa-maps uses the site's EXISTING /api/maps/token endpoint
doxa-life already ships the right token source (pk passthrough or 1-hour
sk-minted tk, built precisely for public/ embeds). The page fetches it once and
hands it to the shell via its native ?tk= rung — works in pk AND sk
configurations, zero new token surfaces.
2026-09-16 03:46:57 +00:00
doxa-maps
1b81162021 One token spot: the SPA page passes ?tk= — extra token endpoint removed
The shell's own ladder already accepts ?tk= (rung 2), so /doxa-maps passes the
same public.mapboxToken every map page on this site uses. The server route added
earlier duplicated the token surface for no benefit — deleted.
2026-09-16 03:44:32 +00:00
doxa-maps
3c41b741de /doxa-maps: the full maps SPA on the site + 'See all DOXA maps' pointer
- The drop-in now carries the bundler's app shell beside doxa-maps/ (index.html,
  nav, icons, pane-wrapper, external bundles, assets), so /js/doxa-maps-build/
  index.html IS the composed single-page app — every map, lazy-loaded.
- New page /doxa-maps frames it full-bleed (replaces the /maps easter egg).
- The research page gains the pointer: 'See all DOXA maps →' (mirrors the
  prayer→research pattern).
- server route serves the shell's ./api/maps/token.json from the site's own
  NUXT_PUBLIC_MAPBOX_TOKEN — no secret in the drop-in.
2026-09-16 03:27:10 +00:00
doxa-maps
9d33a08113 doxa-maps-build: the bundler's output ships in public/, embeddables retired
- public/js/doxa-maps-build/ carries every map as a self-contained embeddable
  web component (+ per-map pages, manifest with SRI) — the home/pray/adopt/
  research pages load their maps from it via useDoxaMap.
- embeddables/ is removed altogether; the drop-in replaces it.
- New unlisted page /maps: the map room — frames the drop-in's staging index,
  every map in one place, always as current as the build in this repo.
2026-09-16 03:24:15 +00:00
doxa-maps
908a220550 One output folder under the js path: public/js/doxa-maps-build/
Consolidate to a single map output location: remove the stale flat
public/js/*.js bundles and move the drop-in to public/js/doxa-maps-build/. Rewired
useDoxaMap to /js/doxa-maps-build/doxa-maps/<bundle>/<bundle>.js and fixed page comments.
2026-09-15 23:14:06 +00:00
doxa-maps
e99b65ac16 Rename drop-in output folder: doxa-maps-cdn -> doxa-maps-build
'cdn' was a misnomer — the bundler's output is just static files that can be
served same-origin, enqueued directly into the app, OR via a CDN. 'doxa-maps-build'
names it for what it is: the built output of the doxa-maps bundler. Rewired
useDoxaMap.ts (/doxa-maps-build/doxa-maps/<bundle>/<bundle>.js) and the drop-in README.
2026-09-15 23:09:31 +00:00
doxa-maps
0fb726a4cb Wire doxa-life to load maps from the doxa-maps-cdn drop-in
useDoxaMap now loads the built bundles from /doxa-maps-cdn/doxa-maps/<bundle>/
<bundle>.js (the doxa-maps bundler output folder placed in public/), replacing
the old flat /js/*.js paths so the maps actually resolve on the live site.
2026-09-15 22:32:13 +00:00
doxa-maps
94c67f30c5 Scrub last '1040-maps' codename from a research page comment 2026-09-15 22:29:26 +00:00
corsacca
cea9583792 guard people group cards against missing region, rop1 and country fields 2026-09-15 14:57:16 +01:00
corsacca
f9d53d5524 refresh homepage statistics on the client 2026-09-14 12:17:12 +01:00
corsacca
93128d4eff add submit updates button to people group profile 2026-09-08 12:24:32 +01:00
corsacca
7dfad0ee07 replace deepl with llm translation via openrouter
- translateText/translateTexts call OpenRouter chat-completions; glossary
  terms are prompt-injected from config/glossaries.ts, generated from the
  translation repo's TSVs by scripts/build-glossaries.ts
- model resolution: per-language override in config/languages.ts →
  translation.model site setting (new admin field) → TRANSLATION_MODEL env
  → anthropic/claude-opus-5, at low reasoning effort
- blank fragments are held back from the model, which drops them and breaks
  the one-translation-per-fragment count the caller maps results back on
- OpenRouter failures map to a typed error with a human-readable message;
  an unrecoverable one (no credits, bad key, rejected model) stops the run
  instead of repeating the same call for every remaining locale
- machine translations record source 'auto-translate'; 'deepl' stays
  readable for snapshots written before the switch
2026-09-07 16:30:48 +01:00
corsacca
050708084b switch feedback destination 2026-09-07 13:25:04 +01:00
corsacca
bbddd6c2d2 add dashboard links to region cards and move regions after resources
- end each region card with a "See <region> dashboard" link, translated
  in all eight locales
- stack the people-group and country count on its own line under the
  region title in the card header
- move the Regions entry in the hamburger menu to after Resources
2026-09-07 12:11:08 +01:00
corsacca
eae6143be1
Replace country pages with region dashboards (#23)
* replace country pages with region dashboards

- move /countries to /regions, with 301 redirects from the old URLs in
  every locale
- add a region dashboard: a map of the region's countries with pins
  coloured by prayer coverage, headline figures, and prayer, adoption and
  engagement progress against the DOXA goals, plus a per-country table
- roll up progress stats per country and region in the shared summary
  and serve them from /api/regions
- frame region maps with antimeridian-aware bounds
- add Regions to the hamburger menu and translate the new strings in all
  eight locales

* put each region on the regions index in a card with a header band

The region name links to its dashboard with the site's chevron icon, and
the people-group and country counts sit centred beside it on a brand-green
header; the country list is the padded white card body.
2026-09-07 11:49:24 +01:00
corsacca
fa819d3bda relabel the exact filter toggle to "Exact Search" in all languages
Replace the "Exact" i18n key with a translated "Exact Search" across
the 8 locales and update the component's English fallbacks.
2026-08-31 14:57:23 +01:00
corsacca
db09e654e6 fix(i18n): localize hardcoded bullseye numbers on the homepage
Format the outer rings' static figures with the active locale's
separators (e.g. "3,9" and "6.602" in pt), matching the DB-driven
center ring.
2026-08-31 14:44:38 +01:00
corsacca
bf3fa3c915 fix(search): match accented data with unaccented queries in UUPG search
Strip combining diacritics from both indexed values and the query so
e.g. "Mexico" finds "México" in localized data, including exact mode.
2026-08-31 14:42:03 +01:00
ahillbilly
f96b04ea12 Update prayer and resources CTAs 2026-07-10 16:49:49 +01:00
corsacca
31f555a2d4 hide adoption UI and add country links to pray cards
remove "Not Adopted" badge from research page cards
hide Adoption tab on research map and rebuild bundle
remove Adopt and Engage tiles from landing page
drop step number from lone Pray tile on landing page
add clickable country link to pray page cards
2026-06-24 16:13:34 +01:00
corsacca
64b8d31c1d link research page to countries index
add a "By Country" link under the research heading → /countries
add the "By Country" i18n key in all 8 locales
2026-06-19 17:14:27 +01:00
corsacca
94102174be show people group details in country map pin popup
- enrich pin popup with photo, country, people group, population,
  religion, description, and pray / full-profile links
- fetch the extra fields for pins; reuse existing translated labels
- render photos as a centred portrait (4:5) thumbnail, never landscape
2026-06-18 16:46:25 +01:00
corsacca
39494fba65 update prayer goal copy from 144 to 100 across pray and adopt pages
reframe "24-hour prayer coverage" and "10 minutes a day" as daily / 100+ people praying
swap the affected t() keys in pray.vue and the two adopt pages
update the matching keys in all 8 locale common.json files
2026-06-17 15:49:18 +01:00
ahillbilly
b65c764d86
Update prayer coverage threshold and status display (#15)
* Update daily prayer coverage threshold

* Show segmented prayer coverage status

* update prayer progress map legend wording

relabel map legend tiers to "No One Praying", "1+ People Praying", and "100+ People Praying" across all 11 locale legend files
update LABELS constant and tier comments in prayer-progress strategy
rebuild doxa-simple-map and doxa-research-map bundles

---------

Co-authored-by: corsacca <corsacca@gmail.com>
2026-06-17 05:04:19 -05:00
ahillbilly
3ab77a7af9
Hide adopt CTA and update prayer coverage copy (#14)
* Add partial prayer coverage status icon

* Update engaged profile status indicators

* Hide adopt CTA and update prayer copy
2026-06-17 04:30:17 -05:00