Skip to content

v6.25.0

Choose a tag to compare

@kdeldycke kdeldycke released this 13 Jun 06:15
Immutable release. Only release title and notes can be modified.
  • Add man page generation to the release and docs pipelines. A manpages job in _release-engine.yaml, activated by [tool.repomatic.manpages] config keys (script, asset-name) in pyproject.toml, shells out to click-extra man --output-dir man "${SCRIPT}" and uploads the rendered roff .1 files as a <asset-name>.tar.gz (defaulting to <package-name>-manpages.tar.gz) on the GitHub release; requires click-extra>=7.19. The deploy-docs job installs mandoc alongside Graphviz so projects using click_extra.sphinx.manpages get browser-viewable .html siblings in the docs build. Both are silently skipped when manpages.script is unset.
  • Validate [project.scripts] entries when assembling the Nuitka build matrix. A script name that PyPI and uv-build would refuse (path-shaped like ../escape or nested/script, empty, dot-only, or containing characters outside [A-Za-z0-9._-]) is rejected up front instead of flowing into the binary file path template and release workflow artifact commands. A malformed value (no colon, multiple colons, empty side) raises a descriptive error instead of crashing later with a tuple-unpacking ValueError.
  • Replace the tomlkit dependency with tomlrt for all comment-preserving TOML writes. Extend tomlrt to all TOML reads too (pyproject.toml, uv.lock, [tool.X] extraction), dropping the tomli backport and the conditional tomllib/tomli import shim previously scattered across eight modules.
  • Improve GitHub failure detection across repomatic.github: annotate gh and PAT permission check failures with the current githubstatus.com summary (memoized per process, 3-second timeout, no-op when the status page is unreachable); broaden the GITHUB_TOKEN fallback in run_gh_command to fire on Requires authentication in addition to Bad credentials; fix PAT permission check failure messages to surface raw stderr for non-403 failures instead of misreporting them as missing scopes.
  • Recognize all forms uv accepts in [tool.uv].exclude-newer when computing the cooldown cutoff in repomatic sync-uv-lock: friendly durations with hours, minutes, or seconds (like 24 hours, 30 minutes), and ISO 8601 durations (PT24H, P7D, P1DT2H).
  • Fix UV_OVERRIDE=uv-overrides.txt not reaching Renovate's child processes: prefix the uvx --from . repomatic update-checksums invocations in renovate.json5 (and repomatic/data/renovate.json5) with the override, and update the RENOVATE_ALLOWED_COMMANDS regex in renovate.yaml to allow both the prefixed and bare forms.
  • Add [tool.repomatic] abandoned-versions config to lint-changelog. Listed versions are reported as skipped (info log) instead of triggering the ⚠ X.Y.Z: not found on PyPI warning every run, for releases that were frozen but never published per CLAUDE.md § Skip and move forward. Applies to both the PyPI lookup and the git-tag fallback.
  • Tighten /repomatic-ship's pre-push gate: add ruff format --check alongside ruff check, and smoke-run uvx --no-progress --from . repomatic --version to surface dependency-resolution failures before CI. Document in the skill that the docs reconciliation pass must run <cmd> run mypy -- docs/ after editing any .py file in docs/ (the project's mypy gate uses the minimum supported Python version, not the docs group's higher floor), and that the spawned babysit-ci subagent must re-poll CI after each fix push rather than returning on first push success.

Full changelog: v6.24.0...v6.25.0


🛡️ VirusTotal scans

Binary Detections Analysis
repomatic-6.25.0-linux-arm64.bin 0 / 62 View scan
repomatic-6.25.0-linux-x64.bin 0 / 62 View scan
repomatic-6.25.0-macos-arm64.bin 1 / 61 View scan
repomatic-6.25.0-macos-x64.bin 1 / 60 View scan
repomatic-6.25.0-windows-arm64.exe 2 / 68 View scan
repomatic-6.25.0-windows-x64.exe 19 / 70 View scan