mirror of
https://github.com/pbakaus/impeccable.git
synced 2026-09-18 17:16:46 +03:00
Release: skill v4.1.0, CLI v3.6.0, extension v1.3.2 (#584)
* Release: skill v4.1.0, CLI v3.6.0, extension v1.3.2 Skill 4.1.0: the build path becomes a recorded setting with a per-round toggle, the direction round routes challengers by verdict, surface rounds deal structure, and critique delivers its report and its close. CLI 3.6.0: contrast findings stop assuming white when the ground cannot be read, waivers scope to the element that carries them, and Hermes Agent and Antigravity install natively. Extension 1.3.2: no source change, but the bundled engine is rebuilt at release, so the same 59 rules ship with the false-positive work behind them. Chrome and Firefox from the one manifest. Harness output regenerated with build:release, which is what the version validator checks against the manifests. Written with AI assistance (Claude Code). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Bound release-note extraction to the entry it names Every v4.0.x skill release shipped v4.0.0's notes. The extractor took the first `<ul class="cf-items">` after the version header with no upper bound, and the v4.0.1 through v4.0.4 entries wrote their bullets in a `cf-entry-list` instead, so the search ran past all four and landed in v4.0.0. Nothing failed, because finding a list somewhere was treated as success. The search now stops at the entry's own `</article>` and fails with the reason when the entry has no readable list, which is the case the old code silently published its way through. The changelog side is fixed in impeccable-site, where those five entries now use `cf-items` like the other 46: `cf-entry-list` also had no CSS at all, so their bullets were rendering unstyled on the changelog page. Written with AI assistance (Claude Code). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
103343d746
commit
2c33196c51
@@ -166,9 +166,20 @@ if (headerIdx === -1) {
|
||||
// Notes are the entry's bullet list. Scoping to <ul class="cf-items">
|
||||
// skips the optional lead paragraph, before/after figure, and stat row
|
||||
// that the headline release (v3.5.0) carries, so release notes stay clean.
|
||||
//
|
||||
// The search is bounded to this entry's own </article>. Unbounded, a version
|
||||
// whose list carried any other class was silently skipped and the NEXT
|
||||
// entry's bullets shipped as its release notes: every v4.0.x skill release
|
||||
// went out carrying v4.0.0's notes that way, and nothing failed. A mismatch
|
||||
// now stops the release instead of publishing another version's words.
|
||||
const articleEnd = changelogHtml.indexOf('</article>', headerIdx);
|
||||
const listStart = changelogHtml.indexOf('<ul class="cf-items">', headerIdx);
|
||||
const listEnd = changelogHtml.indexOf('</ul>', listStart);
|
||||
if (listStart === -1 || listEnd === -1) fail('Changelog entry markup is malformed.');
|
||||
if (articleEnd !== -1 && listStart > articleEnd) {
|
||||
fail(`The changelog entry for "${cfg.changelogLabel}${version}" has no <ul class="cf-items"> of its own. `
|
||||
+ 'Its bullets are in a list this script cannot read, and the next entry\'s notes would ship instead.');
|
||||
}
|
||||
const entryHtml = changelogHtml.slice(listStart, listEnd + '</ul>'.length);
|
||||
|
||||
const notes = htmlToMarkdown(entryHtml);
|
||||
|
||||
Reference in New Issue
Block a user