From b862c7d61ae985cddedceaf72ca60d5850651fd4 Mon Sep 17 00:00:00 2001 From: doxa-maps-88655c70 <88627970+doxa-maps-88655c70@users.noreply.github.com> Date: Fri, 25 Sep 2026 21:32:35 +0000 Subject: [PATCH] Export gate reads the tree name from the build config After the dx-maps rename, its public/doxa-maps literal made it SKIP (exit 2) without measuring. Validated against its baseline on the renamed tree: 4/4 one-click exports, 1700x2200 PNGs, 0 errors, as before the rename. Also: usage examples and present-tense comments in the gallery and planner name /dx-maps/ or the configured tree; both bundles rebuild byte-identical. --- internal/check-research-gallery-embed.mjs | 2 +- plugin-designs/doxa-maps-spa/doxa-maps-spa.vue | 4 ++-- plugin-designs/doxa-maps-spa/index.js | 2 +- .../doxa-research-map/scripts/check-export-one-click.mjs | 9 ++++++--- plugin-designs/prayer-walk-planner/index.html | 2 +- plugin-designs/prayer-walk-planner/index.js | 2 +- 6 files changed, 12 insertions(+), 9 deletions(-) diff --git a/internal/check-research-gallery-embed.mjs b/internal/check-research-gallery-embed.mjs index e609563dc..a1d5b84cc 100644 --- a/internal/check-research-gallery-embed.mjs +++ b/internal/check-research-gallery-embed.mjs @@ -31,7 +31,7 @@ * 4. zero failed requests to the TREE's own origin (a 404/CORS on our assets is our bug; third- * party tile/glyph hiccups are reported, not failed — they are not this repo's to fix). * - * PRECONDITION: a built tree in public/doxa-maps (this starts its own servers; no dev server). + * PRECONDITION: a built tree in public/ (named in the build config; this starts its own servers; no dev server). * Usage: node internal/check-research-gallery-embed.mjs [--mode js|iframe] [--only id,id] [--provider maplibre] * Exit: 0 pass · 1 fail · 2 SKIP (no built tree / no browser) · 75 NOT MEASURED (server identity) */ diff --git a/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue b/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue index 16fd3b5c3..b52a00129 100644 --- a/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue +++ b/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue @@ -1112,7 +1112,7 @@ export default defineComponent({ // TWO CANDIDATES, because the shell runs in two trees that put the manifest in different // places. The built tree has it beside the bundle folders (resolve() → /manifest.json). // The dev tree serves SOURCE from /plugin-designs/, where no manifest exists — it is a BUILD - // ARTIFACT and lives under /public/doxa-maps/. Trying the built-tree path second means a dev + // ARTIFACT and lives under /public// (the build config names the tree). Trying the built-tree path second means a dev // run finds the real manifest instead of going dark, and a production run is unchanged // (candidate 1 answers, candidate 2 is never requested). loadManifest() { @@ -1270,7 +1270,7 @@ export default defineComponent({ // Every scriptUrl comes out of manifest.json as a tree-relative path ("/.js"), // so it is only meaningful against the root the MANIFEST was read from. Those two roots are // the same in the built tree and DIFFERENT under the dev server, where the page is served - // from /plugin-designs/ while the manifest lives at /public/doxa-maps/. Resolving against the + // from /plugin-designs/ while the manifest lives at /public//. Resolving against the // document there produced 404 /plugin-designs/research-map-plus-grid/research-map-plus-grid.js // — a path that exists nowhere. Anchoring on the manifest's own directory makes one rule // correct for both trees (in the built tree manifestBase === base, so nothing changes). diff --git a/plugin-designs/doxa-maps-spa/index.js b/plugin-designs/doxa-maps-spa/index.js index ac1d33622..e0844194f 100644 --- a/plugin-designs/doxa-maps-spa/index.js +++ b/plugin-designs/doxa-maps-spa/index.js @@ -22,7 +22,7 @@ * or profile-config.treeBase. * * Usage from a host page (direct-JS, deploy-method-3): - * + * * * * diff --git a/plugin-designs/doxa-research-map/scripts/check-export-one-click.mjs b/plugin-designs/doxa-research-map/scripts/check-export-one-click.mjs index 59ac0386b..4f935d62d 100644 --- a/plugin-designs/doxa-research-map/scripts/check-export-one-click.mjs +++ b/plugin-designs/doxa-research-map/scripts/check-export-one-click.mjs @@ -31,7 +31,10 @@ import { resolve, dirname } from 'node:path' import { fileURLToPath } from 'node:url' const ROOT = resolve(dirname(fileURLToPath(import.meta.url)), '..', '..', '..') -if (!existsSync(resolve(ROOT, 'public/doxa-maps/research-map-plus-grid/research-map-plus-grid.js'))) { +// The tree's name comes from the build config, never a literal: the doxa-maps -> dx-maps rename +// turned the literal into a silent SKIP (exit 2) that measured nothing. +const { TREE_NAME } = await import(resolve(ROOT, 'internal/_tree-name.mjs')) +if (!existsSync(resolve(ROOT, `public/${TREE_NAME}/research-map-plus-grid/research-map-plus-grid.js`))) { console.log('SKIP check-export-one-click: no built research-map-plus-grid'); process.exit(2) } let chromium @@ -40,7 +43,7 @@ try { ({ chromium } = await import('playwright')) } catch { console.log('SKIP ch const freePort = () => new Promise(ok => { const s = createServer().listen(0, '127.0.0.1', () => { const p = s.address().port; s.close(() => ok(p)) }) }) const PROVIDER = process.argv.includes('--provider') ? process.argv[process.argv.indexOf('--provider') + 1] : '' // maplibre = the keyless engine const TP = await freePort(), HP = await freePort() -const TREE = `http://127.0.0.1:${TP}/doxa-maps` +const TREE = `http://127.0.0.1:${TP}/${TREE_NAME}` let lang = 'en' const srv = spawn(process.execPath, ['internal/serve-strict.mjs', '--port', String(TP)], { cwd: ROOT, stdio: 'ignore' }) const host = createServer((_, r) => { r.writeHead(200, { 'content-type': 'text/html' }); r.end(``) }).listen(HP, 'localhost') @@ -49,7 +52,7 @@ await new Promise(r => setTimeout(r, 800)) // Server identity by CONTENT: the served manifest must be this checkout's. { - const disk = readFileSync(resolve(ROOT, 'public/doxa-maps/manifest.json'), 'utf8') + const disk = readFileSync(resolve(ROOT, `public/${TREE_NAME}/manifest.json`), 'utf8') let served = '' for (let i = 0; i < 20 && !served; i++) { try { const r = await fetch(`${TREE}/manifest.json`); if (r.ok) served = await r.text() } catch { /* not up yet */ } diff --git a/plugin-designs/prayer-walk-planner/index.html b/plugin-designs/prayer-walk-planner/index.html index 703c76f0b..fdc6d4337 100644 --- a/plugin-designs/prayer-walk-planner/index.html +++ b/plugin-designs/prayer-walk-planner/index.html @@ -24,7 +24,7 @@ + ../../../public//prayer-walk-planner/prayer-walk-planner.js (the tree is named in the build config) and rewrites this script tag. --> diff --git a/plugin-designs/prayer-walk-planner/index.js b/plugin-designs/prayer-walk-planner/index.js index edaccecf4..89aa5312a 100644 --- a/plugin-designs/prayer-walk-planner/index.js +++ b/plugin-designs/prayer-walk-planner/index.js @@ -4,7 +4,7 @@ * Bundle entry for PRAYER WALK PLANNER — an experimental capability-1 plugin. * * Usage from a host page: - * + * * * * ★ MOUNTS THE ROOT SFC DIRECTLY — no ProfileLoader. Same choice golden-path-check and