Repository navigation
Add @ungrouped and @builtin group selectors - #2617
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d7eb833510
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #2617 +/- ##
=======================================
Coverage 93.96% 93.97%
=======================================
Files 140 140
Lines 29639 29719 +80
=======================================
+ Hits 27850 27927 +77
- Misses 1789 1792 +3 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
📦 Cargo Bloat Comparison
Expand for cargo-bloat outputHead Branch ResultsBase Branch Results |
⚡️ Hyperfine BenchmarksSummary: 0 regressions, 0 improvements above the 10% threshold. Environment
CLI CommandsBenchmarking basic commands in the main repo:
|
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
prek-base --version |
2.1 ± 0.1 | 2.0 | 2.5 | 1.00 |
prek-head --version |
2.1 ± 0.1 | 2.0 | 3.0 | 1.00 ± 0.07 |
prek list
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
prek-base list |
9.1 ± 0.2 | 8.6 | 9.8 | 1.00 |
prek-head list |
9.2 ± 0.2 | 8.8 | 9.9 | 1.01 ± 0.04 |
prek validate-config .pre-commit-config.yaml
⏭️ Skipped: .pre-commit-config.yaml not found
prek sample-config
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
prek-base sample-config |
2.4 ± 0.0 | 2.3 | 2.5 | 1.00 |
prek-head sample-config |
2.4 ± 0.1 | 2.3 | 2.6 | 1.00 ± 0.03 |
Cold vs Warm Runs
Comparing first run (cold) vs subsequent runs (warm cache):
prek run --all-files (cold - no cache)
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
prek-base run --all-files |
37.1 ± 1.3 | 35.5 | 40.3 | 1.00 |
prek-head run --all-files |
37.6 ± 1.0 | 35.8 | 38.8 | 1.01 ± 0.05 |
prek run --all-files (warm - with cache)
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
prek-base run --all-files |
37.5 ± 0.8 | 35.1 | 38.3 | 1.02 ± 0.03 |
prek-head run --all-files |
36.9 ± 0.9 | 35.6 | 38.3 | 1.00 |
Full Hook Suite
Running the builtin hook suite on the benchmark workspace:
prek run --all-files (full builtin hook suite)
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
prek-base run --all-files |
37.3 ± 1.1 | 35.6 | 40.2 | 1.00 |
prek-head run --all-files |
37.5 ± 1.1 | 35.4 | 40.0 | 1.00 ± 0.04 |
Individual Hook Performance
Benchmarking each hook individually on the test repo:
prek run trailing-whitespace --all-files
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
prek-base run trailing-whitespace --all-files |
12.7 ± 0.4 | 11.8 | 13.6 | 1.00 |
prek-head run trailing-whitespace --all-files |
12.8 ± 0.4 | 12.0 | 13.7 | 1.01 ± 0.05 |
prek run end-of-file-fixer --all-files
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
prek-base run end-of-file-fixer --all-files |
11.0 ± 0.5 | 10.3 | 12.2 | 1.01 ± 0.06 |
prek-head run end-of-file-fixer --all-files |
11.0 ± 0.5 | 10.1 | 12.1 | 1.00 |
prek run check-json --all-files
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
prek-base run check-json --all-files |
7.8 ± 0.3 | 7.3 | 8.3 | 1.03 ± 0.05 |
prek-head run check-json --all-files |
7.6 ± 0.3 | 7.1 | 8.1 | 1.00 |
prek run check-yaml --all-files
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
prek-base run check-yaml --all-files |
7.5 ± 0.2 | 7.3 | 7.8 | 1.02 ± 0.03 |
prek-head run check-yaml --all-files |
7.4 ± 0.1 | 7.1 | 7.7 | 1.00 |
prek run check-toml --all-files
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
prek-base run check-toml --all-files |
7.7 ± 0.3 | 7.2 | 8.2 | 1.01 ± 0.05 |
prek-head run check-toml --all-files |
7.6 ± 0.2 | 7.2 | 8.3 | 1.00 |
prek run check-xml --all-files
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
prek-base run check-xml --all-files |
7.5 ± 0.3 | 7.0 | 8.4 | 1.01 ± 0.06 |
prek-head run check-xml --all-files |
7.5 ± 0.3 | 7.1 | 8.5 | 1.00 |
prek run detect-private-key --all-files
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
prek-base run detect-private-key --all-files |
10.9 ± 0.9 | 9.9 | 13.7 | 1.01 ± 0.10 |
prek-head run detect-private-key --all-files |
10.8 ± 0.6 | 10.0 | 12.7 | 1.00 |
prek run fix-byte-order-marker --all-files
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
prek-base run fix-byte-order-marker --all-files |
12.7 ± 0.9 | 11.4 | 14.6 | 1.00 |
prek-head run fix-byte-order-marker --all-files |
12.9 ± 0.9 | 11.3 | 14.6 | 1.01 ± 0.10 |
Installation Performance
Benchmarking hook installation (fast path hooks skip Python setup):
prek install-hooks (cold - no cache)
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
prek-base install-hooks |
4.5 ± 0.1 | 4.4 | 4.6 | 1.01 ± 0.02 |
prek-head install-hooks |
4.4 ± 0.0 | 4.4 | 4.5 | 1.00 |
prek install-hooks (warm - with cache)
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
prek-base install-hooks |
4.4 ± 0.0 | 4.3 | 4.5 | 1.00 |
prek-head install-hooks |
4.4 ± 0.1 | 4.3 | 4.6 | 1.00 ± 0.03 |
File Filtering/Scoping Performance
Testing different file selection modes:
prek run (staged files only)
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
prek-base run |
23.8 ± 0.3 | 23.2 | 24.5 | 1.00 |
prek-head run |
23.9 ± 0.4 | 23.3 | 24.6 | 1.00 ± 0.02 |
prek run --files '*.json' (specific file type)
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
prek-base run --files '*.json' |
4.9 ± 0.1 | 4.8 | 5.1 | 1.00 |
prek-head run --files '*.json' |
5.0 ± 0.1 | 4.8 | 5.1 | 1.01 ± 0.02 |
Workspace Discovery & Initialization
Benchmarking hook discovery and initialization overhead:
prek run --dry-run --all-files (measures init overhead)
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
prek-base run --dry-run --all-files |
6.7 ± 0.2 | 6.5 | 6.9 | 1.00 |
prek-head run --dry-run --all-files |
6.7 ± 0.1 | 6.5 | 7.0 | 1.00 ± 0.03 |
Meta Hooks Performance
Benchmarking meta hooks separately:
prek run check-hooks-apply --all-files
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
prek-base run check-hooks-apply --all-files |
7.9 ± 0.1 | 7.8 | 8.1 | 1.00 |
prek-head run check-hooks-apply --all-files |
8.0 ± 0.2 | 7.8 | 8.2 | 1.01 ± 0.02 |
prek run check-useless-excludes --all-files
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
prek-base run check-useless-excludes --all-files |
8.5 ± 0.4 | 7.8 | 9.1 | 1.07 ± 0.06 |
prek-head run check-useless-excludes --all-files |
8.0 ± 0.2 | 7.7 | 8.3 | 1.00 |
prek run identity --all-files
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
prek-base run identity --all-files |
6.8 ± 0.2 | 6.6 | 7.1 | 1.00 |
prek-head run identity --all-files |
6.9 ± 0.2 | 6.7 | 7.4 | 1.01 ± 0.04 |
Automated mise tool upgrades from local config.
mise-managed tools:
- `action-validator`
- `actionlint`
- `editorconfig-checker`
- `ghalint`
- `lychee`
- `pinact`
- `pipx:gh-action-pulse`
- `prek`
- `rumdl`
- `shellcheck`
- `shfmt`
- `tombi`
- `uv`
- `yamlfmt`
- `yamllint`
- `zizmor`
Command: `mise upgrade --bump --local action-validator actionlint editorconfig-checker ghalint lychee pinact pipx:gh-action-pulse prek rumdl shellcheck shfmt tombi uv yamlfmt yamllint zizmor`
<details>
<summary>Version changelog (6 tools)</summary>
| Tool | Requested | Installed |
|------|-----------|-----------|
| `editorconfig-checker` | `3.11.1` → `3.11.2` | `3.11.1` → `3.11.2` |
| `prek` | `0.4.14` → `0.5.0` | `0.4.14` → `0.5.0` |
| `rumdl` | `0.2.60` → `0.2.62` | `0.2.60` → `0.2.62` |
| `shfmt` | `3.13.1` → `3.14.0` | `3.13.1` → `3.14.0` |
| `tombi` | `1.4.1` → `1.5.0` | `1.4.1` → `1.5.0` |
| `uv` | `0.12.5` → `0.12.7` | `0.12.5` → `0.12.7` |
</details>
<details>
<summary>Release notes (6 tools)</summary>
<details>
<summary>editorconfig-checker: `3.11.1` → `3.11.2` (editorconfig-checker/editorconfig-checker)</summary>
### v3.11.2
## editorconfig-checker v3.11.2 (2026-08-25T21:11:31Z)
Welcome to this new release of editorconfig-checker!
## Changelog
### Others
* b0a550a82df22ed8bbc48156d3d6fa9bf20c975c: upgrade go to v1.27 to mitigate #613 (@klaernie)
## Thanks!
Those were the changes on v3.11.2!
</details>
<details>
<summary>prek: `0.4.14` → `0.5.0` (j178/prek)</summary>
### v0.5.0
## Release Notes
Released on 2026-08-27.
### Highlights
#### Choose where hook toolchains come from
`language_version` now accepts a source `preference` alongside the version
`request`, letting you control where prek looks for a compatible toolchain when
it creates a hook environment. Use `managed` (the default) or `system` to choose
which source prek tries first while still allowing fallback and downloads. Use
`only-managed` or `only-system` to require one source.
For example, this local Ruff hook requires a Python 3.12 toolchain managed by
prek:
```yaml
repos:
- repo: local
hooks:
- id: ruff
name: ruff
language: python
entry: ruff check
additional_dependencies: [ruff]
language_version:
request: "3.12"
preference: only-managed
```
With `only-managed`, prek reuses a compatible toolchain from its managed store
or downloads one when needed. It never falls back to Python from `PATH`, an OS
package manager, or a version manager, so toolchain selection does not depend on
the developer or CI machine's external environment.
Existing scalar values such as `language_version: "3.12"` continue to work. See
[toolchain management and `language_version`](https://prek.j178.dev/0.5.0/languages/#toolchain-management-and-language_version)
for the full source-selection behavior. ([#2613](j178/prek#2613))
### Breaking changes
The breaking changes in this release are mostly small cleanups, and most users should not be affected.
- Group names can no longer start with `@`. This prefix is now reserved for special group selectors such as the new `@ungrouped` selector. ([#2617](j178/prek#2617))
- `PREK_MAX_CONCURRENCY` has been removed. Use `PREK_CONCURRENT_HOOKS` and `PREK_CONCURRENT_BATCHES` to control hook and per-hook batch concurrency separately. ([#2620](j178/prek#2620))
- The top-level `prek init-template-dir` command… (truncated)
</details>
<details>
<summary>rumdl: `0.2.60` → `0.2.62` (rvben/rumdl)</summary>
### v0.2.61
### Added
- **cli**: add `--stdin-batch` for NUL-framed multi-document linting and `--stdin-batch-closed-world` for supplied-document-only link resolution
## Downloads
| File | Platform | Checksum |
|------|----------|----------|
| [rumdl-v0.2.61-x86_64-unknown-linux-gnu.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.61/rumdl-v0.2.61-x86_64-unknown-linux-gnu.tar.gz) | Linux x86_64 | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.61/rumdl-v0.2.61-x86_64-unknown-linux-gnu.tar.gz.sha256) |
| [rumdl-v0.2.61-x86_64-unknown-linux-musl.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.61/rumdl-v0.2.61-x86_64-unknown-linux-musl.tar.gz) | Linux x86_64 (musl) | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.61/rumdl-v0.2.61-x86_64-unknown-linux-musl.tar.gz.sha256) |
| [rumdl-v0.2.61-aarch64-unknown-linux-gnu.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.61/rumdl-v0.2.61-aarch64-unknown-linux-gnu.tar.gz) | Linux ARM64 | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.61/rumdl-v0.2.61-aarch64-unknown-linux-gnu.tar.gz.sha256) |
| [rumdl-v0.2.61-aarch64-unknown-linux-musl.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.61/rumdl-v0.2.61-aarch64-unknown-linux-musl.tar.gz) | Linux ARM64 (musl) | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.61/rumdl-v0.2.61-aarch64-unknown-linux-musl.tar.gz.sha256) |
| [rumdl-v0.2.61-x86_64-apple-darwin.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.61/rumdl-v0.2.61-x86_64-apple-darwin.tar.gz) | macOS x86_64 | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.61/rumdl-v0.2.61-x86_64-apple-darwin.tar.gz.sha256) |
| [rumdl-v0.2.61-aarch64-apple-darwin.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.61/rumdl-v0.2.61-aarch64-apple-darwin.tar.gz) | macOS ARM64 (Apple Silicon) | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.61/rumdl-v0.2.61-aarch64-a… (truncated)
### v0.2.62
### Added
- **flavor**: add support for Markdown with Gherkin (MDG) ([db62377](rvben/rumdl@db62377))
## Downloads
| File | Platform | Checksum |
|------|----------|----------|
| [rumdl-v0.2.62-x86_64-unknown-linux-gnu.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.62/rumdl-v0.2.62-x86_64-unknown-linux-gnu.tar.gz) | Linux x86_64 | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.62/rumdl-v0.2.62-x86_64-unknown-linux-gnu.tar.gz.sha256) |
| [rumdl-v0.2.62-x86_64-unknown-linux-musl.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.62/rumdl-v0.2.62-x86_64-unknown-linux-musl.tar.gz) | Linux x86_64 (musl) | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.62/rumdl-v0.2.62-x86_64-unknown-linux-musl.tar.gz.sha256) |
| [rumdl-v0.2.62-aarch64-unknown-linux-gnu.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.62/rumdl-v0.2.62-aarch64-unknown-linux-gnu.tar.gz) | Linux ARM64 | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.62/rumdl-v0.2.62-aarch64-unknown-linux-gnu.tar.gz.sha256) |
| [rumdl-v0.2.62-aarch64-unknown-linux-musl.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.62/rumdl-v0.2.62-aarch64-unknown-linux-musl.tar.gz) | Linux ARM64 (musl) | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.62/rumdl-v0.2.62-aarch64-unknown-linux-musl.tar.gz.sha256) |
| [rumdl-v0.2.62-x86_64-apple-darwin.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.62/rumdl-v0.2.62-x86_64-apple-darwin.tar.gz) | macOS x86_64 | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.62/rumdl-v0.2.62-x86_64-apple-darwin.tar.gz.sha256) |
| [rumdl-v0.2.62-aarch64-apple-darwin.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.62/rumdl-v0.2.62-aarch64-apple-darwin.tar.gz) | macOS ARM64 (Apple Silicon) | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.62/rumdl-v0.2.62-aarc… (truncated)
</details>
<details>
<summary>shfmt: `3.13.1` → `3.14.0` (mvdan/sh)</summary>
### v3.14.0
This release drops support for Go 1.25 and includes many enhancements, particularly in the interpreter, which implements more shell features and fixes many divergences from Bash.
- **cmd/shfmt**
- Add `--detect` to find shell files by executable bit or shebang - #944
- **syntax**
- Add `Preorder`, an iterator over all nodes, complementing `Walk`
- Add `encoding.TextUnmarshaler` implementations for each operator type
- Support `${ foo;}` and `${|foo;}` inside double quotes - #1368
- Support array elements in `{varname}` redirects, like `exec {fds[3]}>&-` - #719
- Backslashes inside backquotes within double quotes escape double quotes - #1083
- Allow pound signs in associative array keys like `${args[cmd,#]}` - #1285
- Don't treat `#` as the start of a comment inside `[[ ]]` tests - #1326
- Don't join `then` or `do` with a semicolon when heredocs are pending - #1047
- Print a space after `!` in arithmetic expressions, avoiding history expansion - #987
- Space nested closing parentheses like the opening ones - #876
- Make `SplitBraces` reject malformed sequences and skip backslash escapes - #1330
- Zsh: support the `${=name}`, `${~name}`, and `${^name}` prefixes - #1238
- Zsh: support the `;|` case terminator and leading parentheses for globs - #1293, #1279
- Zsh: parse subscript flag arguments as patterns, and allow `[` globs in arrays - #1278, #1322
- **syntax/typedjson**
- Encode operators as their syntax form, such as `">>"`, rather than integers - #1321
- Return errors rather than panicking on malformed input
- **interp**
- Add `BashOpts` to set Bash options like `shopt` - #962
- Add `AccessHandler` to control file access checks, used by `-r` and `cd` - #1318
- Add `HandlerContext.LastExitStatus`, and provide a `HandlerContext` to stat handlers
- Implement the `help` and `times` builtins, as well as `$-` - #1398
- Implement the `;&` and `;;&` case terminators - #1391
- Implemen… (truncated)
</details>
<details>
<summary>tombi: `1.4.1` → `1.5.0` (tombi-toml/tombi)</summary>
### v1.5.0
<!-- Release notes generated using configuration in .github/release.yml at v1.5.0 -->
## What's Changed
Tombi v1.5.0 is a major performance and architecture release.
We redesigned the parser and AST around a compact, source-backed syntax tape, replacing the previous red-green syntax tree.
The new architecture is optimized for Tombi’s lossless, long-lived editor and LSP workloads: it improves memory locality and reduces allocation and pointer-chasing overhead while preserving comments, punctuation, incomplete syntax, and diagnostics.
The AST and document-tree interfaces are now also separated from their syntax-backed implementations.
We also optimized hot paths throughout the parser, JSON Schema processing, linter, formatter, and stdin-based CLI workflows.
In our Apple M2 Max benchmarks, long ASCII comment lexing was approximately 2.3× faster, selected JSON parsing workloads improved by up to 84%, and repository-wide lint time decreased from approximately 355 ms to 81 ms.
### 🚨 Breaking Changes
* perf(parser): replace syntax tree with compact tape by @ya7010 in tombi-toml/tombi#2140
### 🐝 Bug Fixes
* fix(lsp): preserve composite schema metadata by @ya7010 in tombi-toml/tombi#2139
### 🛠️ Other Changes
* Improve minimal-change guidance for agents by @ya7010 in tombi-toml/tombi#2137
* perf(parser): accelerate long comment scanning by @ya7010 in tombi-toml/tombi#2141
* perf: speed up lint and format by @ya7010 in tombi-toml/tombi#2142
* perf: reduce stdin runtime overhead by @ya7010 in tombi-toml/tombi#2143
* perf(json): accelerate long string parsing by @ya7010 in tombi-toml/tombi#2145
* perf(json): optimize lexer and parser hot paths by @ya7010 in tombi-toml/tombi#2146
**Full Changelog**: https://github.com/tombi-toml/tomb… (truncated)
</details>
<details>
<summary>uv: `0.12.5` → `0.12.7` (astral-sh/uv)</summary>
### 0.12.6
## Release Notes
Released on 2026-08-25.
### Python
- Update CPython to use OpenSSL 3.5.8 and libffi 3.4.8 [#21295](astral-sh/uv#21295))
### Enhancements
- Report cache-cleaning space savings from filesystem block allocation and avoid double-counting hard links ([#21261](astral-sh/uv#21261))
- Limit warnings about unbounded `uv_build` requirements to source-distribution builds ([#21078](astral-sh/uv#21078))
- Display byte counts below 1 KiB without a fractional part ([#21237](astral-sh/uv#21237))
### Preview features
- Add `uv workspace metadata --sync --exact` to remove packages outside the selected resolution ([#21117](astral-sh/uv#21117))
- Add the `artifact-hash-filtering` preview feature to make `uv pip compile --generate-hashes` honor `--only-binary` and `--no-binary` ([#21235](astral-sh/uv#21235))
- Respect package-specific `exclude-newer` cutoffs when `uv check` selects its `ty` executable ([#21227](astral-sh/uv#21227))
- Preserve virtual-environment hints from `tar-codec` source-distribution errors when the base interpreter is outside a `bin` directory ([#21146](astral-sh/uv#21146))
### Performance
- Enable profile-guided optimization for Linux x86-64 release binaries ([#21001](astral-sh/uv#21001))
- Enable profile-guided optimization for Windows x86-64 release binaries ([#21003](astral-sh/uv#21003))
- Enable profile-guided optimization for macOS ARM64 release binaries ([#21002](astral-sh/uv#21002))
- Enable profile-guided optimization for Linux ARM64 release binaries ([#21004](astral-sh/uv#21004))
- Speed up syncing projects with many activated conflict items by reusing their encoded representation ([#21148](https://github.com/astral-sh/uv/pull/21148))… (truncated)
### 0.12.7
## Release Notes
Released on 2026-08-27.
### Python
- Replace managed Python installations when upgrading to a newer build of the same version ([#21323](astral-sh/uv#21323))
### Enhancements
- Support Linux `s390x`, `ppc64le`, and `loongarch64` targets for cross-platform dependency resolution ([#21313](astral-sh/uv#21313))
- Retry downloads with configured credentials when Azure Storage denies anonymous access to an endpoint configured via `UV_AZURE_ENDPOINT_URL` ([#21318](astral-sh/uv#21318))
### Preview features
- Use content-based directory hashes to deduplicate extracted wheels in the cache with the `content-addressed-cache` preview feature ([#19693](astral-sh/uv#19693))
### Bug fixes
- Reject source archives with hash mismatches before persisting their extracted contents to the cache ([#21248](astral-sh/uv#21248))
### Other changes
- remove pyx specific features ([#21182](astral-sh/uv#21182), [#21183](astral-sh/uv#21183), [#21184](astral-sh/uv#21184), [#21185](astral-sh/uv#21185), [#21186](astral-sh/uv#21186))
## Install uv 0.12.7
### Install prebuilt binaries via shell script
```sh
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-installer.sh | sh
```
### Install prebuilt binaries via powershell script
```sh
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-installer.ps1 | iex"
```
## Download uv 0.12.7
| File | Platform | Checksum |
|--------|----------|----------|
| [uv-aarch64-apple-darwin.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-aarch64-apple-darwin.tar.gz) | Apple Silicon macOS | [checksum](https://releases.astral.sh/github/uv/releases/download/0… (truncated)
</details>
</details>
Modified files:
- `.mise.toml`
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Automated mise tool upgrades from local config. mise-managed tools: - `action-validator` - `actionlint` - `aube` - `editorconfig-checker` - `ghalint` - `pinact` - `pipx:gh-action-pulse` - `prek` - `rumdl` - `shellcheck` - `shfmt` - `tombi` - `uv` - `yamlfmt` - `yamllint` - `zizmor` Command: `mise upgrade --bump --local action-validator actionlint aube editorconfig-checker ghalint pinact pipx:gh-action-pulse prek rumdl shellcheck shfmt tombi uv yamlfmt yamllint zizmor` <details> <summary>Version changelog (7 tools)</summary> | Tool | Requested | Installed | |------|-----------|-----------| | `aube` | `latest` → `latest` | `2.1.0` → `2.2.0` | | `editorconfig-checker` | `3.11.1` → `3.11.2` | `3.11.1` → `3.11.2` | | `prek` | `0.4.14` → `0.5.0` | `0.4.14` → `0.5.0` | | `rumdl` | `0.2.60` → `0.2.62` | `0.2.60` → `0.2.62` | | `shfmt` | `3.13.1` → `3.14.0` | `3.13.1` → `3.14.0` | | `tombi` | `1.4.1` → `1.5.0` | `1.4.1` → `1.5.0` | | `uv` | `0.12.5` → `0.12.7` | `0.12.5` → `0.12.7` | </details> <details> <summary>Release notes (7 tools)</summary> <details> <summary>aube: `2.1.0` → `2.2.0` (jdx/aube)</summary> ### v2.2.0 A small release that gives standalone aube a bundled package-extensions compatibility catalog and exposes its node-gyp bootstrap through the public embedding facade. ## Added - **Embeddable node-gyp bootstrap** ([#1365](aubepkg/aube#1365) by @jdx) — aube's locked, in-process node-gyp bootstrap is now available through the stable embedding facade and returns the resolved executable path. This lets embedders (e.g. mise) service aube's lazy shim command without an ambient `npm` or a separately installed `aube` binary, while aube keeps ownership of the node-gyp version, cache layout, npmrc propagation, and cross-process locking. Standalone aube's hidden `__node-gyp-bootstrap` command now routes through the same API, and binary lookup uses `is_file()` across platform names so Windows `.exe`/`.cmd` caches resolve correctly. ## Fixed - **Bundled curated package extensions** ([#1369](aubepkg/aube#1369) by @jdx) — Standalone aube now ships a bundled compatibility catalog (~161 curated rules from Yarn's `@yarnpkg/extensions@2.0.7` plus pnpm's Rust CLI additions) that repairs missing or incompatible peer/optional dependencies across common ecosystems (Angular, Nuxt, React, Vue, Gatsby, GraphQL, Webpack, Parcel, and more). The phantom rules removed upstream by pnpm are excluded. These defaults are applied at the lowest precedence — user and project `packageExtensions` always win — and are kept out of `packageExtensionsChecksum`, so catalog updates never invalidate existing lockfiles or break `--frozen-lockfile`. Set `ignoreCompatibilityDb=true` to opt out of the bundled repairs; malformed bundled entries are skipped with a `WARN_AUBE_INVALID_BUNDLED_PACKAGE_EXTENSION` warning rather than failing the install. **Full Changelog**: aubepkg/aube@v2.1.0...v2.2.0 ## 💚 Sponsor aube aube is maintained by [@jdx](https://github.com/jdx), an open source developer for [**entire.io**](https://entire.io),… (truncated) </details> <details> <summary>editorconfig-checker: `3.11.1` → `3.11.2` (editorconfig-checker/editorconfig-checker)</summary> ### v3.11.2 ## editorconfig-checker v3.11.2 (2026-08-25T21:11:31Z) Welcome to this new release of editorconfig-checker! ## Changelog ### Others * b0a550a82df22ed8bbc48156d3d6fa9bf20c975c: upgrade go to v1.27 to mitigate #613 (@klaernie) ## Thanks! Those were the changes on v3.11.2! </details> <details> <summary>prek: `0.4.14` → `0.5.0` (j178/prek)</summary> ### v0.5.0 ## Release Notes Released on 2026-08-27. ### Highlights #### Choose where hook toolchains come from `language_version` now accepts a source `preference` alongside the version `request`, letting you control where prek looks for a compatible toolchain when it creates a hook environment. Use `managed` (the default) or `system` to choose which source prek tries first while still allowing fallback and downloads. Use `only-managed` or `only-system` to require one source. For example, this local Ruff hook requires a Python 3.12 toolchain managed by prek: ```yaml repos: - repo: local hooks: - id: ruff name: ruff language: python entry: ruff check additional_dependencies: [ruff] language_version: request: "3.12" preference: only-managed ``` With `only-managed`, prek reuses a compatible toolchain from its managed store or downloads one when needed. It never falls back to Python from `PATH`, an OS package manager, or a version manager, so toolchain selection does not depend on the developer or CI machine's external environment. Existing scalar values such as `language_version: "3.12"` continue to work. See [toolchain management and `language_version`](https://prek.j178.dev/0.5.0/languages/#toolchain-management-and-language_version) for the full source-selection behavior. ([#2613](j178/prek#2613)) ### Breaking changes The breaking changes in this release are mostly small cleanups, and most users should not be affected. - Group names can no longer start with `@`. This prefix is now reserved for special group selectors such as the new `@ungrouped` selector. ([#2617](j178/prek#2617)) - `PREK_MAX_CONCURRENCY` has been removed. Use `PREK_CONCURRENT_HOOKS` and `PREK_CONCURRENT_BATCHES` to control hook and per-hook batch concurrency separately. ([#2620](j178/prek#2620)) - The top-level `prek init-template-dir` command… (truncated) </details> <details> <summary>rumdl: `0.2.60` → `0.2.62` (rvben/rumdl)</summary> ### v0.2.61 ### Added - **cli**: add `--stdin-batch` for NUL-framed multi-document linting and `--stdin-batch-closed-world` for supplied-document-only link resolution ## Downloads | File | Platform | Checksum | |------|----------|----------| | [rumdl-v0.2.61-x86_64-unknown-linux-gnu.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.61/rumdl-v0.2.61-x86_64-unknown-linux-gnu.tar.gz) | Linux x86_64 | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.61/rumdl-v0.2.61-x86_64-unknown-linux-gnu.tar.gz.sha256) | | [rumdl-v0.2.61-x86_64-unknown-linux-musl.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.61/rumdl-v0.2.61-x86_64-unknown-linux-musl.tar.gz) | Linux x86_64 (musl) | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.61/rumdl-v0.2.61-x86_64-unknown-linux-musl.tar.gz.sha256) | | [rumdl-v0.2.61-aarch64-unknown-linux-gnu.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.61/rumdl-v0.2.61-aarch64-unknown-linux-gnu.tar.gz) | Linux ARM64 | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.61/rumdl-v0.2.61-aarch64-unknown-linux-gnu.tar.gz.sha256) | | [rumdl-v0.2.61-aarch64-unknown-linux-musl.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.61/rumdl-v0.2.61-aarch64-unknown-linux-musl.tar.gz) | Linux ARM64 (musl) | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.61/rumdl-v0.2.61-aarch64-unknown-linux-musl.tar.gz.sha256) | | [rumdl-v0.2.61-x86_64-apple-darwin.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.61/rumdl-v0.2.61-x86_64-apple-darwin.tar.gz) | macOS x86_64 | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.61/rumdl-v0.2.61-x86_64-apple-darwin.tar.gz.sha256) | | [rumdl-v0.2.61-aarch64-apple-darwin.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.61/rumdl-v0.2.61-aarch64-apple-darwin.tar.gz) | macOS ARM64 (Apple Silicon) | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.61/rumdl-v0.2.61-aarch64-a… (truncated) ### v0.2.62 ### Added - **flavor**: add support for Markdown with Gherkin (MDG) ([db62377](rvben/rumdl@db62377)) ## Downloads | File | Platform | Checksum | |------|----------|----------| | [rumdl-v0.2.62-x86_64-unknown-linux-gnu.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.62/rumdl-v0.2.62-x86_64-unknown-linux-gnu.tar.gz) | Linux x86_64 | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.62/rumdl-v0.2.62-x86_64-unknown-linux-gnu.tar.gz.sha256) | | [rumdl-v0.2.62-x86_64-unknown-linux-musl.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.62/rumdl-v0.2.62-x86_64-unknown-linux-musl.tar.gz) | Linux x86_64 (musl) | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.62/rumdl-v0.2.62-x86_64-unknown-linux-musl.tar.gz.sha256) | | [rumdl-v0.2.62-aarch64-unknown-linux-gnu.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.62/rumdl-v0.2.62-aarch64-unknown-linux-gnu.tar.gz) | Linux ARM64 | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.62/rumdl-v0.2.62-aarch64-unknown-linux-gnu.tar.gz.sha256) | | [rumdl-v0.2.62-aarch64-unknown-linux-musl.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.62/rumdl-v0.2.62-aarch64-unknown-linux-musl.tar.gz) | Linux ARM64 (musl) | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.62/rumdl-v0.2.62-aarch64-unknown-linux-musl.tar.gz.sha256) | | [rumdl-v0.2.62-x86_64-apple-darwin.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.62/rumdl-v0.2.62-x86_64-apple-darwin.tar.gz) | macOS x86_64 | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.62/rumdl-v0.2.62-x86_64-apple-darwin.tar.gz.sha256) | | [rumdl-v0.2.62-aarch64-apple-darwin.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.62/rumdl-v0.2.62-aarch64-apple-darwin.tar.gz) | macOS ARM64 (Apple Silicon) | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.62/rumdl-v0.2.62-aarc… (truncated) </details> <details> <summary>shfmt: `3.13.1` → `3.14.0` (mvdan/sh)</summary> ### v3.14.0 This release drops support for Go 1.25 and includes many enhancements, particularly in the interpreter, which implements more shell features and fixes many divergences from Bash. - **cmd/shfmt** - Add `--detect` to find shell files by executable bit or shebang - #944 - **syntax** - Add `Preorder`, an iterator over all nodes, complementing `Walk` - Add `encoding.TextUnmarshaler` implementations for each operator type - Support `${ foo;}` and `${|foo;}` inside double quotes - #1368 - Support array elements in `{varname}` redirects, like `exec {fds[3]}>&-` - #719 - Backslashes inside backquotes within double quotes escape double quotes - #1083 - Allow pound signs in associative array keys like `${args[cmd,#]}` - #1285 - Don't treat `#` as the start of a comment inside `[[ ]]` tests - #1326 - Don't join `then` or `do` with a semicolon when heredocs are pending - #1047 - Print a space after `!` in arithmetic expressions, avoiding history expansion - #987 - Space nested closing parentheses like the opening ones - #876 - Make `SplitBraces` reject malformed sequences and skip backslash escapes - #1330 - Zsh: support the `${=name}`, `${~name}`, and `${^name}` prefixes - #1238 - Zsh: support the `;|` case terminator and leading parentheses for globs - #1293, #1279 - Zsh: parse subscript flag arguments as patterns, and allow `[` globs in arrays - #1278, #1322 - **syntax/typedjson** - Encode operators as their syntax form, such as `">>"`, rather than integers - #1321 - Return errors rather than panicking on malformed input - **interp** - Add `BashOpts` to set Bash options like `shopt` - #962 - Add `AccessHandler` to control file access checks, used by `-r` and `cd` - #1318 - Add `HandlerContext.LastExitStatus`, and provide a `HandlerContext` to stat handlers - Implement the `help` and `times` builtins, as well as `$-` - #1398 - Implement the `;&` and `;;&` case terminators - #1391 - Implemen… (truncated) </details> <details> <summary>tombi: `1.4.1` → `1.5.0` (tombi-toml/tombi)</summary> ### v1.5.0 <!-- Release notes generated using configuration in .github/release.yml at v1.5.0 --> ## What's Changed Tombi v1.5.0 is a major performance and architecture release. We redesigned the parser and AST around a compact, source-backed syntax tape, replacing the previous red-green syntax tree. The new architecture is optimized for Tombi’s lossless, long-lived editor and LSP workloads: it improves memory locality and reduces allocation and pointer-chasing overhead while preserving comments, punctuation, incomplete syntax, and diagnostics. The AST and document-tree interfaces are now also separated from their syntax-backed implementations. We also optimized hot paths throughout the parser, JSON Schema processing, linter, formatter, and stdin-based CLI workflows. In our Apple M2 Max benchmarks, long ASCII comment lexing was approximately 2.3× faster, selected JSON parsing workloads improved by up to 84%, and repository-wide lint time decreased from approximately 355 ms to 81 ms. ### 🚨 Breaking Changes * perf(parser): replace syntax tree with compact tape by @ya7010 in tombi-toml/tombi#2140 ### 🐝 Bug Fixes * fix(lsp): preserve composite schema metadata by @ya7010 in tombi-toml/tombi#2139 ### 🛠️ Other Changes * Improve minimal-change guidance for agents by @ya7010 in tombi-toml/tombi#2137 * perf(parser): accelerate long comment scanning by @ya7010 in tombi-toml/tombi#2141 * perf: speed up lint and format by @ya7010 in tombi-toml/tombi#2142 * perf: reduce stdin runtime overhead by @ya7010 in tombi-toml/tombi#2143 * perf(json): accelerate long string parsing by @ya7010 in tombi-toml/tombi#2145 * perf(json): optimize lexer and parser hot paths by @ya7010 in tombi-toml/tombi#2146 **Full Changelog**: https://github.com/tombi-toml/tomb… (truncated) </details> <details> <summary>uv: `0.12.5` → `0.12.7` (astral-sh/uv)</summary> ### 0.12.6 ## Release Notes Released on 2026-08-25. ### Python - Update CPython to use OpenSSL 3.5.8 and libffi 3.4.8 [#21295](astral-sh/uv#21295)) ### Enhancements - Report cache-cleaning space savings from filesystem block allocation and avoid double-counting hard links ([#21261](astral-sh/uv#21261)) - Limit warnings about unbounded `uv_build` requirements to source-distribution builds ([#21078](astral-sh/uv#21078)) - Display byte counts below 1 KiB without a fractional part ([#21237](astral-sh/uv#21237)) ### Preview features - Add `uv workspace metadata --sync --exact` to remove packages outside the selected resolution ([#21117](astral-sh/uv#21117)) - Add the `artifact-hash-filtering` preview feature to make `uv pip compile --generate-hashes` honor `--only-binary` and `--no-binary` ([#21235](astral-sh/uv#21235)) - Respect package-specific `exclude-newer` cutoffs when `uv check` selects its `ty` executable ([#21227](astral-sh/uv#21227)) - Preserve virtual-environment hints from `tar-codec` source-distribution errors when the base interpreter is outside a `bin` directory ([#21146](astral-sh/uv#21146)) ### Performance - Enable profile-guided optimization for Linux x86-64 release binaries ([#21001](astral-sh/uv#21001)) - Enable profile-guided optimization for Windows x86-64 release binaries ([#21003](astral-sh/uv#21003)) - Enable profile-guided optimization for macOS ARM64 release binaries ([#21002](astral-sh/uv#21002)) - Enable profile-guided optimization for Linux ARM64 release binaries ([#21004](astral-sh/uv#21004)) - Speed up syncing projects with many activated conflict items by reusing their encoded representation ([#21148](https://github.com/astral-sh/uv/pull/21148))… (truncated) ### 0.12.7 ## Release Notes Released on 2026-08-27. ### Python - Replace managed Python installations when upgrading to a newer build of the same version ([#21323](astral-sh/uv#21323)) ### Enhancements - Support Linux `s390x`, `ppc64le`, and `loongarch64` targets for cross-platform dependency resolution ([#21313](astral-sh/uv#21313)) - Retry downloads with configured credentials when Azure Storage denies anonymous access to an endpoint configured via `UV_AZURE_ENDPOINT_URL` ([#21318](astral-sh/uv#21318)) ### Preview features - Use content-based directory hashes to deduplicate extracted wheels in the cache with the `content-addressed-cache` preview feature ([#19693](astral-sh/uv#19693)) ### Bug fixes - Reject source archives with hash mismatches before persisting their extracted contents to the cache ([#21248](astral-sh/uv#21248)) ### Other changes - remove pyx specific features ([#21182](astral-sh/uv#21182), [#21183](astral-sh/uv#21183), [#21184](astral-sh/uv#21184), [#21185](astral-sh/uv#21185), [#21186](astral-sh/uv#21186)) ## Install uv 0.12.7 ### Install prebuilt binaries via shell script ```sh curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-installer.sh | sh ``` ### Install prebuilt binaries via powershell script ```sh powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-installer.ps1 | iex" ``` ## Download uv 0.12.7 | File | Platform | Checksum | |--------|----------|----------| | [uv-aarch64-apple-darwin.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.7/uv-aarch64-apple-darwin.tar.gz) | Apple Silicon macOS | [checksum](https://releases.astral.sh/github/uv/releases/download/0… (truncated) </details> </details> Modified files: - `.mise.toml` Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Automated mise tool upgrades from local config.
mise-managed tools:
- `prek`
Command: `mise upgrade --bump --local prek`
<details>
<summary>Version changelog (prek)</summary>
| Tool | Requested | Installed |
|------|-----------|-----------|
| `prek` | `0.4.14` → `0.5.0` | `0.4.14` → `0.5.0` |
</details>
<details>
<summary>Release notes (1 tools)</summary>
<details>
<summary>prek: `0.4.14` → `0.5.0` (j178/prek)</summary>
### v0.5.0
## Release Notes
Released on 2026-08-27.
### Highlights
#### Choose where hook toolchains come from
`language_version` now accepts a source `preference` alongside the version
`request`, letting you control where prek looks for a compatible toolchain when
it creates a hook environment. Use `managed` (the default) or `system` to choose
which source prek tries first while still allowing fallback and downloads. Use
`only-managed` or `only-system` to require one source.
For example, this local Ruff hook requires a Python 3.12 toolchain managed by
prek:
```yaml
repos:
- repo: local
hooks:
- id: ruff
name: ruff
language: python
entry: ruff check
additional_dependencies: [ruff]
language_version:
request: "3.12"
preference: only-managed
```
With `only-managed`, prek reuses a compatible toolchain from its managed store
or downloads one when needed. It never falls back to Python from `PATH`, an OS
package manager, or a version manager, so toolchain selection does not depend on
the developer or CI machine's external environment.
Existing scalar values such as `language_version: "3.12"` continue to work. See
[toolchain management and `language_version`](https://prek.j178.dev/0.5.0/languages/#toolchain-management-and-language_version)
for the full source-selection behavior. ([#2613](j178/prek#2613))
### Breaking changes
The breaking changes in this release are mostly small cleanups, and most users should not be affected.
- Group names can no longer start with `@`. This prefix is now reserved for special group selectors such as the new `@ungrouped` selector. ([#2617](j178/prek#2617))
- `PREK_MAX_CONCURRENCY` has been removed. Use `PREK_CONCURRENT_HOOKS` and `PREK_CONCURRENT_BATCHES` to control hook and per-hook batch concurrency separately. ([#2620](j178/prek#2620))
- The top-level `prek init-template-dir` command… (truncated)
</details>
</details>
Modified files:
- `.mise.toml`
Automated mise tool upgrades from local config.
mise-managed tools:
- `prek`
Command: `mise upgrade --bump --local prek`
<details>
<summary>Version changelog (prek)</summary>
| Tool | Requested | Installed |
|------|-----------|-----------|
| `prek` | `0.4.14` → `0.5.0` | `0.4.14` → `0.5.0` |
</details>
<details>
<summary>Release notes (1 tools)</summary>
<details>
<summary>prek: `0.4.14` → `0.5.0` (j178/prek)</summary>
### v0.5.0
## Release Notes
Released on 2026-08-27.
### Highlights
#### Choose where hook toolchains come from
`language_version` now accepts a source `preference` alongside the version
`request`, letting you control where prek looks for a compatible toolchain when
it creates a hook environment. Use `managed` (the default) or `system` to choose
which source prek tries first while still allowing fallback and downloads. Use
`only-managed` or `only-system` to require one source.
For example, this local Ruff hook requires a Python 3.12 toolchain managed by
prek:
```yaml
repos:
- repo: local
hooks:
- id: ruff
name: ruff
language: python
entry: ruff check
additional_dependencies: [ruff]
language_version:
request: "3.12"
preference: only-managed
```
With `only-managed`, prek reuses a compatible toolchain from its managed store
or downloads one when needed. It never falls back to Python from `PATH`, an OS
package manager, or a version manager, so toolchain selection does not depend on
the developer or CI machine's external environment.
Existing scalar values such as `language_version: "3.12"` continue to work. See
[toolchain management and `language_version`](https://prek.j178.dev/0.5.0/languages/#toolchain-management-and-language_version)
for the full source-selection behavior. ([#2613](j178/prek#2613))
### Breaking changes
The breaking changes in this release are mostly small cleanups, and most users should not be affected.
- Group names can no longer start with `@`. This prefix is now reserved for special group selectors such as the new `@ungrouped` selector. ([#2617](j178/prek#2617))
- `PREK_MAX_CONCURRENCY` has been removed. Use `PREK_CONCURRENT_HOOKS` and `PREK_CONCURRENT_BATCHES` to control hook and per-hook batch concurrency separately. ([#2620](j178/prek#2620))
- The top-level `prek init-template-dir` command… (truncated)
</details>
</details>
Modified files:
- `.mise.toml`
Automated mise tool upgrades from local config.
mise-managed tools:
- `prek`
Command: `mise upgrade --bump --local prek`
<details>
<summary>Version changelog (prek)</summary>
| Tool | Requested | Installed |
|------|-----------|-----------|
| `prek` | `0.4.14` → `0.5.0` | `0.4.14` → `0.5.0` |
</details>
<details>
<summary>Release notes (1 tools)</summary>
<details>
<summary>prek: `0.4.14` → `0.5.0` (j178/prek)</summary>
### v0.5.0
## Release Notes
Released on 2026-08-27.
### Highlights
#### Choose where hook toolchains come from
`language_version` now accepts a source `preference` alongside the version
`request`, letting you control where prek looks for a compatible toolchain when
it creates a hook environment. Use `managed` (the default) or `system` to choose
which source prek tries first while still allowing fallback and downloads. Use
`only-managed` or `only-system` to require one source.
For example, this local Ruff hook requires a Python 3.12 toolchain managed by
prek:
```yaml
repos:
- repo: local
hooks:
- id: ruff
name: ruff
language: python
entry: ruff check
additional_dependencies: [ruff]
language_version:
request: "3.12"
preference: only-managed
```
With `only-managed`, prek reuses a compatible toolchain from its managed store
or downloads one when needed. It never falls back to Python from `PATH`, an OS
package manager, or a version manager, so toolchain selection does not depend on
the developer or CI machine's external environment.
Existing scalar values such as `language_version: "3.12"` continue to work. See
[toolchain management and `language_version`](https://prek.j178.dev/0.5.0/languages/#toolchain-management-and-language_version)
for the full source-selection behavior. ([#2613](j178/prek#2613))
### Breaking changes
The breaking changes in this release are mostly small cleanups, and most users should not be affected.
- Group names can no longer start with `@`. This prefix is now reserved for special group selectors such as the new `@ungrouped` selector. ([#2617](j178/prek#2617))
- `PREK_MAX_CONCURRENCY` has been removed. Use `PREK_CONCURRENT_HOOKS` and `PREK_CONCURRENT_BATCHES` to control hook and per-hook batch concurrency separately. ([#2620](j178/prek#2620))
- The top-level `prek init-template-dir` command… (truncated)
</details>
</details>
Modified files:
- `.mise.toml`
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Automated mise tool upgrades from local config.
mise-managed tools:
- `prek`
Command: `mise upgrade --bump --local prek`
<details>
<summary>Version changelog (prek)</summary>
| Tool | Requested | Installed |
|------|-----------|-----------|
| `prek` | `0.4.14` → `0.5.0` | `0.4.14` → `0.5.0` |
</details>
<details>
<summary>Release notes (1 tools)</summary>
<details>
<summary>prek: `0.4.14` → `0.5.0` (j178/prek)</summary>
### v0.5.0
## Release Notes
Released on 2026-08-27.
### Highlights
#### Choose where hook toolchains come from
`language_version` now accepts a source `preference` alongside the version
`request`, letting you control where prek looks for a compatible toolchain when
it creates a hook environment. Use `managed` (the default) or `system` to choose
which source prek tries first while still allowing fallback and downloads. Use
`only-managed` or `only-system` to require one source.
For example, this local Ruff hook requires a Python 3.12 toolchain managed by
prek:
```yaml
repos:
- repo: local
hooks:
- id: ruff
name: ruff
language: python
entry: ruff check
additional_dependencies: [ruff]
language_version:
request: "3.12"
preference: only-managed
```
With `only-managed`, prek reuses a compatible toolchain from its managed store
or downloads one when needed. It never falls back to Python from `PATH`, an OS
package manager, or a version manager, so toolchain selection does not depend on
the developer or CI machine's external environment.
Existing scalar values such as `language_version: "3.12"` continue to work. See
[toolchain management and `language_version`](https://prek.j178.dev/0.5.0/languages/#toolchain-management-and-language_version)
for the full source-selection behavior. ([#2613](j178/prek#2613))
### Breaking changes
The breaking changes in this release are mostly small cleanups, and most users should not be affected.
- Group names can no longer start with `@`. This prefix is now reserved for special group selectors such as the new `@ungrouped` selector. ([#2617](j178/prek#2617))
- `PREK_MAX_CONCURRENCY` has been removed. Use `PREK_CONCURRENT_HOOKS` and `PREK_CONCURRENT_BATCHES` to control hook and per-hook batch concurrency separately. ([#2620](j178/prek#2620))
- The top-level `prek init-template-dir` command… (truncated)
</details>
</details>
Modified files:
- `.mise.toml`
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Automated mise tool upgrades from local config.
mise-managed tools:
- `prek`
Command: `mise upgrade --bump --local prek`
<details>
<summary>Version changelog (prek)</summary>
| Tool | Requested | Installed |
|------|-----------|-----------|
| `prek` | `0.4.14` → `0.5.2` | `0.4.14` → `0.5.2` |
</details>
<details>
<summary>Release notes (1 tools)</summary>
<details>
<summary>prek: `0.4.14` → `0.5.2` (j178/prek)</summary>
### v0.5.0
## Release Notes
Released on 2026-08-27.
### Highlights
#### Choose where hook toolchains come from
`language_version` now accepts a source `preference` alongside the version
`request`, letting you control where prek looks for a compatible toolchain when
it creates a hook environment. Use `managed` (the default) or `system` to choose
which source prek tries first while still allowing fallback and downloads. Use
`only-managed` or `only-system` to require one source.
For example, this local Ruff hook requires a Python 3.12 toolchain managed by
prek:
```yaml
repos:
- repo: local
hooks:
- id: ruff
name: ruff
language: python
entry: ruff check
additional_dependencies: [ruff]
language_version:
request: "3.12"
preference: only-managed
```
With `only-managed`, prek reuses a compatible toolchain from its managed store
or downloads one when needed. It never falls back to Python from `PATH`, an OS
package manager, or a version manager, so toolchain selection does not depend on
the developer or CI machine's external environment.
Existing scalar values such as `language_version: "3.12"` continue to work. See
[toolchain management and `language_version`](https://prek.j178.dev/0.5.0/languages/#toolchain-management-and-language_version)
for the full source-selection behavior. ([#2613](j178/prek#2613))
### Breaking changes
The breaking changes in this release are mostly small cleanups, and most users should not be affected.
- Group names can no longer start with `@`. This prefix is now reserved for special group selectors such as the new `@ungrouped` selector. ([#2617](j178/prek#2617))
- `PREK_MAX_CONCURRENCY` has been removed. Use `PREK_CONCURRENT_HOOKS` and `PREK_CONCURRENT_BATCHES` to control hook and per-hook batch concurrency separately. ([#2620](j178/prek#2620))
- The top-level `prek init-template-dir` command… (truncated)
### v0.5.1
## Release Notes
Released on 2026-09-01.
### Enhancements
- Add `--hide-status <passed|failed|skipped>` for hook reports ([#2644](j178/prek#2644))
- Add `prek init` for repository setup ([#2636](j178/prek#2636))
- Apply hook `env` during environment creation ([#2650](j178/prek#2650))
- Disable error snippets in `check-yaml` diagnostics ([#2664](j178/prek#2664))
- Show hooks excluded by skip selectors ([#2645](j178/prek#2645))
- Support Pixi for Conda environments ([#2667](j178/prek#2667))
- Support `cargo-binstall` for Rust CLI dependencies ([#2658](j178/prek#2658))
- Warn about unused keys in user settings ([#2665](j178/prek#2665))
### Bug fixes
- Reject unsupported YAML tags in check-yaml ([#2656](j178/prek#2656))
### Documentation
- Clarify local hook documentation ([#2640](j178/prek#2640))
- Clarify pre-commit command compatibility ([#2635](j178/prek#2635))
- Document automatic PR fixes with autofix.ci ([#2643](j178/prek#2643))
- Document check-yaml unsafe support ([#2632](j178/prek#2632))
- Improve setup and workflow documentation ([#2637](j178/prek#2637))
### Other changes
- Drop low-usage release targets ([#2651](j178/prek#2651))
- Generate a prek manifest JSON schema ([#2648](j178/prek#2648))
### Contributors
- @j178
## Install prek 0.5.1
### Install prebuilt binaries via shell script
```sh
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/j178/prek/releases/download/v0.5.1/prek-installer.sh | sh
```
### Install prebuilt binaries via powershell script
```sh
powershell -ExecutionPolicy Bypass -c "irm https://github.com/j178/prek/releases/download… (truncated)
### v0.5.2
## Release Notes
Released on 2026-09-03.
### Enhancements
- Allow unknown tags by default in `check-yaml` ([#2678](j178/prek#2678))
### Contributors
- @j178
## Install prek 0.5.2
### Install prebuilt binaries via shell script
```sh
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/j178/prek/releases/download/v0.5.2/prek-installer.sh | sh
```
### Install prebuilt binaries via powershell script
```sh
powershell -ExecutionPolicy Bypass -c "irm https://github.com/j178/prek/releases/download/v0.5.2/prek-installer.ps1 | iex"
```
### Install prebuilt binaries via Homebrew
```sh
brew install prek
```
## Download prek 0.5.2
| File | Platform | Checksum |
|--------|----------|----------|
| [prek-aarch64-apple-darwin.tar.gz](https://github.com/j178/prek/releases/download/v0.5.2/prek-aarch64-apple-darwin.tar.gz) | Apple Silicon macOS | [checksum](https://github.com/j178/prek/releases/download/v0.5.2/prek-aarch64-apple-darwin.tar.gz.sha256) |
| [prek-x86_64-apple-darwin.tar.gz](https://github.com/j178/prek/releases/download/v0.5.2/prek-x86_64-apple-darwin.tar.gz) | Intel macOS | [checksum](https://github.com/j178/prek/releases/download/v0.5.2/prek-x86_64-apple-darwin.tar.gz.sha256) |
| [prek-aarch64-pc-windows-msvc.zip](https://github.com/j178/prek/releases/download/v0.5.2/prek-aarch64-pc-windows-msvc.zip) | ARM64 Windows | [checksum](https://github.com/j178/prek/releases/download/v0.5.2/prek-aarch64-pc-windows-msvc.zip.sha256) |
| [prek-x86_64-pc-windows-msvc.zip](https://github.com/j178/prek/releases/download/v0.5.2/prek-x86_64-pc-windows-msvc.zip) | x64 Windows | [checksum](https://github.com/j178/prek/releases/download/v0.5.2/prek-x86_64-pc-windows-msvc.zip.sha256) |
| [prek-aarch64-unknown-linux-gnu.tar.gz](https://github.com/j178/prek/releases/download/v0.5.2/prek-aarch64-unknown-linux-gnu.tar.gz) | ARM64 Linux | [checksum](https://github.com/j178/prek/releases/download/v0.5.2/prek-aarch64-unknown-linux-gnu.tar.g… (truncated)
</details>
</details>
Modified files:
- `.mise.toml`
Automated mise tool upgrades from local config.
mise-managed tools:
- `prek`
Command: `mise upgrade --bump --local prek`
<details>
<summary>Version changelog (prek)</summary>
| Tool | Requested | Installed |
|------|-----------|-----------|
| `prek` | `0.4.14` → `0.5.2` | `0.4.14` → `0.5.2` |
</details>
<details>
<summary>Release notes (1 tools)</summary>
<details>
<summary>prek: `0.4.14` → `0.5.2` (j178/prek)</summary>
### v0.5.0
## Release Notes
Released on 2026-08-27.
### Highlights
#### Choose where hook toolchains come from
`language_version` now accepts a source `preference` alongside the version
`request`, letting you control where prek looks for a compatible toolchain when
it creates a hook environment. Use `managed` (the default) or `system` to choose
which source prek tries first while still allowing fallback and downloads. Use
`only-managed` or `only-system` to require one source.
For example, this local Ruff hook requires a Python 3.12 toolchain managed by
prek:
```yaml
repos:
- repo: local
hooks:
- id: ruff
name: ruff
language: python
entry: ruff check
additional_dependencies: [ruff]
language_version:
request: "3.12"
preference: only-managed
```
With `only-managed`, prek reuses a compatible toolchain from its managed store
or downloads one when needed. It never falls back to Python from `PATH`, an OS
package manager, or a version manager, so toolchain selection does not depend on
the developer or CI machine's external environment.
Existing scalar values such as `language_version: "3.12"` continue to work. See
[toolchain management and `language_version`](https://prek.j178.dev/0.5.0/languages/#toolchain-management-and-language_version)
for the full source-selection behavior. ([#2613](j178/prek#2613))
### Breaking changes
The breaking changes in this release are mostly small cleanups, and most users should not be affected.
- Group names can no longer start with `@`. This prefix is now reserved for special group selectors such as the new `@ungrouped` selector. ([#2617](j178/prek#2617))
- `PREK_MAX_CONCURRENCY` has been removed. Use `PREK_CONCURRENT_HOOKS` and `PREK_CONCURRENT_BATCHES` to control hook and per-hook batch concurrency separately. ([#2620](j178/prek#2620))
- The top-level `prek init-template-dir` command… (truncated)
### v0.5.1
## Release Notes
Released on 2026-09-01.
### Enhancements
- Add `--hide-status <passed|failed|skipped>` for hook reports ([#2644](j178/prek#2644))
- Add `prek init` for repository setup ([#2636](j178/prek#2636))
- Apply hook `env` during environment creation ([#2650](j178/prek#2650))
- Disable error snippets in `check-yaml` diagnostics ([#2664](j178/prek#2664))
- Show hooks excluded by skip selectors ([#2645](j178/prek#2645))
- Support Pixi for Conda environments ([#2667](j178/prek#2667))
- Support `cargo-binstall` for Rust CLI dependencies ([#2658](j178/prek#2658))
- Warn about unused keys in user settings ([#2665](j178/prek#2665))
### Bug fixes
- Reject unsupported YAML tags in check-yaml ([#2656](j178/prek#2656))
### Documentation
- Clarify local hook documentation ([#2640](j178/prek#2640))
- Clarify pre-commit command compatibility ([#2635](j178/prek#2635))
- Document automatic PR fixes with autofix.ci ([#2643](j178/prek#2643))
- Document check-yaml unsafe support ([#2632](j178/prek#2632))
- Improve setup and workflow documentation ([#2637](j178/prek#2637))
### Other changes
- Drop low-usage release targets ([#2651](j178/prek#2651))
- Generate a prek manifest JSON schema ([#2648](j178/prek#2648))
### Contributors
- @j178
## Install prek 0.5.1
### Install prebuilt binaries via shell script
```sh
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/j178/prek/releases/download/v0.5.1/prek-installer.sh | sh
```
### Install prebuilt binaries via powershell script
```sh
powershell -ExecutionPolicy Bypass -c "irm https://github.com/j178/prek/releases/download… (truncated)
### v0.5.2
## Release Notes
Released on 2026-09-03.
### Enhancements
- Allow unknown tags by default in `check-yaml` ([#2678](j178/prek#2678))
### Contributors
- @j178
## Install prek 0.5.2
### Install prebuilt binaries via shell script
```sh
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/j178/prek/releases/download/v0.5.2/prek-installer.sh | sh
```
### Install prebuilt binaries via powershell script
```sh
powershell -ExecutionPolicy Bypass -c "irm https://github.com/j178/prek/releases/download/v0.5.2/prek-installer.ps1 | iex"
```
### Install prebuilt binaries via Homebrew
```sh
brew install prek
```
## Download prek 0.5.2
| File | Platform | Checksum |
|--------|----------|----------|
| [prek-aarch64-apple-darwin.tar.gz](https://github.com/j178/prek/releases/download/v0.5.2/prek-aarch64-apple-darwin.tar.gz) | Apple Silicon macOS | [checksum](https://github.com/j178/prek/releases/download/v0.5.2/prek-aarch64-apple-darwin.tar.gz.sha256) |
| [prek-x86_64-apple-darwin.tar.gz](https://github.com/j178/prek/releases/download/v0.5.2/prek-x86_64-apple-darwin.tar.gz) | Intel macOS | [checksum](https://github.com/j178/prek/releases/download/v0.5.2/prek-x86_64-apple-darwin.tar.gz.sha256) |
| [prek-aarch64-pc-windows-msvc.zip](https://github.com/j178/prek/releases/download/v0.5.2/prek-aarch64-pc-windows-msvc.zip) | ARM64 Windows | [checksum](https://github.com/j178/prek/releases/download/v0.5.2/prek-aarch64-pc-windows-msvc.zip.sha256) |
| [prek-x86_64-pc-windows-msvc.zip](https://github.com/j178/prek/releases/download/v0.5.2/prek-x86_64-pc-windows-msvc.zip) | x64 Windows | [checksum](https://github.com/j178/prek/releases/download/v0.5.2/prek-x86_64-pc-windows-msvc.zip.sha256) |
| [prek-aarch64-unknown-linux-gnu.tar.gz](https://github.com/j178/prek/releases/download/v0.5.2/prek-aarch64-unknown-linux-gnu.tar.gz) | ARM64 Linux | [checksum](https://github.com/j178/prek/releases/download/v0.5.2/prek-aarch64-unknown-linux-gnu.tar.g… (truncated)
</details>
</details>
Modified files:
- `.mise.toml`
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Adds
@ungroupedand@builtinspecial selectors to--group,--require-group, and--no-group.Addresses #2616
Closes #2618