People-group links go to doxa.life from any host; stale layouts retire
Some checks are pending
build-gate / build (push) Waiting to run
Some checks are pending
build-gate / build (push) Waiting to run
THE LINK (Driver pasted localhost:5174/research/pitaguari/): the card's "Full profile" base defaulted to root-relative /research/, which resolves against whatever origin hosts the element -- right on doxa.life, wrong on the dev server, an iframe, or a partner site. Same class as the ../../ child-src bug. Adopted the pattern the shared PeopleGroupDetail already uses: window.DOXA_SITE_URL override, else the absolute canonical origin. TWO owners had to move, and the first fix alone measured as a no-op: the computed's fallback AND the prop's own default -- a non-empty prop default is always truthy, so the canonical branch was unreachable until the prop default became ''. Unset must mean unset. Playwright on a non-doxa origin: all 24 rendered links now https://doxa.life/research/<slug>, zero relative. LAYOUT KEY v2: the Driver sees unequal sidebars because his browser restores a layout saved under the OLD defaults (rail 264), and a restored value outranks any default by design. Defaults changed materially today, so the storage key is versioned: everyone starts once from the new symmetric defaults; a fresh drag re-personalises from there.
This commit is contained in:
parent
8d41a8fdef
commit
80d5981229
13 changed files with 44 additions and 23 deletions
|
|
@ -51,7 +51,11 @@ const props = defineProps({
|
|||
profileConfig: { type: String, default: '' },
|
||||
prayBaseUrl: { type: String, default: '' },
|
||||
languageCode: { type: String, default: '' },
|
||||
researchUrl: { type: String, default: '/research/' },
|
||||
// ★ default '' NOT '/research/': a non-empty prop default is ALWAYS truthy, so the computed
|
||||
// below could never reach its canonical fallback -- the relative default simply moved houses
|
||||
// and kept winning (measured: bundle carried the canonical branch AND default:"/research/",
|
||||
// and every rendered link was still relative). Unset must mean unset. */
|
||||
researchUrl: { type: String, default: '' },
|
||||
selectUrl: { type: String, default: '' },
|
||||
t: { type: Object, default: () => ({}) },
|
||||
|
||||
|
|
@ -194,7 +198,18 @@ const cfg = computed(() => {
|
|||
})
|
||||
const prayBaseUrl = computed(() => props.prayBaseUrl || cfg.value.prayBaseUrl || 'https://pray.doxa.life')
|
||||
const languageCode = computed(() => props.languageCode || cfg.value.languageCode || '')
|
||||
const researchUrl = computed(() => props.researchUrl || cfg.value.researchUrl || '/research/')
|
||||
// ★ ABSOLUTE CANONICAL DEFAULT (Driver 2026-09-23, pasted from his own browser:
|
||||
// http://localhost:5174/research/pitaguari/ -- "when I click view more information it does not
|
||||
// send me to the proper doxa.life page"). The old default '/research/' was ROOT-RELATIVE, so it
|
||||
// resolved against whatever origin happened to host the element: right on doxa.life, wrong on
|
||||
// every other host -- the dev server, an iframe embed, a partner site. Same defect class as the
|
||||
// ../../ child-src bug: a relative default encoding an assumption about the host.
|
||||
// The shared PeopleGroupDetail already solved this exact problem (PeopleGroupDetail.vue:427):
|
||||
// window.DOXA_SITE_URL override, else the absolute canonical origin. Adopting the SAME pattern
|
||||
// here makes the card link and the detail panel agree on where a people group lives -- two
|
||||
// surfaces, one rule. Prop and cfg still take precedence for hosts that want their own base.
|
||||
const researchUrl = computed(() => props.researchUrl || cfg.value.researchUrl
|
||||
|| (((typeof window !== 'undefined' && window.DOXA_SITE_URL) || 'https://doxa.life').replace(/\/+$/, '') + '/research/'))
|
||||
const selectUrl = computed(() => props.selectUrl || cfg.value.selectUrl || '')
|
||||
const t = computed(() => ({ ...(cfg.value.t || {}), ...(props.t || {}) }))
|
||||
|
||||
|
|
|
|||
|
|
@ -123,7 +123,13 @@ export function useDashboardLayout(options = {}) {
|
|||
bus = null,
|
||||
isNarrow = false,
|
||||
pageScroll = false,
|
||||
storageKey = 'rd-dashboard-layout',
|
||||
// ★ KEY VERSIONED v2 (2026-09-23). The Driver reported "sidebars are not equally spaced" on
|
||||
// his machine AFTER the symmetric-rail change landed -- because his browser restores a layout
|
||||
// SAVED under the old defaults (rail 264), and a restored value outranks any new default by
|
||||
// design. When defaults change materially, the old saved layouts are prescriptions from a
|
||||
// different bottle: bump the key so every reader starts from the new defaults once, and a
|
||||
// fresh drag re-personalises from there. The v1 blob is left in place, inert.
|
||||
storageKey = 'rd-dashboard-layout-v2',
|
||||
} = options
|
||||
|
||||
const defaults = { ...DEFAULTS, ...(options.defaults || {}) }
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -40,7 +40,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <dashboard-plus-grid> custom element. -->
|
||||
<script src="../../dashboard-plus-grid.js" integrity="sha384-c3pbeire4r7R+SzWZa/jnmf14S2CKOGEldKvKJk9oyv9cc3EykR8ITb1Mazi4Af0" crossorigin="anonymous"></script>
|
||||
<script src="../../dashboard-plus-grid.js" integrity="sha384-lFahIRCFBh2RLzn3g9lHxF9rvYyK1YL2zPkJ+FwDVYQ8+aEcv2MPphETm99tMmfr" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <dashboard-plus-grid> custom element. -->
|
||||
<script src="../dashboard-plus-grid.js" integrity="sha384-c3pbeire4r7R+SzWZa/jnmf14S2CKOGEldKvKJk9oyv9cc3EykR8ITb1Mazi4Af0" crossorigin="anonymous"></script>
|
||||
<script src="../dashboard-plus-grid.js" integrity="sha384-lFahIRCFBh2RLzn3g9lHxF9rvYyK1YL2zPkJ+FwDVYQ8+aEcv2MPphETm99tMmfr" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
2
public/doxa-maps/index.html
generated
2
public/doxa-maps/index.html
generated
File diff suppressed because one or more lines are too long
12
public/doxa-maps/manifest.json
generated
12
public/doxa-maps/manifest.json
generated
|
|
@ -193,7 +193,7 @@
|
|||
"bundle": "dashboard-plus-grid",
|
||||
"scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js",
|
||||
"output": "doxa-maps/dashboard-plus-grid/dashboard-plus-grid.js",
|
||||
"integrity": "sha384-c3pbeire4r7R+SzWZa/jnmf14S2CKOGEldKvKJk9oyv9cc3EykR8ITb1Mazi4Af0",
|
||||
"integrity": "sha384-lFahIRCFBh2RLzn3g9lHxF9rvYyK1YL2zPkJ+FwDVYQ8+aEcv2MPphETm99tMmfr",
|
||||
"elements": [
|
||||
"dashboard-plus-grid"
|
||||
],
|
||||
|
|
@ -213,7 +213,7 @@
|
|||
"scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./dashboard-plus-grid/dashboard-plus-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-c3pbeire4r7R+SzWZa/jnmf14S2CKOGEldKvKJk9oyv9cc3EykR8ITb1Mazi4Af0\" crossorigin=\"anonymous\"></script>\n<dashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dashboard-plus-grid>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-lFahIRCFBh2RLzn3g9lHxF9rvYyK1YL2zPkJ+FwDVYQ8+aEcv2MPphETm99tMmfr\" crossorigin=\"anonymous\"></script>\n<dashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dashboard-plus-grid>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -680,7 +680,7 @@
|
|||
"bundle": "people-groups-grid",
|
||||
"scriptUrl": "./people-groups-grid/people-groups-grid.js",
|
||||
"output": "doxa-maps/people-groups-grid/people-groups-grid.js",
|
||||
"integrity": "sha384-SSTG1RUFoIjmfKCE2kvXqr3T0EfIHCys9RQ1NI+DtzhqGtRncZ9IYKEsXhyPV7gN",
|
||||
"integrity": "sha384-q89eAM2NZdjf/etPJjSO4b31cIO6CD8ZA28BVYaZ2wNd46RztNl9BI0J+XS69l7e",
|
||||
"elements": [
|
||||
"people-groups-grid"
|
||||
],
|
||||
|
|
@ -696,7 +696,7 @@
|
|||
"scriptUrl": "./people-groups-grid/people-groups-grid.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./people-groups-grid/people-groups-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./people-groups-grid/people-groups-grid.js\" integrity=\"sha384-SSTG1RUFoIjmfKCE2kvXqr3T0EfIHCys9RQ1NI+DtzhqGtRncZ9IYKEsXhyPV7gN\" crossorigin=\"anonymous\"></script>\n<people-groups-grid profile-config='{\"profile\":\"people-groups-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></people-groups-grid>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./people-groups-grid/people-groups-grid.js\" integrity=\"sha384-q89eAM2NZdjf/etPJjSO4b31cIO6CD8ZA28BVYaZ2wNd46RztNl9BI0J+XS69l7e\" crossorigin=\"anonymous\"></script>\n<people-groups-grid profile-config='{\"profile\":\"people-groups-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></people-groups-grid>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -878,7 +878,7 @@
|
|||
"bundle": "research-dashboard",
|
||||
"scriptUrl": "./research-dashboard/research-dashboard.js",
|
||||
"output": "doxa-maps/research-dashboard/research-dashboard.js",
|
||||
"integrity": "sha384-czl1wL6/vRprToHEGJK5KEW0RxlfritI1CldVbHBUUxH34fxO1SxXtO7tKjohltp",
|
||||
"integrity": "sha384-QtXmg1sKDCXljaSvuGeRuUkpFuNWiAMRsz2Sk5tluaUTXkVfz8y2MKWdGLVCdSig",
|
||||
"elements": [
|
||||
"research-dashboard-map"
|
||||
],
|
||||
|
|
@ -894,7 +894,7 @@
|
|||
"scriptUrl": "./research-dashboard/research-dashboard.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./research-dashboard/research-dashboard/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./research-dashboard/research-dashboard.js\" integrity=\"sha384-czl1wL6/vRprToHEGJK5KEW0RxlfritI1CldVbHBUUxH34fxO1SxXtO7tKjohltp\" crossorigin=\"anonymous\"></script>\n<research-dashboard-map profile-config='{\"profile\":\"research-dashboard\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></research-dashboard-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./research-dashboard/research-dashboard.js\" integrity=\"sha384-QtXmg1sKDCXljaSvuGeRuUkpFuNWiAMRsz2Sk5tluaUTXkVfz8y2MKWdGLVCdSig\" crossorigin=\"anonymous\"></script>\n<research-dashboard-map profile-config='{\"profile\":\"research-dashboard\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></research-dashboard-map>"
|
||||
},
|
||||
"bundle": "research-dashboard"
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -26,7 +26,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <people-groups-grid> custom element. -->
|
||||
<script src="../../people-groups-grid.js" integrity="sha384-SSTG1RUFoIjmfKCE2kvXqr3T0EfIHCys9RQ1NI+DtzhqGtRncZ9IYKEsXhyPV7gN" crossorigin="anonymous"></script>
|
||||
<script src="../../people-groups-grid.js" integrity="sha384-q89eAM2NZdjf/etPJjSO4b31cIO6CD8ZA28BVYaZ2wNd46RztNl9BI0J+XS69l7e" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <people-groups-grid> custom element. -->
|
||||
<script src="../people-groups-grid.js" integrity="sha384-SSTG1RUFoIjmfKCE2kvXqr3T0EfIHCys9RQ1NI+DtzhqGtRncZ9IYKEsXhyPV7gN" crossorigin="anonymous"></script>
|
||||
<script src="../people-groups-grid.js" integrity="sha384-q89eAM2NZdjf/etPJjSO4b31cIO6CD8ZA28BVYaZ2wNd46RztNl9BI0J+XS69l7e" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <people-groups-grid> custom element. -->
|
||||
<script src="../../people-groups-grid.js" integrity="sha384-SSTG1RUFoIjmfKCE2kvXqr3T0EfIHCys9RQ1NI+DtzhqGtRncZ9IYKEsXhyPV7gN" crossorigin="anonymous"></script>
|
||||
<script src="../../people-groups-grid.js" integrity="sha384-q89eAM2NZdjf/etPJjSO4b31cIO6CD8ZA28BVYaZ2wNd46RztNl9BI0J+XS69l7e" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <research-dashboard-map> custom element. -->
|
||||
<script src="../research-dashboard.js" integrity="sha384-czl1wL6/vRprToHEGJK5KEW0RxlfritI1CldVbHBUUxH34fxO1SxXtO7tKjohltp" crossorigin="anonymous"></script>
|
||||
<script src="../research-dashboard.js" integrity="sha384-QtXmg1sKDCXljaSvuGeRuUkpFuNWiAMRsz2Sk5tluaUTXkVfz8y2MKWdGLVCdSig" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
Loading…
Reference in a new issue