v7.5.0
- Breaking: bundled skills drop
modelanddisable-model-invocation, so every skill is now model-invocable and runs on the session model. The recommended model moved to the spec'scompatibilityfield. - Breaking:
manage_issue_lifecycle()takes the renderedbodystring instead of abody_filepath, and writes the temporary fileghneeds itself. - Breaking:
format_file_sizemoves fromimagesto a newhumanizemodule, joined there byformat_age. Frontmatter parsing moves to a newfrontmattermodule. - Breaking: workflows now run the CLI from
uv.lockwithuv run --frozeninstead ofuvx --from ., so installs are hash-verified. The release freeze still pins downstream touvx 'repomatic==X.Y.Z'. minimum-release-agenow defaults to1 week(was8 days) and[tool.uv] exclude-newertracks it, closing the band whereuv.lockcould pin a version CI then refused to install.- Reject a dependency floor naming a release still inside the cooldown window, which would ship a package that downstream repos and
uvxusers cannot resolve. - Fix the
sync-*updaters adopting a release published on the cutoff day itself, which uv then refused to resolve because it applies the window to the hour rather than the day. sync-workflow-pinsnow warns when a pin already in the tree sits inside the cooldown, instead of only judging the version it is about to write.- A
lint-repocheck that cannot read its GitHub API response now reports one "could not query API" outcome instead of separate unreachable-API and unparsable-JSON messages. - Fix
prepare-releaseandsync-github-releasesreading./changelog.mdinstead of the configuredchangelog.location. - Fix a PR body template's
footer: falsebeing ignored, appending the attribution footer to a template that opted out of it. - Fix template and skill frontmatter truncating at a value that embeds
---, dropping every field below it. - Fix the parallel test run aborting before any test executed, and add a conformance test asserting no parametrization iterates an unordered collection.
- Trim the hand-maintained example dumps from
metadata's module andnuitka_matrixdocstrings, which had drifted from the values they claimed to show. - Fix docstrings where a brace placeholder against a closing backtick rendered as a spurious role, swallowing the prose after it, and add a conformance test.
- Every workflow now gates package installs behind the
minimum-release-agecooldown, so nouvx,uv pip install,npm installornpxresolves a release published inside the window. - A thin caller carrying extra downstream jobs now gets a top-level
permissions: {}, and on its managed job the union of the scopes the reusable workflow's jobs declare. Callers with no extra jobs are untouched. astral-sh/setup-uvsteps now pin the uv version, bumped bysync-workflow-pinsonce a release clears the cooldown, instead of installing the newest build satisfyingrequired-version.repomatic run mdformatprovisions its ownshfmtat the registry-pinned version, so formatting shell blocks in Markdown no longer needs a systemshfmt.- New
path_toolsfield on a tool spec, naming registry tools whose binary must be onPATHwhile it runs. - Fix
repomatic run mdformataborting on Windows ARM64, whereshfmtpublishes no binary: a companion missing for the platform is now skipped with a warning. - Fix the macOS binary builds, which crashed in code signing once skills joined the bundled data: an
--include-data-dirsource holding symlinks is now staged symlink-free. - The
format-markdownjob drops back to the leanubuntu-slimrunner, and its awesome-list fixup usessedinstead ofgawk. apt-getreplacesaptin every workflow step, with--no-install-recommendsthroughout.- Add
ghto therepomatic runregistry. The release engine's attestation check now uses it instead of adding GitHub's RPM repository to the build container and installing an unpinnedgh. - A tool's
strip_componentsaccepts a per-platform mapping, likearchive_formatalready did. - Add
oxipngto therepomatic runregistry, bumped to10.1.1.format-imagesnow uses the pinned, checksum-verified build instead of a hand-fetched.debinstalled withdpkg. - New
ensure_binary()helper returning a registry tool's verified executable, for repomatic code that shells out to a binary without going throughrepomatic run. - Dependency-updater reports now close on the
Held back by cooldownsection, belowCooldown bypasses, so a PR opens on what the run changed instead of what it left alone. sync-tool-versionsleavesautofix.yamlfor a new upstream-onlyself-maintenance.yaml, and polls daily instead of weekly. Downstreamautofix.yamlloses the four steps it could never run.sync-tool-versionsnow also bumps the packages pinned alongside a tool in itsuvxenvironment, like mdformat's plugin set, reporting them like every other row.- Fix
get_source_urlreturning a bug-tracker or changelog sub-path instead of the repository root, and matchingproject_urlskeys case-sensitively. - The bundled ruff config sets
output-prefer-rule-codes, so diagnostics reportISC004instead ofimplicit-string-concatenation-in-collection-literal. Requires ruff0.16.1. repomatic initholds the derived upstream workflow pin back to the newest release past theminimum-release-agecooldown;--no-cooldownpins the running version immediately.- Commands honoring
--outputnow log their destination uniformly, always naming what is written instead of mixingSave updated results toand a subject-lessWrite to. - Align bundled skills with the Agent Skills specification:
babysit-cigains its requirednamefield, andallowed-toolsmoves to the spec's space-separated form. - Skills are now installed as whole folders, so one can ship the spec's optional
scripts/,references/andassets/directories alongside itsSKILL.md. - Add
[tool.repomatic.flavor]withagentandcikeys, declaring the ecosystems a repository targets. Values are extra-platforms trait IDs. [tool.repomatic.labels.extra]entries now carrylabelmaker's full per-label specification, addingrename-fromin-place renames, multi-color lists, and thecreate,update,enforce-caseandon-rename-clashknobs. An unknown field now warns instead of being dropped silently.- New
release-assetsfilename list in[tool.repomatic]: each named asset is built by a caller-side job, attested like the compiled binaries, and attached to the release draft before publication locks it. - The man-page tarball is now attested like the compiled binaries, with its sigstore bundle attached as a
manpages.attestation.jsonrelease asset. skills.locationandagents.locationnow default to the layout of the configuredflavor.agent, and still win when set explicitly.repomatic run mdformatdrops themdformat-ruffplugin and its separate ruff pin, and the bundled ruff config dropsextend-include: ruff formats fenced Python blocks in Markdown on its own.- Teach the
repomatic-shipandbabysit-ciskills to act on the first failing CI job instead of waiting out full matrices, pay down pre-existing and鈦夛笍-probe test debt before the first push, and hold prose-only pushes while binary matrices drain. - Chart the
/repomatic-shipconvergence loop (first-failing-job fixes, push timing, debt paydown) on the skills docs page. - Re-base the release PR onto the current
mainHEAD after every build by also runningprepare-releaseonworkflow_run, so a reconciliation commit that misseschangelog.yaml'spaths:filter no longer leaves the PR stale. /repomatic-topicspre-approves theAgenttool instead of the retiredTaskname.- Add a
historydocumentation page retracing the project from its 2021 reusable-workflow origins through thegha-utilsCLI to therepomaticrename. - Recenter the readme and the workflows page on the CLI-first design: workflows only trigger CLI commands, with local-run examples and links to the standalone binaries and history pages.
- Document Agent Skills spec conformance, and
argument-hintas the single accepted deviation, on the skills documentation page. - Correct the readme and benchmark page: both carried stale reusable-workflow counts, and listed
jpegoptimamong the toolsrepomatic runmanages when it never was.
Full changelog: v7.4.1...v7.5.0