diff --git a/ROADMAP.md b/ROADMAP.md index d0c3990..8cc4028 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -7,7 +7,7 @@ every tool. This is where that brain is headed. Direction, not promises — shaped by the two field reports this project is grounded in (the SDLC pain-point map and the ecosystem landscape). Open a Discussion to weigh in. -## Now (`master`, v0.11.0) +## Now (`master`, v0.12.0) The substrate is fully graded — decision math replaces every keyword heuristic: exemplar k-NN routing, entropy secret detection, noisy-OR goal-drift over paths **and** the identifiers a file diff --git a/scripts/build-pages.mjs b/scripts/build-pages.mjs index 50149ef..f4a7387 100644 --- a/scripts/build-pages.mjs +++ b/scripts/build-pages.mjs @@ -27,8 +27,17 @@ function lineMatch(text, re, fallback = "") { return m?.[1]?.trim() ?? fallback; } function latestChanges() { - const section = - changelog.match(/## \[[^\]]+\][\s\S]*?(?=\n## \[|\n\[Unreleased\]:|$)/)?.[0] ?? ""; + // Walk version sections in order and use the first one that actually has bullets — + // an empty "## [Unreleased]" (the normal state right after a release) must not win + // over the dated section below it that has the real content. + const sections = changelog.matchAll(/## \[[^\]]+\][\s\S]*?(?=\n## \[|\n\[Unreleased\]:|$)/g); + let section = ""; + for (const m of sections) { + if (/^- /m.test(m[0])) { + section = m[0]; + break; + } + } // Bullets wrap across several lines in the CHANGELOG; join each "- …" with its indented // continuation lines so the status page shows the whole item, not a truncated fragment. const items = [];