Skip to content

fix: unbreak release format check + clearer verify --verbose output#12

Merged
robdmoore merged 2 commits into
mainfrom
fix/oxfmt-changelog-and-output-readability
Jul 9, 2026
Merged

fix: unbreak release format check + clearer verify --verbose output#12
robdmoore merged 2 commits into
mainfrom
fix/oxfmt-changelog-and-output-readability

Conversation

@robdmoore

Copy link
Copy Markdown
Member

Summary

The 1.1.0 release failed CI on the format check, and verifyx all --verbose output was hard to scan. This fixes the release breakage and improves the failure/table output.

The release failure

The format check failed in CI on CHANGELOG.md. release-please generates the changelog in a markdown style oxfmt rewrites. It couldn't be reproduced locally because verifyx all runs oxfmt in fix mode locally — which silently reformatted CHANGELOG.md (leaving it dirty in the working tree) rather than failing. CI runs oxfmt --check ., can't rewrite, and exits 1. Committing the reformatted file wouldn't help either: release-please regenerates it unformatted next release.

Fix: ignore CHANGELOG.md in .oxfmtrc.json so neither check nor fix mode touches it.

Output readability

  • Failing checks stand out. Under --verbose every check prints, so a lone failure was buried mid-list. Each failing check's output is now re-printed in red under a ▶ <name> (failed) heading at the end of the run, just before the summary.
  • duplicate-code table no longer looks like a failure. jscpd hardcodes red header cells in its stats table (even on a clean 0-clones run) and ignores NO_COLOR/FORCE_COLOR. A new transformOutput hook on external checks strips jscpd's red so the table renders in the default colour.

Notes

The local fix-mode auto-rewriting of release-please's CHANGELOG.md is a silent footgun that any consumer project pairing this format check with release-please would hit. This PR closes it here; worth considering whether verifyx init should seed the same ignore for consumers.

Test plan

  • npm run verify — all 11 checks + 113 tests pass
  • Verified duplicate-code table headings render without red under verifyx all --verbose
  • Forced a format failure in --check mode and confirmed failing checks re-print in red at the end
  • Added src/shared/color.test.ts covering paintRed / withoutRed

robdmoore and others added 2 commits July 9, 2026 18:19
release-please generates CHANGELOG.md in a markdown style oxfmt rewrites.
Locally the format check runs in fix mode and silently reformatted the
file (so it never failed), but CI runs oxfmt --check and failed on it.
Ignore CHANGELOG.md in .oxfmtrc.json so neither mode touches it.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Under --verbose every check prints, so a single failure was buried
mid-list. Re-print each failing check's output in red under a
"(failed)" heading at the end of the run so the failing step stands out.

jscpd hardcodes red header cells in its stats table (even on a clean
run, which reads like a failure) and ignores NO_COLOR/FORCE_COLOR. Add a
transformOutput hook to external checks and use it to strip jscpd's red
so the table renders in the terminal's default colour.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@robdmoore robdmoore merged commit afabedf into main Jul 9, 2026
1 check passed
@robdmoore robdmoore deleted the fix/oxfmt-changelog-and-output-readability branch July 9, 2026 10:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant