- Breaking: the
release-prepcommand is renamedprepare-release, matching the job, template, and PR branch it drives; its module moves torepomatic.prepare_releaseand its class becomesPrepareRelease. - Breaking: the
version-checkcommand is renamedcheck-version. - Breaking: the vulnerability audit domain moves from
repomatic.uvinto the newrepomatic.vulnerable_depsmodule, which also absorbsrepomatic.github.advisories. - Breaking:
repomatic.sponsormoves underrepomatic.github. - Breaking: the PR-body helpers (
generate_pr_metadata_block,generate_refresh_tip,build_pr_body) now take their CI context as arguments;current_repo_urlis removed. - Breaking:
build_expected_bodymoves fromrepomatic.github.release_synctorepomatic.changelog. - Breaking: the five
check_pat_*probe functions are replaced by thePAT_PERMISSION_PROBEStable andprobe_pat_permission. - Breaking: the workflow generation API (
generate_thin_caller,generate_workflow_header,generate_workflows) drops its legacysource_pathsargument; pass aPathsSpecinstead. - Add
cancel-runs: cancels a branch's in-progress and queued workflow runs, replacing the bash block incancel-runs.yaml; run listings now paginate past the first page. - Add
[tool.repomatic] binaries.sync: set tofalseto stop the release pipeline from committing the binaries catalog and scan records to the default branch. - Add
sync-dep-sources, a fifthsync-depsupdater: once the release named by a git-tracked dependency's.devfloor ships on PyPI, it drops the[tool.uv.sources]override, tightens the floor, and freezes the adopted release through the cooldown. Disable with[tool.repomatic] dep-sources.sync. - Extract the setup guide,
.gitignoregeneration, and Sphinx docs orchestration from the CLI module into newrepomatic.setup_guide,repomatic.gitignore, andrepomatic.docsmodules. Dialect,ArchiveFormat, andWorkflowFormatnow carry their dispatch as enum methods (serialize,extract,write_workflow).- Consolidate the
repomatic.deps_graphAPI aroundSubgraphandSubgraphKindtypes; the unusedparse_bom_refhelper is removed. - Rename cross-module internals to public names:
COMPONENTS_BY_NAME,is_source_repo,format_released,format_upload_date,date_to_utc_cutoff. - The
sponsor-labellerjob inlabels.yamlis renamedsponsor-label, matching the CLI command it runs. - Remove the dead
get_default_repoandlist_open_issueshelpers and the unusedREQUIRED_PAT_PERMISSIONSconstant. update-deps-graphnow keeps only directly-declared dependencies inside the--groupand--extraboxes, renders transitive dependencies as plain ovals, and counts an extra's transitives as depth 2 under--level.- The unsubscribe workflow's GraphQL phase now re-validates each item's staleness client-side and reports the items it holds back.
- The
unsubscribe.yamlworkflow now streams per-thread progress to the job log. - Generated PR and issue bodies now use
##section headings, withRelease notesnested as a###subsection; release bodies embedded in dropdowns get their headings demoted below the per-version heading. - Generated PR bodies drop the boilerplate
Descriptionsection, and theWorkflow metadatablock becomes a compact list led by aDocumentationlink to the job's section of the workflows reference. - The
Cooldown bypassesPR section is now a single table:🧹 cleared:,📌 frozen:, and🚧 unreleased:rows with aHeld untilexpiry column. - Diff tables label added and removed packages with
🆕 new:and🗑️ removed:prefixes ahead of the version. sync-action-pinsandsync-workflow-pinsPR bodies now report an action or package pinned at several versions as a single row spanning from the oldest pin.- The
update-docsjob now re-formatspyproject.tomlfiles withpyproject-fmtafter running the project's update script. - GitHub Releases API reads now resolve their token like every other GitHub access (
REPOMATIC_PATfirst), instead of hitting the anonymous rate limit. - PyPI, npm, and GitHub API lookups now retry once on a truncated response instead of crashing with
IncompleteRead. - The release freeze and unfreeze steps now cover
.ymlworkflow files alongside.yaml. - The gitignore.io template download now times out after 10 seconds instead of hanging on a stalled connection.
- Version bumps no longer overwrite the
cff-version:schema field incitation.cffwhen it coincides with the package version. sync-action-pinsno longer rewritesuses:pins inside filesrepomatic initdeploys verbatim, like thepublish-pypicomposite action.- The
run typosguidance now recommendsextend-ignore-reguards for encoded hashes and intentional-typo examples. - Document the scan job contract and the release-lane direct-commit exception.
- Add test suites for the notification-unsubscribe engine and the
repomatic.npm,repomatic.gitignore, andrepomatic.docsmodules; the setup-guide tests now run offline.
Full changelog: v7.1.0...v7.2.0