Changelog¶
6.14.0.dev0 (unreleased)¶
Warning
This version is not released yet and is under active development.
Add Sphinx documentation site with Furo theme, MyST-Parser, and 13 extensions. Split the monolithic
readme.md(1139 lines) into focused pages: installation, configuration reference, CLI parameters (auto-generated viaclick_extra.sphinx), reusable workflow reference, security practices, and Claude Code skills. Deployed to GitHub Pages via the existingdocs.yamlworkflow.Add dedicated tool runner documentation page with a tutorial. Covers the 4-level config precedence chain, available tools table,
[tool.X]bridge, binary caching, version overrides, and a step-by-step yamllint walkthrough. Moved from the configuration page into its owndocs/tool-runner.md.Add
docs/docs_update.pyto generate the[tool.repomatic]configuration reference as a definition list from theConfigdataclass, replacing the manually-pasted table.Fix
Matrix.prune()keeping exclude directives that reference keys absent from the matrix axes. GitHub Actions rejects these with “Matrix exclude key does not match any key within the matrix”. Affects downstream projects whose[tool.repomatic.test-matrix]config definesvariationsandexcludeentries referencing those axes: the PR matrix (which omits variations) retained the stale excludes.Fix setup guide not reopening when GitHub Pages is not configured. The
check_pages_deployment_sourceAPI returnsNone(indeterminate) when Pages is not set up at all, which thepages_gatelogic treated as passing. For Sphinx projects, “not configured” is now treated as incomplete, reopening the issue with the Pages setup step.Fix setup guide Pages template assuming Pages is already configured (
PUTreturns 404 on unconfigured repos). Template now shows bothPOST(first-time enable) andPUT(update existing) commands.Add
check_stale_gh_pages_branchlint check and setup guide instructions for deleting leftovergh-pagesbranches after switching to GitHub Actions deployment.
6.13.0 (2026-04-15)¶
Add
nuitka.entry-pointsconfig option to select which[project.scripts]entries produce Nuitka binaries. When unset, deduplicates by callable target: keeps the first entry point for each uniquemodule:callablepair, so alias entry points (like bothmpmandmeta-package-managerpointing to the same function) don’t produce duplicate binaries.Add two-phase VirusTotal scanning: phase 1 uploads binaries and writes an initial table with scan links (binary names link to their GitHub release download URLs), phase 2 (
--poll) polls for analysis completion and replaces the table with a Detections column showingflagged / totalengine counts. The workflow uses two sequential steps so users see scan links immediately while detection stats populate asynchronously.Add
av-false-positiveskill to scan release binaries on VirusTotal and generate per-vendor false-positive submission files for flagged artifacts. Derives project metadata (name, license, maintainer, URLs) frompyproject.tomland git config instead of hardcoding.Add
update-checksums.yamlworkflow that triggers on Renovate pushes torenovate/**branches modifyingrepomatic/tool_runner.py. Downloads each binary tool at its new version, computes the SHA-256, and commits corrected checksums to the PR branch. Works around renovatebot/renovate#42263 wherepostUpgradeTaskssilently drops changes to the same file the regex manager updated.Include release notes for all intermediate versions in
sync-uv-lockPR bodies. When a package jumps from11.0.3to11.0.5, both11.0.4and11.0.5release notes are shown.Config
includeentries now bypassRepoScopefiltering, matching the behavior of explicit CLI component naming.include = ["skills"]in a non-awesome repository produces all skills including awesome-only ones; qualified entries likeinclude = ["skills/awesome-triage"]implicitly select the parent component. Scope-bypassed components fall through to config-key and file-level checks instead of being unconditionally skipped.Add baseline criteria for GitHub repositories in awesome list contributing guidelines: minimum 50 stars, not archived, and updated within 3 years. Includes exceptions for static resources and high-adoption archived repos.
Add
--min-savings-bytesoption toformat-images(default 1024 bytes). Skips optimized files where the absolute byte savings are negligible, preventing noisy diffs for tiny images where even a high percentage represents minimal actual reduction.Add cross-platform binary support for all tools in the registry. actionlint, biome, gitleaks, labelmaker, lychee, shfmt, and typos now ship binaries for macOS (arm64, x64), Linux (arm64, x64), and Windows (x64) where upstream releases are available. Add ZIP archive extraction and per-platform archive format overrides to
BinarySpec. Replace hand-rolled OS/arch detection in_get_platform_key()with extra-platforms’current_platform()andcurrent_architecture(), and replace string platform keys withPlatformKeytuples ((Platform | Group, Architecture)) for richer detection heuristics.Add a progress bar during binary tool downloads when the server provides a
Content-Lengthheader. Displays on interactive terminals only; silent in CI.Add two-layer integrity model for cached binaries. The archive checksum from the registry is verified at download time. After extraction, a
.sha256sidecar file is written next to the binary and checked on every subsequent cache hit, defending against local cache tampering between runs.Enable
[tool.actionlint]bridge support. actionlint config frompyproject.tomlis now translated to YAML and written to.github/actionlint.yamlat invocation time (CWD-discovery, cleaned up after the run).Cache downloaded tool binaries across CI runs with
actions/cache. Each workflow job that invokes a binary tool (actionlint, biome, gitleaks, labelmaker, lychee, shfmt, typos) restores from a per-tool cache key scoped to OS, architecture, and tool registry hash.Replace
peaceiris/actions-gh-pageswith GitHub’s nativeactions/upload-pages-artifact+actions/deploy-pagesfor Sphinx documentation deployment. Add alint-repocheck and setup guide step that verify the repository’s Pages source is set to “GitHub Actions” instead of branch-based deployment.Add
benchmark-updateskill to create and maintain competitive benchmark pages (docs/benchmark.md) comparing projects against alternatives. Supportsaudit,init,add, andrefresh-badgesmodes.Add
upstream-auditskill to create and maintain upstream contribution tracking pages (docs/upstream.md). Discovers merged PRs, reported issues, workarounds, and declined features across dependencies. Supportsaudit,init,refresh, andsync-gitmodes.Restructure
Configto use nested dataclasses (CacheConfig,DependencyGraphConfig,DocsConfig,GitignoreConfig,LabelsConfig,TestPlanConfig,WorkflowConfig) withclick_extra.config_pathmetadata. Config fields are now accessed asconfig.cache.dirinstead ofconfig.cache_dir. The[tool.repomatic]TOML key structure is unchanged. Eliminates the_NESTED_PREFIXESmapping in favor of click-extra’s schema-aware dataclass instantiation.Upgrade macOS Intel runner from
macos-15-inteltomacos-26-intelacross binary builds, test matrix, and Nuitka compilation.Run
lint-repoworkflow job on all repositories, not just Python projects. Generic checks (funding file, stale draft releases, tag protection rules, fork PR approval policy, workflow permissions, PAT checks) were being skipped on non-Python repos like awesome lists.Centralize GitHub token resolution in
run_gh_command: priority isREPOMATIC_PAT>GH_TOKEN>GITHUB_TOKEN, with automatic fallback toGITHUB_TOKENon 401 Bad Credentials (expired or revoked PAT). The--has-patflag onsetup-guideandlint-repoauto-detects from theREPOMATIC_PATenvironment variable when not specified, replacing theHAS_REPOMATIC_PATenv var. Normalize all workflow token references toGH_TOKENwithgithub.tokenas the default, and fix missingGH_TOKENinsync-dev-release,sponsor-label,setup-guide,lint-repo,check-renovate, andscan-virustotalworkflow steps.Fix
exclude-newer-packagehandling inpyproject.toml: remove orphaned comments when the section is fully pruned, and fix inline table rendering to producepyproject-fmt-compatible formatting (tomlkit’sInlineTable.append()left malformed whitespace: doubled spaces after commas, missing inner-brace spaces).Add pre-flight
shutil.whichcheck inrun_exiftoolfor a clear error when exiftool is not installed, instead of a bareFileNotFoundError. Verify exiftool is on PATH afterchoco installin the Windows binary build step, catching silent Chocolatey CDN failures.Create parent directories for
--outputfile paths inrepomatic run, fixing lycheeCannot write status output to fileerrors when the output directory doesn’t exist.Sanitize
@mentions,#issuereferences, andgithub.comURLs in Lychee and Sphinx linkcheck output before embedding in the broken links GitHub issue body. Reuses the same zero-width space sanitization already applied to upstream release notes insync-uv-lockPR bodies.
6.12.0 (2026-04-13)¶
Add
repomatic cachesubcommands (show,clean,path) and a global binary cache for downloaded tool executables under~/Library/Caches/repomaticon macOS and~/.cache/repomaticon Linux. Cached binaries are re-verified against their registry SHA-256 checksum on every use; stale entries are auto-purged after 30 days (configurable viaREPOMATIC_CACHE_MAX_AGE). Add--no-cachetorepomatic runto bypass the cache.Add HTTP response cache for PyPI metadata (24h TTL) and GitHub release bodies (24h for all-releases, 7d for single-release) to avoid redundant API calls across
changelog,sync-uv-lock, andsync-github-releasesinvocations. Add--namespacetorepomatic cache cleanfor targeted cleanup.Route generated tool configs through the cache directory (
~/.cache/repomatic/config/{tool}/{filename}) instead of/tmpor the repository root. Tools with a--configflag now receive an explicit--config <cache_path>argument, making repomatic’s involvement visible in logs and eliminating cleanup issues from interrupted runs..editorconfigserialization for CWD-discovery tools likeshfmtnow translates[tool.X]sections frompyproject.tomland writes the result to the cache. Tools without a--configflag (mdformat, shfmt) remain CWD-discovery exceptions.Add
--version,--checksum, and--skip-checksumoptions torepomatic runto override the pinned tool version and SHA-256 verification at invocation time.Add structured logging to
repomatic run.--verbosity INFOreports the config precedence level, full command line, and exit code.--verbosity DEBUGadds the parsed[tool.X]content and translated config file details.Add
skills.locationconfig option to override the Claude Code skills directory. Defaults to./.claude/skills/; useful for repos where.claude/is not at the root.Add
changelog.locationconfig option to override the changelog file path. Defaults to./changelog.md. All CLI commands (changelog,release-prep,sync-github-releases,sync-dev-release), metadata extraction, andinitnow read from this single source.Add
.claude/package-skills.shto package each Claude Code skill as a ZIP for manual upload to Claude Desktop via Settings > Customize > Skills. Refs #2540.Sanitize
@mentions,#issuereferences, andgithub.comURLs in upstream release notes embedded insync-uv-lockPR bodies. Inserts Unicode zero-width spaces to prevent GitHub from auto-linking mentions and issue references. Rewritesgithub.comURLs toredirect.github.comto prevent backlink cross-references. Code fences and inline code spans are preserved. Closes #2542.Use
REPOMATIC_PATtoken in allpeter-evans/create-pull-requeststeps acrossautofix.yaml,changelog.yaml, andrenovate.yaml. PRs created with the defaultGITHUB_TOKENdo not trigger other workflows.Rename
shell_filesmetadata key toshfmt_files. Exclude Zsh files (.zsh,.zshrc, etc.) and.shfiles with a Zsh shebang fromshfmtprocessing.shfmt’s Zsh support is experimental (v3.13.0+) and fails on common Zsh constructs (see mvdan/sh#1203).Make the
uv syncstep in thelint-typesjob conditional onis_python_project, so repositories with Python files but no lockfile can still be type-checked.Fix
format-jsonautofix job failing withflag --config-path is not valid in this contextwhen a[tool.biome]section exists. Biome’s bpaf-based CLI scopes--config-pathinside the subcommand; the flag is now spliced after the subcommand name via a newconfig_after_subcommandfield inToolSpec.Improve
file-bug-reportskill to check organization-level community health files from the org’s.githubrepo before scanning per-repo files. GitHub allows orgs to define default CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md, and issue templates that repos inherit unless they provide their own copy.
6.11.3 (2026-04-09)¶
Add
lint-repocheck warning when the GitHub Actions fork PR workflow approval policy is weaker thanfirst_time_contributors. Queries/repos/{repo}/actions/permissions/fork-pr-contributor-approvaland flags the defaultfirst_time_contributors_new_to_githubsetting, which only catches brand-new GitHub accounts. The setup guide includes a new step with a pre-filledgh apione-liner to fix the policy in place.Add
readme.md§ Supply chain security section mapping Astral’s Open Source Security at Astral practices to concrete repomatic implementations, with a known-gap admonition for multi-person release approval.Fix
rst_to_mystconversion leaving RST backslash escapes (\_) in headings and not wrapping dotted Python module names in backticks.sphinx-apidocuses\_to prevent RST reference interpretation; these are meaningless in markdown and causemdformatto strip them on every reformat pass.Fix
format-pyprojectautofix job failing with exit code 123.xargstranslatespyproject-fmt’s exit code 1 (file reformatted) to 123, and the defaultbash -eshell aborted before the exit code guard could run.Disable uv cache in the
publish-pypirelease job, which has no checkout step. Without a workspace,setup-uvcannot find lockfiles to hash and emits spurious cache-miss warnings on every run.
6.11.2 (2026-04-08)¶
Add
shfmtshell formatter to the tool runner (repomatic run shfmt). Downloads the binary for the current platform and invokes it with managed version pinning and.editorconfigdiscovery.Add
format-shellautofix job to auto-format shell scripts withshfmt.Replace
crazy-max/ghaction-virustotalGitHub Action with a nativerepomatic scan-virustotalCLI command usingvt-py. Fixes the release body update that was silently skipped because the action required areleaseevent but the workflow triggers onpush.Deduplicate release attestations: Python packages are now attested once in
build-packageinstead of three times acrossbuild-package,publish-pypi, andcreate-release. The attestation bundle is forwarded as an artifact tocreate-releasefor upload to the GitHub release. Also fixescreate-releaseaccidentally attesting.gitignorevia therelease_artifact/*glob.
6.11.1 (2026-04-08)¶
Parallelize release workflow:
compile-binariesnow starts right aftermetadatainstead of waiting forcreate-release, andpublish-pypiruns concurrently withcreate-tagandcreate-release. Binary and attestation uploads to the GitHub release are deferred topublish-release. The PyPI admonition in release notes is applied bypublish-releaseafter confirming PyPI publication succeeded.Fall back to PyPI
project_urlschangelog link when no GitHub Release exists for a package. Release notes sections now render a[Changelog](url)link instead of silently omitting the package.Fix release workflow uploading attestation bundle before the GitHub release draft exists. The upload step now runs after release creation.
Skip
exclude-newer-packageexemptions for packages whose fixed version already falls within theexclude-newercooldown window. Previously,fix-vulnerable-depspersisted"0 day"overrides for all upgraded packages unconditionally.Fix
--delete-excludednot detecting scope-excludedBundledComponentfiles that still exist on disk. Component-level scope exclusion (e.g.,codecovin awesome repos) skipped recording file entries, so stale files were invisible to the deletion pass.Fix awesome-template sync overwriting
pyproject.tomlinstead of merging._copy_template_treereplaced the entire file with the bundled template, stripping user-managed[tool.*]sections (e.g.,[tool.gitleaks]). The lychee config is now aToolConfigComponentwithAWESOME_ONLYscope, so it goes through the standard_init_tool_configsmerge path.pyproject.tomlis removed from the awesome-template bundle.Fix
repomatic init <component>silently ignoring explicitly-requested components in repos where their scope doesn’t match. Scope exclusions now only apply during barerepomatic init, matching the existing guard on user-config exclusions. This fixesrepomatic init renovatefailing in awesome repos where the renovate workflow materializesrenovate.json5at runtime.Fix
--delete-excludedremoving opt-in workflow files in the source repo. Config-key exclusions (e.g.,notification.unsubscribe) now skip the source repo, matching the existing scope-exclusion guard. Previously, thesync-repomaticjob would delete.github/workflows/unsubscribe.yamlfrom upstream, breaking the symlink inrepomatic/data/and all downstreamworkflow_callreferences.Fix
format-pyprojectautofix step running with no input files and masking tool errors. Thepyproject_filesmetadata key was missing, so pyproject-fmt ran against an empty file list and|| trueswallowed all non-zero exit codes. The key is now requested and the step tolerates only exit code 1 (file reformatted).
6.11.0 (2026-04-07)¶
Note
6.11.0 is available on 🐍 PyPI.
Warning
6.11.0 is not available on 🐙 GitHub.
Preserve extra downstream jobs when syncing thin-caller workflows. Previously,
repomatic initandworkflow syncinthin-callermode would overwrite the entire file, destroying any project-specific jobs appended after the managed caller job (e.g., a Chocolatey publishing step inrelease.yaml). The managed job is now regenerated in place while extra jobs, comments, and blank lines are preserved.Add VirusTotal scanning job to the release workflow. Uploads compiled binaries to VirusTotal after each release, seeding AV databases to reduce false positive detections on downstream distributors (Chocolatey, Scoop, etc.). Requires the optional
VIRUSTOTAL_API_KEYrepository secret.Add attestation self-verification steps after each
actions/attestinvocation in the release workflow. Each attestation is immediately verified withgh attestation verify --signer-repo kdeldycke/repomaticto catch signing issues in CI before users encounter them.Upload Sigstore attestation bundles (
.jsonl) as GitHub release assets for compiled binaries and Python packages, enabling offline verification.Add
VIRUSTOTAL_API_KEYwarning tolint-repo. Emits a non-fatal warning when the secret is missing and Nuitka binary compilation is active.Add VirusTotal API key setup step to the setup guide issue. The step only appears when Nuitka compilation is active (i.e.,
nuitka-enabledistrueand the project has script entries). When shown, a missing key keeps the setup guide issue open.Remove bumpversion dev-versioning migration code. All downstream repos have been migrated to PEP 440 dev versioning; the one-time
.dev0suffix injection and managed-file update logic is no longer needed.
6.10.0 (2026-04-03)¶
Add
brand-assetsskill to create and export project logo/banner SVG assets to light/dark PNG variants.Add
babysit-ciskill to monitor CI test workflows, diagnose failures, fix code, and loop until all stable jobs pass.Add
file-bug-reportskill to write upstream bug reports. Exhaustively reads contribution guidelines, issue templates, security policies, and community norms before producing a markdown file.Add
test-matrix.replaceandtest-matrix.removeconfiguration to modify axis values in both full and PR test matrices.replaceswaps values (e.g.,replace.os = { "ubuntu-slim" = "ubuntu-24.04" }),removedrops values beforesolve()runs. Stale exclude directives referencing removed values are pruned with a warning.Add
SyncModeenum andpreserved_keysfield toToolConfigComponent. Tool configs can now declaresync_mode=ONGOINGto opt into repeated syncing that preserves local additions. Preserve local[[tool.bumpversion.files]]entries duringsync-bumpversionas the first consumer.Add
--output-format [markdown|github-actions]tosync-uv-lock,fix-vulnerable-deps,pr-body, andformat-images. Replaces implicit$GITHUB_OUTPUTenvironment variable detection with an explicit flag. Remove-oshort option frompr-bodyandformat-images(prefer long-form--output).Add
.claude/scheduled_tasks.lockto the default.gitignoreextra content.Append workflow metadata block to issue lifecycle comments (
Condition recurred.,Superseded by #N., close comments). Each comment now includes a collapsible table with trigger, actor, commit, job, workflow, and run link.Make
setup-guideissue body conditional: each step is a collapsible section with a status indicator (completed steps are collapsed with a checkmark, incomplete steps are expanded with a warning). Add branch ruleset and Dependabot settings checks to the closing criteria. The issue now closes only when PAT, permissions, vulnerability alerts, and branch protection are all verified.Rework
sync-uv-lockCLI output: default to a terminal table via click-extra’s--table-format, add--release-notes/--no-release-notesand--table/--no-tableflags, move markdown formatting to--outputfor CI use only. Prune staleexclude-newer-packageentries frompyproject.tomlbefore relocking.Change
renovatecomponent to opt-in (init_default=EXCLUDE). Excluderenovateandcodecovcomponents from awesome-list repositories.Echo
metadataoutput to stderr when--outputtargets a file, so computed matrices are visible in CI logs.Remove Python
3.15t(free-threaded) from the default test matrix.Warn instead of crashing on unknown
[tool.repomatic]configuration keys. Old repomatic versions encountering config from a newer release now log a warning and continue.Add
repomatic update-docsCLI command consolidatingsphinx-apidoc, RST-to-MyST conversion, anddocs/docs_update.pyexecution into a single orchestrated step. Projects using MyST-Parser get RST stubs automatically converted to markdown with{eval-rst}blocks.Add
docs.apidoc-extra-args,docs.apidoc-exclude, anddocs.update-scriptconfiguration options.Add
uses_mystmetadata property detecting MyST-Parser in Sphinx configuration.Move
sync-uv-lockjob fromrenovate.yamltoautofix.yaml. The renovate workflow’s path filter prevented the job from running on most pushes tomain, leaving stale PRs with merge conflicts.Fix CLI crash when
test-matrix.variationsortest-matrix.replacecontain nested keys. Click-extra’s generic config flattening was converting them to invalid field names. The CLI now routes config loading throughload_repomatic_configwhich preserves thetest-matrixsub-section structure.
6.9.0 (2026-03-31)¶
Add per-project test matrix configuration via
[tool.repomatic.test-matrix]inpyproject.toml. Supportsexclude,include, andvariationsfields that map directly to theMatrixclass API.Replace
audit-depslint job withfix-vulnerable-depsautofix job. Creates PRs that upgrade affected packages usinguv lock --upgrade-packagewith--exclude-newer-packagebypass for security fixes.Add
codecovbundled component. Syncs.github/codecov.yamlto suppress PR comments unless coverage drops or the diff introduces uncovered lines.Extend tool runner config resolution to support CWD-discovery tools (no
--configflag). Bundled defaults are written to disk and cleaned up after invocation. Move mdformatnumberdefault to a bundledmdformat.tomlso downstream repos can override via[tool.mdformat]or.mdformat.toml.Replace dict-based config loading with click-extra’s typed config resolution.
[tool.repomatic]is auto-discovered frompyproject.tomland exposed as a typedConfigdataclass viaget_tool_config(). Renameconfigsubcommand toshow-configto resolve a naming conflict with click-extra’s--configoption.Expand PAT validation in
lint-repoandcheck-renovate.lint-repogains repository scope check, tag ruleset detection, and workflows permission probe.check-renovatevalidates all PAT permissions (contents, issues, pull requests, vulnerability alerts, workflows) as warnings.Auto-exclude
changelog.mdfor awesome-list repositories and remove redundant[tool.repomatic]exclude entries from the awesome template. Refactor the component registry to supportscope,target, andconfig_keyfields, replacing hardcoded dispatch with a type-driven loop.initCLI help text is now auto-generated from the registry.Remove
prebake-versionandprebake-tag-shaCLI commands. Useclick-extra prebake all,click-extra prebake version, orclick-extra prebake fieldinstead. Rename__tag_sha__to__git_tag_sha__to align with click-extra’sgit_*naming convention.Migrate from
actions/attest-build-provenancetoactions/attest.Rename
pr-metadata.mdtemplate to.md.noformatextension to prevent mdformat from mangling the$rerun_rowtable-row placeholder.Skip Codecov uploads on
sync-repomaticPRs.Unify PAT permission validation into
check_all_pat_permissions()intoken.py.lint-repo,setup-guide, andcheck-renovateall use the same code path.setup-guidenow runs granular permission checks when the PAT is present and keeps the issue open with a diagnostic table when permissions are incomplete.Fix
setup-guidejob: add missingHAS_REPOMATIC_PATenv var and remove upstream repo carve-out so PAT detection works everywhere.Fix infinite cycle between
migrate-to-renovateandsync-repomaticjobs.Include git stderr in
git-tagCLI error messages.
6.8.0 (2026-03-27)¶
Move test matrix definition from inline YAML to
repomatic metadatausing theMatrixclass. Thetestsjob now depends on themetadatajob and consumes pre-computedtest_matrix/test_matrix_proutputs. Fixes thematrixcontext being unavailable in job-levelif:.Reduce CI jobs on pull requests by skipping release builds, experimental Python versions, redundant architecture variants, and install/architecture verification tests. Full matrix still runs on push to main.
Make
excludeconfig additive to default exclusions (labels,skills). Userexcludeentries now add to the defaults instead of replacing them. Addincludeconfig to force-include components that are excluded by default.Add
--delete-unmodifiedflag torepomatic initto automatically remove config files identical to bundled defaults instead of only reporting them. Renamed from--delete-redundant.Remove deprecated
WORKFLOW_UPDATE_GITHUB_PATsecret and all backward-compatibility fallbacks. Downstream repos must useREPOMATIC_PAT.Auto-exclude
awesome-triageskill for non-awesome repositories. The skill is only relevant toawesome-*repos and was previously installed in all downstream projects.Add
--delete-excludedflag torepomatic initto remove excluded files that still exist on disk. Detects component-level exclusions, file-level exclusions, auto-excluded files (e.g.,awesome-triageon non-awesome repos), and disabled opt-in workflows.Replace
sync-workflowsandclean-unmodified-configsautofix jobs with a singlesync-repomaticjob. Runsrepomatic init --delete-unmodified --delete-excludedto sync all managed files and clean up stale ones in one PR. Renamed fromclean-redundant-configsand--delete-redundant.Remove
PAT setup hintsteps andHAS_REPOMATIC_PATenv var fromautofix.yamlandchangelog.yamlworkflows. Thesetup-guidejob already creates an issue when the PAT is missing.Add PAT capability checks and repo configuration validation to
lint-repo. Checks Renovate config exists, Dependabot security updates disabled, and vulnerability alerts enabled. WhenREPOMATIC_PATis configured, validates contents, issues, pull requests, Dependabot alerts, and commit statuses permissions. AddREQUIRED_PAT_PERMISSIONSconstant intoken.pyas the single source of truth for expected permissions.Add stale draft release detection to
lint-repo. Warns about draft releases whose tag does not end with.dev0, which are leftovers from abandoned or failed release attempts.Relax abandoned dependency threshold from 1 year to 2 years in Renovate config.
Fix thin-caller generation rendering
workflow_dispatchinput definitions as Python dict literals instead of block-style YAML.Add
/sphinx-docs-syncskill for cross-project Sphinx documentation comparison and synchronization.Add
/translation-syncskill to detect stale translations inreadme.*.mdandcontributing.*.mdfiles. Compares structure and content against the English source, flags drift, and drafts updated translations. Auto-excluded for non-awesome repos.Streamline Dependabot guidance in setup guide issue. Clarify that Renovate handles security PRs and that
renovate.yamlauto-removesdependabot.yml. Link Actions tab directly to theautofix.yamlworkflow.Allow
repomatic initto accept qualifiedcomponent/fileselectors (e.g.,repomatic init skills/repomatic-topics). Uses the same syntax as theexcludeconfig option. Renameparse_excludetoparse_component_entriesand_valid_file_idstovalid_file_idsto support the shared parsing path.Only auto-include
awesome-templatecomponent forawesome-*repos when no explicit components are given. Previously,repomatic init skills/repomatic-topicson an awesome repo would also sync all awesome-template files.Stop persisting
[tool.ruff]defaults into downstreampyproject.toml. Bundled ruff config is now injected at runtime via--configwhen no[tool.ruff],ruff.toml, or.ruff.tomlexists. Remove therepomatic init ruffstep from theformat-pythonworkflow job.Add package version diff table to
sync-uv-lockPRs. Lists updated, added, and removed packages with their old and new versions. Package names link to PyPI. Shows release date andexclude-newercutoff for visual verification. Includes collapsible release notes fetched from GitHub Releases.Document file naming conventions in
claude.md: prefer.yamlover.ymland lowercase filenames everywhere, with a table of GitHub exceptions that require.ymlor uppercase.Fix awesome-template URL rewriting to also process
.ymlfiles in.github/.Auto-exclude
changelog.yaml,debug.yaml, andrelease.yamlworkflows forawesome-*repositories. These package-oriented workflows are irrelevant to curated lists.Materialize bundled
renovate.json5at runtime in the Renovate workflow when the file is absent. Downstream repos can safely delete theirrenovate.json5viaclean-redundant-configswithout breaking Renovate runs.Remove
sync-renovateCLI command, autofix job,renovate.syncconfig toggle, and PR body template. Thesync-repomaticjob (viarepomatic init --delete-redundant) already handles Renovate config sync, and the Renovate workflow now materializes the bundled default at runtime when the file is absent.Remove
sync-bundled-configjob fromrenovate.yaml. The bundledrepomatic/data/renovate.json5is now regenerated byrepomatic initwhen it detects it’s running in the source repository, folded into thesync-repomaticautofix job.Remove upstream exclusion from
sync-repomaticjob. The upstream repo’s[tool.repomatic] exclude = ["workflows"]prevents thin-caller generation, whilerepomatic inithandles the bundled renovate config regeneration.Pin GitHub Actions to SHA digests via Renovate’s
helpers:pinGitHubActionDigestsToSemverpreset. Prevents supply chain attacks from mutable tags while keeping automated version updates.Add top-level
permissions: {}to all workflow files. Denies allGITHUB_TOKENpermissions by default, requiring each job to declare its own minimal permissions explicitly.Merge
/repomatic-deps-reviewinto/repomatic-deps. The unified skill now supports two modes:graph(dependency tree visualization, previously the only mode) andreview(declaration audit against version policy). Also checks for staleexclude-newer-packagecooldown exceptions in[tool.uv].Consolidate 12+ scattered init constants into a declarative component registry (
repomatic/registry.py). Each component declares its kind, init default, file entries, and behavioral flags in one place. All derived constants (ALL_COMPONENTS,COMPONENT_FILES,REUSABLE_WORKFLOWS,SKILL_PHASES, etc.) are computed from the registry.Fix
sync-repomaticdeleting the upstream repo’s own skills. The source repo guard only covered auto-exclusions, not default exclusions (labels,skills).Rename “redundant” terminology to “unmodified” across the CLI, output, and codebase.
--delete-redundantbecomes--delete-unmodified,clean-redundant-configsbecomesclean-unmodified-configs.Generalize
opt_in_keyintoconfig_key/config_defaulton bothFileEntryandComponent. Replace the proceduralawesome-template.synccheck with a registry declaration.
6.7.0 (2026-03-24)¶
Bundle awesome-template boilerplate files in
repomaticinstead of cloning fromkdeldycke/awesome-templateat runtime.Add
pyproject_filesmetadata key listing allpyproject.tomlfiles. Theformat-pyprojectjob now formats all of them instead of only the root file.Remove
sync-skills,workflow create, andworkflow syncCLI commands. All three are superseded byrepomatic initwhich handles skills, thin-caller generation, and header-only sync in a single invocation.Add branch protection checklist to the setup guide issue. Links to a pre-filled ruleset creation form targeting the default branch with force-push and deletion protection.
Add
unsubscribe.yamlreusable workflow for scheduled cleanup of closed notification threads. Opt-in vianotification.unsubscribe = truein[tool.repomatic]. Requires a classic PAT withnotificationsscope stored asREPOMATIC_NOTIFICATIONS_PAT. IntroduceOPT_IN_WORKFLOWSmechanism for workflows that are excluded from thin-caller generation unless explicitly enabled.Surface actual
ghCLI error messages inunsubscribe-threadswarnings. Previously,RuntimeErrordetails from failed API calls were discarded, making Phase 1 REST failures impossible to diagnose from CI logs.Enable
delete-branch: trueon allpeter-evans/create-pull-requestinvocations. Stale automation PRs are now auto-closed when a subsequent workflow run finds no changes to commit.Add
gitleaksto the tool runner registry with binary download support and[tool.gitleaks]configuration bridge. Migratelint-secretsworkflow job fromgitleaks/gitleaks-actiontorepomatic run gitleaks.Move lychee config from
lychee.tomlto[tool.lychee]inpyproject.toml. The tool runner’s TOML bridge translates it to a native config file at runtime. Downstream repos with a standalonelychee.tomlcan do the same.Fix
format-imagesjob failing becauseoxipngis not packaged in Ubuntu. Install from the GitHub release.debinstead, allowing the job to run onubuntu-slim.
6.6.0 (2026-03-23)¶
Remove
yamllintandzizmorinit components. The tool runner already falls back to bundled default configs at runtime, so copying them into downstream repos was redundant. Defaultexcludereduced to["labels", "skills"]. Downstream repos withyamllintorzizmorin their[tool.repomatic] excludelist must remove those entries.Add
repomatic clean-redundant-configscommand and autofix workflow job. Detects native config files (.yamllint.yaml,zizmor.yaml, etc.) that are identical to bundled defaults and removes them.repomatic initnow warns about redundant configs found on disk.Rename
WORKFLOW_UPDATE_GITHUB_PATsecret toREPOMATIC_PAT. Workflows accept both names for backward compatibility. Downstream repos with the old name get a migration issue prompting them to rename; the issue closes automatically onceREPOMATIC_PATis detected. Addsetup-guideconfig toggle to[tool.repomatic]to suppress the setup guide issue entirely. Pre-fill the fine-grained PAT creation form via URL parameters and provideghCLI commands for adding the secret, configuring Dependabot, and triggering a verify run. Skip the immutable releases setup step for repositories without achangelog.md.Close orphaned setup guide issues that still reference the old
WORKFLOW_UPDATE_GITHUB_PATtitle. The title change toREPOMATIC_PATmade old issues invisible to the exact-title matching inmanage_issue_lifecycle.Add
lint-repocheck that warns when the repository owner has GitHub Sponsors enabled but.github/FUNDING.ymlis missing. Skips forks and owners without a Sponsors listing.Drop
--aggressivefrom autopep8 flags. It naively wraps lines inside f-string expressions, producing Python 3.12±only syntax (PEP 701) that breaks on Python 3.10/3.11.Surface actual
ghCLI error messages inunsubscribe-threadswarnings. Previously,RuntimeErrordetails from failed API calls were discarded, making Phase 1 REST failures impossible to diagnose from CI logs.
6.5.0 (2026-03-23)¶
Replace
init.excludeandworkflow.sync-excludeconfig keys with a unifiedexcludekey. Bare names exclude entire components (e.g.,"skills"); qualifiedcomponent/identifierentries exclude specific files (e.g.,"workflows/debug.yaml","skills/repomatic-audit","labels/labeller-content-based.yaml"). Old keys are no longer recognized and will produce a hard error.Remove legacy
[tool.gha-utils]and[tool.repokit]config section migration. Projects still using old section names must manually rename to[tool.repomatic].Remove automatic cleanup of legacy
.github/zizmor.{yml,yaml}files and.claude/skills/gha-*/directories during init.Add
repomatic run <tool>command for unified tool invocation with managed config resolution. Resolves config through a 4-level precedence chain: native config file,[tool.X]inpyproject.toml, bundled default, bare invocation. Use--listto see all managed tools and their active config source.Add
yamllintinit component with bundled default config (data/yamllint.yaml). Excluded from init by default likezizmor.Add 13 tools to the
repomatic runregistry: actionlint, autopep8, biome, bump-my-version, labelmaker, lychee, mdformat, mypy, pyproject-fmt, ruff, typos, yamllint, zizmor. Includescomputed_paramssupport for tools that derive CLI args from project metadata (e.g., mypy’s--python-versionfromrequires-python).Add binary download infrastructure for tools distributed as platform binaries (actionlint, biome, labelmaker, lychee, typos). Downloads are SHA-256 verified with streaming checksums.
sync-labelsdownloads labelmaker on-demand viabinary_tool_context().Migrate all workflow tool invocations to
repomatic run, removinguv tool install,curl/sha256sum/tarinstall steps, and inline version pins from workflow YAML.Add
repomatic update-checksums --registryto update SHA-256 hashes in the tool runner registry.Update Renovate custom managers to target the tool runner registry for binary tool versions.
Add TOML and JSON serialization for
[tool.X]config translation. Downstream repos can now configure lychee via[tool.lychee]and biome via[tool.biome]inpyproject.tomlwithout creating separate config files.
6.4.1 (2026-03-11)¶
Add
github-jsonoutput dialect forrepomatic metadata. Bundles all metadata keys into a singlemetadataJSON output, eliminating manual per-keyoutputs:declarations in GitHub Actions workflows. Downstream jobs access values viafromJSON(needs.metadata.outputs.metadata).key_name.Migrate all workflow
metadatajobs to--format github-jsonwith explicit key filtering, reducing each job’soutputs:section to a single static line.Rename
project-metadatajob and step IDs tometadatain all workflows, shortening downstream expressions.Add key filtering to
repomatic metadata. Pass key names as arguments to output only specific metadata values.Add
--list-keysflag torepomatic metadatato display all available keys with descriptions.Rename
lintersinit component tozizmor. Defaultinit.excludeupdated to["labels", "skills", "zizmor"].Remove
sync-zizmorautofix job, CLI command, andzizmor.syncconfig toggle.zizmor.yamlis now user-owned:repomatic init zizmorcreates a default if missing, the lint workflow generates an ephemeral default at CI time, and downstream repos have full control of their config without overwrite.Rename
bump-versionsjob tobump-versioninchangelog.yaml, matching the PR body template name.Upgrade zizmor from
1.22.0to1.23.0. Re-enable thetemplate-injectionaudit now that the multiline expression crash is fixed upstream (zizmor#1669).Fix
github-jsonmetadata dialect serializing list values as JSON arrays. GitHub Actions stringifies arrays as the literal word “Array” when interpolated in${{ }}expressions, breaking jobs that pass file lists,cli_scripts, orbuild_targetsto shell commands or environment variables. All list/tuple metadata values are now pre-formatted viaformat_github_value(): file lists become space-separated quoted strings, plain string lists become space-separated unquoted strings, and dict lists become JSON strings (enabling the doublefromJSON()pattern for matrix inclusion).Fix YAML line-length violation in
docs.yamlworkflow template.Fix
repomatic workflow sync --format header-onlyfailing when a target workflow file does not exist in the downstream repo. Missing files in the default set are now silently filtered out, and explicitly named missing files produce a warning instead of an error.Remove unused
pytest-casestest dependency.Add
pytest-xdisttest dependency and enable parallel test execution by default via--numprocesses=autoinaddopts.
6.4.0 (2026-03-10)¶
Rename
optimize-imagestoformat-images. Image lossless optimization is a format operation (semantics-preserving rewrite using external tools), aligning it with theformat-*naming convention.Add
format-imagesPR body template and use--template format-imagesin the workflow, aligning with the standard format job pattern.Allow
--prefixand--templateto be combined inrepomatic pr-body. When both are given, the prefix is prepended before the rendered template content.Add
uv-lock-synctoggle to[tool.repomatic]. Projects can now disablesync-uv-lockby settinguv-lock-sync = false.Add
dev-release-synctoggle to[tool.repomatic]. Projects can now disablesync-dev-releaseby settingdev-release-sync = false.Rename
sync-linter-configstosync-zizmorandlinter-synctoggle tozizmor-sync. Sync jobs are named after the specific tool they sync, not a generic category.Add
awesome-template-sync,bumpversion-sync,gitignore-sync,labels-sync,zizmor-sync, andmailmap-synctoggles to[tool.repomatic]. All sync operations can now be individually disabled.Add
repomatic sync-labelsCLI command wrappinglabelmakerinvocation with toggle check, profile detection, and extra label file handling.Replace
AndreasAugustin/actions-template-syncwith nativerepomatic sync-awesome-templateCLI command. Removes a third-party action dependency and aligns the job with the standard sync pattern.Centralize all CI context reads (repository slug, server URL, SHA, run ID, actor, etc.) into
Metadatacached properties. Modules no longer readGITHUB_*environment variables directly.Remove
--include-package-data=extra_platformsfrom Nuitka extra args.extra-platforms11.0.0 has no non-Python data files — all*_datamodules are regular imports traced by Nuitka automatically.Make
Metadataa singleton: everyMetadata()call returns the same instance within a process, eliminating redundant instantiation across the codebase.Remove
get_repo_slug()fromgh.pyin favor ofMetadata.repo_slug.Skip
init ruffconfig injection informat-pythonjob for non-Python projects. Doc-only repos use Ruff for code-block formatting without needing a[tool.ruff]section.Add
repomatic init typosto sync shared typos spell checker configuration intopyproject.toml. Includes proper noun corrections and<!-- typos:off -->/<!-- typos:on -->block markers for section-level suppression.Use TOML sub-keys for all grouped options in
[tool.repomatic]. Fields sharing a feature area are now nested under a common prefix (e.g.,nuitka.enabled,gitignore.location,test-plan.file,labels.extra-files,workflow.sync-exclude). Onlypypi-package-historyremains flat.Add
workflow-source-pathsoption to[tool.repomatic]. Thin-caller and header-only workflows now includepaths:filters adapted for the downstream project’s source directory, reducing unnecessary CI runs. Auto-derived from[project.name]when not explicitly configured.Add
repomatic configcommand that renders the[tool.repomatic]configuration reference table fromConfigdataclass docstrings.Add
### Configurationsections to PR body templates listing relevant[tool.repomatic]options.
6.3.2 (2026-03-08)¶
Add
--all-extrasto theuv syncstep intests.yamlto catch incompatibilities between optional dependency groups. No-op for projects with no extras.Add
test-package-installjob totests.yaml: verifies all[project.scripts]entry points install and run correctly viauvx,uv run --with, module invocation,uv tool install, andpipx run, from both PyPI and GitHub. Runs once on a single stable OS/Python instead of repeating across the full matrix. Addcli_scriptsoutput torepomatic metadata.Sync
customManagersto downstreamrenovate.json5so Renovate can update inline version pins in workflow files (Python packages inuvx/uv pipcommands, binary tool versions in download URLs, npm packages). Only the self-referencing uv entry (which targetsrenovate.json5itself) is excluded to prevent an endless sync loop.Fix
generate_thin_caller()strippingpathsandpaths-ignorefilters from generated thin callers. Canonical workflow paths reference the repomatic source tree and would incorrectly restrict CI triggers in downstream repos.Auto-remove legacy
.github/zizmor.ymland.github/zizmor.yamlduringrepomatic initandsync-linter-configs, completing the migration to root-levelzizmor.yaml.Fix
optimize-imagesjob failing onubuntu-slimbecauseoxipngis not available there.Add
date-releasedupdate entry forcitation.cffto the bundledbumpversion.tomltemplate so downstream repos keep their release date in sync during version bumps.Reduce PR noise with more specific uv version package update regex.
Skip
sync-bumpversionjob for non-Python projects by gating onis_python_projectmetadata.
6.3.1 (2026-03-07)¶
Register
repomatic-auditskill inCOMPONENT_FILES, data symlinks, and_SKILL_PHASESso it syncs to downstream repos.Remove stale
repomatic-metadataentry from_SKILL_PHASES.Add
test_skills_consistencytest to catch mismatches between.claude/skills/directories and their registrations in code.
6.3.0 (2026-03-06)¶
Make
repomatic initalways overwrite managed files (workflows, configs, skills) by default. Remove the--overwriteflag.changelog.mdis never overwritten once it exists.Remove
extend-includefor Markdown files now that ruff 0.15.5 discovers*.mdby default in preview mode.Use short SHA in release workflow job names instead of the full 40-character commit hash.
Make
repomatic initoutput contextual: distinguish created vs updated vs skipped files, warn about excluded files still on disk, and simplify next steps to point to thesetup-guideworkflow.Auto-remove legacy
.claude/skills/gha-*/skill directories duringrepomatic init, completing thegha-utils→repomaticrename migration.Make
sync-bumpversion,sync-linter-configs, andsync-skillsCLI commands report both created and updated files.Fix all new ruff
0.15.5preview violations.Add
LOG015to ruff ignore list: root logger calls (logging.info(), etc.) are intentional since the CLI configures the root logger via Click.Refactor
sync-bumpversionto replace the entire[tool.bumpversion]section from the bundled template instead of applying incremental migrations. Remove legacy backtick migration code.Add parametrized sync tests to catch drift between all bundled data files and repomatic’s own config: template TOML settings vs
pyproject.toml(ruff, mypy, pytest, bumpversion), zizmor vs root config, and a loadability check for all registered data files (no dangling symlinks).
6.2.1 (2026-03-06)¶
Fix
actions/checkoutwiping downloaded Python package artifacts (.whl,.tar.gz) beforegh release createcould attach them. Move checkout before artifact download so the release draft includes the Python distribution files.Fix
fix-changelogmarking releases as “not available on GitHub” when the GitHub release is still a draft. Move the job fromautofix.yamltochangelog.yamlwhich has aworkflow_runtrigger that fires after “Build & release” completes, when the release is published and visible to the public API.
6.2.0 (2026-03-05)¶
Extract hand-written GFM alert blocks (editorial admonitions) from changelog entries.
Fix Nuitka-compiled binaries silently producing no output when the entry point is a
__main__.pyinside a package. Auto-detect this pattern and pass the package directory with--python-flag=-minstead of the file path.Consolidate documentation.
Trim verbose workflow YAML comments that are now documented in Python code, replacing them with brief pointers to the relevant module.
Add knowledge placement guide to
CLAUDE.mdwith audience-based routing table and YAML→Python distillation pattern.Add misplaced knowledge detection to QA agent checklists.
Add
rename-fromrules to migrate all 9 default GitHub labels.Add
init-excludeconfig option to skip components duringrepomatic init. Extendworkflow-sync-excludeto also apply torepomatic initworkflows. Defaultinit-excludeto["labels", "linters", "skills"]since these files are regenerated by workflows at execution time.Pre-compute availability admonition in
release_notes_with_admonitionmetadata output so GitHub releases include PyPI and GitHub links at creation time, without waiting for thefix-changelog+sync-github-releasesround-trip.Support GitHub immutable releases by restructuring the release workflow to draft-then-publish.
Add
repomatic-topicsskill for optimizing GitHub repository topics for discoverability.Add
lint-repocheck that warns when GitHub topics are not a subset ofpyproject.tomlkeywords.Replace
calibreapp/image-actionswithrepomatic optimize-imagesCLI command using losslessoxipng(PNG) andjpegoptim(JPEG). Exclude WebP and AVIF for lack of stability.Use GFM admonitions (
> [!WARNING]) instead of emoji-prefixed blockquotes in the setup guide template.Add
sync-dev-releaseCLI command and workflow job to maintain a rolling dev pre-release on GitHub with latest binaries and Python package.Create dev pre-releases as drafts to stay compatible with GitHub immutable releases. Clean up all stale
.dev0releases on each sync, not just the current version’s.Preserve dev release assets (compiled binaries) across documentation-only pushes by editing the existing release instead of deleting and recreating it.
Automatically migrate
[tool.gha-utils]and[tool.repokit]config sections to[tool.repomatic]duringrepomatic init. All commands fall back to legacy section names when[tool.repomatic]is absent.Add version to compiled binary filenames (
repomatic-6.2.0-linux-arm64.bininstead ofrepomatic-linux-arm64.bin), matching Python package naming conventions.Freeze readme binary download URLs during releases, replacing
/releases/latest/download/with versioned/releases/download/vX.Y.Z/paths.Replace
softprops/action-gh-releasewithgh release createin the release workflow. All release operations now use theghCLI.Move dev release asset upload from shell script into
sync-dev-releaseCLI command with--upload-assetsoption, replacing the workflow’s inline script.Fix
update-checksumsskipping multi-lineecho ... \+| sha256sum --checkpatterns where the hash andsha256sumkeyword are on different lines. This caused RenovatepostUpgradeTasksto silently leave stale SHA-256 hashes after version bumps.Force native ARM64 Python on Windows ARM64 test runners via
UV_PYTHONto work around uv defaulting to x86_64 emulation. Fixestest-results-parser(fromcodecov-cli) failing to compile its Rust extension under cross-architecture emulation.Fix
skip_binary_buildtest expectingFalsein CI push events where only non-binary-affecting files changed.Fix
fix-changelogandfreeze_fileproducing a trailing blank line when the last changelog section is modified. Both write sites now normalize to exactly one trailing newline.
6.1.0 (2026-02-27)¶
Add
unsubscribe-threadsCLI command to unsubscribe from closed, inactive GitHub notification threads.Generate thin caller workflows with explicit secret forwarding instead of
secrets: inherit, eliminating zizmor’ssecrets-inheritwarnings in downstream repositories.Move zizmor config from
.github/zizmor.ymltozizmor.yamlat repo root for visibility and consistency with other root-level config files.Centralize PAT existence check via workflow-level
envblock, replacing duplicatedsecrets.*ternary expressions in PAT hint steps and thesetup-guideinvocation.Restrict binary compilation to the HEAD commit for non-release pushes, avoiding redundant Nuitka builds across all commits in multi-commit push events.
Add
prebake-versionCLI command to inject Git commit hash into__version__before Nuitka compilation. Standalone binaries now report the exact commit they were built from (e.g.,6.1.0.dev0+abc1234).Pre-bake dev versions automatically in the
compile-binariesworkflow job before Nuitka runs.Detect orphaned versions in
lint-changelog: versions that exist as git tags, GitHub releases, or PyPI packages but have no changelog entry. In--fixmode, insert placeholder sections with correct comparison URLs.Rename
lint-changelogworkflow job tofix-changelogsince it always runs with--fix. The CLI command remainslint-changelog.Group CLI commands into sections (Project setup, Release & versioning, Sync, Linting & checks, GitHub issues & PRs) for better discoverability in help output.
Add
list-skillsCLI command to display all available Claude Code skills grouped by lifecycle phase (Setup, Development, Quality, Release).Add next-step handoff suggestions to all Claude Code skills, creating a guided workflow where each skill suggests what to run next.
Document skills with a grouped table, recommended workflow sequence, and walkthrough example in
readme.md.Add
pypi-package-historyconfig option for renamed projects.lint-changelognow fetches releases from former package names and generates correct PyPI URLs for each version.Add
sync-github-releasesCLI command to sync GitHub release notes fromchangelog.md.Make changelog entry and GitHub release body assembly template-driven.
release-notes.mdcontrolschangelog.mdlayout (including the##version heading),github-releases.mdcontrols GitHub release bodies. Editing one template affects only its destination.Converge
freeze()andupdate()onto the same decompose→render→replace pattern used bylint_changelog_dates(), with therelease-notes.mdtemplate as the single source of truth for section layout.Only produce XML coverage and JUnit XML output when running
pytestin the CI workflow.
6.0.1 (2026-02-24)¶
Note
First release under the repomatic name on PyPI, after repokit was rejected for typo-squatting (see 6.0.0 below). The GitHub repository is kdeldycke/repomatic.
Rename project from
repokittorepomatic. Rename GitHub repository fromkdeldycke/repokittokdeldycke/repomatic.
6.0.0 (2026-02-24)¶
Caution
This release was deleted from PyPI. It was supposed to be published as repokit, but PyPI flagged the name as typo-squatting the pre-existing repo-kit package.
Note
6.0.0 is available on 🐙 GitHub.
Warning
6.0.0 is not available on 🐍 PyPI.
Rename project from
gha-utilstorepokit. Rename GitHub repository fromkdeldycke/workflowstokdeldycke/repokit.
5.14.1 (2026-02-24)¶
Note
5.14.1 is available on 🐍 PyPI.
Warning
5.14.1 is not available on 🐙 GitHub.
Re-release
5.14.0as5.14.1on PyPI but update Python package metadata to point to the newrepomaticname and repository URL instead ofrepokit.
5.14.0 (2026-02-24)¶
Caution
5.14.0 has been yanked from PyPI.
Warning
Attempt to be the final release under gha-utils name on PyPI, with metadata pointing to repokit. This release was yanked after the repokit name was rejected by PyPI for typo-squatting the pre-existing repo-kit package.
Note
5.14.0 is available on 🐙 GitHub.
Add messages to redirect PyPI package from
gha-utilstorepokitand GitHub repository fromkdeldycke/workflowstokdeldycke/repokit.
5.13.0 (2026-02-23)¶
Harmonize sync/update naming across CLI commands, workflow jobs, PR branches, and templates.
sync-Xmeans regenerate from a canonical source;update-Xmeans compute from project state. Breaking renames:update-gitignore→sync-gitignore,mailmap-sync→sync-mailmap,deps-graph→update-deps-graph. Newsync-bumpversionCLI command replacesinit bumpversionin the autofix job. Fixautofix-typobranch →fix-typos.Add Claude Code skills (
.claude/skills/) wrappinggha-utilsCLI commands as slash commands:/gha-init,/gha-changelog,/gha-release,/gha-lint,/gha-sync,/gha-deps,/gha-test,/gha-metadata. Distribute skills viagha-utils init skillsandgha-utils sync-skillsfor downstream repos.Add
sync-renovateCLI command and autofix workflow job to keep downstreamrenovate.json5in sync with the canonical reference fromgha-utils. Opt out viarenovate-sync = falsein[tool.gha-utils].Add
workflow-syncandworkflow-sync-excludeconfig keys to[tool.gha-utils]for per-project control over which workflows are synced. Explicit CLI positional arguments override both settings.Add
--format header-onlymode togha-utils workflow syncfor syncing headers (name,on,concurrency) of non-reusable workflows liketests.yaml.Use explicit
--format thin-callerinautofix.yamlsync step.Fix race condition where binary builds could finish before
create-release, causinggh release uploadto fail with “release not found”. Makecompile-binariesdepend oncreate-release.Add
lint-workflow-securityjob to lint workflow usingzizmorto detect security vulnerabilities in GitHub Actions workflows. Closes #1478.Add
sync-linter-configsCLI command and autofix job to sync.github/zizmor.ymlto downstream repos. Addlintersinit component.Add per-project dependency graph configuration to
[tool.gha-utils]:dependency-graph-all-groups,dependency-graph-all-extras,dependency-graph-no-groups,dependency-graph-no-extras, anddependency-graph-level. Theupdate-deps-graphcommand reads these as defaults, with CLI flags taking precedence. The autofix workflow no longer hardcodes--all-groups --all-extras.
5.12.0 (2026-02-22)¶
Decouple GitHub release creation from binary builds. The release is published immediately after tagging with the Python package only; each binary uploads itself independently as its build completes.
Remove
gha-utils collect-artifactssubcommand. Binary renaming and upload is now handled directly in thecompile-binariesworkflow job.Add
nuitka-extra-argsconfig field to[tool.gha-utils]for project-specific Nuitka flags. Remove hard-coded Nuitka includes from the workflow. Fixes downstream repos failing ongha_utils/templates/*.mdinclude.Add
🪫 AI sloplabel. Merge🎁 feature requestinto✨ enhancement. Fix label descriptions and normalize hex color casing.
5.11.1 (2026-02-21)¶
Declare
WORKFLOW_UPDATE_GITHUB_PATas an optionalworkflow_callsecret to fix downstream compatibility.Fix Renovate
postUpgradeTasksfailing to update SHA-256 checksums. Replace containerbaseinstall-tool uvwith a direct pinned binary download verified by SHA-256.Fix
gha-utils workflow syncdefaulting to@maininstead of the version tag when run from a released package.
5.11.0 (2026-02-21)¶
Add
--no-group,--no-extra,--only-group, and--only-extraoptions todeps-graphcommand.Make
gha-utils init bumpversionidempotent: updates existing[tool.bumpversion]configs with dev versioning keys (parse,serialize,[parts.dev]) and bumpscurrent_versionto.dev0.Add
::error::annotation whencreate-pull-requestfails due to missingWORKFLOW_UPDATE_GITHUB_PATsecret.Add
Dependabot alertsandIssuespermissions to setup-guide issue template, matching the readme.Document which jobs use
WORKFLOW_UPDATE_GITHUB_PATand why each permission is needed.Skip PyPI package build for the post-release bump commit during releases.
5.10.4 (2026-02-19)¶
Replace
revert-squash-mergeauto-revert withdetect-squash-mergenotification. On accidental squash merge of a release PR, the job now opens a GitHub issue and fails the workflow instead of reverting onmain. The release is skipped; the maintainer releases the next version when ready.Skip
lint-changelogjob on release and post-release commits.Skip Nuitka binary builds for the post-release bump commit during releases, halving the number of builds.
Fix freeze/unfreeze cycle corrupting YAML and JSON5 comments that mention
--from . gha-utils.
5.10.3 (2026-02-19)¶
Add
--include-package-data=extra_platformsto Nuitka build to fixFileNotFoundErroronarchitecture_data.pyin compiled binaries.Add
sync-uv-lockcommand that runsuv lockand avoidexclude-newer-packagetimestamp noise.Add
sync-uv-lockjob toautofix.yamlto replace Renovate’slockFileMaintenance, which cannot reliably revert timestamp-only noise inuv.lock.Remove
update-exclude-newercommand.Remove Renovate
lockFileMaintenanceconfiguration and itspostUpgradeTasksrule.Revert
exclude-newerinpyproject.tomlfrom a fixed date to"1 week".
5.10.2 (2026-02-18)¶
Add
gha-utils lint-changelogcommand to verify changelog release dates against PyPI upload dates, with git tag fallback for non-PyPI projects.Add auto-correct changelog capabilities to fix dates and add availability admonitions for PyPI and GitHub releases.
Add
lint-changelogjob toautofix.yamlto auto-fix changelog dates and admonitions via PR.Add PyPI and GitHub release availability admonitions in changelog.
Change development warning from
[!IMPORTANT]to[!WARNING]GFM alert.Document version and tag naming conventions.
Fix Renovate
postUpgradeTasksfailing withuvx: not foundby installing tools viabinarySource: installinside the Renovate Docker container.Fix Renovate aborting entirely when python.org API is rate-limited.
Move
exclude-newerdate update from direct push tomaininto Renovate’s lock file maintenance PR viapostUpgradeTasks.Skip Nuitka binary builds for non-code pushes to
main.
5.10.1 (2026-02-17)¶
Fix
publish-github-releasejob failing becauseactions/checkoutwiped downloaded artifacts.Fix broken links issue being created when lychee exits with a non-zero code but produces no output file.
5.10.0 (2026-02-16)¶
Add
gha-utils initcommand to bootstrap repositories for reusable workflows.Add
sync-workflowsjob toautofix.yamlfor downstream repos to keep their thin-caller workflow files in sync.Add
setup-guidejob toautofix.yamlfor user onboarding and configuration validation.Add reopen support to issue lifecycle management. Previously closed issues are reopened instead of creating duplicates.
Add SHA-256 checksum verification for all
lychee,typos,Biomeandlabelmakerbinary downloads, withgha-utils update-checksumscommand and RenovatepostUpgradeTasksfor automatic updates.Fix creation of GitHub release in
create-releasejob.Replace thin-wrapper
lycheeverse/lychee-action,crate-ci/typosandbiomejs/setup-biomeactions by direct binary downloads for better performance and reliability.Auto-detect options values from
$GITHUB_REPOSITORYforbroken-links,lint-repoandrelease-prepcommands.Auto-detect version in
pr-bodyfrom[tool.bumpversion]inpyproject.toml.Add
.dev0suffix to development versions per PEP 440, with--versionflag appending the short git commit hash for dev versions (e.g.,5.9.2.dev0+abc1234). Closes #169.Add quick start tutorial to readme.
Consolidate Lychee and Sphinx linkcheck broken link reports into a single “Broken links” issue.
Add
Full Changelogcomparison URL link to GitHub release notes.Default
mailmap-syncdestination to the source file path (in-place update) instead of stdout.Enable consecutive ordered list numbering (
--number) in mdformat.Display auto-detected environment from extra-platforms in
debug.yamlworkflow.Move release notes, PR metadata block, and refresh tip to markdown templates in
gha_utils/templates/.Regroup GitHub-specific modules under
gha_utils/github/.Remove
merge-method-noticejob.Remove
gha-utils bundledsubcommand group.Experiment with Claude agents.
5.9.1 (2026-02-15)¶
Refactor PR body templates from Python literals to markdown files with YAML frontmatter for metadata (titles, commit messages). The
pr-bodyCLI now outputstitleandcommit_messagealongsidebody.Add and enrich PR templates for all autofix jobs, version bumps, release preparation, and
.gitignoreupdates.Dogfood
gha-utilsfrom local source onmainbranch viauvx --from . gha-utils. During release freeze, CLI invocations are frozen back to a PyPI version for downstream compatibility.Add fallback jobs to
release.yamlto detect and auto-reverts squash-merged release PRs.Rebase lock file maintenance PR whenever
mainadvances, not just on conflicts.Remove
--insecureflag and redirect-suppression excludes from lychee configuration.
5.9.0 (2026-02-14)¶
Add
gha-utils workflowcommand group withcreate,sync, andlintsubcommands.Add
[tool.gha-utils] nuitkaoption to opt out of Nuitka binary compilation.Move all reusable workflow inputs to
[tool.gha-utils]inpyproject.toml.Add
gha-utils update-gitignoresubcommand replacing shell-based.gitignoregeneration.Have
lint-reporeadpackage_name,is_sphinx, andproject_descriptiondirectly frompyproject.toml.Add
--source-urloption togha-utils sphinx-linkcheck.Include actual output in test-plan assertion error messages.
Replace
pr-metadatacomposite action withgha-utils pr-bodysubcommand.Have
test-plananddeps-graphread[tool.gha-utils]config directly frompyproject.toml.Drop
--forcefromsphinx-apidocinupdate-docsjob to preserve downstream RST customizations.Recreate version bump PRs on every push to
mainto prevent merge conflicts.Fix
<details>tag in PR body rendered as code block due to indentation.Deduplicate
gitignore-extra-categorieswith base categories while preserving order.Add
--templateoption togha-utils pr-bodywith built-inbump-versionandprepare-releasetemplates.Add refresh tip admonition to all auto-created PR bodies.
Pin lychee binary version in
docs.yamland add Renovate custom manager for updates.
5.8.0 (2026-02-11)¶
Fix stale checkout in
bump-versionscausing merge conflicts after releases.Add
cancel-runs.yamlworkflow to cancel in-progress and queued runs when a PR is closed.Add
gha-utils pr-bodysubcommand to generate PR body with workflow metadata.Remove
update-cli-pinsjob fromrelease.yaml. Renovate already handles updatinggha-utilsversion.
5.7.2 (2026-02-11)¶
Replace
taiki-e/install-actionwith directcurldownload forlabelmakerbinary.Fix
update-cli-pinsjob failing due to shallow clone.Fix
changelog.yamlconcurrency race from fast-completingrelease.yaml.Include version numbers in post-release commit message (e.g.
[changelog] Post-release bump v5.7.1 → v5.7.2).Only run
debug.yamlworkflow manually and once a month.Document the freeze/unfreeze release commit vocabulary.
Document the ✅/⁉️ convention for stable vs. unstable jobs.
5.7.1 (2026-02-10)¶
Fix
gha-utilsCLI version pins stuck at5.6.1by moving pin updates to a post-releaseupdate-cli-pinsjob inrelease.yamlthat runs after the new version is published to PyPI.Add build provenance attestation to
build-packagejob for defense-in-depth supply chain security.Add
.mdxto recognized Markdown file extensions for ruff formatting and file discovery.Preserve
[project.entry-points]table format informat-pyprojectautofix job.Move 6 autofix jobs (
fix-typos,optimize-images,update-mailmap,update-deps-graph,update-docs,sync-awesome-template) fromdocs.yamltoautofix.yaml.Move
check-broken-linksjob fromlint.yamltodocs.yaml.Harmonize job IDs to consistent
verb-targetnaming:autofix-typotofix-typos,awesome-template-synctosync-awesome-template,lint-mypytolint-types,lint-github-actiontolint-github-actions,check-secretstolint-secrets,package-buildtobuild-package,pypi-publishtopublish-pypi,github-releasetocreate-release,git-tagtocreate-tag,version-incrementstobump-versions,sphinx-linkchecktocheck-sphinx-links,broken-linkstocheck-broken-links.
5.7.0 (2026-02-09)¶
Add
gha-utils sphinx-linkcheckcommand to detect broken auto-generated links.Replace
blacken-docsbyrufffor Markdown code formatting.Remove
blacken_docs_paramsfromgha-utils metadataoutput.Fix
update-deps-graphjob.Fix
pr-metadataaction stripping backticks from PR body.Fix
mappingproxyobject pickling error in test plan execution on Python < 3.13.Fix
UnicodeEncodeErroron Windows formailmap-synccommand and test plan execution.Simplify
changelog.yamlconcurrency to be always-cancellable.Prevent redundant
prepare-releasedouble-runs on every push tomain.Add
workflow_dispatchtrigger to all workflows exceptrelease.yamlfor manual re-runs from the Actions UI.Skip expensive test matrix on doc-only and workflow-only changes.
5.6.2 (2026-02-02)¶
Auto-update
gha-utils==X.Y.ZCLI version pins in workflow files during release.
5.6.1 (2026-02-02)¶
Add missing
renovate.json5template file from the bundled Python package.Keep bundled
renovate.json5configuration in sync with root file from this repository.Add
--no-progressto alluvxcommands in workflows for cleaner CI logs.Add
--frozen --no-progresstouv runcommands in workflows for reproducible builds.Detect Renovate PRs by branch name pattern (
renovate/*) to skip labellers when Renovate runs as a user account.Rename
update-autodocjob toupdate-docsand rundocs/docs_update.pyif present to generate dynamic content (tables, diagrams, directives) aftersphinx-apidoc.
5.6.0 (2026-02-02)¶
Add
migrate-to-renovatejob torenovate.yamlworkflow that creates a PR that create arenovate.json5and remove Dependabot config.Add dynamic prerequisites status table to migration PR body with links to settings pages.
Add
--formatoption togha-utils check-renovatefor JSON and GitHub Actions output formats.Move prerequisite validation to
renovatejob to fail fast if requirements aren’t met.Rename
gha-utils check-renovate-prereqstogha-utils check-renovate.Fix
gha-utils update-exclude-newerto handle relative date strings.
5.5.1 (2026-01-30)¶
Replace workflow shell scripts with CLI commands.
Add
pr-metadatacomposite action to deduplicate PR body metadata across workflows.Increase Renovate
minimumReleaseAgefor patches from 5 to 8 days to avoid proposing updates blocked by uv’sexclude-newersetting.Enhance
gha-utils update-exclude-newerto add missingexclude-newerwhen[tool.uv]section exists.Add
renovate.json5to bundled exports for Dependabot-to-Renovate migration.Add Dependabot config check to
lint-repocommand with migration guidance.Fix Codecov upload by splitting
report_typeinto separate action calls.
5.5.0 (2026-01-29)¶
Add
gha-utils update-exclude-newercommand to update the exclude-newer date in pyproject.toml.Add
gha-utils check-renovate-prereqscommand to validate Renovate prerequisites.Add
gha-utils lint-repocommand to run repository consistency checks.Add
gha-utils git-tagcommand for idempotent Git tag creation and pushing.Add
gha-utils verify-binarycommand to verify compiled binary architectures using exiftool.Add
gha-utils collect-artifactscommand to collect and rename artifacts for GitHub releases.Add
gha-utils broken-linkscommand to manage broken link issue lifecycle.Add
gha-utils deps-graphcommand to generate Mermaid dependency graphs from uv lockfile.Replace
pipdeptreewithuv export --format cyclonedx1.5for dependency graph generation.Consolidate all bundled files under
gha-utils bundled export <filename>command.Add bundled mypy and pytest configuration templates.
Use actual filenames with extensions as type IDs (e.g.,
labels.toml,labeller-file-based.yaml).Add smart default output paths for each file type (shown with
--list).Replace
eslintwithbiomefor JSON formatting.Format
pyproject.tomlfile withpyproject-fmt.
5.4.0 (2026-01-25)¶
Add unified
gha-utils configcommand group withinit,export,labels, andworkflowssubcommands.Move
gha-utils labelstogha-utils config labelssubcommand.Move
gha-utils workflowstogha-utils config workflowssubcommand.Merge all configuration modules (
labels.py,workflows.py) into unifiedbundled_configmodule.Add bundled Ruff configuration template (
[tool.ruff]). Closes #659.Fix data files not being included in published package. Data files are now stored directly in
gha_utils/data/.
5.3.1 (2026-01-24)¶
Add
gha-utils sponsor-labelcommand to label issues/PRs from GitHub sponsors.Replace unmaintained
JasonEtco/is-sponsor-label-actionwithgha-utils sponsor-label.Change
gha-utils metadataoutput path from positional argument to-o/--outputoption.Make
--overwritethe default behavior forgha-utils metadata.Fix
labels,workflowsandbumpversioncommands fetching ofgha_utils/data/content.Fix race condition where
version-incrementsjob would skip due to missing tags.Fallback to getting version from commits when tags aren’t available yet.
Replace push-based post-release trigger with
workflow_runtrigger for version increments.
5.3.0 (2026-01-24)¶
Rely on
gha-utils labelsto dump label configuration files for inspection and bootstrapping.Enhance
gha-utils bumpversioncommand to sync the template directly intopyproject.toml.Sync bumpversion config in the
autofixworkflow.Sync
uv.lockfile on version increment and post-release bump commits.Fail job on project description mismatch.
Skip binary compilation for branches that don’t affect code (
.mailmap, docs, images,.gitignore, JSON, Markdown).Remove
GITHUB_CONTEXTenv var requirement from workflows. Now reads event data directly fromGITHUB_EVENT_PATH.
5.2.0 (2026-01-23)¶
Add
gha-utils labelscommand to dump bundled label configuration files.Add
gha-utils workflowscommand to dump bundled workflow templates for inspection and bootstrapping.Add
gha-utils bumpversioncommand to dump bundled bump-my-version configuration template.Rely on
gha-utils release-prepfor release preparation steps.Protect the release commit from cancellation by giving it its own concurrency group.
Fix metadata extraction failing on tag push events due to null SHA.
Trigger version increment PRs immediately after a release instead of waiting for next scheduled run.
5.1.0 (2026-01-23)¶
Add new
gha-utils release-prepcommand to consolidate all release preparation steps.Add new
gha-utils version-checkcommand to prevent double version increments within a development cycle.Switch from from
requirements/*.txtfiles to hard-coding version dependencies for workflow tools.Check consistency between project and repository metadata. Don’t fix them automatically. Refs #93.
Use fixed
exclude-newerdate instead of relative1 weekto preventuv.locktimestamp churn.Reduce frequency of version increment jobs to once a day.
Only update dependency graph on release. Closes #176.
Only bump citation date on a release.
Unfreeze
bump-my-versionfrom 1.1.0.
5.0.1 (2026-01-22)¶
Fix publishing to PyPI by removing URL-based dependency on
mdformat-pelican.Protect both release commits and post-release bump commits from cancellation.
5.0.0 (2026-01-22)¶
Note
5.0.0 is available on 🐙 GitHub.
Warning
5.0.0 is not available on 🐍 PyPI.
Duplicate workflow dependencies from
requirements/*.txtfiles togha-utilspackage as extra dependencies.Replace Dependabot by Renovate for dependency updates. Closes #1728.
Flag abandoned dependencies with
⚠️ stale dependencylabel.Check repository settings requirements for Renovate.
Use Renovate to sync
uv.lockfiles. Removesync-uv-lockjob.Cancel in-progress jobs more aggressively on new commits.
Add
toml_filesandproject_descriptionfields togha-utils metadataoutput.Replace
julb/action-manage-labelbylabelmakerfor label management. Closes #1914.Do not let
actions/labelerremove labels that don’t strictly match its file-based rules.Add Rust-related entries to
.gitignorefile.Sync GitHub repository description from
pyproject.tomlfile. Closes #93.Document workflow concurrency.
Add unittests for workflow content.
4.25.5 (2026-01-09)¶
Fix call to deprecated
extra-platformsmethod.
4.25.4 (2025-12-31)¶
Move auto-lock time from 8:43 to 4:43.
Let projects defined their own cooldown period via the
pyproject.toml.Replace deprecated
codecov/test-results-actionbycodecov/codecov-action.
4.25.3 (2025-12-19)¶
Add Download link to project metadata.
Include license file in package.
Remove utilization workaround for
macos-15-intel.
4.25.2 (2025-12-07)¶
Use uncap dependencies everywhere.
4.25.1 (2025-12-06)¶
Replace
tool.uvsection bybuild-system.
4.25.0 (2025-12-06)¶
Add cooldown period for dependabot updates: 7 days by default, 29 days for major updates, 11 days for minor updates, 5 days for patch updates.
Sets
--exclude-newerto 7 days ago when syncinguv.lockinautofixworkflow.Merge all label syncing jobs into a single one.
Change the
testandtypingextra dependency groups into development dependency groups.Make all documentation-related and typing-related jobs depends on the new development dependency groups.
Remove forcing Python
3.14in documentation-related jobs.Unlock a CPU core stuck at 100% utilization on
macos-15-intel.Document all reusable workflows jobs and their requirements. Closes #60.
Reintroduce Python 3.10 support.
4.24.6 (2025-12-01)¶
Do not check for broken links in pull requests.
4.24.5 (2025-11-28)¶
Use released versions of
mdformat-mystplugin.
4.24.4 (2025-11-27)¶
Add
ubuntu-slimto the list of platforms in debug workflows.
4.24.3 (2025-11-24)¶
Replace
mdformat_frontmatterbymdformat-front-mattersto fix compatibility withmdformatv1.0.0.Activate strict front-matter checking in
mdformatwhen auto-formatting Markdown files.
4.24.2 (2025-11-23)¶
Fix all issues related to the use of
ubuntu-slimrunners.
4.24.1 (2025-11-23)¶
Keep using
ubuntu-24.04for Nuitka builds.
4.24.0 (2025-11-23)¶
Replace
ubuntu-24.04runner byubuntu-slimin all jobs not relying on Docker, and in Nuitka build matrix.Bump
actionlinttov1.7.9.Ignore GitHub links pointing to stable release assets when checking for broken links.
4.23.4 (2025-11-19)¶
Force use of latest Python 3.14 for docs generation.
4.23.3 (2025-11-18)¶
Fix usage against last Click Extra release.
Run tests on Python
3.14tand3.15tfree-threaded variants.
4.23.2 (2025-11-17)¶
Fix lychee runs in
lintworkflow.
4.23.1 (2025-11-02)¶
Fix some incompatibilities between
mdformatplugins.
4.23.0 (2025-10-25)¶
Remove maximum capped version of all dependencies (relax all
~=specifiers to>=). This gives more freedom to downstream and upstream packagers. Document each minimal version choice.Add new
--commandparameter togha-utils test-plancommand as an alias to--binary.Allow
gha-utils test-planto accept a full command line with parameters as input for--command/--binaryoption.Self-check of
gha-utils test-plancommand in its own test plan.Dynamiccaly deepen shallow clones of Git repositories when fetching new commit ranges.
Only runs
optimize-imagesjob if there are image files in the repository.Move runner architecture validation to
gha-utils-only job.Remove dependency on
mdformat_tablesplugin which has been merged intomdformat-gfm.Use un-released versions of
mdformatplugins until their compatibility is restored.Move all typing-related imports behind a hard-coded
TYPE_CHECKINGguard to avoid runtime imports.Fix builds on
macos-26.Skip tests on intermediate Python versions (
3.12and3.13) to reduce CI load.
4.22.0 (2025-10-12)¶
Add new
image_filesfield togha-utils metadata.Only runs
lint-yamljob if there are YAML files in the repository.Only runs
lint-github-actionjob if there are workflow files in the repository.Only runs
broken-linksjob if there are Markdown or rST files in the repository.Only runs
update-mailmapjob if.mailmapfile exists.The
gha-utils test-plancommand now reports the detailed line differences when a*_regex_fullmatchcheck fails.Fix
commit_rangefield when there is only one commit in the range.Flag
macos-26as unstable target by default for Nuitka builds while we wait for a solution upstream.Upload Nuitka crash report as artifacts when the build fails.
Validate architecture of binaries produced by Nuitka builds.
4.21.0 (2025-10-11)¶
Use
astral-sh/setup-uvaction to installuvinstead of manually installing it withpip.Remove
requirements/uv.txtfile.Add new fields to
gha-utils metadata:yaml_filesworkflow_filesmailmap_exists
Check that start and end commit of
commit_rangeexist in the repository before trying to traverse commits with PyDriller.Add
check-runnersjob to always verify the architecture of each runner used to compile binaries with Nuitka.Use
macos-28runner instead ofmacos-15to build binaries forarm64.Use
macos-15-intelrunner instead ofmacos-13to build binaries forx64.Run tests on
macos-28andmacos-15-intelrunners instead ofmacos-15andmacos-13.Only parse
.gitignorefile once, when first needed, and cache the matching function.Run
gha-utilscommands without--verbosity DEBUGoption in jobs to reduce noise.Silence overly verbose debug messages from
py-walklogger.Run
debugworkflow on all platforms targeted by Nuitka builds.Only runs
debugworkflow manually, on demand.Pin version of
awesome-linttov2.2.2.Pin version of
actionlinttov1.7.7.
4.20.0 (2025-10-10)¶
Add new fields to
gha-utils metadata:is_botto detect if the current run is not triggered by a human.build_targetsto list all supported Nuitka build targets.markdown_filesto list all Markdown files in the repository.zsh_filesto list all Zsh files in the repository.json_filesto list all JSON files in the repository.
Include
*.pyi,*.pyw,*.pyxand*.ipynbfiles inpython_filesfield.Include
*.mdown,*.mkdn,*.mdwn,*.mkd,*.mdtxtand*.mdtextfiles indoc_filesfield.Replace
gitignore-parserdependency bypy-walkto fix patterns matching both files and directories.Add support for Python 3.14 syntax in blacken-docs.
Rename
ghdelimiter_XXXXXtags in GitHub action multiline text blocks toGHA_DELIMITER_XXXXXfor better visibility.Check that
gha-utilsCLI can be run as a Python module and withuv runanduvx.Add official support of Python 3.14.
Run tests on Python 3.15-dev.
4.19.1 (2025-09-25)¶
Bump to Click Extra 6.0.0.
4.19.0 (2025-09-25)¶
Check for URL fragments when checking links with Lychee.
Fix compilation of
rfc3987_syntaxdata file thanks to Nuitkav2.7.14.Remove local patch of
gitignore-parser, rely onv0.1.13release instead.Add dependency on
mdformat-recover-urlsto fix URL encoding in Markdown files.Force installation of all dependencies before running Mypy in lint workflow to ensure all
typeshed-*packages are present.Cap
clickto8.2.xseries when installingbump-my-versionto avoid incompatible API changes.Skip linting and sponsoring jobs on Dependabot PRs and
prepare-releasebranch.
4.18.1 (2025-08-18)¶
Patch
gitignore-parserlocally to support Windows paths.
4.18.0 (2025-08-17)¶
Adds
--format jsonoption.Remove
--format plainoption.Returns file paths relative to the current directory whenever we can in
gha-utils metadataoutput.Ignore files matching
.gitignorerules in thepython_filesanddoc_filesfields ofgha-utils metadataoutput.Force all VSCode JSON files to be formatted in
jsoncdialect.Prevent overlapping matching of JSON files by different dialect linters.
Share linter’s file exclusion list between dialects.
Bump hard-coded
eslintandeslint/jsonpackages to their latest versions.
4.17.9 (2025-07-17)¶
Bump
gha-utils.
4.17.8 (2025-07-17)¶
Normalized and deduplicate file paths in
gha-utils metadataoutput.Ignore non-existing files and broken symlinks in
gha-utils metadataoutput.
4.17.7 (2025-07-17)¶
Replace
Superseded by #Nonecomment byNo more broken linkswhen closing issues inbroken-linksjob.Run lychee with
--hidden,--suggest,--insecure,--include-fragmentsand--exclude-all-privateoptions.Hard-code lychee version and freeze it to
v0.19.1.
4.17.6 (2025-07-17)¶
Use
uv-provided ARM64 Python onwindows-11-armplatform for Nuitka builds.Force use of latest
3.13Python for all platforms for Nuitka builds.Fix quoting of file path in
python_filesanddoc_filesmatrix fields.
4.17.5 (2025-06-26)¶
Bump
uv.
4.17.4 (2025-06-20)¶
Remove hard-coded domains to skip when checking URLs. Use a
.lycheeignorefile instead.Fix auto-closing and updating of open broken links issues.
4.17.3 (2025-06-08)¶
Remove temporary
node_modulessubfolder when linting JSON files.Do not fail on Lychee finding bad URLs.
4.17.2 (2025-06-08)¶
Ignore
node_modulessubfolder when linting JSON files.Skip
Sci-Hub,x.comandarchive.phwhen checking URLs because they restricts access to crawlers.Force uv to ignore managed Python on Windows ARM 64.
4.17.1 (2025-05-27)¶
Add new
unstable-targetsparameter to release workflow.Release binaries without the
-buildsuffix in their names.
4.17.0 (2025-05-27)¶
Add a new
-u/--unstable-targetoption tometadatacommand to allow some Nuitka builds to fail.Do not flag
windows-11-armas unstable by default for Nuitka builds.Refactor management of Nuitka build parameters.
Remove
-buildsuffix in binary names produced by Nuitka.
4.16.7 (2025-05-24)¶
Always allows
windows-11-armtarget to fails for Nuitka builds.
4.16.6 (2025-05-24)¶
Add a
stateparameter to the Nuitka build matrix and markwindows-11-armas unstable target while we wait forlxmlto work on it.
4.16.5 (2025-05-19)¶
Print binary metadata after compiling them with Nuitka.
Fix production of arm64 binaries on Windows.
4.16.4 (2025-05-18)¶
Keep to the top the first comment in
.mailmapfiles.
4.16.3 (2025-05-13)¶
Bump dependencies.
4.16.2 (2025-04-28)¶
Add a new
--show-trace-on-error/--hide-trace-on-erroroption togha-utils test-plancommand to show execution trace of CLI on error.
4.16.1 (2025-04-26)¶
Use latest
gha-utilsCLI to build ARM64 binaries by default.
4.16.0 (2025-04-26)¶
Add a new
--exit-on-error/-xoption togha-utils test-plancommand to exit right away on the first failing test.Add a new
--select-test/-toption togha-utils test-plancommand to run specific test cases.Rename short option for
--timeoutingha-utils test-plancommand from-tto-T.Add a new
--stats/--no-statsoption togha-utils test-plancommand to control display of statistics at the end of test execution.Use
windows-11-armto build Windows binaries for arm64 with Nuitka.Add
windows-11-armto the test matrix.Remove tests on
ubuntu-22.04-arm,ubuntu-22.04,windows-2022andwindows-2019to keep matrix small.
4.15.6 (2025-04-20)¶
Avoid
bump-my-versionv1.1.1due to regression.
4.15.5 (2025-03-13)¶
Re-release to fix GitHub release notes.
4.15.4 (2025-03-13)¶
Fix fetching of released version and notes on release commits.
4.15.3 (2025-03-12)¶
Use latest
gha-utilsCLI to fix release notes in GitHub releases.
4.15.2 (2025-03-12)¶
Use uv-provided Python to compile binaries with Nuitka on Linux.
Populate
current_versionandrelease_notesfield ingha-utils metadataoutput for unreleased versions.
4.15.1 (2025-03-10)¶
Remove deprecated
--planoption.Remove Nuitka script command extension workaround.
Fix arguments normalization on Windows for CLI parameters in test plans.
4.15.0 (2025-03-05)¶
Add support for
only_platformsandskip_platformssettings in test plans, to finely select platforms to run tests on.Add a
--skip-platform/-soption togha-utils test-planto allow skipping of test plan on a whole set of platforms.Rename
--planoption to--plan-file.Allow
--plan-file/-Foption to be used multiple times ingha-utils test-planto merge multiple test plans.Add a new
--plan-envvar/-Eoption to allowgha-utils test-plancommand to read test plan from environment variables.Allow ad-hoc YAML
test-planto be passed as a input parameter in reusedreleaseworkflow.Fix running of Nuitka-compiled
gha-utils metadatacommand.Drop support for Python 3.10.
Use
windows-2025instead ofwindows-2022for Nuitka builds.Add
windows-2025to the test matrix.
4.14.2 (2025-02-19)¶
Fix update of
.gitignorewithgitignore-extra-contentcontent.Fix
--timeoutparameter ongha-utils test-plancall in release workflow.Move all high level CLI tests to test plan file.
4.14.1 (2025-02-16)¶
Note
4.14.1 is available on 🐍 PyPI.
Warning
4.14.1 is not available on 🐙 GitHub.
Add a new
test-plan-fileparameter to thereleaseworkflow.Remove the
binaries-test-planparameter inreleaseworkflow.Allow for setting a specific
timeoutfor each CLI test case.Allow
timeoutto be floats.Fix production of
nuitka_matrixfield ingha-utils metadataoutput.Add
junit.xmlfile in default.gitignoreextra directive.
4.14.0 (2025-02-15)¶
Add new
gha-utils test-plansubcommand.Replace ad-hoc custom matrix code by generic matrix model.
Replace test matrix pre-computation by native features.
Remove
ruff_py_versionfield fromgha-utils metadataoutput: Ruff is extracting it automaticcaly from thepyproject.tomlfile of the project.Inline all forced Ruff configuration to CLI parameters.
4.13.4 (2025-02-02)¶
Fix uploads of Python packages to GitHub release when binaries are not produced.
4.13.3 (2025-01-29)¶
Fix uploads of Python packages to GitHub release when binaries are not produced.
4.13.2 (2025-01-28)¶
Fix permission for GitHub release publishing.
4.13.1 (2025-01-28)¶
Fix publishing of GitHub release if no binary artefacts have been produced.
4.13.0 (2025-01-21)¶
Generates attestion for Python packages and standalone binaries on release.
4.12.0 (2025-01-20)¶
Let
uvchoose the appropriate Python version depending on context.Remove dependency on
twineandcheck-wheel-contents.
4.11.1 (2025-01-18)¶
Re-release to build Linux
arm64binaries by default.
4.11.0 (2025-01-18)¶
Use
ubuntu-24.04-armto build Linux binaries forarm64.
4.10.1 (2025-01-08)¶
Re-release with latest
gha-utils.
4.10.0 (2025-01-08)¶
Replace unmaintained
jsonlintby ESLint.Add new
gitignore_existsmetadata output.Add
nodeartefacts to the list of default files in.gitignore.
4.9.0 (2024-12-27)¶
Use
uvinstead ofsetup-pythonaction to install Python. On all platforms butwindows-2019.Remove auto-generated dummy
pyproject.tomlused to hacksetup-pythoncaching.Run all jobs on Python 3.13.
Move coverage configuration to pytest invocation.
Do not let
uv syncoperation update theuv.lockfile.Depends on released version of
mdformat_deflist.
4.8.4 (2024-11-22)¶
Run binaries tests into a shell subprocess.
4.8.3 (2024-11-21)¶
Fix parsing of default timeout.
Do not force encoding when running CLI in binary test job.
4.8.2 (2024-11-20)¶
Add a
timeoutparameter to release workflow test execution.
4.8.1 (2024-11-19)¶
Fix permissions for tagging in release workflow.
4.8.0 (2024-11-19)¶
Note
4.8.0 is available on 🐙 GitHub.
Warning
4.8.0 is not available on 🐍 PyPI.
Run Nuitka binary builds on Python 3.13.
Run a series of test calls on the binaries produced by the build job.
Replace unmaintained
hubCLI byghin broken links job.
4.7.2 (2024-11-10)¶
Fix installation of
hubon broken links job.
4.7.1 (2024-11-03)¶
Fix upload to PyPI on release.
Remove unused
uv_requirement_paramsin metadata.
4.7.0 (2024-11-03)¶
Note
4.7.0 is available on 🐙 GitHub.
Warning
4.7.0 is not available on 🐍 PyPI.
Remove
extra_python_paramsvariant innuitka_matrixmetadata.Add official support of Python 3.13.
Drop support for Python 3.9.
Use
macos-15instead ofmacos-14to build binaries forarm64.Use
ubuntu-24.04instead ofubuntu-22.04to built binaries for Linux.Run tests on Python 3.14-dev.
4.6.1 (2024-09-26)¶
Note
4.6.1 is available on 🐙 GitHub.
Warning
4.6.1 is not available on 🐍 PyPI.
Use
uvto publish Python packages.
4.6.0 (2024-09-20)¶
Use
uvto build Python packages.Remove dependency on
buildpackage.Fix coverage report upload.
Upload test results to coverage.
4.5.4 (2024-09-04)¶
Rerelease to stabilize changelog updates.
4.5.3 (2024-09-04)¶
Fix changelog indention.
Add changelog unittests.
4.5.2 (2024-08-26)¶
Rerelease to fix admonition in changelog.
Fix changelog new entry format.
4.5.1 (2024-08-25)¶
Fix over-escaping of
[!IMPORTANT]admonition in changelog.Fix content writing into output files.
4.5.0 (2024-08-24)¶
Replace
mdformat-blackbymdformat-ruff.Install
mdformat,gha-utils,yamllint,bump-my-version,ruff,blacken-docsandautopep8as a global tool to not interfere with the project dependencies.Fix
mdformat-pelicancompatibility withmdformat-gfm.Upgrade job runs from
ubuntu-22.04toubuntu-24.04.Mark python 3.13-dev tests as stable.
Fix empty entry composition.
Remove local workaround for Nuitka.
4.4.5 (2024-08-18)¶
Bump
gha-utilsCLI.
4.4.4 (2024-08-18)¶
Fix update of changelog without past entries.
4.4.3 (2024-08-12)¶
Release with relaxed dependencies.
4.4.2 (2024-08-02)¶
Add local workaround for Nuitka to fix bad packaging of
license_expressionpackage at build time.
4.4.1 (2024-08-01)¶
Bump Nuitka and
uv.
4.4.0 (2024-07-27)¶
Drop support for Python 3.8.
Rely on released version of
mdformat-pelican.Fix invocation of installed
mdformatand its plugin.
4.3.4 (2024-07-24)¶
Do not maintain
.mailmapfiles on Awesome repositories.
4.3.3 (2024-07-24)¶
Bump
uvand Nuitka.
4.3.2 (2024-07-22)¶
Always use frozen
uv.lockfile onuv runinvocation.
4.3.1 (2024-07-18)¶
Do not print progress bars on
uvcalls.
4.3.0 (2024-07-17)¶
Add a new job to keep
uv.lockupdated and in sync.Exclude auto-updated
uv.lockfiles from PRs produced fromuv runanduv tool runinvocations.
4.2.1 (2024-07-15)¶
Fix options in
gha-utils mailmap-synccalls.Use latest
gha-utilsrelease in workflows.
4.2.0 (2024-07-15)¶
Rename
gha-utils mailmapcommand togha-utils mailmap-sync.Add new
--create-if-missing/--skip-if-missingoption togha-utils mailmap-synccommand.Do not create
.mailmapfrom scratch in workflows: only update existing ones.Normalize, deduplicate and sort identities in
.mailmapfiles.Keep comments attached to their mapping when re-sorting
.mailmapfiles.Do not duplicate header metadata on
.mailmapupdates.Do not update
.mailmapfiles if no changes are detected.Add new
boltonsdependency.
4.1.4 (2024-07-02)¶
Bump
gha-utilsCLI.
4.1.3 (2024-07-02)¶
Fix recreation of specifiers.
4.1.2 (2024-07-02)¶
Revert to rely entirely on released
gha-utilsCLI for release workflow.
4.1.1 (2024-07-02)¶
Pre-compute repository initial state before digging into commit log history.
Redo release as
v4.1.0has been broken.Rely on old
v4.0.2standalone metadata script temporarily to fix release process.Remove failing
--statisticsproduction onruffinvocation.
4.1.0 (2024-07-01)¶
Warning
4.1.0 is not available on 🐍 PyPI and 🐙 GitHub.
Replace in-place
metadata.py,update_changelog.pyandupdate_mailmap.pyscripts bygha-utilsCLI.Remove pre-workflow
check-mailmapjob.Bump Python minimal requirement to 3.8.6.
Fix computation of lower bound Python version support if minimal requirement is not contained to
major.minorspecifier.Add dependency on
backports.strenumforPython < 3.11.Change dependency on
mdformat-pelicanfrom personal fork to unreleased upstream.Remove dependency on
blackandmypy.
4.0.2 (2024-06-29)¶
Remove comments in GitHub action’s environment variable files.
Test CLI invocation.
4.0.1 (2024-06-29)¶
Re-release to register PyPI project.
4.0.0 (2024-06-29)¶
Note
4.0.0 is available on 🐙 GitHub.
Package all utilities in a
gha_utilsCLI.Remove support for Poetry-based projects. All Python projects are expected to follow standard
pyproject.tomlconventions.Sort contributors in
.mailmapfiles regardless of case sensitivity.Force default values of workflow’s inputs when triggered from other events (i.e. in non-reusable contexts).
Run all Python-based commands via
uv runanduv tool run.Replace
is_poetry_projectmetadata byis_python_project.Add new
uv_requirement_paramsmetadata output.Remove dependency on
poetrypackage.Add new dependencies on
build,packaging,pyproject-metadataandclick-extra.
3.5.11 (2024-06-22)¶
Note
3.5.11 is available on 🐙 GitHub.
Read
pyproject.tomlwithout relying on Poetry.
3.5.10 (2024-06-20)¶
Note
3.5.10 is available on 🐙 GitHub.
Replace Myst admonition in changelog by GFM alerts.
3.5.9 (2024-06-20)¶
Note
3.5.9 is available on 🐙 GitHub.
Restrict removal of changelog warning admonition to
{important}class on version bump.
3.5.8 (2024-06-20)¶
Note
3.5.8 is available on 🐙 GitHub.
Fix dependency graph generation by replacing Poetry by
uv.
3.5.7 (2024-06-05)¶
Note
3.5.7 is available on 🐙 GitHub.
Use
uvto install and run tools.Fix markdown autofix.
3.5.6 (2024-06-05)¶
Note
3.5.6 is available on 🐙 GitHub.
Use
uvto installmdformat.
3.5.5 (2024-06-05)¶
Note
3.5.5 is available on 🐙 GitHub.
Run Nuitka builds on Python 3.12.
Auto cleanup PRs produced by awesome template sync job.
3.5.4 (2024-05-23)¶
Note
3.5.4 is available on 🐙 GitHub.
Fix
mypyrun for Poetry projects.
3.5.3 (2024-05-23)¶
Note
3.5.3 is available on 🐙 GitHub.
Pin
uvversion everywhere to improve stability.Fix
mypyexecution and dependency installation.
3.5.2 (2024-05-22)¶
Note
3.5.2 is available on 🐙 GitHub.
Install all extra dependencies before checking typing with
mypy.
3.5.1 (2024-05-22)¶
Note
3.5.1 is available on 🐙 GitHub.
Requires typing dependencies to be set in a
typinggroup inpyproject.toml.Install all extra dependencies on doc generation.
3.5.0 (2024-05-22)¶
Note
3.5.0 is available on 🐙 GitHub.
Requires Sphinx dependencies to be set in a
docsgroup inpyproject.toml.Let
pipdeptreeresolve the Python executable to use in a virtual environment.Do not let Nuitka assume a Python package is bundled with its unittests in a
testssubfolder.Reduce number of
gitcalls to produce.mailmap. Refs #984.
3.4.7 (2024-04-26)¶
Note
3.4.7 is available on 🐙 GitHub.
Update dependencies.
3.4.6 (2024-04-18)¶
Note
3.4.6 is available on 🐙 GitHub.
Dynamically search the Python executable used by Poetry.
3.4.5 (2024-04-18)¶
Note
3.4.5 is available on 🐙 GitHub.
Support dependency graph generation for both package and non-package Poetry projects.
Provides venv’s Python to
pipdeptreeto bypass non-detection of active venv.
3.4.4 (2024-04-17)¶
Note
3.4.4 is available on 🐙 GitHub.
Name is optional for non-
package-modePoetry projects.
3.4.3 (2024-04-14)¶
Note
3.4.3 is available on 🐙 GitHub.
Fix incompatibility between
mdformat-gfmandmdformat-pelican.
3.4.2 (2024-04-04)¶
Note
3.4.2 is available on 🐙 GitHub.
Fix template URL in
awesome-template-syncjob PR body.
3.4.1 (2024-03-19)¶
Note
3.4.1 is available on 🐙 GitHub.
Fix variable substitution in
awesome-template-syncjob PR body.
3.4.0 (2024-03-18)¶
Note
3.4.0 is available on 🐙 GitHub.
Support GitHub admonition in Markdown linting.
Add new dependency on
mdformat_gfm_alerts.Use pre-commit hooks in
awesome-template-syncjob to replace URLs.Source remote requirement files from
uvCLI.
3.3.6 (2024-03-04)¶
Note
3.3.6 is available on 🐙 GitHub.
Fix
awesome-template-syncjob.
3.3.5 (2024-03-03)¶
Note
3.3.5 is available on 🐙 GitHub.
Set
ignore_missing_filesoption globally inpyproject.toml.Remove temporary hack to make
uvuse system Python in workflows.
3.3.4 (2024-03-01)¶
Note
3.3.4 is available on 🐙 GitHub.
Add some debug messages.
3.3.3 (2024-03-01)¶
Note
3.3.3 is available on 🐙 GitHub.
Fix updating of existing PR from
awesome-template-sync.
3.3.2 (2024-03-01)¶
Note
3.3.2 is available on 🐙 GitHub.
Fix fetching of newly created PR in
awesome-template-sync.
3.3.1 (2024-03-01)¶
Note
3.3.1 is available on 🐙 GitHub.
Update repository URLs in
awesome-template-syncjob before re committing the PR.
3.3.0 (2024-02-26)¶
Note
3.3.0 is available on 🐙 GitHub.
Start collecting
bump-my-versionrules from different projects.Move all
*-requirements.txtfiles torequirementssubfolder.Remove generation of Pip’s
--requirementparameters in metadata script.Reuse
requirements.txtroot file to install dependencies inmypy-lintjob.Add emoji label to awesome template sync PR.
3.2.4 (2024-02-24)¶
Note
3.2.4 is available on 🐙 GitHub.
Remove labels in
awesome-template-syncjob while we wait for upstream fix.
3.2.3 (2024-02-24)¶
Note
3.2.3 is available on 🐙 GitHub.
Try to hack
actions-template-synclabels, again.
3.2.2 (2024-02-24)¶
Note
3.2.2 is available on 🐙 GitHub.
Try to hack
actions-template-synclabels.
3.2.1 (2024-02-24)¶
Note
3.2.1 is available on 🐙 GitHub.
Add label to awesome template sync PR.
3.2.0 (2024-02-24)¶
Note
3.2.0 is available on 🐙 GitHub.
Add a job to sync awesome repository project from the
awesome-templaterepository.
3.1.0 (2024-02-18)¶
Note
3.1.0 is available on 🐙 GitHub.
Produce
arm64binaries with Nuitka by usingmacos-14runners.
3.0.0 (2024-02-17)¶
Note
3.0.0 is available on 🐙 GitHub.
Start replacing
pipinvocations byuv.Split Python dependencies into several
*requirements.txtfiles.Let metadata script generates Pip’s
--requirementparameters.Add new dependency on
wcmatchanduv.Ignore all files from local
.venv/subfolder.Tie Pip cache to
**/pyproject.tomland**/*requirements.txtfiles.Lint and format Jupyter notebooks with ruff.
Update default ruff config file to new
0.2.xseries.Remove installation of unused
bump-my-versionin Git tagging job.Document setup and rationale of custom PAT and
*requirements.txtfiles.
2.26.6 (2024-01-31)¶
Note
2.26.6 is available on 🐙 GitHub.
Remove temporary
pyproject.tomldummy file after ruff invocation not to let it fail due to missing reference.
2.26.5 (2024-01-31)¶
Note
2.26.5 is available on 🐙 GitHub.
Generate dummy
pyproject.tomlinstead ofrequirements.txteverywhere to bypasssetup-pythoncache limits for non-Python repositories. Remove the temporarypyproject.tomldummy after the fact.
2.26.4 (2024-01-30)¶
Note
2.26.4 is available on 🐙 GitHub.
Generate a dummy
pyproject.tomlinstead ofrequirements.txtto make our ruff local conf work.
2.26.3 (2024-01-30)¶
Note
2.26.3 is available on 🐙 GitHub.
Fix Python job on non-Python repositories.
2.26.2 (2024-01-30)¶
Note
2.26.2 is available on 🐙 GitHub.
Fix absence of version in non-Python repositories.
2.26.1 (2024-01-30)¶
Note
2.26.1 is available on 🐙 GitHub.
Add workaround to allow caching on non-Python repositories.
Remove hard-coded commit version for
mdformat-gfm.
2.26.0 (2024-01-17)¶
Note
2.26.0 is available on 🐙 GitHub.
Replace unmaintained
misspell-fixerbytyposto autofix typos. Closes #650.
2.25.0 (2024-01-17)¶
Note
2.25.0 is available on 🐙 GitHub.
Add a content-based labeller job for issues and PRs.
2.24.3 (2024-01-16)¶
Note
2.24.3 is available on 🐙 GitHub.
Use
macos-13instead ofmacos-12for Nuitka builds.
2.24.2 (2024-01-06)¶
Note
2.24.2 is available on 🐙 GitHub.
Use
bump-my-versionto remove admonition in changelog.
2.24.1 (2024-01-06)¶
Note
2.24.1 is available on 🐙 GitHub.
Expose current and released version in metadata script.
Fix fetching of changelog entry for release notes.
2.24.0 (2024-01-06)¶
Note
2.24.0 is available on 🐙 GitHub.
Add latest changelog entries in GitHub release notes.
2.23.0 (2024-01-05)¶
Note
2.23.0 is available on 🐙 GitHub.
Produce GitHub release notes dynamically.
Augment all commits matrix with current version from
bump-my-version.Use new artifact features and scripts.
2.22.0 (2024-01-05)¶
Note
2.22.0 is available on 🐙 GitHub.
Update default file-based labelling rules for new configuration format.
Run
autopep8beforeruff.
2.21.0 (2024-01-04)¶
Note
2.21.0 is available on 🐙 GitHub.
Use
ruffinstead ofdocformatterto format docstrings inside Python files.Remove dependency on
docformatter.Only run
ruffonce for autofix and linting. Removeslint-pythonjob.Auto-generate local configuration for
ruffinstead of passing parameters.Split generation of Python target version from CLI parameters.
Rename
black_paramsmetadata variable toblacken_docs_params.Remove
ruff_paramsmetadata variable.
2.20.9 (2023-11-13)¶
Note
2.20.9 is available on 🐙 GitHub.
Do not cache dependency-less mailmap update workflow step.
2.20.8 (2023-11-12)¶
Note
2.20.8 is available on 🐙 GitHub.
Cache Python setups.
2.20.7 (2023-11-09)¶
Note
2.20.7 is available on 🐙 GitHub.
Run Nuitka builds on Python 3.11 while we wait for 3.12 support upstream.
2.20.6 (2023-11-05)¶
Note
2.20.6 is available on 🐙 GitHub.
Remove hard-coded permissions for release action.
2.20.5 (2023-11-05)¶
Note
2.20.5 is available on 🐙 GitHub.
Increase scope of hard-coded permissions for release action.
Use custom token for GitHub release creation.
2.20.4 (2023-11-05)¶
Warning
2.20.4 is not available on 🐙 GitHub.
Increase token permissions to full write.
2.20.3 (2023-11-05)¶
Warning
2.20.3 is not available on 🐙 GitHub.
Test release action.
2.20.2 (2023-11-05)¶
Warning
2.20.2 is not available on 🐙 GitHub.
Increase scope of hard-coded token contents permission.
2.20.1 (2023-11-05)¶
Warning
2.20.1 is not available on 🐙 GitHub.
Hard-code token contents permission for creation of GitHub release.
2.20.0 (2023-11-05)¶
Note
2.20.0 is available on 🐙 GitHub.
Upgrade to
bump-my-version0.12.xseries.Upgrade to Poetry
1.7.xseries.
2.19.1 (2023-10-26)¶
Note
2.19.1 is available on 🐙 GitHub.
Activates
ruffpreview and unsafe rules.Run actions on Python 3.12.
2.19.0 (2023-09-15)¶
Note
2.19.0 is available on 🐙 GitHub.
Replace
blackwithruff’s autoformatter.Rely even more on
bump-my-versionfor string replacement.
2.18.0 (2023-09-06)¶
Note
2.18.0 is available on 🐙 GitHub.
Upgrade to
bump-my-version0.10.xseries.Remove the step updating the release date of
citation.cffinchangelogjob. This can be done withbump-my-versionnow.Trigger changelog updates on
requirements.txtchanges.
2.17.8 (2023-07-16)¶
Note
2.17.8 is available on 🐙 GitHub.
Upgrade to
bump-my-version0.8.0.
2.17.7 (2023-07-12)¶
Note
2.17.7 is available on 🐙 GitHub.
Replace some Perl oneliners with
bump-my-versioninvocation.
2.17.6 (2023-07-06)¶
Note
2.17.6 is available on 🐙 GitHub.
Fix retrieval of tagged version in release workflow.
2.17.5 (2023-07-01)¶
Note
2.17.5 is available on 🐙 GitHub.
Use bump-my-version
v0.6.0to fetch current version.
2.17.4 (2023-06-22)¶
Note
2.17.4 is available on 🐙 GitHub.
Use patched version of
mdformat-webto fix formatting of HTML code in code blocks.
2.17.3 (2023-06-14)¶
Note
2.17.3 is available on 🐙 GitHub.
Reactive maximum concurrency in
lychee, but ignore checks ontwitter.comandycombinator.com.
2.17.2 (2023-06-12)¶
Note
2.17.2 is available on 🐙 GitHub.
Limit
lycheemax concurrency and sacrifice performances, to prevent false positives.Do not triggers docs workflow on tagging. There is not enough metadata on these events to complete the workflow.
Skip broken links check on release merge: the tag is created asynchronously which produce false positive reports.
2.17.1 (2023-06-12)¶
Note
2.17.1 is available on 🐙 GitHub.
Fix parsing of
lycheeexit code.
2.17.0 (2023-06-12)¶
Note
2.17.0 is available on 🐙 GitHub.
Check and report links with
lychee. Closes#563.
2.16.2 (2023-06-11)¶
Note
2.16.2 is available on 🐙 GitHub.
Use
mdformat_simple_breaksplugin to format long<hr>rules.Format bash code blocks in Markdown via
mdformat-shfmt.Install
shfmtbefore callingmdformat.Add dependencies on
mdformat_deflistandmdformat_pelican.
2.16.1 (2023-06-10)¶
Note
2.16.1 is available on 🐙 GitHub.
Replace long
____(....)____<hr>rule produced bymdformatwith canonical---form. Refshukkin/mdformat#328.Apply Markdown fixes for awesome lists to localized versions.
2.16.0 (2023-06-08)¶
Note
2.16.0 is available on 🐙 GitHub.
Replace
bump2versionwithbump-my-version. Closes#162.Move version bumping configuration from
.bumpversion.cfgtopyproject.toml.Cap
mdformat_admon == 1.0.1to preventmdit-py-plugins >= 0.4.0conflict.
2.15.2 (2023-06-04)¶
Note
2.15.2 is available on 🐙 GitHub.
Upgrade Nuitka builds to Python 3.11.
Remove
--no-ansioption on Poetry calls.
2.15.1 (2023-05-22)¶
Note
2.15.1 is available on 🐙 GitHub.
Force colorized output of Mypy, as in CI it defaults to no color.
Only activates all
ruffrules for autofix, not linting.Ignore
D400rule inruffto allow for docstrings first line finishing with a punctuation other than a period.
2.15.0 (2023-05-06)¶
Note
2.15.0 is available on 🐙 GitHub.
Fix hard-coding of tagged external asset’s URLs on release and version bump.
Forces
ruffto check and autofix against all rules.
2.14.1 (2023-05-04)¶
Note
2.14.1 is available on 🐙 GitHub.
Reverts publishing via trusted channel: it doesn’t work with reusable workflows. See #528.
2.14.0 (2023-05-04)¶
Note
2.14.0 is available on 🐙 GitHub.
Publish packages to PyPI with OIDC workflow for trusted publishing.
2.13.5 (2023-05-02)¶
Note
2.13.5 is available on 🐙 GitHub.
Update
docformatter,ruffandnuitka.
2.13.4 (2023-04-23)¶
Note
2.13.4 is available on 🐙 GitHub.
Use
docformatter 1.6.2.
2.13.3 (2023-04-22)¶
Note
2.13.3 is available on 🐙 GitHub.
Use
docformatter 1.6.1.
2.13.2 (2023-04-07)¶
Note
2.13.2 is available on 🐙 GitHub.
Various dependency updates.
2.13.1 (2023-04-04)¶
Note
2.13.1 is available on 🐙 GitHub.
Use final version of
docformatter 1.6.0.
2.13.0 (2023-03-29)¶
Note
2.13.0 is available on 🐙 GitHub.
Update default destination folder of dependency graph from
imagestoassets.
2.12.4 (2023-03-29)¶
Note
2.12.4 is available on 🐙 GitHub.
Skip running
autopep8if no Python files found.Only install main dependencies to generate dependency graph.
2.12.3 (2023-03-27)¶
Note
2.12.3 is available on 🐙 GitHub.
Try out
docformatter 1.6.0-rc7.
2.12.2 (2023-03-07)¶
Note
2.12.2 is available on 🐙 GitHub.
Try out
docformatter 1.6.0-rc6.
2.12.1 (2023-03-05)¶
Note
2.12.1 is available on 🐙 GitHub.
Tweak extra content layout.
2.12.0 (2023-03-05)¶
Note
2.12.0 is available on 🐙 GitHub.
Add new
gitignore-extra-contentparameter toupdate-gitignorejob to append extra content to.gitignore.
2.11.1 (2023-03-05)¶
Note
2.11.1 is available on 🐙 GitHub.
Fix Mermaid graph rendering colliding with reserved words.
2.11.0 (2023-03-03)¶
Note
2.11.0 is available on 🐙 GitHub.
Add
certificates,gpgandsshartefacts to the list of default files in.gitignore.Fix production of dependency graph in Mermaid format.
2.10.0 (2023-02-25)¶
Note
2.10.0 is available on 🐙 GitHub.
Lint GitHub Actions workflows with
actionlint.
2.9.0 (2023-02-18)¶
Note
2.9.0 is available on 🐙 GitHub.
Renders dependency graph in Mermaid Markdown instead of Graphviz’s dot.
Removes
dependency-graph-formatinput variable todocs.yamlworkflow.
2.8.3 (2023-02-17)¶
Note
2.8.3 is available on 🐙 GitHub.
Test unreleased
docformatter 1.6.0-rc5to fix link wrapping.Create missing parent folders of dependency graph.
2.8.2 (2023-02-16)¶
Note
2.8.2 is available on 🐙 GitHub.
Fix subtle bug in
.gitignoreproduction due to collapsing multiline command block starting with>because of variable interpolation.Tweak PR titles.
2.8.1 (2023-02-16)¶
Note
2.8.1 is available on 🐙 GitHub.
Test unreleased
docformatter 1.6.0-rc4to fix admonition wrapping.
2.8.0 (2023-02-14)¶
Note
2.8.0 is available on 🐙 GitHub.
Replace
isort,pyupgrade,pylint,pyclnandpydocstylewithruff.Run
autopep8beforeblackto that longline edge-cases get wrapped first.Provides
autopep8with explicit list of Python files to force it to handle dot-prefixed subdirectories.
2.7.6 (2023-02-13)¶
Note
2.7.6 is available on 🐙 GitHub.
Test-drive unreleased
docformatter 1.6.0-rc3to fix URL wrapping and admonition edge-cases.
2.7.5 (2023-02-12)¶
Note
2.7.5 is available on 🐙 GitHub.
Fix collection of artifact files from their folder.
2.7.4 (2023-02-12)¶
Note
2.7.4 is available on 🐙 GitHub.
Update artifact name to add
-poetry-suffix for those to be published on PyPI.Fix collection of artifact files from their folder.
2.7.3 (2023-02-12)¶
Note
2.7.3 is available on 🐙 GitHub.
Fix attachment of artifacts to GitHub release on tagging.
2.7.2 (2023-02-12)¶
Note
2.7.2 is available on 🐙 GitHub.
Remove broken print debug statement.
2.7.1 (2023-02-12)¶
Note
2.7.1 is available on 🐙 GitHub.
Fix attachment of artifacts to GitHub release on tagging.
2.7.0 (2023-02-11)¶
Note
2.7.0 is available on 🐙 GitHub.
Add new dependency on
mdformat_footnoteto properly wrap long footnotes when autofixing Markdown.Add new dependency on
mdformat_admonto future-proof upcoming admonition support.Add new dependency on
mdformat_pyprojectso that each project reusing theautofix.yamlworkflow can setup local configuration formdformatvia itspyproject.tomlfile.
2.6.2 (2023-02-11)¶
Note
2.6.2 is available on 🐙 GitHub.
Do not try to attach non-existing artifacts to GitHub release.
2.6.1 (2023-02-11)¶
Warning
2.6.1 is not available on 🐙 GitHub.
Fix attachment of artifacts to GitHub release.
2.6.0 (2023-02-10)¶
Note
2.6.0 is available on 🐙 GitHub.
Rename artifacts attached to each GitHub release to remove the build ID (i.e. the
-build-6f27db4suffix). That way we can have stable download URLs pointing to the latest release in the form of:https://github.com/<user_id>/<project_id>/releases/latest/download/<entry_point>-<platform>-<arch>.{bin,exe}.Normalize binary file names produced by Nuitka with
-(dash) separators.
2.5.1 (2023-02-09)¶
Note
2.5.1 is available on 🐙 GitHub.
Remove Pip cache, which breaks with our reusable workflows architecture.
2.5.0 (2023-02-09)¶
Note
2.5.0 is available on 🐙 GitHub.
Cache dependencies installed by Pip.
2.4.3 (2023-01-31)¶
Note
2.4.3 is available on 🐙 GitHub.
Bump Nuitka to
1.4.1.
2.4.2 (2023-01-27)¶
Note
2.4.2 is available on 🐙 GitHub.
Export full Nuitka build matrix from release workflow.
2.4.1 (2023-01-27)¶
Note
2.4.1 is available on 🐙 GitHub.
Reuse and align commit metadata.
Fix module path provided to Nuitka.
2.4.0 (2023-01-27)¶
Note
2.4.0 is available on 🐙 GitHub.
Pre-compute the whole Nuitka build matrix.
Pre-compute matrix variations with long and short SHA values in commit lists.
2.3.7 (2023-01-25)¶
Note
2.3.7 is available on 🐙 GitHub.
Change the order of Python auto-formatting pipeline to
pycln>isort>black>blacken-docs>autopep8>docformatter.Target unreleased
docformatter 1.6.0-rc2to fix admonition formatting.Ignore failing of
docformatteras1.6.xseries returns non-zero exit code if files needs to be reformatted.
2.3.6 (2023-01-24)¶
Note
2.3.6 is available on 🐙 GitHub.
Reverts to skipping the full
1.5.xseries and1.6.0rc1ofdocformatterwhich struggle on long URLs and admonitions.
2.3.5 (2023-01-24)¶
Note
2.3.5 is available on 🐙 GitHub.
Empty release.
2.3.4 (2023-01-24)¶
Note
2.3.4 is available on 🐙 GitHub.
Target unreleased
docformatter 1.6.0.rc1to fix long URL rewrapping. Closes#397.Remove thoroughly all unused imports.
2.3.3 (2023-01-21)¶
Note
2.3.3 is available on 🐙 GitHub.
Update dependencies.
2.3.2 (2023-01-16)¶
Note
2.3.2 is available on 🐙 GitHub.
Force refresh of
aptbefore installing anything.
2.3.1 (2023-01-13)¶
Note
2.3.1 is available on 🐙 GitHub.
Force refresh of
aptbefore installinggraphviz.
2.3.0 (2023-01-10)¶
Note
2.3.0 is available on 🐙 GitHub.
Format python code blocks in documentation files with
blacken-docs.Let metadata script locate Markdown, reStructuredText and Tex files under the
doc_filesfield.Add new dependency on
blacken-docs.Allow metadata script to be run on non-GitHub environment.
2.2.3 (2023-01-09)¶
Note
2.2.3 is available on 🐙 GitHub.
Re-parse dependency graph to stabilize its output, customize its style and make it deterministic.
Unpin dependency on
yamllintand depends on latest version.
2.2.2 (2023-01-09)¶
Note
2.2.2 is available on 🐙 GitHub.
Fix default dependency graph extension.
2.2.1 (2023-01-09)¶
Note
2.2.1 is available on 🐙 GitHub.
Fix inplace customization of dependency graph.
2.2.0 (2023-01-09)¶
Note
2.2.0 is available on 🐙 GitHub.
Change the default dependency graph format from
PNGtodotfile.Add a
dependency-graph-formatparameter to the documentation workflow.Customize the style of dependency graph when Graphviz code is produced.
Install Graphviz when we produce the documentation so we can use
sphinx.ext.graphvizplugin.Add list of projects relying on these scripts.
2.1.1 (2022-12-30)¶
Warning
2.1.1 is not available on 🐙 GitHub.
Fix fetching of commit matrix.
2.1.0 (2022-12-30)¶
Warning
2.1.0 is not available on 🐙 GitHub.
Rewrite new and release commit detection code from YAML to Python.
Add dependency on
PyDriller.Trigger debug traces on
pull_requestevents.
2.0.6 (2022-12-29)¶
Note
2.0.6 is available on 🐙 GitHub.
Fix export of binary name from build workflow.
2.0.5 (2022-12-29)¶
Note
2.0.5 is available on 🐙 GitHub.
Export binary name from build workflow.
2.0.4 (2022-12-27)¶
Note
2.0.4 is available on 🐙 GitHub.
Fix skipping of Nuitka compiling step for projects without entry points.
Skip the whole
1.5.xseries ofdocformatterwhich struggles with long URLs.
2.0.3 (2022-12-26)¶
Note
2.0.3 is available on 🐙 GitHub.
Fix fetching of absent entry points in project metadata.
2.0.2 (2022-12-19)¶
Note
2.0.2 is available on 🐙 GitHub.
Fix uploading of artifacts to GitHub release on tagging.
2.0.1 (2022-12-19)¶
Note
2.0.1 is available on 🐙 GitHub.
Use short SHA commit in build artifacts.
Fix uploading of Nuitka binaries to GitHub release on tagging.
2.0.0 (2022-12-17)¶
Note
2.0.0 is available on 🐙 GitHub.
Add Nuitka-based compiling of Poetry’s script entry-points into standalone binaries for Linux, macOS and Windows.
Upload binaries to GitHub releases on tagging.
Extract Poetry script entry-points in Python metadata script.
Produce Nuitka-specific main module path from script entry-points.
Allow rendering of data structure in JSON for inter-job outputs.
Print Python metadata output before writing to env for debugging.
Add dependency on
nuitka,ordered-setandzstandard.
1.10.0 (2022-12-02)¶
Note
1.10.0 is available on 🐙 GitHub.
Run all Python-based workflows on 3.11.
1.9.2 (2022-11-14)¶
Note
1.9.2 is available on 🐙 GitHub.
Fix production of multiline commit list in build and release workflow.
1.9.1 (2022-11-12)¶
Note
1.9.1 is available on 🐙 GitHub.
Fix tagging.
1.9.0 (2022-11-12)¶
Warning
1.9.0 is not available on 🐙 GitHub.
Remove use of deprecated
::set-outputdirectives and replace them by environment files.
1.8.9 (2022-11-09)¶
Note
1.8.9 is available on 🐙 GitHub.
Install project with Poetry before generating a dependency graph.
1.8.8 (2022-11-09)¶
Note
1.8.8 is available on 🐙 GitHub.
Update all dependencies.
1.8.7 (2022-09-26)¶
Note
1.8.7 is available on 🐙 GitHub.
Allow the use of project’s own Mypy in Poetry virtual environment to benefits from typeshed dependencies.
1.8.6 (2022-09-23)¶
Note
1.8.6 is available on 🐙 GitHub.
Do not let
sphinx-apidocCLI produce ToC file.
1.8.5 (2022-09-19)¶
Note
1.8.5 is available on 🐙 GitHub.
Print raw
pipdeptreeoutput for debug.
1.8.4 (2022-09-19)¶
Note
1.8.4 is available on 🐙 GitHub.
Fix installation of
graphvizdependency in Poetry venv.
1.8.3 (2022-09-19)¶
Note
1.8.3 is available on 🐙 GitHub.
Run
pipdeptreein Poetry venv to produce dependency graph.
1.8.2 (2022-09-18)¶
Note
1.8.2 is available on 🐙 GitHub.
Fix workflow continuation on successful
pyupgraderun.Fix quoting of CLI parameters fed to
black.
1.8.1 (2022-09-18)¶
Note
1.8.1 is available on 🐙 GitHub.
Fix version setup in Python metadata script.
1.8.0 (2022-09-08)¶
Note
1.8.0 is available on 🐙 GitHub.
Upgrade to
poetry1.2.0.Allow dependency graph to be continuously updated. Closes
#176.In Python project metadata fetcher, double-quote file list’s items to allow use of path with spaces in workflows.
Ignore broken symlinks pointing to non-existing files in Python metadata fetcher.
Fix default
pyupgradeoption produced by new Poetry.
1.7.5 (2022-08-25)¶
Note
1.7.5 is available on 🐙 GitHub.
Use stable release of
calibreapp/image-actions.
1.7.4 (2022-08-06)¶
Note
1.7.4 is available on 🐙 GitHub.
Fix
mypyparameters passing.Upgrade job runs from
ubuntu-20.04toubuntu-22.04.
1.7.3 (2022-08-06)¶
Note
1.7.3 is available on 🐙 GitHub.
Fix
mypyparameters passing.
1.7.2 (2022-08-06)¶
Note
1.7.2 is available on 🐙 GitHub.
Skip Python-specific jobs early if no Python files found in repository.
Allow execution of
pyupgradeon non-Poetry-based projects.Default
pyupgradeparameter to--py3-plus.Use auto-generated parameter for
mypy’s minimal Python version.Merge all Poetry and Sphinx metadata fetching into a Python script, as we cannot have reusable workflows use reusable workflows. Closes #160.
1.7.1 (2022-08-05)¶
Note
1.7.1 is available on 🐙 GitHub.
Add direct dependency on
poetry.
1.7.0 (2022-08-05)¶
Note
1.7.0 is available on 🐙 GitHub.
Auto-generate the set of python minimal version parameters for
mypy,blackandpyupgrade. Addressespython/mypy#13294,psf/black#3124andasottile/pyupgrade#688.
1.6.2 (2022-07-31)¶
Note
1.6.2 is available on 🐙 GitHub.
Remove upper limit of
pyupgradeautomatic--py3XX-plusoption generation.Allow
gitleaksto use GitHub token to scan PRs.
1.6.1 (2022-07-05)¶
Note
1.6.1 is available on 🐙 GitHub.
Keep the release date of
citation.cffup-to-date inchangelogjob.
1.6.0 (2022-07-01)¶
Note
1.6.0 is available on 🐙 GitHub.
Check for typing. Add dependency on
mypy.
1.5.1 (2022-06-25)¶
Note
1.5.1 is available on 🐙 GitHub.
Revert workflow concurrency logic.
1.5.0 (2022-06-23)¶
Note
1.5.0 is available on 🐙 GitHub.
Auto-remove unused imports in Python code. Add dependency on
pycln.Freeze Python version used to run all code to the
3.10series.
1.4.2 (2022-05-22)¶
Note
1.4.2 is available on 🐙 GitHub.
Group workflow jobs so new commits cancels in-progress execution triggered by previous commits.
Reduce minimal Pylint success score to
7.0/10.
1.4.1 (2022-04-16)¶
Note
1.4.1 is available on 🐙 GitHub.
Fix admonition rendering in changelog template.
1.4.0 (2022-04-16)¶
Note
1.4.0 is available on 🐙 GitHub.
Use
autopep8to wrap Python comments at 88 characters length.
1.3.1 (2022-04-16)¶
Note
1.3.1 is available on 🐙 GitHub.
Bump
actions/checkoutaction to fix run in containers jobs.
1.3.0 (2022-04-13)¶
Note
1.3.0 is available on 🐙 GitHub.
Auto-format docstrings in Python files. Add dependency on
docformatter.Auto-format
JS,CSS,HTMLandXMLcode blocks in Markdown files. Add dependency onmdformat-web.Lint Python docstrings. Add dependency on
pydocstyle.Use
isortprofile to aligns withblack. Removes.isort.cfg.Tweak
🙏 help wantedlabel description.
1.2.1 (2022-04-12)¶
Note
1.2.1 is available on 🐙 GitHub.
Fix Sphinx auto-detection by relying on static syntax analyzer instead of trying to import the executable configuration.
1.2.0 (2022-04-11)¶
Note
1.2.0 is available on 🐙 GitHub.
Detect Sphinx’s
autodocextension to create a PR updating documentation.Auto deploy Sphinx documentation on GitHub pages if detected.
Update
ℹ️ help wantedlabel to🙏 help wanted.Triggers
docsworkflow on tagging to fix dependency graph generation.Allows
releaseworkflow to be re-launched on tagging error.
1.1.0 (2022-03-30)¶
Note
1.1.0 is available on 🐙 GitHub.
Dynamically add
⚖️ curation,🆕 new linkand🩹 fix linklabels on awesome list projects.
1.0.1 (2022-03-30)¶
Note
1.0.1 is available on 🐙 GitHub.
Remove the title of the section containing the TOC in awesome lists to fix the linter.
1.0.0 (2022-03-30)¶
Note
1.0.0 is available on 🐙 GitHub.
Lint awesome list repositories.
Update
👷 CI/CDlabel to🤖 ci.Update
📗 documentationlabel to📚 documentation.Update
🔄 duplicatelabel to🧑🤝🧑 duplicate.Update
🆕 feature requestlabel to🎁 feature request.Update
❓ questionlabel to❔ question.Let Pylint discover Python files and modules to lint.
Do not generate a
.gitignoreor.mailmapif none exist. Only update it.Do not run the daily
prepare-releasejob to reduce the number of notifications. Add instructions on PR on how to refresh it.Auto-update TOC in Markdown. Add dependency on
mdformat-toc.Remove forbidden TOC entries in Markdown for awesome lists.
Remove wrapping of Markdown files to 79 characters.
Use the
tomllibfrom the standard library starting with Python 3.11.
0.9.1 (2022-03-09)¶
Note
0.9.1 is available on 🐙 GitHub.
Fix search of Python files in
lint-pythonworkflow.
0.9.0 (2022-03-09)¶
Note
0.9.0 is available on 🐙 GitHub.
Add Zsh script linter.
Search for leaked tokens and credentials in code.
Add new
💣 securitylabel.Adjust
🐛 buglabel color.Add new
gitignore-locationandgitignore-extra-categoriesparameters toupdate-gitignoreworkflow.Fix usage of default values of reused workflows which are called naked. In which case they’re not fed with the default from input’s definition.
0.8.6 (2022-03-04)¶
Note
0.8.6 is available on 🐙 GitHub.
Reactivate sponsor auto-tagging workflow now that it has been fixed upstream.
0.8.5 (2022-03-02)¶
Note
0.8.5 is available on 🐙 GitHub.
Update dependencies.
0.8.4 (2022-02-21)¶
Note
0.8.4 is available on 🐙 GitHub.
Replace hard-coded PyPI package link in GitHub release text with dynamic value from Poetry configuration.
0.8.3 (2022-02-13)¶
Note
0.8.3 is available on 🐙 GitHub.
Allow the location of the dependency graph image to be set with the
dependency-graph-outputparameter for reused workflow.
0.8.2 (2022-02-13)¶
Note
0.8.2 is available on 🐙 GitHub.
Fix generation of
pyupgradePython version parameter.
0.8.1 (2022-02-13)¶
Note
0.8.1 is available on 🐙 GitHub.
Fix installation of
tomlidependency for dependency graph generation.Fix installation of Poetry in Python modernization workflow.
0.8.0 (2022-02-13)¶
Note
0.8.0 is available on 🐙 GitHub.
Add new workflow proposing PRs to modernize Python code for Poetry-based projects.
Add new workflow to produce dependency graph of Poetry-based project.
Auto-detect minimal Python version targeted by Poetry projects.
Add dependency on
pipdeptree,pyupgradeandtomli.
0.7.25 (2022-01-16)¶
Note
0.7.25 is available on 🐙 GitHub.
Fix fetching of new commits in PRs.
0.7.24 (2022-01-15)¶
Note
0.7.24 is available on 🐙 GitHub.
Fix upload of build artifacts in GitHub release.
0.7.23 (2022-01-15)¶
Note
0.7.23 is available on 🐙 GitHub.
Fix use of token for Git tagging.
0.7.22 (2022-01-15)¶
Warning
0.7.22 is not available on 🐙 GitHub.
Generate list of all new and release commits in the first job of the release workflow.
0.7.21 (2022-01-13)¶
Warning
0.7.21 is not available on 🐙 GitHub.
Fix regex matching the release commit.
0.7.20 (2022-01-13)¶
Warning
0.7.20 is not available on 🐙 GitHub.
Refactor release workflow to rely on a new matrix-based multi-commit detection strategy.
Trigger tagging by monitoring
mainbranch commit messages instead ofprepare-releasePR merge event.Upload build artifacts for each commit.
Fix addition of PyPI link in GitHub release content.
0.7.19 (2022-01-11)¶
Note
0.7.19 is available on 🐙 GitHub.
Secret token need to be passed explicitly in reused workflow for PyPI publishing.
0.7.18 (2022-01-11)¶
Note
0.7.18 is available on 🐙 GitHub.
Add version in the name of built artifacts.
0.7.17 (2022-01-11)¶
Note
0.7.17 is available on 🐙 GitHub.
Fix detection of Poetry-based projects.
0.7.16 (2022-01-11)¶
Note
0.7.16 is available on 🐙 GitHub.
Remove temporary debug steps.
Do not trigger debugging and linters on
pull_request: it duplicates thepushevent.Skip file-based labeller workflow for dependabot triggered PRs.
0.7.15 (2022-01-10)¶
Note
0.7.15 is available on 🐙 GitHub.
Use PAT token to auto-tag releases.
0.7.14 (2022-01-10)¶
Warning
0.7.14 is not available on 🐙 GitHub.
Use
actions/checkoutto fetch last 10 commits of PR during release tagging.Use commit message to identify release commit.
Hard-code fetching of
mainbranch on tagging to identify the release commit.Attach the release commit to the GitHub release.
0.7.13 (2022-01-10)¶
Warning
0.7.13 is not available on 🐙 GitHub.
Checkout tag within job to create a new GitHub release instead of relying on previous job’s SHA identification. The latter being different right after it has been merged in
main.
0.7.12 (2022-01-10)¶
Warning
0.7.12 is not available on 🐙 GitHub.
Fix variable name used to attach the tagged commit to new GitHub release.
0.7.11 (2022-01-10)¶
Warning
0.7.11 is not available on 🐙 GitHub.
Force attachment of new GitHub release to the tagged commit.
0.7.10 (2022-01-10)¶
Warning
0.7.10 is not available on 🐙 GitHub.
Trigger changelog workflow on any other workflow change to make sure hard-coded versions in URLs are kept in sync.
Resort to explicit fetching of past commits to identify the first one of the
prepare-releasePR on tagging.Use
base_refvariable instead of hard-codingmainbranch in release workflow.
0.7.9 (2022-01-10)¶
Warning
0.7.9 is not available on 🐙 GitHub.
Force fetching of past 10 commits to identify
prepare-releasePR’s first commit.Do not fetch the final merge commit silently produced by
actions/checkoutfor PRs. GetHEADinstead.
0.7.8 (2022-01-10)¶
Warning
0.7.8 is not available on 🐙 GitHub.
Fix local
prepare-releasebranch name to search for first commit of PR.
0.7.7 (2022-01-10)¶
Warning
0.7.7 is not available on 🐙 GitHub.
Use
git logto identify the first commit SHA of theprepare-releasePR.
0.7.6 (2022-01-10)¶
Warning
0.7.6 is not available on 🐙 GitHub.
Merge the post-release version bump job into
prepare-releasebranch creation workflow, the result being a 2 commits PR.Allow for empty release notes during the generation of a new changelog entry.
0.7.5 (2022-01-09)¶
Note
0.7.5 is available on 🐙 GitHub.
Force
pushandcreateevents to match on tags in release workflow.
0.7.4 (2022-01-09)¶
Note
0.7.4 is available on 🐙 GitHub.
Do not try to fetch build artifacts if the publishing step has been skipped.
Do not trigger debug workflow on
pull_requestevents.
0.7.3 (2022-01-09)¶
Warning
0.7.3 is not available on 🐙 GitHub.
Always execute the last
github-releasejob in the release workflow, even if the project is not Poetry-based.Catch
createevents so tagging triggers a post-release version bump job.
0.7.2 (2022-01-09)¶
Warning
0.7.2 is not available on 🐙 GitHub.
Untie
git-tagandpost-release-version-bumpevents. Trigger the later on Git tagging.Move the detection logic of the
prepare-releasePR merge event to a dedicated job.
0.7.1 (2022-01-09)¶
Warning
0.7.1 is not available on 🐙 GitHub.
Fix detection of
prepare-releasePR merge event.
0.7.0 (2022-01-09)¶
Warning
0.7.0 is not available on 🐙 GitHub.
Detect Poetry-based project, then auto-build and publish packages on PyPI on release.
Always test builds on each commit.
Add build artifacts to GitHub releases.
0.6.3 (2022-01-09)¶
Note
0.6.3 is available on 🐙 GitHub.
Skip labelling on
prepare-releasebranch.Skip version increment updates on release commits.
Tighten up changelog job’s trigger conditions.
0.6.2 (2022-01-09)¶
Note
0.6.2 is available on 🐙 GitHub.
Fix generation of file-based labelling rules.
0.6.1 (2022-01-08)¶
Note
0.6.1 is available on 🐙 GitHub.
Fix extension of default labelling rules.
0.6.0 (2022-01-08)¶
Note
0.6.0 is available on 🐙 GitHub.
Add a reusable workflow to automatically label issues and PRs depending on changed files.
Allow extra labelling rules to be specified via custom input.
Let sponsor labelling workflow to be reused.
0.5.5 (2022-01-07)¶
Note
0.5.5 is available on 🐙 GitHub.
Replace custom version of
julb/action-manage-labelby upstream.
0.5.4 (2022-01-05)¶
Note
0.5.4 is available on 🐙 GitHub.
Checkout repository before syncing labels so local extra definitions can be used.
0.5.3 (2022-01-05)¶
Note
0.5.3 is available on 🐙 GitHub.
Fix download of remote file in label workflow.
0.5.2 (2022-01-05)¶
Note
0.5.2 is available on 🐙 GitHub.
Use my own fork of
julb/action-manage-labelwhile we wait for upstream fix.Rename label workflow’s
label-filesinput variable toextra-label-files.
0.5.1 (2022-01-05)¶
Note
0.5.1 is available on 🐙 GitHub.
Disable sponsor auto-tagging while we wait for upstream fix.
0.5.0 (2022-01-05)¶
Note
0.5.0 is available on 🐙 GitHub.
Add a reusable workflow to maintain GitHub labels.
Add a set of default emoji-based labels.
Add dedicated
changelog,sponsoranddependencieslabels.Update
CI/CDlabel icon.Auto-tag issues and PRs opened by sponsors.
Allow for sourcing of additional labels when reusing workflow.
0.4.8 (2022-01-04)¶
Note
0.4.8 is available on 🐙 GitHub.
Use more recent
calibreapp/image-actionsaction.Remove unused custom variable for reusable GitHub release job.
0.4.7 (2022-01-04)¶
Note
0.4.7 is available on 🐙 GitHub.
Fix use of GitHub token for workflow auto-updates on release.
Allow typo autofix job to propose changes in workflow files.
0.4.6 (2022-01-04)¶
Note
0.4.6 is available on 🐙 GitHub.
Let GitHub release produced on tagging to be customized with user’s content and uploaded files.
Expose tagged version from reusable
releaseworkflow.
0.4.5 (2022-01-03)¶
Note
0.4.5 is available on 🐙 GitHub.
Fix use of the right token for reused
changelogandreleaseworkflows.Restrict comparison URL steps to source workflow.
0.4.4 (2022-01-03)¶
Note
0.4.4 is available on 🐙 GitHub.
Do not rely on
bumpversionfor comparison URL update on release tagging.
0.4.3 (2022-01-03)¶
Note
0.4.3 is available on 🐙 GitHub.
Only match first occurrence of triple-backticks delimited block text in
changelog.mdinprepare-releasejob. Also matches empty line within the block.Make GitHub changelog URL update more forgiving.
0.4.2 (2022-01-03)¶
Note
0.4.2 is available on 🐙 GitHub.
Skip steps in workflows which are specific to the source repository.
Aligns all PR content.
0.4.1 (2022-01-03)¶
Note
0.4.1 is available on 🐙 GitHub.
Allow changelog and release workflows to be reusable.
0.4.0 (2021-12-31)¶
Note
0.4.0 is available on 🐙 GitHub.
Factorize version increment jobs.
0.3.5 (2021-12-31)¶
Note
0.3.5 is the first version available on 🐙 GitHub.
Provide tag version for GitHub release creation.
0.3.4 (2021-12-31)¶
Chain
post-release-version-bumpjob with automatic git tagging.Auto-commit
post-release-version-bumpresults.Create a GitHub release on tagging.
0.3.3 (2021-12-30)¶
Bump YAML linting max line length to 120.
Auto-tag release after the
prepare-releasePR is merged back intomain.
0.3.2 (2021-12-30)¶
Refresh every day the date in
prepare-releasejob.Skip linting on
prepare-releasejob as it does not points to tagged URLs yet.Reduce changelog PRs refresh rate based on changed files.
Rely on
create-pull-requestaction default to set authorship.Fix
autofixworkflow reusability.
0.3.1 (2021-12-23)¶
Hard-code tagged version for executed Python script.
Activate debugging workflow on all branches and PRs.
Allows debug workflow to be reused.
0.3.0 (2021-12-16)¶
Add a reusable workflow to fix typos.
Add a reusable workflow to optimize images.
Add a reusable workflow to auto-format Python files with isort and Black.
Add a reusable workflow to auto-format Markdown files with mdformat.
Add a reusable workflow to auto-format JSON files with
jsonlint.Add a reusable workflow to auto-update .gitignore file.
Add a reusable workflow to auto-update .mailmap file.
Force retargeting of workflow dependencies to
mainbranch on post-release version bump.
0.2.0 (2021-12-15)¶
Add autolock reusable workflow for closed issues and PRs.
Automate changelog and version management.
Add workflow to create ready-to-use PRs to prepare a release, post-release version bump and minor & major version increments.
Add a debug workflow to print action context and environment variables.
Set Pylint failure threshold at 80%.
0.1.0 (2021-12-12)¶
Install project with Poetry before calling Pylint if
pyproject.tomlpresence is detected.Hard-code tagged version in requirement URL for reusable workflows.
Document the release process.
0.0.1 (2021-12-11)¶
Initial public release.