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.
This commit is contained in:
Doxa Maps 2026-09-29 18:40:27 +00:00
parent cc65f40c1e
commit 7d816f5eab
4 changed files with 7 additions and 17 deletions

View file

@ -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}`)
}

View file

@ -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

View file

@ -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

View file

@ -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"
}
}
]
}