Skip to content

Releases: Affanmir/diff-cover-action

v2.1.1

Choose a tag to compare

@Affanmir Affanmir released this 23 Jun 09:48

What's Changed in v2.1.1

A patch release — fully backward compatible with v2.1.0. Stay on @v2 or bump your pin; no input/output changes.

🐛 Fixed

Markdown tables now render correctly in PR comments and step summaries. The per-file coverage/quality tables emitted a blank line right after the header-separator row, which broke the table layout on GitHub (rows showed as raw text instead of a table). Thanks @DavidDeSloovere for the fix. (#13, fixes #11)

🧰 Developer experience

  • Dev Container configuration (.devcontainer/) for a one-command, reproducible Python development environment. (#12)

📝 Documentation

  • New Quickstart section, an honest comparison against alternative tools, and expanded community-standards files (Code of Conduct, Security Policy). (#8)

Upgrading

No action required — fully backward compatible:

- uses: Affanmir/diff-cover-action@v2     # tracks v2.x, now v2.1.1
# or pin exactly
- uses: Affanmir/[email protected]

Full Changelog: v2.1.0...v2.1.1

v2.1.0

Choose a tag to compare

@Affanmir Affanmir released this 30 Apr 04:18

What's New in v2.1.0

Title input for PR comments

A new optional title input renders an H2 heading at the top of the PR comment. Useful in monorepos where a matrix of coverage jobs runs and each comment needs to identify which app or package it belongs to.

- uses: Affanmir/diff-cover-action@v2
  with:
    title: partners-app
    coverage-files: apps/partners-app/coverage/lcov.info
    comment-identifier: diff-cover-partners-app
    fail-under: '80'

When title is empty (default), no heading is rendered — behavior is unchanged from v2.0.0.

Documentation

  • README adds a Comment Customization input table and a Monorepo Matrix advanced example
  • All quick-start snippets in the README, the GitHub Pages site, and llms.txt now reference @v2
  • CHANGELOG updated for 2.1.0

Migration from v2.0.0

No action needed — fully backwards compatible. Just bump the ref:

- uses: Affanmir/diff-cover-action@v2   # tracks v2.x
# or pin
- uses: Affanmir/[email protected]

Full Changelog: v2.0.0...v2.1.0

v2.0.0

Choose a tag to compare

@Affanmir Affanmir released this 08 Apr 18:02

What's New in v2.0.0

Redesigned PR Comments

PR comments now feature a polished, visual design inspired by tools like Codecov and SonarQube:

  • Shields.io coverage badge — large, color-coded badge showing coverage percentage at a glance
  • Threshold pass/fail badge — instant visual status
  • Unicode progress bar████████████████░░░░ alongside the badge
  • Per-file status icons — 🟢 (≥90%), 🟡 (≥70%), 🔴 (<70%)
  • Compact metric layout — key stats in a single line

Improved Discoverability

  • GitHub Pages site with Schema.org structured data
  • llms.txt for AI tool discoverability (Claude, ChatGPT, Perplexity)
  • 15 repository topics added
  • GitHub Discussions enabled
  • Marketplace branding updated (shield/blue)

Other Changes

  • Action name: Diff Cover — PR Coverage & Quality Reports
  • Action now dogfoods itself — posts real coverage comments on its own PRs
  • README overhauled with comparison table, badges, and "Why This Action?" section
  • Converted from Docker to composite action for faster execution

Migration from v1

Update your workflow reference:

# Before
- uses: Affanmir/diff-cover-action@v1

# After
- uses: Affanmir/diff-cover-action@v2

The only breaking change is the PR comment format — if you parse the comment body, update your patterns.

Full Changelog: v1.2.0...v2.0.0

v1.2.0

Choose a tag to compare

@Affanmir Affanmir released this 08 Apr 10:57

What's Changed

Fixed

  • Critical: Converted from Docker-based action to composite action — Docker actions require the Docker daemon on the runner, which is unavailable on lightweight runners (ubuntu-slim, Namespace runners, etc.). The action now runs directly on the runner via shell steps, requiring no Docker.

How it works now

  1. pip install the three dependencies (diff-cover, Jinja2, requests)
  2. Configure git safe.directory
  3. Run entrypoint.py with all inputs passed as explicit INPUT_* env vars

Migration

No changes needed — the action interface (inputs/outputs) is identical. If you're on @v1, you already have this fix.

Full Changelog: v1.1.0...v1.2.0

v1.1.0

Choose a tag to compare

@Affanmir Affanmir released this 07 Apr 19:07

What's Changed

Added

  • Issue templates (bug report and feature request)
  • Pull request template with checklist
  • CODEOWNERS file

Fixed

  • Critical: Hyphenated action inputs (coverage-files, compare-branch, etc.) were not being read due to env var name mismatch — all hyphenated inputs now work correctly
  • Docker Build CI job failing because verify step appended args to ENTRYPOINT
  • Git safe.directory error when Docker actions mount the runner workspace
  • GHCR image push failing due to uppercase characters in repository name
  • Ruff lint/format violations and mypy type errors

Full Changelog: v1.0.0...v1.1.0

v1.0.0

Choose a tag to compare

@Affanmir Affanmir released this 07 Apr 17:49

Full Changelog: https://github.com/Affanmir/diff-cover-action/commits/v1.0.0
First release — a zero-vendor-lock-in GitHub Action wrapping diff-cover with native GitHub integration.

Features

  • Coverage mode (diff-cover) — test coverage on changed lines only
  • Quality mode (diff-quality) — lint violations on changed lines (flake8, pylint, ruff, mypy, eslint, and more)
  • Idempotent PR comments — auto-posted summary, updates on re-run
  • Inline annotations — uncovered lines shown directly in PR diff
  • Step summaries — coverage table in Actions run UI
  • Structured outputstotal-percent, threshold-met, etc. for downstream steps
  • Shields.io badge generation
  • Automatic shallow clone repair
  • Full CLI parity — all 26 diff-cover flags exposed as inputs
  • Fork PR handling — graceful degradation

Quick Start

- uses: Affanmir/diff-cover-action@v1
  with:
    coverage-files: coverage.xml
    fail-under: '80'