diff --git a/internal/check-packet-a1-structure.mjs b/internal/check-packet-a1-structure.mjs index 7eff7eb28..58a702cfc 100644 --- a/internal/check-packet-a1-structure.mjs +++ b/internal/check-packet-a1-structure.mjs @@ -70,7 +70,8 @@ function sequence(html) { : /funnel-title/.test(seg) ? 'triangle' : /sheet-life/.test(cls) ? 'life' : /sheet-christian/.test(cls) ? 'christian' - : /sheet-sets\b/.test(cls) ? 'sets' + : /sheet-sets-bounded/.test(cls) ? 'bounded' + : /sheet-sets-centered/.test(cls) ? 'centered' : /sheet-worksheet/.test(cls) ? 'worksheet' : /wheel-title/.test(seg) ? 'wheel' : /class="card"/.test(seg) ? 'profiles' @@ -84,7 +85,7 @@ function sequence(html) { const liftedMap = R.liftMap(MAP_ONLY_SHEET) const full = R.buildPacket(zone, groups, new Map(), liftedMap, withK, christian, 'full', sets) const light = R.buildPacket(zone, groups, new Map(), liftedMap, withK, christian, 'lightweight', sets) -const FULL = 'map · triangle · life · christian · profiles · sets · wheel · points' +const FULL = 'map · triangle · life · christian · profiles · bounded · centered · wheel · points' const LIGHT = 'map · triangle · worksheet · wheel · points' ok(sequence(full) === FULL, `full-detail order is\n ${sequence(full)}\n expected\n ${FULL}`, `full detail: ${FULL}`) ok(sequence(light) === LIGHT, `lightweight order is\n ${sequence(light)}\n expected\n ${LIGHT}`, `lightweight: ${LIGHT}`) diff --git a/internal/check-packet-variants.mjs b/internal/check-packet-variants.mjs index 53a133d17..f69fbf0bb 100644 --- a/internal/check-packet-variants.mjs +++ b/internal/check-packet-variants.mjs @@ -85,19 +85,19 @@ ok(count(light, /sheet-christian/g) === 0, 'lightweight still carries the %-evan ok(count(light, /funnel-title/g) === count(full, /funnel-title/g), 'lightweight lost the funnel (the narrowing triangle)') // …and the SETS page, which is back matter a reader sits with rather than carries — the same // reason the life calendar and the %-evangelical grid are dropped. -// ★ ONE SETS PAGE CARRYING BOTH CHARTS (2026-09-29: two square panels side by side), asserted -// by each chart's own class, so losing EITHER chart fails by name rather than inside a total. -ok(count(full, /
` + ? `` : `
${esc(t('no_photo'))}
`; return `
${img} @@ -1288,16 +1294,18 @@ export function createPacketRenderer({ strings, lang = 'en', fontData = null, de if (rows) legend = `
${esc(t('sets_rings_head'))}
${rows}
`; } - // ★ ONE PAGE (2026-09-29), superseding the one-chart-per-page split: the two figures are a - // PAIR and read as one, square panels side by side in the middle of the page, the legend under both. - // The page key stays 'sets', so the lightweight variant still drops it whole. - return sheet(` + // ★ ONE CHART PER PAGE (2026-09-29, second look: the bounded set on one page and the centered set on + // another), each a large square panel centred on its page with its heading — the Module 1 panel, + // at a size a printed page can carry. The centered set's page carries the ring legend beneath it. + // Both pages share the pair's heading so they read as one spread; the first carries the lede. + // The page key stays 'sets', so the lightweight variant still drops both together. + return panels.map((p, i) => sheet(`
${esc(t('sets_kicker'))}

${esc(t('sets_title'))}

-

${esc(t('sets_lede'))}

-
${panels.map((p) => p.html).join('')}
- ${legend} - `, `sheet-sets sheet-flow ${panels.map((p) => `sheet-sets-${p.kind}`).join(' ')}`); + ${i === 0 ? `

${esc(t('sets_lede'))}

` : ''} +
${p.html}
+ ${p.kind === 'centered' ? legend : ''} + `, `sheet-sets sheet-flow sheet-sets-${p.kind}`)).join(''); } // ── PAGE n+2: the prayer wheel ──────────────────────────────────────────────