Skip to content

feat: tool ergonomics (base hooks, tool-ci, mise, tool rulesets) - #157

Merged
taraxvoid merged 20 commits into
nextfrom
worktree-tool-ergonomics
Oct 16, 2026
Merged

taraxvoid merged 20 commits into
nextfrom
worktree-tool-ergonomics

Conversation

@taraxvoid

@taraxvoid taraxvoid commented Oct 12, 2026 •

Copy link
Copy Markdown
Owner

Closes #155.

Makes voidflow the default kit for any @taraxvoid bun repo, not only Astro sites.

Changes

  • lefthook/base.yml (breaking): the hook set moves from lefthook/site.yml to lefthook/base.yml. Before the test:unit and test:push steps it runs unset $(git rev-parse --local-env-vars), so tests that spawn git in a temp repo no longer act on the hooked repo. Tests run the real hook snippets against a stub to check this.
  • lefthook/site.yml stub: Renovate bumps only ref:, and lefthook skips a missing remote config without any warning. A plain rename would therefore turn every consumer's hooks off silently. site.yml is now a stub whose pre-commit and pre-push fail with the one-line fix.
  • mise: a mise.toml for contributor tools, plus a prepare script that tolerates a missing lefthook binary. The README setup becomes mise install && bun install, and the consumer docs get a starter mise.toml. The package description and keywords now cover tools.
  • tool-ci.yml: a reusable validation workflow for bun tools.
    • Steps: gitleaks, the shared install script, mise-action when the repo has a mise.toml, then lint/check/build/test/check:licenses for whichever scripts package.json defines. actionlint and zizmor run when workflows change.
    • The job reports validate / Validate.
    • Parity tests keep the steps it shares identical to site-ci.yml and actions/bun-install.
  • Rulesets: a tool() helper (main only, no Netlify, CODEOWNERS, linear history, requires validate / Validate). SITE_CHECK is renamed VALIDATE_CHECK.

Migration

Consumers change configs: [lefthook/site.yml] to lefthook/base.yml when they bump ref. Until they do, commits and pushes fail with that instruction.

Notes

  • On free personal plan the rulesets API returns 403 for private repos, which aborts the whole apply-rulesets run.
  • bun scripts/apply-rulesets.ts --check reports the fleet in sync. An earlier run listed 5 differences, but none was drift. They were retired next (staging)/live (prod) rulesets on queeromaha, soundry and synthomaha, waiting for --prune. Those rulesets have now been pruned, and the stale next/live branches on soundry and synthomaha (0 commits ahead of main, no open PRs) have been deleted. That cleanup was done out of band; this branch does not change it.

Verification

  • bun test: 148 pass, 0 fail.
  • just validate: actionlint, check-jsonschema, shellcheck, gitleaks and zizmor all clean.

🤖 Generated with Claude Code

taraxvoid and others added 14 commits October 11, 2026 23:05
… tests

The hook set has nothing site-specific, so it is now the default for any
bun or pnpm repo. The unit and pre-push test steps unset the variables git
exports to hooks, so tests that spawn git in a temp repo no longer act on
the hooked repo.

BREAKING CHANGE: lefthook/site.yml is now lefthook/base.yml. Change the
`configs` entry of the voidflow remote when bumping `ref`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mise.toml replaces the brew line in the README, and a tolerant prepare
script installs the hooks on `bun install`. The description and keywords
now cover tools as well as sites.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Gitleaks, the shared install script, mise tools, then lint, check, build,
test and check:licenses when defined, with actionlint and zizmor when
workflows change. Tests keep the shared steps identical to site-ci and
actions/bun-install.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Tools get a main-only ruleset requiring validate / Validate from tool-ci,
CODEOWNERS review and linear history, with no Netlify check. trailguide
is not listed yet: it is private, and the rulesets API returns 403 for
private repos on this plan, which would abort the whole run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Renovate bumps only the remote's `ref`, and lefthook skips a missing remote
config without a warning, so the rename alone would turn every consumer's
hooks off silently. site.yml is now a stub whose pre-commit and pre-push
fail with the one-line fix.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [actions/setup-node](https://redirect.github.com/actions/setup-node) |
action | minor | `v7.0.0` → `v7.1.0` |
|
[actions/upload-artifact](https://redirect.github.com/actions/upload-artifact)
| action | patch | `v7.0.1` → `v7.0.2` |
| [astral-sh/setup-uv](https://redirect.github.com/astral-sh/setup-uv) |
action | minor | `v10.0.1` → `v10.3.0` |
|
[cloudflare/wrangler-action](https://redirect.github.com/cloudflare/wrangler-action)
| action | minor | `v4.0.0` → `v4.1.3` |

---

### Release Notes

<details>
<summary>actions/setup-node (actions/setup-node)</summary>

###
[`v7.1.0`](https://redirect.github.com/actions/setup-node/releases/tag/v7.1.0)

[Compare
Source](https://redirect.github.com/actions/setup-node/compare/v7.0.0...v7.1.0)

##### What's Changed

##### Enhancements:

- Add support for mise.toml file by
[@&#8203;gperdomor](https://redirect.github.com/gperdomor) in
[#&#8203;1421](https://redirect.github.com/actions/setup-node/pull/1421)
- Support absolute paths in node-version-file by
[@&#8203;v-mahabaleshwars](https://redirect.github.com/v-mahabaleshwars)
in
[#&#8203;1633](https://redirect.github.com/actions/setup-node/pull/1633)

##### Bug fixes:

- Add Node version validation and manifest fetch retry by
[@&#8203;v-jitenderpalsingh](https://redirect.github.com/v-jitenderpalsingh)
in
[#&#8203;1580](https://redirect.github.com/actions/setup-node/pull/1580)

##### Documentation updates:

- README.md: bump actions/checkout to latest version 7 by
[@&#8203;deining](https://redirect.github.com/deining) in
[#&#8203;1578](https://redirect.github.com/actions/setup-node/pull/1578)
- docs: add V7 ESM migration and NODE_AUTH_TOKEN behavior change by
[@&#8203;v-gowridurgad](https://redirect.github.com/v-gowridurgad) in
[#&#8203;1593](https://redirect.github.com/actions/setup-node/pull/1593)
- Fixed cache recommendation syntax by
[@&#8203;SubJunk](https://redirect.github.com/SubJunk) in
[#&#8203;1603](https://redirect.github.com/actions/setup-node/pull/1603)

##### Dependency updates:

- Update workflow pins and migrate Node matrices to modern versions by
[@&#8203;v-HarithaVattikuti](https://redirect.github.com/v-HarithaVattikuti)
in
[#&#8203;1583](https://redirect.github.com/actions/setup-node/pull/1583)
- Upgrade
[@&#8203;actions/cache](https://redirect.github.com/actions/cache) to
6.2.0 by [@&#8203;philip-gai](https://redirect.github.com/philip-gai) in
[#&#8203;1584](https://redirect.github.com/actions/setup-node/pull/1584)
- Pin [@&#8203;types/node](https://redirect.github.com/types/node) to
v24 by
[@&#8203;v-priyagupta108](https://redirect.github.com/v-priyagupta108)
in
[#&#8203;1585](https://redirect.github.com/actions/setup-node/pull/1585)
- Override brace-expansion to 5.0.8 by
[@&#8203;v-priyagupta108](https://redirect.github.com/v-priyagupta108)
with [@&#8203;Copilot](https://redirect.github.com/Copilot) in
[#&#8203;1599](https://redirect.github.com/actions/setup-node/pull/1599)
- Upgrade actions/checkout from 7.0.0 to 7.0.1 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1598](https://redirect.github.com/actions/setup-node/pull/1598)
- Upgrade prettier from 3.8.4 to 3.9.6 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1590](https://redirect.github.com/actions/setup-node/pull/1590)
- Upgrade [@&#8203;vercel/ncc](https://redirect.github.com/vercel/ncc)
from 0.44.0 to 0.45.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1610](https://redirect.github.com/actions/setup-node/pull/1610)
- Upgrade pnpm/action-setup from 6.0.9 to 6.0.10 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1602](https://redirect.github.com/actions/setup-node/pull/1602)
- Upgrade baseline-browser-mapping from 2.10.38 to 2.11.22 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1629](https://redirect.github.com/actions/setup-node/pull/1629)
- Upgrade
[@&#8203;types/semver](https://redirect.github.com/types/semver) from
7.7.1 to 7.8.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1616](https://redirect.github.com/actions/setup-node/pull/1616)
- Upgrade
[@&#8203;typescript-eslint/parser](https://redirect.github.com/typescript-eslint/parser)
from 8.62.0 to 8.70.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1615](https://redirect.github.com/actions/setup-node/pull/1615)
- Upgrade pnpm/action-setup from 6.0.10 to 6.1.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1631](https://redirect.github.com/actions/setup-node/pull/1631)
- Upgrade jest-each from 30.4.1 to 30.5.2 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1636](https://redirect.github.com/actions/setup-node/pull/1636)
- Upgrade eslint-plugin-n from 18.1.0 to 18.3.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1638](https://redirect.github.com/actions/setup-node/pull/1638)
- Update dependencies and add license files by
[@&#8203;v-HarithaVattikuti](https://redirect.github.com/v-HarithaVattikuti)
in
[#&#8203;1642](https://redirect.github.com/actions/setup-node/pull/1642)
- Upgrade eslint from 10.5.0 to 10.11.0 and package.json from 7.0.0 to
7.1.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1635](https://redirect.github.com/actions/setup-node/pull/1635)

##### New Contributors

-
[@&#8203;v-jitenderpalsingh](https://redirect.github.com/v-jitenderpalsingh)
made their first contribution in
[#&#8203;1580](https://redirect.github.com/actions/setup-node/pull/1580)
- [@&#8203;philip-gai](https://redirect.github.com/philip-gai) made
their first contribution in
[#&#8203;1584](https://redirect.github.com/actions/setup-node/pull/1584)
- [@&#8203;gperdomor](https://redirect.github.com/gperdomor) made their
first contribution in
[#&#8203;1421](https://redirect.github.com/actions/setup-node/pull/1421)
- [@&#8203;SubJunk](https://redirect.github.com/SubJunk) made their
first contribution in
[#&#8203;1603](https://redirect.github.com/actions/setup-node/pull/1603)

**Full Changelog**:
<actions/setup-node@v7.0.0...v7.1.0>

</details>

<details>
<summary>actions/upload-artifact (actions/upload-artifact)</summary>

###
[`v7.0.2`](https://redirect.github.com/actions/upload-artifact/releases/tag/v7.0.2)

[Compare
Source](https://redirect.github.com/actions/upload-artifact/compare/v7.0.1...v7.0.2)

#### What's Changed

- Improves artifact download retries when the service returns HTTP 429
(rate limiting), including honoring valid Retry-After headers.
- Updates
[@&#8203;actions/artifact](https://redirect.github.com/actions/artifact)
to v6.3.1.

#### New Contributors

- [@&#8203;tunc-d](https://redirect.github.com/tunc-d) made their first
contribution in
[#&#8203;821](https://redirect.github.com/actions/upload-artifact/pull/821)

**Full Changelog**:
<actions/upload-artifact@v7.0.1...v7.0.2>

</details>

<details>
<summary>astral-sh/setup-uv (astral-sh/setup-uv)</summary>

###
[`v10.3.0`](https://redirect.github.com/astral-sh/setup-uv/releases/tag/v10.3.0):
🌈 Add Python architecture selection

[Compare
Source](https://redirect.github.com/astral-sh/setup-uv/compare/v10.2.0...v10.3.0)

#### Changes

This release adds the `python-arch` input to select a Python
architecture independently of the Python version. With `uv` 0.13.0 or
later, set `python-arch: x86_64` to use x64 Python on Windows ARM64
runners.

It also includes embedded checksums for `uv` releases through 0.13.0.

- Use macOS 15 runners for tests
[@&#8203;charliermarsh](https://redirect.github.com/charliermarsh)
([#&#8203;1081](https://redirect.github.com/astral-sh/setup-uv/issues/1081))

#### 🚀 Enhancements

- Add `python-arch` support
[@&#8203;zanieb](https://redirect.github.com/zanieb)
([#&#8203;1079](https://redirect.github.com/astral-sh/setup-uv/issues/1079))

#### 🧰 Maintenance

- chore: update known checksums for 0.13.0
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;1089](https://redirect.github.com/astral-sh/setup-uv/issues/1089))
- chore: update known checksums for 0.12.24
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;1084](https://redirect.github.com/astral-sh/setup-uv/issues/1084))
- chore: update known checksums for 0.12.23
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;1082](https://redirect.github.com/astral-sh/setup-uv/issues/1082))
- chore: update known checksums for 0.12.22
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;1080](https://redirect.github.com/astral-sh/setup-uv/issues/1080))
- chore: update known checksums for 0.12.21
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;1078](https://redirect.github.com/astral-sh/setup-uv/issues/1078))
- chore: update known checksums for 0.12.20
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;1076](https://redirect.github.com/astral-sh/setup-uv/issues/1076))
- chore: update known checksums for 0.12.19
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;1068](https://redirect.github.com/astral-sh/setup-uv/issues/1068))
- chore: update known checksums for 0.12.18
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;1065](https://redirect.github.com/astral-sh/setup-uv/issues/1065))

#### ⬆️ Dependency updates

- chore(deps): bump zizmorcore/zizmor-action from 0.6.2 to 0.6.3
@&#8203;[dependabot\[bot\]](https://redirect.github.com/apps/dependabot)
([#&#8203;1077](https://redirect.github.com/astral-sh/setup-uv/issues/1077))

###
[`v10.2.0`](https://redirect.github.com/astral-sh/setup-uv/releases/tag/v10.2.0):
🌈 Disable automatic cache saves for merge queues

[Compare
Source](https://redirect.github.com/astral-sh/setup-uv/compare/v10.1.0...v10.2.0)

##### Changes

This release contains the known-checksum of the most recent uv releases
and also disabled the uploading(saving) of the cache when in a merge
queue since theses caches would almost never be used.

##### 🚀 Enhancements

- Disable automatic cache saves for merge queues
[@&#8203;eifinger](https://redirect.github.com/eifinger)
([#&#8203;1056](https://redirect.github.com/astral-sh/setup-uv/issues/1056))

##### 🧰 Maintenance

- chore: update known checksums for 0.12.17
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;1058](https://redirect.github.com/astral-sh/setup-uv/issues/1058))
- chore: update known checksums for 0.12.16
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;1057](https://redirect.github.com/astral-sh/setup-uv/issues/1057))
- chore: update known checksums for 0.12.15
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;1054](https://redirect.github.com/astral-sh/setup-uv/issues/1054))
- chore: update known checksums for 0.12.14
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;1053](https://redirect.github.com/astral-sh/setup-uv/issues/1053))
- chore: update known checksums for 0.12.13
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;1045](https://redirect.github.com/astral-sh/setup-uv/issues/1045))

##### 📚 Documentation

- docs: update version references to v10.1.0
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;1044](https://redirect.github.com/astral-sh/setup-uv/issues/1044))

##### ⬆️ Dependency updates

- chore(deps): roll up Dependabot updates
[@&#8203;eifinger](https://redirect.github.com/eifinger)
([#&#8203;1059](https://redirect.github.com/astral-sh/setup-uv/issues/1059))

###
[`v10.1.0`](https://redirect.github.com/astral-sh/setup-uv/releases/tag/v10.1.0):
🌈 New output `python-runtime-id`and respect NO_PROXY

[Compare
Source](https://redirect.github.com/astral-sh/setup-uv/compare/v10.0.1...v10.1.0)

##### Changes

This release adds more bheind the scene security improvements and also 2
small improvements.

##### NO_PROXY

This action now respects `no_proxy/NO_PROXY` environment variables which
were previously ignored.

##### New output `python-runtime-id`

The new output `python-runtime-id` can be used to know which python
version exactly was installed if you use `activate-environment`. See
[pyca/cryptography#15572
(comment)](https://redirect.github.com/pyca/cryptography/pull/15572#discussion_r3913508686)
for details on why this can be useful.

##### 🐛 Bug fixes

- fix: respect no proxy directive
[@&#8203;mj0nez](https://redirect.github.com/mj0nez)
([#&#8203;1037](https://redirect.github.com/astral-sh/setup-uv/issues/1037))
- Use JSON + a typed wrapper instead of TS codegen
[@&#8203;woodruffw](https://redirect.github.com/woodruffw)
([#&#8203;1025](https://redirect.github.com/astral-sh/setup-uv/issues/1025))

##### 🚀 Enhancements

- Expose a Python "identity" output
[@&#8203;woodruffw](https://redirect.github.com/woodruffw)
([#&#8203;1036](https://redirect.github.com/astral-sh/setup-uv/issues/1036))
- Verify downloads with astral-sh/versions checksums
[@&#8203;zaniebot](https://redirect.github.com/zaniebot)
([#&#8203;1033](https://redirect.github.com/astral-sh/setup-uv/issues/1033))

##### 🧰 Maintenance

- chore: update known checksums for 0.12.12
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;1041](https://redirect.github.com/astral-sh/setup-uv/issues/1041))
- chore: update known checksums for 0.12.10/0.12.11
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;1038](https://redirect.github.com/astral-sh/setup-uv/issues/1038))
- chore: update known checksums for 0.12.9
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;1035](https://redirect.github.com/astral-sh/setup-uv/issues/1035))
- chore: update known checksums for 0.12.7/0.12.8
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;1031](https://redirect.github.com/astral-sh/setup-uv/issues/1031))
- chore: update known checksums for 0.12.6
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;1030](https://redirect.github.com/astral-sh/setup-uv/issues/1030))
- chore: update known checksums for 0.12.5
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;1020](https://redirect.github.com/astral-sh/setup-uv/issues/1020))
- Use self-repo syntax for all in-repo actions/reusable workflows
[@&#8203;woodruffw](https://redirect.github.com/woodruffw)
([#&#8203;1024](https://redirect.github.com/astral-sh/setup-uv/issues/1024))
- Pin one-shot tools
[@&#8203;woodruffw](https://redirect.github.com/woodruffw)
([#&#8203;1022](https://redirect.github.com/astral-sh/setup-uv/issues/1022))
- ci: remove obsolete direct push attempts
[@&#8203;eifinger](https://redirect.github.com/eifinger)
([#&#8203;1019](https://redirect.github.com/astral-sh/setup-uv/issues/1019))

##### 📚 Documentation

- docs: update version references to v10.0.1
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;1018](https://redirect.github.com/astral-sh/setup-uv/issues/1018))

##### ⬆️ Dependency updates

- chore(deps-dev): roll up Dependabot updates
[@&#8203;eifinger](https://redirect.github.com/eifinger)
([#&#8203;1043](https://redirect.github.com/astral-sh/setup-uv/issues/1043))
- Harden npm install defaults
[@&#8203;zaniebot](https://redirect.github.com/zaniebot)
([#&#8203;1026](https://redirect.github.com/astral-sh/setup-uv/issues/1026))
- Add dependency cooldowns
[@&#8203;woodruffw](https://redirect.github.com/woodruffw)
([#&#8203;1021](https://redirect.github.com/astral-sh/setup-uv/issues/1021))

</details>

<details>
<summary>cloudflare/wrangler-action
(cloudflare/wrangler-action)</summary>

###
[`v4.1.3`](https://redirect.github.com/cloudflare/wrangler-action/releases/tag/v4.1.3)

[Compare
Source](https://redirect.github.com/cloudflare/wrangler-action/compare/v4.1.2...v4.1.3)

##### Patch Changes

-
[#&#8203;456](https://redirect.github.com/cloudflare/wrangler-action/pull/456)
[`d3cfe74`](https://redirect.github.com/cloudflare/wrangler-action/commit/d3cfe7456c14d339eb4391c81662629e6ff6aace)
Thanks
[@&#8203;podonnell-dev](https://redirect.github.com/podonnell-dev)! -
Document Wrangler 4.136.3 as the minimum version required for Workers
Previews.

###
[`v4.1.2`](https://redirect.github.com/cloudflare/wrangler-action/releases/tag/v4.1.2)

[Compare
Source](https://redirect.github.com/cloudflare/wrangler-action/compare/v4.1.1...v4.1.2)

##### Patch Changes

-
[#&#8203;453](https://redirect.github.com/cloudflare/wrangler-action/pull/453)
[`876f5b5`](https://redirect.github.com/cloudflare/wrangler-action/commit/876f5b58483467306651b5c47d5f9cbbaa1acf60)
Thanks [@&#8203;ericclemmons](https://redirect.github.com/ericclemmons)!
- Create GitHub releases only after their compiled action tags are ready
so immutable releases do not block publishing.

###
[`v4.1.1`](https://redirect.github.com/cloudflare/wrangler-action/releases/tag/v4.1.1)

[Compare
Source](https://redirect.github.com/cloudflare/wrangler-action/compare/v4.1.0...v4.1.1)

> \[!WARNING]
> This release is broken due to a publishing issue and will fail when
used in a workflow. Please update to
[`v4.1.2`](https://redirect.github.com/cloudflare/wrangler-action/releases/tag/v4.1.2)
or `v4`. See
[#&#8203;454](https://redirect.github.com/cloudflare/wrangler-action/issues/454)
for details.

##### Patch Changes

-
[#&#8203;451](https://redirect.github.com/cloudflare/wrangler-action/pull/451)
[`429a99d`](https://redirect.github.com/cloudflare/wrangler-action/commit/429a99d89202d923dbff030c60c049998f7ebe3c)
Thanks
[@&#8203;podonnell-dev](https://redirect.github.com/podonnell-dev)! -
Pin Workers Preview examples and integration tests to Wrangler 4.136.3,
which includes the Worker name in Preview artifacts.

###
[`v4.1.0`](https://redirect.github.com/cloudflare/wrangler-action/releases/tag/v4.1.0)

[Compare
Source](https://redirect.github.com/cloudflare/wrangler-action/compare/v4.0.0...v4.1.0)

> \[!WARNING]
> This release is broken due to a publishing issue and will fail when
used in a workflow. Please update to
[`v4.1.2`](https://redirect.github.com/cloudflare/wrangler-action/releases/tag/v4.1.2)
or `v4`. See
[#&#8203;454](https://redirect.github.com/cloudflare/wrangler-action/issues/454)
for details.

##### Minor Changes

-
[#&#8203;450](https://redirect.github.com/cloudflare/wrangler-action/pull/450)
[`9500699`](https://redirect.github.com/cloudflare/wrangler-action/commit/950069986814ffeaec7d90c9b32474fba9d3c165)
Thanks
[@&#8203;podonnell-dev](https://redirect.github.com/podonnell-dev)! -
Add support for Workers Previews, including Preview artifact parsing,
Preview outputs, GitHub Deployments, and job summaries for `wrangler
preview`.

##### Patch Changes

-
[#&#8203;418](https://redirect.github.com/cloudflare/wrangler-action/pull/418)
[`789ac84`](https://redirect.github.com/cloudflare/wrangler-action/commit/789ac84b82c924003a8037fc2f754887eaf88303)
Thanks [@&#8203;vliggio](https://redirect.github.com/vliggio)! - Surface
wrangler error messages in the action step output instead of showing
only a generic failure message.

</details>

---

### Configuration

📅 **Schedule**: (in timezone America/Chicago)

- Branch creation
  - "before 9am on monday"
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/taraxvoid/voidflow).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMzQuMSIsInVwZGF0ZWRJblZlciI6IjQ0LjEzNC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
npmx builds its Compatibility box from \`engines\`, so with only \`bun\`
declared the package read as bun-only.

- Add \`engines.node: \">=22\"\`. The \`./playwright\` export is plain
ESM (only imports \`node:net\` and \`@playwright/test\`) and runs on
Node.
- README: note that the \`check-licenses\` and \`unlighthouse-runner\`
bins are TypeScript run by Bun via shebang, so \`bun\` must be on PATH
even for npm/pnpm sites.

Tests: \`check-licenses\` and \`playwright\` suites pass with
\`--timeout 60000\` (the default 5s timed out on this machine).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…162)

The shared site pre-push hook is meant to skip `test:push` when a push
carries nothing new, but it compared each ref's local sha with its
remote sha. That made these all run the full suite:

- branch deletes (local sha is all zeros, so it never equals the remote
sha)
- a new branch at a commit that's already pushed (remote sha is all
zeros)
- a tag on an already-pushed commit

Now a commit counts as new only when no ref of the remote contains it
(`git rev-list <sha> --not --remotes=<remote>`), and deletes are
skipped. A push to a URL rather than a named remote matches no remote
refs, so it still runs the checks. The branch used by the "remote is
ahead" fetch check now comes only from `refs/heads/*` lines with new
commits, so a tag in the same push no longer overwrites it.

Tests: `test/lefthook-site.test.ts` now runs the hook's script from
`site.yml` with `sh` against a temporary repo and bare remote, covering
the three skip cases (which failed before this change) and two run
cases. README updated.

Sites pick this up when their lefthook remote `ref` is bumped to the
release containing it (voidsite-staging's in-progress lefthook migration
pins v0.13.0).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
|
[check-jsonschema](https://redirect.github.com/python-jsonschema/check-jsonschema)
| `0.38.0` → `0.38.2` |
![age](https://developer.mend.io/api/mc/badges/age/pypi/check-jsonschema/0.38.2?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/check-jsonschema/0.38.0/0.38.2?slim=true)
|

---

### Release Notes

<details>
<summary>python-jsonschema/check-jsonschema (check-jsonschema)</summary>

###
[`v0.38.2`](https://redirect.github.com/python-jsonschema/check-jsonschema/blob/HEAD/CHANGELOG.rst#0382)

[Compare
Source](https://redirect.github.com/python-jsonschema/check-jsonschema/compare/0.38.1...0.38.2)

- Update the version of `click` declared as a dependency

###
[`v0.38.1`](https://redirect.github.com/python-jsonschema/check-jsonschema/blob/HEAD/CHANGELOG.rst#0381)

[Compare
Source](https://redirect.github.com/python-jsonschema/check-jsonschema/compare/0.38.0...0.38.1)

- Update vendored schemas: bitbucket-pipelines, buildkite, changie,
circle-ci,
compose-spec, dependabot, github-actions, github-workflows, gitlab-ci,
mergify,
  renovate, taskfile, travis, woodpecker-ci (2026-09-20)
- `check-jsonschema` now has a logo. Thanks to
  `Mylah Birdie <https://www.instagram.com/mylahbirdie>`\_\_!

</details>

---

### Configuration

📅 **Schedule**: (in timezone America/Chicago)

- Branch creation
  - "before 9am on monday"
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/taraxvoid/voidflow).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMzQuMSIsInVwZGF0ZWRJblZlciI6IjQ0LjEzNC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
npmx.dev shows a "trust downgrade" for `voidflow` after 0.8.1. The token
fallback was blamed on npm/cli#9969 (immutable OIDC subjects), but the
publish logs say otherwise:

- `@taraxvoid/voidflow` has been trusted-published on every release,
0.13.0 included (`_npmUser` is `GitHub Actions
<npm-oidc-no-reply@github.com>`), with this repo's immutable subject.
- The unscoped `voidflow` mirror's exchange fails in the same job: `POST
.../oidc/token/exchange/package/voidflow 404`, `package not found`. npm
then falls back to `NPM_TOKEN`. 0.8.1 was the last unscoped version that
exchanged.

So the fix is the trusted publisher entry for `voidflow` on npmjs.com
(repo `taraxvoid/voidflow`, workflow `release-please.yml`, environment
`npm`), not anything in this workflow.

This PR:
- Corrects the workflow comments.
- Adds a step after publishing that emits a `::warning::` when either
package's publisher is not the GitHub OIDC identity. It only warns,
because the version is already published either way.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
taraxvoid and others added 6 commits October 15, 2026 14:39
…f aborting (#177)

On a free personal plan, the rulesets API returns 403 (`Upgrade to
GitHub Pro or make this repository public to enable this feature.`) for
private repos. That aborted the whole `apply-rulesets` run, so private
repos had to be kept out of `REPOS`.

- `isPlanGated()` in `rulesets/index.ts` recognises that specific 403
(other 403s and errors still abort)
- `scripts/apply-rulesets.ts` reports the repo as skipped, keeps going,
and lists skipped repos at the end; they don't count as drift, so
`--check` stays green
- README and the `REPOS` comment updated

Verified by temporarily adding private `taraxvoid/trailguide` and
running `--check`: it was skipped, the other repos were checked, exit 0.
`bun test` passes (124).

Follow-up for #157: its README line "Private repos are left out..." and
the trailguide comment in `REPOS` can now say trailguide is listed (as
`tool()`) and skipped until public.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	rulesets/index.ts
#	test/rulesets.test.ts
…sh check into base.yml

An earlier merge from main applied main's pre-push edits to the
site.yml stub, so pre-push ran the old checks instead of failing with
the rename hint. The stub's pre-push reuses the tombstone again, and
base.yml gets main's improved new-commit detection (deletes, commits
already on the remote). The env-cleanup test now pushes a real commit
so that detection can resolve it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
next replaced actionlint with jactionlint in site-ci.yml (#174), so
tool-ci.yml's shared "Lint CI workflows" step takes the same change to
keep the parity test green. README keeps the mise-based setup.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Matches next's switch (#174) in the contributor mise.toml. The README's
starter mise.toml and tool-ci docs changed with the merge from next.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@taraxvoid

Copy link
Copy Markdown
Owner Author

Unblocked this PR: merged main and next in, fixed the 2 failing unit tests, and green CI is back.

  • Merge damage from an earlier merge (a7a349a): main's pre-push improvements had landed in the lefthook/site.yml stub. That's why the stub's pre-push ran the old checks instead of failing with the rename hint, and why the pre-push tombstone test failed. The stub reuses *renamed again, and main's better "new commits" detection (deletes, commits already on the remote) moved into lefthook/base.yml. The env-cleanup test now pushes a real commit so that detection can resolve it.
  • package.json description: the same merge had reverted it. It's back to "Shared workflows, hooks and tooling for @taraxvoid repos".
  • Merge from next: fix(site-ci): replace deprecated actionlint with jactionlint #174 replaced actionlint with jactionlint in site-ci.yml. tool-ci.yml's "Lint CI workflows" step copies it (the parity test requires that), and mise.toml, the README starter mise.toml and the tool-ci docs pin jactionlint = "2.1.0".
  • Merge from main: rulesets/index.ts keeps main's "private repos are listed and skipped on 403" comment plus the trailguide note. The tests keep both tool() and isPlanGated.

Locally: bun test passes 151 of 151, just validate passes, and jactionlint is clean.

🤖 Generated with Claude Code

@taraxvoid
taraxvoid merged commit e775c8b into next Oct 16, 2026
2 checks passed
@taraxvoid
taraxvoid deleted the worktree-tool-ergonomics branch October 16, 2026 04:09
taraxvoid added a commit that referenced this pull request Oct 16, 2026
#157 (e775c8b) committed mise state from a run with HOME at the repo
root: `.cache/mise/`, `.local/share/mise/` (including lefthook binaries)
and `.local/state/mise/`, plus a stray file `f` containing `y`.

This removes them and adds `/.cache/` and `/.local/` to `.gitignore` so
they don't come back. `mise.toml` stays.

Refs #157

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
taraxvoid added a commit that referenced this pull request Oct 16, 2026
- **fix(site-ci): replace deprecated actionlint with jactionlint
(#174)**
- **feat: tool ergonomics (base hooks, tool-ci, mise, tool rulesets)
(#157)**
- **feat(biome): shared base config sites extend as
@taraxvoid/voidflow/biome (#183)**
- **chore: remove committed mise cache and stray file from #157 (#184)**

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: ravenflight-releases[bot] <330165707+ravenflight-releases[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
taraxvoid pushed a commit that referenced this pull request Oct 16, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.14.0-next](v0.13.0...v0.14.0-next)
(2026-10-16)


### Features

* **biome:** shared base config sites extend as
@taraxvoid/voidflow/biome
([#183](#183))
([a5f0977](a5f0977))
* tool ergonomics (base hooks, tool-ci, mise, tool rulesets)
([#157](#157))
([e775c8b](e775c8b))


### Bug Fixes

* **site-ci:** replace deprecated actionlint with jactionlint
([#174](#174))
([6192a43](6192a43))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: ravenflight-releases[bot] <330165707+ravenflight-releases[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant