Skip to content

Releases: Affanmir/diff-cover-action

v2.0.0

08 Apr 18:02

Choose a tag to compare

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

08 Apr 10:57

Choose a tag to compare

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

07 Apr 19:07

Choose a tag to compare

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

07 Apr 17:49

Choose a tag to compare

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'