Skip to content

chore: release v0.2.0 — version bump, CHANGELOG, and PyPI + GHCR publish workflow - #77

Merged
Liohtml merged 1 commit into
mainfrom
claude/repo-issues-features-3ZLdb
Jun 11, 2026
Merged

chore: release v0.2.0 — version bump, CHANGELOG, and PyPI + GHCR publish workflow#77
Liohtml merged 1 commit into
mainfrom
claude/repo-issues-features-3ZLdb

Conversation

@Liohtml

@Liohtml Liohtml commented Jun 11, 2026

Copy link
Copy Markdown
Owner

Why

v0.1.0 (21 May) is the only release, yet 18 commits have landed on main since — including all the security hardening (consent gate, SSRF guard, web auth, PHI redaction), reliability fixes, and new features (anatomy templates, discovery CLI, model-ID fixes). Meanwhile pip install medcheck and ghcr.io/liohtml/medcheck are advertised in the README but no automation actually publishes them — the repo only had ci.yml + codeql.yml. This PR cuts a real v0.2.0 and adds the missing publish pipeline.

Changes

  • Version bump 0.1.0 → 0.2.0 in pyproject.toml + __init__.py. The CLI version test now derives from __version__ so it won't need manual edits on future bumps.
  • CHANGELOG restructured: the unreleased changes are assigned to [0.2.0] - 2026-06-11, the two duplicate ### Fixed sections are merged, a fresh empty [Unreleased] block is added, and proper compare links are wired (v0.1.0...v0.2.0).
  • .github/workflows/release.yml — triggered on a v* tag:
    1. builds sdist+wheel, verifies the tag matches the package version (fails fast on mismatch), and runs twine check;
    2. publishes to PyPI via OIDC Trusted Publishing (no API-token secret needed);
    3. builds and pushes the lite + full Docker images to GHCR (:latest, :<tag>, :lite, :full, :<tag>-lite/-full) with buildx + GHA cache.

Verified locally

  • Wheel builds as medcheck-0.2.0 and ships the data files (prompts/anatomy/*.txt, prompts/*.txt, report_schema.json) — the recurring packaging risk is checked.
  • twine check passes on both artifacts.
  • ruff, ruff format, 122 tests all green.

⚠️ Maintainer action required before tagging (cannot be done from CI)

  1. PyPI Trusted Publisher — configure once at https://pypi.org/manage/account/publishing/: project medcheck, workflow release.yml, environment pypi. (Also confirm the medcheck name on PyPI is owned by this project.)
  2. Create the release — after this merges, push the tag to trigger publishing:
    git tag -a v0.2.0 -m "MedCheck v0.2.0" && git push origin v0.2.0
    I have not created the tag/release — that's the outward-facing publish step and is left to you.

Note on positioning

Before broadening distribution, consider landing the intended-use / disclaimer docs (#59 D) given the medical-device positioning discussed in the pipeline epic (#51). Not a blocker for this PR, but worth a conscious decision before the tag is pushed.

Note: development is constrained to the claude/repo-issues-features-3ZLdb branch.

https://claude.ai/code/session_01KYcUxCGAHaTPrRHTzJCWQz


Generated by Claude Code

Summary by CodeRabbit

  • Chores

    • Version bumped to 0.2.0
    • Added automated release pipeline triggered by version tags, which builds Python packages, validates artifacts, publishes to PyPI using OIDC Trusted Publishing, and builds/pushes Docker images to the container registry
    • Updated changelog structure with Unreleased section
  • Tests

    • Updated CLI version test to dynamically reference package version

…workflow

- Bump version 0.1.0 -> 0.2.0 (pyproject + __init__); CLI version test now
  derives from __version__ instead of hardcoding.
- Restructure CHANGELOG: assign the 18 unreleased changes to [0.2.0] (2026-06-11),
  merge the duplicate Fixed sections, add a fresh [Unreleased] block and proper
  compare links.
- Add .github/workflows/release.yml: on a v* tag it builds + twine-checks the
  package and publishes to PyPI via OIDC Trusted Publishing (no token secret),
  and builds + pushes the lite/full Docker images to GHCR. Tag/package version
  mismatch fails the build.

Verified locally: wheel builds and ships the prompts/anatomy *.txt + *.json data
files, twine check passes, 122 tests green.

https://claude.ai/code/session_01KYcUxCGAHaTPrRHTzJCWQz
@coderabbitai

coderabbitai Bot commented Jun 11, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

Pull request was closed or merged during review

📝 Walkthrough

Walkthrough

This PR releases version 0.2.0 by synchronizing the version constant across package metadata and code, adding a complete GitHub Actions release pipeline that builds distributions and publishes to PyPI and GHCR, and preparing the changelog with an Unreleased section and cleaned-up documentation.

Changes

Release v0.2.0

Layer / File(s) Summary
Version synchronization across package and tests
pyproject.toml, src/medcheck/__init__.py, tests/unit/test_cli.py
Package version is bumped from 0.1.0 to 0.2.0 in project metadata, exported as __version__ in the package, and the CLI version test is updated to verify the dynamic value instead of a hard-coded string.
Release automation workflow for PyPI and GHCR
.github/workflows/release.yml
New GitHub Actions release pipeline triggered on v* tag pushes: validates tag against pyproject.toml version, builds and verifies Python distributions with twine check, publishes to PyPI using OIDC Trusted Publishing, and builds/pushes Docker images (lite/full variants) to GHCR with versioned and latest tags.
Changelog: Unreleased section and cleanup
CHANGELOG.md
Changelog adds an Unreleased section scaffold with standard subsection headings, removes initial scaffold description from 0.2.0 entry, removes a redundant Fixed header, and corrects comparison links so [Unreleased] points to v0.2.0...HEAD instead of HEAD...HEAD.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐰 A version bump hops through the code,
From 0.1 to 0.2, a lighter load.
Workflows dance to PyPI's tune,
Docker images sail past the moon.
Changelogs sing of unreleased dreams—
Release time flows in CI streams! 🚀

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title 'chore: release v0.2.0 — version bump, CHANGELOG, and PyPI + GHCR publish workflow' accurately reflects the main changes: version bump, changelog updates, and new release automation workflow.
Description check ✅ Passed The PR description comprehensively covers why the release is needed, all key changes (version bump, changelog, workflow), local verification, and maintainer action items, though some testing checkboxes from the template are not explicitly marked.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/repo-issues-features-3ZLdb

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@codecov

codecov Bot commented Jun 11, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@Liohtml
Liohtml merged commit 4f23b35 into main Jun 11, 2026
13 of 14 checks passed
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.

2 participants