From 7d816f5eabd607ee5da4732a8ff2add6e8dad67d Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Tue, 29 Sep 2026 18:40:27 +0000 Subject: [PATCH] Four more gates:post reds, hidden until a failed gate printed why - research-map.vue's openPacket read and wrote _packetBusy, a name 8ab3dc0f5 replaced with the reactive packetBusy ref. Reading an undeclared name throws, so the packet export threw a ReferenceError on every click, in doxa-research-map and in research-map-plus-grid, the production map that compiles it. It uses packetBusy.value now (check:no-free-identifiers). - check:list-prop-unit and check:optional-t-equivalence read every entry of library/i18n/locales as a locale, and the folder has held a README.md since bba33e783. They read locale FOLDERS now. - people-groups-grid's regions-look instance previewed two props (filters-toggle, backdrop) of a grid merge that is not on development, so the page showed nothing different and check:instance-config-keys failed. It returns with that merge. --- internal/check-list-prop-unit.mjs | 3 ++- internal/check-optional-t-equivalence.mjs | 4 +++- plugin-designs/doxa-research-map/research-map.vue | 4 ++-- .../people-groups-grid.instances.json | 13 ------------- 4 files changed, 7 insertions(+), 17 deletions(-) diff --git a/internal/check-list-prop-unit.mjs b/internal/check-list-prop-unit.mjs index d094f8716..dc6dbbc08 100644 --- a/internal/check-list-prop-unit.mjs +++ b/internal/check-list-prop-unit.mjs @@ -83,7 +83,8 @@ check('an unknown list -> empty, not a crash', L.listLabel('project-9999', tFrom } check('the English catalogue matches the registry, word for word', bad, []) } { const missing = [] - for (const lc of readdirSync(join(ROOT, 'library/i18n/locales'))) { + // Locale FOLDERS only: the folder also holds a README.md, which is not a locale. + for (const lc of readdirSync(join(ROOT, 'library/i18n/locales'), { withFileTypes: true }).filter((d) => d.isDirectory()).map((d) => d.name)) { const c = cat(lc) for (const l of L.peopleGroupLists()) for (const f of ['label', 'definition']) if (!c[l.id]?.[f]) missing.push(`${lc}:${l.id}.${f}`) } diff --git a/internal/check-optional-t-equivalence.mjs b/internal/check-optional-t-equivalence.mjs index 97df870b6..46b09f5e6 100644 --- a/internal/check-optional-t-equivalence.mjs +++ b/internal/check-optional-t-equivalence.mjs @@ -300,7 +300,9 @@ for (const [file, helper, fallbackFrag] of SITES) { const used = [...new Set([...literal, ...catIds])] ok(used.length > literal.length, `all-people-groups: ${used.length} keys verified = ${literal.length} literal + ${catIds.length} reached only through tr(cat.id)`) - const locales = readdirSync(new URL('../library/i18n/locales', import.meta.url)) + // Locale FOLDERS only: the folder also holds a README.md (bba33e783), which is not a locale. + const locales = readdirSync(new URL('../library/i18n/locales', import.meta.url), { withFileTypes: true }) + .filter((d) => d.isDirectory()).map((d) => d.name) const gaps = [] for (const k of used) for (const loc of locales) { let v diff --git a/plugin-designs/doxa-research-map/research-map.vue b/plugin-designs/doxa-research-map/research-map.vue index b5c629fd9..74bd0eff8 100644 --- a/plugin-designs/doxa-research-map/research-map.vue +++ b/plugin-designs/doxa-research-map/research-map.vue @@ -1536,8 +1536,8 @@ provide('legendExportBusy', exportBusy) // Neither export hands over a file any more: the poster prints through printImageBlob and the packet // through the shared usePosterPrints.printPacket, so the download helper that served packet.pdf is gone. async function openPacket(variant = 'full') { - if (_packetBusy) return - _packetBusy = true + if (packetBusy.value) return + packetBusy.value = true try { // ★ THE PACKET PRINTS, AND IT PRINTS THROUGH THE SHARED RENDERER (audit card 2, and // the standing rule: an export button opens the print dialog, never hands over a file). This diff --git a/plugin-designs/people-groups-grid/people-groups-grid.instances.json b/plugin-designs/people-groups-grid/people-groups-grid.instances.json index 22cb92632..9067103d1 100644 --- a/plugin-designs/people-groups-grid/people-groups-grid.instances.json +++ b/plugin-designs/people-groups-grid/people-groups-grid.instances.json @@ -22,19 +22,6 @@ "show-search": "false", "show-filters": "false" } - }, - { - "id": "regions-look", - "title": "People Groups Grid — the regions-dashboard look (link toggle + root watermark)", - "_why": "A merge preview (2026-09-28): SAME component and SAME cards as the standalone instance above, with only the two props he chose actually differing. Open this beside 'people-groups-grid' — if anything other than the filters toggle's styling and the watermark's placement differs between the two pages, the merge has changed something it was not asked to.", - "props": { - "profile": "people-groups-grid", - "provider": "maplibre", - "instanceId": "people-groups-grid-regions-look", - "pray-base-url": "https://pray.doxa.life", - "filters-toggle": "link", - "backdrop": "root" - } } ] }