Skip to content

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 02 Sep 02:34
· 27 commits to main since this release

v0.4.0 (2026-09-02)

This release is published under the MIT License.

Chores

  • Sync the generated configs to toolchain 18 (f24c8c2)

Both stamped files come from the fleet's version declaration: the pre-commit config and the generated workflow. Nothing here is a repo decision.

Stamp 18 carries the refcheck hook at v0.6.0, a codespell exclude widened to go.mod, and — on a private repo — runs-on naming the self-hosted pool with the actionlint config that declares the label.

  • Sync the generated configs to toolchain 19 (35d7e60)

Both stamped files come from the fleet's version declaration: the pre-commit config and the generated workflow. Nothing here is a repo decision.

Stamp 19 passes --allow-parallel-runners to golangci-lint. A repo with two Go components runs two Lint jobs at once, and on a single self-hosted box the second one dies on the shared cache lock before linting anything.

  • precommit: Drop the commit-branding hook (af76d2b)

Claude Code suppresses its own commit and PR attribution through its attribution setting, which resolves an empty string to no trailer at all. A hook that strips the trailer afterwards has nothing left to remove.

  • release: Stop tracking a changelog no consumer reads (33fbbc4)

The release body is the changelog. python-semantic-release writes it from the commit subjects in the release, and changelog in this library reads those subjects back from the releases API rather than from a tracked file, so nothing in the package or in a consumer ever opened CHANGELOG.md.

The action's changelog input goes with it, and the project's Changelog URL now points at the releases page that holds the thing.

.markdownlintignore keeps its entry: it is a forge die shared across the fleet, and ignoring an absent file costs nothing.

Documentation

  • Cite the three standards this file was restating (fa5c093)

The offline test shape and the containment rule are now standards that name this repo as their source, and the terminal-injection reason is python.md's. What stays is the venv-import check, which is this repo's own second enforcement.

Features

  • state: Key the state filename to the machine that wrote it (64fd112)

Both fields this file carries describe one box: current_version is the version installed here, and checked_at_epoch gates this box's next check. A state directory that is shared between machines therefore had two writers on one path, and a file syncer resolves that to one winner plus a conflict copy nobody reads. A machine that had not run in a week stayed inside the interval and never learned it was behind, and the version notice compared another box's install against the latest release.

state.filename takes the machine and state.machine derives it the way the rest of the fleet does — bare hostname, domain dropped, lowercased, and 'unknown' when the host cannot be read. goselfupdate and bashselfupdate derive it identically, so the three still interleave in one directory and a reader still needs one glob.

Nothing carries the file at the old name forward. It holds a check timestamp and, in the shared case, another machine's version, so adopting it would propagate the fault being fixed. Starting clean costs one extra check per tool.


Detailed Changes: v0.3.2...v0.4.0