Repository navigation
v0.4.0: OSV.dev advisory checks, patchula apply, six new managers, and CLI flag changes
The Count now sniffs out known vulnerabilities in your dependencies, can write updates straight into your working tree with patchula apply, and reads six more kinds of files. Several CLI flags changed, so read Breaking Changes before you upgrade.
Added
-
Known vulnerabilities from OSV.dev, on by default (@sweepies). Each dependency's current version is checked against OSV.dev. Updates that fix an advisory are marked in the report, the dashboard and the TUI, and their PRs get the
securitylabel. Only package names and versions are sent. To turn the checks off:security { advisories = false }
-
Security updates go first (@sweepies). An update that fixes an advisory skips the release-age wait, schedule windows, groups and the
prs.concurrentandprs.perHourlimits. It gets a PR of its own. -
The lowest fixing release (@sweepies). When no permitted release fixes as many advisories as some other release could, the Count proposes the lowest release that fixes the most, even past
permittedandchannel. SetlowestFix = falseto turn this off. -
Lockfile-only packages (#27, @sweepies). Registry packages in
Cargo.lockandpackage-lock.jsonare checked too. A vulnerable crate inCargo.lockgets a PR that changes onlyCargo.lock. A vulnerable npm package that only the lockfile records is reported with the release that fixes it, but the Count does not propose the change. -
patchula applywrites updates into the working tree (#31, @sweepies). It opens no branches or PRs. Filters narrow what it writes:patchula apply --dry-run # print the diff, write nothing patchula apply --manager github-actions --type pin patchula apply --check # exit 3 while selected updates wait
In a checkout, the TUI applies selected updates to the working tree the same way.
-
Copier template updates, reported as notices (#38, @sweepies). The new
copiermanager lists template updates and never opens a PR.patchula apply --copier, oruon the TUI's Templates tab, runs your owncopier updatein the working tree, and only when you ask. -
New managers, all on by default:
- GitLab CI (#30, @sweepies).
gitlabcireads images, services and CI/CD component refs in.gitlab-ci.yml.gitlabci-includereadsinclude: project:refs. For a self-hosted instance, setgitlab { host = "gitlab.example.com" }. The host must be gitlab.com or havegitlabin its name. - Woodpecker CI (#28, @sweepies). Images in
.woodpecker.yml,.woodpecker.yamland files directly inside.woodpecker/. - Forgejo and Gitea Actions (#29, @sweepies). Workflows in
.forgejo/workflows/and.gitea/workflows/are read bygithub-actions. - Nix flake inputs (#39, @sweepies). Direct inputs in
flake.nixare updated through their locked revisions, andflake.lockis refreshed with a pinned static nix. - APM (#43, @sweepies). Entries in
apm.ymlandapm.yaml, withapm.lock.yamlrefreshed byapm lock. Commit pins are on by default, with the 24-hour release-age wait.
To narrow the list, set
managersinpatchula.pkl. - GitLab CI (#30, @sweepies).
-
Working tree with no config (#32, @sweepies). At a terminal,
lookup,run --dry-runandtuiin a checkout withoutpatchula.pklask whether to use the defaults, write a starter file, or quit. Without a terminal they fail and name--default-config, which uses the defaults for one run. -
GitHub CLI token fallback (#21, @sweepies). With no
PATCHULA_TOKEN,GITHUB_TOKENorGH_TOKEN,lookupandrunuse the token fromgh auth token --hostname github.com.
Changed
- Failed lookups fail checks (#40, @sweepies). The report gains a
lookupFailureslist, with the kind of failure for each one.lookupandapply --checkexit 4 when any lookup failed, so a pre-commit hook no longer passes while a registry is down.runstill exits 0.
Fixed
- Pre-commit revs and GitLab refs are written as the exact tag name (#37, f3b091f, @sweepies). A hook pinned at
v1.0, where upstream later taggedv1.1, was offeredv1.1.0, a tag that does not exist. It is now offeredv1.1.
Breaking Changes
The CLI now reads your working tree by default and changes how it reaches a server (#23, @sweepies).
- No repository named means the working tree.
lookup,run --dry-runandtuiread thepatchula.pklin the current directory, uncommitted changes included, instead of the checkout's GitHub repository. Without apatchula.pkl, use--default-configor--config. To read GitHub, name the repository, as inpatchula lookup owner/repo. - A real
runwith no repository is strict. It opens PRs for the checkout's GitHub repository, so it refuses a working tree with uncommitted changes, or a HEAD that is not at the remote's default branch. Use--dry-runto plan from the working tree. --server <URL>is gone fromlookup,runandtui. Use the bare--remoteflag withPATCHULA_SERVERset, or with the server the checkout has chosen.patchula auth login --serveris unchanged.--no-serveris now--here.--local <DIR>is removed. Run the command from inside that directory instead.- Unknown flags are errors. They are no longer read as repository names.
# v0.3.0
patchula run --server <server-url> acme/app
patchula lookup --no-server
# v0.4.0
PATCHULA_SERVER=<server-url> patchula run --remote acme/app
patchula lookup --hereFull Changelog: v0.3.0...v0.4.0