All notable changes to this project are documented here. The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.4.0 — 2026-07-07
- support multiple named coverage categories per project (9491d66)
- Add ScanCode license scanning workflow (a174f0c)
- "Claude Code Review workflow" (f4d9b9d)
- "Claude PR Assistant workflow" (33f8378)
- distinguish per-category PR checks and correct D1 database binding (502e3e4)
0.3.0 — 2026-07-05
- add automated release workflows (#46) (67d8bff)
- create the release commit via GitHub's GraphQL API (#48) (69d7121)
- use the last CCN average in multi-file lizard XML reports (bc3dbbf)
- bump fast-xml-parser to v5 and fix ambient-env test gap in report action (16d03de)
0.2.0 — 2026-07-02
The reporting Action moved from "the Action runs the tool" to "the consumer runs the tool, the Action reads the file." You now run your tests, coverage tools, and (optionally) complexity/duplication tools yourself; the Action parses the report they produce and reports the numbers.
Coverage formats are auto-detected by content: LCOV, Cobertura XML, JaCoCo
XML, and the native Go coverage profile (go test -coverprofile). go is
parsed directly — never converted. coverage-path is optional; when unset, the
Action probes documented default paths and uses the first hit (an explicit path
always wins). See docs/generating-coverage-reports.md.
- (a) The Action no longer runs your tests or coverage tools. It previously
detected the language and ran
go tool cover,coverage.py, Istanbul, etc. Now you must produce the coverage report yourself before the Action step. Thecoverage-report-go/coverage-report-python/coverage-report-jsinputs are removed; usecoverage-path(or rely on auto-detection). - (b) jscpd is no longer auto-installed. Duplication silently disappears for
consumers who relied on the Action installing jscpd — unless you add a jscpd
step yourself, or set
max-duplication(which now fails loudly when no jscpd report is found, rather than skipping). The same fail-when-configured rule applies tomax-complexity. - (c) The bundle moved:
dist/run.js→dist/index.js. The action entry is now anode20action (main: dist/index.js) instead of a composite step that invokedcollect.sh.collect.shandtest/collect-parsers.share removed.
# The Action detected the language, ran the tools, and auto-installed jscpd.
- uses: CoverageTracker/coverage-tracker/.github/actions/report@v0.1.2
with:
worker-url: https://coverage-tracker.example.com
coverage-report-js: coverage/coverage-summary.json
max-duplication: '5'# You run the tools; the Action reads the report (auto-detected).
- run: npm test -- --coverage # writes coverage/lcov.info
- run: npx jscpd . --reporters json --output ./jscpd-report # only if you want duplication
- uses: CoverageTracker/coverage-tracker/.github/actions/report@v0.2.0
with:
worker-url: https://coverage-tracker.example.com
# coverage-path is auto-detected; complexity/duplication are optional
max-duplication: '5' # now requires a jscpd report- Content-based coverage format sniffer supporting LCOV, Cobertura, JaCoCo, and the Go coverage profile.
- Optional complexity reports (Radon JSON, gocyclo text, Lizard XML) and jscpd
duplication reports, resolved via explicit
*-pathinputs or default-path probing. JaCoCo coverage reports derive cyclomatic complexity for free. - New inputs:
coverage-path,coverage-tool(Cobertura only),complexity-path,duplication-path,github-token. fast-xml-parseras the single bundled XML dependency.
action.ymlis now anode20action (main: dist/index.js).src/run.tsis now a pure helper module (threshold/summary/Check-Run logic); orchestration lives in the newsrc/index.ts.
collect.shand its inline parsers;test/collect-parsers.sh.coverage-report-go/coverage-report-python/coverage-report-jsinputs.dist/run.js(replaced bydist/index.js).