Decouple prose: no go-base / nuxtbase / nuxtinator / doxa-base names in plugin comments and docs
Comments and prose only, no code change (DECOUPLE-go-base-mentions.md sections B and C, outside library/ and README.md): stack-demo's page-flow note becomes 'a normal host page', the share-link and CORS comments say 'the live test host', embeddability.md's Traefik note says 'a self-hosted reverse proxy' and drops the internal proxy file path, and how-to's hosting option becomes 'a Git host you run (for example Forgejo)'. stack-demo.vue's @description feeds the generated tree, so the landing regenerates the tree. Section A (QA widget), library/ and package.json are left to studio.
This commit is contained in:
parent
1d569edd13
commit
44a1afba04
7 changed files with 10 additions and 10 deletions
|
|
@ -81,9 +81,9 @@ apply it. Rule of thumb: **a path with ≥2 directory segments under the tree ro
|
|||
page → serve it framable.**
|
||||
|
||||
Portable ways to implement the split, by host:
|
||||
- **Traefik** (nuxtbase/go-base): a higher-priority router on `PathRegexp(^/plugin-assets/[^/]+/[^/]+/)`
|
||||
sets `Content-Security-Policy: frame-ancestors *` + clears `X-Frame-Options`. (Live example:
|
||||
`/data/coolify/proxy/dynamic/doxa-maps-embed.yaml`.)
|
||||
- **Traefik** (a self-hosted reverse proxy): a higher-priority router on `PathRegexp(^/plugin-assets/[^/]+/[^/]+/)`
|
||||
sets `Content-Security-Policy: frame-ancestors *` + clears `X-Frame-Options`. (Live example: a Traefik
|
||||
dynamic-configuration file on the test host.)
|
||||
- **Cloudflare Pages / Netlify**: a `_headers` file — `/<bundle>/*/* Content-Security-Policy: frame-ancestors *`.
|
||||
- **Nginx**: `location ~ ^/[^/]+/[^/]+/ { add_header Content-Security-Policy "frame-ancestors *"; }`
|
||||
- **GitHub Pages**: serves no custom headers → pages are framable by default (no frame-ancestors), which is already correct for direct embeds.
|
||||
|
|
|
|||
|
|
@ -215,8 +215,8 @@ there are options:**
|
|||
site serves them, so **doxa-life is the CDN**. No third party.
|
||||
- **GitHub.** Push the built maps to a public GitHub repo and serve them free through
|
||||
**GitHub Pages or jsDelivr** — **GitHub is the CDN**.
|
||||
- **doxa-base's built-in home (Forgejo).** doxa-base ships **Forgejo as a CDN** — push the maps
|
||||
there and it serves them, with no extra service to set up.
|
||||
- **A Git host you run (for example Forgejo).** Push the maps there and serve them from it, with
|
||||
no extra service to set up.
|
||||
- **Anywhere else.** Any static host works — Cloudflare, an S3-style bucket, etc.
|
||||
|
||||
Pick one home and **every partner site embeds the same map from it** — change the map once and it
|
||||
|
|
|
|||
|
|
@ -223,7 +223,7 @@ function onDashboardFilter({ filterSet = {}, searchTerm = '' } = {}) {
|
|||
// Tier 1 takes a whole url, so it is COMPUTED rather than hardcoded: resolveEmbedBase() is the same
|
||||
// helper ShareButton uses (profileConfig.embedBaseUrl → window.MAP_EMBED_BASE_URL → the root the
|
||||
// built bundle derives from its own script url), so the link stays correct on doxa.life, on
|
||||
// nuxtbase.app and in a dropped tree with no configuration. Hardcoding an absolute url here would
|
||||
// the live test host and in a dropped tree with no configuration. Hardcoding an absolute url here would
|
||||
// pin every share to whichever host happened to build it.
|
||||
//
|
||||
// Note this is exactly the two-host defect class: research-dashboard standalone PASSES the same
|
||||
|
|
|
|||
|
|
@ -1124,7 +1124,7 @@ export default defineComponent({
|
|||
// ★ THE CORS-READABLE COPY (generate-tree writes it beside this bundle, byte-identical).
|
||||
// A script embed on a partner page FETCHES the manifest cross-origin, and the live static layer
|
||||
// sends Access-Control-Allow-Origin only on paths INSIDE a folder of the tree — every bundle file
|
||||
// and assets/ carry it, the ROOT manifest.json does not (measured 2026-09-25 on nuxtbase: the
|
||||
// and assets/ carry it, the ROOT manifest.json does not (measured 2026-09-25 on the live test host: the
|
||||
// root 200 without it, doxa-maps-spa/<anything> with it, even a 404). So on a foreign page the
|
||||
// copy is read FIRST (no CORS error in the host's console) and the root second; same-origin keeps
|
||||
// the root first. Script URLs still resolve against the TREE ROOT, never the copy's folder.
|
||||
|
|
|
|||
|
|
@ -159,7 +159,7 @@ watch(textDir, reflectDir)
|
|||
// The absolute url this composite is shared and iframed as. Built here rather than written as a
|
||||
// literal because resolveEmbedBase() walks profileConfig.embedBaseUrl → window.MAP_EMBED_BASE_URL →
|
||||
// the root this bundle derives from its OWN script url, so the link is right on doxa.life, on
|
||||
// nuxtbase.app and in a dropped tree with nothing configured.
|
||||
// the live test host and in a dropped tree with nothing configured.
|
||||
//
|
||||
// It MUST be absolute, which is the non-obvious part. resolveShareUrl returns a tier-1 shareUrl
|
||||
// VERBATIM (embedBase.js:95 — `return whole.trim()`, no resolution), and ShareButton feeds the same
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<p class="sub">Capability 4, STACK variant — the shared <code>StackLayout</code> renders two
|
||||
elements (<code><research-dashboard-map></code> then <code><people-groups-grid></code>)
|
||||
<strong>on top of each other</strong>, each at its natural height, so you
|
||||
<strong>scroll down</strong> through both on one page (the doxa-life / nuxtinator page-flow model).
|
||||
<strong>scroll down</strong> through both on one page, as on a normal web page.
|
||||
Embed <code><stack-demo></code> anywhere and the host page provides the scroll.</p>
|
||||
<div class="host">
|
||||
<stack-demo></stack-demo>
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
*
|
||||
* @element stack-demo
|
||||
* @description Groups TWO independent elements TOP-TO-BOTTOM so you can embed the pair on a page and
|
||||
* SCROLL down through all of it (the doxa-life / nuxtinator page-flow model), instead of switching
|
||||
* SCROLL down through all of it (the page-flow model of a normal host page), instead of switching
|
||||
* between them with tabs. Section 1 = the rich <research-dashboard-map> (facets + map + charts +
|
||||
* table); section 2 = the cap-2 <people-groups-grid> (live pray.doxa.life). Each renders at its
|
||||
* NATURAL height; the host page scrolls.
|
||||
|
|
|
|||
Loading…
Reference in a new issue