41 KiB
Changelog
0.2.12
Released on 2025-10-27.
Enhancements
- Add a warning for unimplemented hooks (#976)
- Allow using system trusted store by
PREK_NATIVE_TLS(#959)
Bug fixes
- Do not check for
scriptsubprocess status (#964) - Fix compatibility with older luarocks (#967)
- Fix local relative path in
try-repo(#975)
Documentation
- Update language support status (#970)
Contributors
- @yihong0618
- @st1971
- @j178
0.2.11
Released on 2025-10-24.
Enhancements
- Support
language: luahooks (#954) - Support
language_version: system(#949) - Implement
no-commit-to-branchas builtin hook (#930) - Improve styling for stashing error message (#953)
- Support nix-shell style shebang (#929)
Documentation
- Add a page about "Quick start" (#934)
- Add kreuzberg to "who is using prek" (#936)
- Clarify minimum mise version required to use
mise use prek(#931)
Contributors
- @fllesser
- @j178
0.2.10
Released on 2025-10-18.
Enhancements
- Add
--fail-fastCLI flag to stop after first hook failure (#908) - Add collision detection for hook env directories (#914)
- Error out if not projects found (#913)
- Implement
check-xmlas builtin hook (#894) - Implement
check-merge-conflictas builtin hook (#885) - Use line-by-line reading in
check-merge-conflict(#910)
Bug fixes
- Fix pygrep hook env health check (#921)
- Group
pygrepwithpythonwhen installing pygrep hooks (#920) - Ignore
.prefixed directory when searching managed Python for pygrep (#919)
Documentation
- Add contribution guide (#912)
Other changes
Contributors
- @AdityasWorks
- @j178
- @kenwoodjw
- @lmmx
0.2.9
Released on 2025-10-16.
Enhancements
- Lazily check hook env health (#897)
- Implement
check-symlinksas builtin hook (#895) - Implement
detect-private-keyas builtin hook (#893)
Bug fixes
- Download files to scratch directory to avoid cross-filesystem rename (#889)
- Fix golang hook install local dependencies (#902)
- Ignore the user-set
UV_MANAGED_PYTHON(#900)
Other changes
- Add package metadata for cargo-binstall (#882)
Contributors
- @j178
- @lmmx
0.2.8
Released on 2025-10-14.
This is a re-release of 0.2.6 that fixes an issue where publishing to npmjs.com failed.
Enhancements
Bug fixes
- Use relative path with
--cdin the generated hook script (#868) - Fix autoupdate
revrendering for "float-like" version numbers (#867)
Documentation
- Add Nix and Conda installation details (#874)
Contributors
- @mondeja
- @j178
- @bbannier
- @yihong0618
- @colindean
0.2.5
Released on 2025-10-10.
Enhancements
- Implement
prek try-repo(#797) - Add fallback mechanism for prek executable in git hooks (#850)
- Ignore config error if the directory is skipped (#860)
Bug fixes
- Fix panic when parse config failed (#859)
Other changes
- Add a Dockerfile (#852)
Contributors
- @j178
- @luizvbo
0.2.4
Released on 2025-10-07.
Enhancements
- Add support for
.prekignoreto ignore directories from project discovery (#826) - Make
prek auto-update --jobsdefault to 0 (which uses max available parallelism) (#833) - Improve install message when installing for a subproject (#847)
Bug fixes
- Convert extension to lowercase before checking file tags (#839)
- Support pass multiple files like
prek run --files a b c d(#828)
Documentation
- Add requests-cache to "Who is using prek" (#824)
Contributors
- @SigureMo
- @j178
0.2.3
Released on 2025-09-29.
Enhancements
- Add
--dry-runtoprek auto-update(#806) - Add a global
--log-fileflag to specify the log file path (#817) - Implement hook health check (#798)
- Show error message in quiet mode (#807)
Bug fixes
- Write
failentry into output directly (#811)
Documentation
- Update docs about uv in prek (#810)
Other changes
- Add a security policy for reporting vulnerabilities (#804)
Contributors
- @mondeja
- @j178
0.2.2
Released on 2025-09-26.
Enhancements
- Add
prek cache dir, moveprek gcandprek cleanunderprek cache(#795) - Add a hint when hooks failed in CI (#800)
- Add support for specifying
PREK_UV_SOURCE(#766) - Run docker container with
--init(#791) - Support
--allow-multiple-documentsforcheck-yaml(#790)
Bug fixes
- Fix interpreter identification (#801)
Documentation
- Add PaperQA2 to "Who is using prek" (#793)
- Clarify built-in hooks activation conditions and behavior (#781)
- Deduplicate docs between README and MkDocs site (#792)
- Mention
j178/prek-actionin docs (#753)
Other Changes
- Bump
pre-commit-hooksin sample-config to v6.0.0 (#761) - Improve arg parsing for builtin hooks (#789)
Contributors
- @mondeja
- @akx
- @bxb100
- @j178
- @onerandomusername
0.2.1
Enhancements
- auto-update: prefer tags that are most similar to the current version (#719)
Bug fixes
- Fix
git --no-pager diffcommand syntax upon failures (#746) - Clean working tree of current workspace only (#747)
- Use concurrent read and write in
git check-attr(#731)
Documentation
Contributors
- @j178
- @matthiask
- @AdrianDC
- @onerandomusername
0.2.0
This is a huge milestone release that introduces Workspace Mode — first‑class monorepo support.
prek now allows you to manage multiple projects with their own .pre-commit-config.yaml within a single repository.
It auto‑discovers nested projects, runs hooks in project scope, and provides flexible selectors to target specific projects and hooks.
This makes prek a powerful tool for managing pre-commit hooks in complex repository structures.
For more details, see Workspace Mode. If you encounter any issues, please report them at Issues.
Note: If you ran prek install in a repo before, you gonna need to run prek install again to replace the old git hook scripts for the workspace mode to work.
Special thanks to @potiuk for all the help and feedback in designing and testing this feature!
For detailed changes between 0.1.6 and 0.2.0, see 0.2.0-alpha.2, 0.2.0-alpha.3, 0.2.0-alpha.4, and 0.2.0-alpha.5.
Enhancements
Performance
Bug fixes
- Fix hook-impl don't run hooks when specified allow missing config (#716)
- fix: support py38 for pygrep (#723)
Other changes
- Fix installation on fish and with missing tags (#721)
Contributors
- @onerandomusername
- @kushudai
- @j178
0.2.0a5
Enhancements
Bug fixes
- Fix
trailing-whitespace&mixed-line-endingwrite file path (#708) - Fix file path handling for meta hooks in workspace mode (#699)
Documentation
Contributors
- @kushudai
- @j178
0.2.0a4
Enhancements
- Bring back
.pre-commit-config.ymlsupport (#676) - Ignore config file from hidden directory (#677)
- Support selectors in
prek install/install-hooks/hook-impl(#683)
Bug fixes
- Do not set GOROOT for system install Go when running go hooks (#694)
- Fix
check_tomlandcheck_yamlin workspace mode (#688)
Documentation
Other changes
- docs(manifest): Correctly specify metadata for all packages (#687)
- refactor(cli): Clean up usage of clap (#689)
Contributors
- @j178
- @epage
- @aravindan888
0.2.0a3
Enhancements
- Add a warning to
hook-implwhen the script needs reinstall (#647)
Documentation
- Add a notice to rerun
prek installwhen upgrading to 0.2.0 (#646)
Contributors
- @j178
0.2.0-alpha.2
This is a re-release of 0.2.0-alpha.1, fixed an issue that prereleases are not published to PyPI.
This is a huge milestone release that introduces Workspace Mode — first‑class monorepo support.
prek now allows you to manage multiple projects with their own .pre-commit-config.yaml within a single repository. It auto‑discovers nested projects, runs hooks in project scope, and provides flexible selectors to target specific projects and hooks. This makes prek a powerful tool for managing pre-commit hooks in complex repository structures.
Note: If you ran prek install in a repo before, you gonna need to run prek install again to replace the old git hook scripts for the workspace mode to work.
For more details, see Workspace Mode. If you encounter any issues, please report them at Issues.
Special thanks to @potiuk for all the help and feedback in designing and testing this feature!
Enhancements
- Support multiple
.pre-commit-config.yamlin a workspace (monorepo mode) (#583) - Implement project and hook selector (#623)
- Add
prek run --cd <dir>to change directory before running (#581) - Support
prek listin workspace mode (#586) - Support
prek install|install-hooks|hook-impl|init-template-dirin workspace mode (#595) - Implement
auto-updatein workspace mode (#605) - Implement selector completion in workspace mode (#639)
- Simplify
auto-updateimplementation (#608) - Add a
--dry-runflag toprek run(#622) - Cache workspace discovery result (#636)
- Fix local script hook entry path in workspace mode (#603)
- Fix
hook-implallow missing config (#600) - Fix docker mount in workspace mode (#638)
- Show project line when project is not root (#637)
Documentation
- Publish docs to
https://prek.j178.dev(#627) - Improve workspace docs about skips rule (#615)
- Add an full example and update docs (#582)
Other changes
Contributors
0.1.6
Enhancements
Bug fixes
- Reuse hook env only for exactly same dependencies (#609)
- Workaround checkout file failure on Windows (#616)
0.1.5
Enhancements
- Implement
pre-pushhook type (#598) - Implement
pre-commit-hooks:check_yamlas builtin hook (#557) - Implement
pre-commit-hooks:check-tomlas builtin hook (#564) - Add validation for file type tags (#565)
- Ignore NotFound error in extracting metadata log (#597)
Documentation
- Update project status (#578)
Other changes
0.1.4
Enhancements
- Improve docker image labels (#551)
Performance
Bug fixes
- Fix
trailing-whitespacecannot handle file contains invalid utf-8 data (#544) - Fix trailing-whitespace eol trimming (#546)
- Fix trailing-whitespace markdown eol trimming (#547)
Documentation
- Add authlib to
Who are using prek(#550)
0.1.3
Enhancements
- Support PEP 723 scripts for Python hooks (#529)
Bug fixes
- Fix Python hook stderr are not captured (#530)
Other changes
- Add an error context when reading manifest failed (#527)
- Add a renovate rule to bump bundled uv version (#528)
- Disable semantic commits for renovate PRs (#538)
0.1.2
Enhancements
- Add check for missing hooks in new revision (#521)
Bug fixes
- Fix
language: scriptentry join issue (#525)
Other changes
- Add OpenLineage to prek users (#523)
0.1.1
Breaking changes
- Drop support
.ymlconfig file (#493)
Enhancements
- Add moving rev warning (#488)
- Implement
prek auto-update(#511) - Support local path as a
repourl (#513)
Bug fixes
- Fix recursion limit when checking deeply nested json (#507)
- Fix rename tempfile across device (#508)
- Fix build on s390x (#518)
Other changes
- docs: install prek with mise (#510)
0.0.29
Enhancements
- Build wheels for more platforms (#489)
Bug fixes
- Fix
git commit -adoes not pick up staged files correctly (#487)
0.0.28
Bug fixes
- Fix
inde.lock file existserror when runninggit commit -porgit commit -a(#482) - Various fixes to
init-templdate-dirand directory related bug (#484)
0.0.27
Enhancements
- Clone repo temporarily into scratch directory (#478)
- Don’t show the progress bar if there’s no need for cloning or installing hooks (#477)
- Support
language_version: ltsfor node (#473)
Bug fixes
0.0.26
Enhancements
- Disable
prek self updatefor package managers (#468) - Download uv from github releases directly (#464)
- Find
uvalongside theprekbinary (#466) - Run hooks with pty if color enabled (#471)
- Warn unexpected keys in config (#463)
Bug fixes
- Canonicalize prek executable path (#467)
Documentation
- Add "Who are using prek" to README (#458)
0.0.25
Enhancements
- Add check for
minimum_prek_version(#437) - Make
--to-refdefault to HEAD if--from-refis specified (#426) - Support downloading uv from pypi and mirrors (#449)
- Write trace log to
$PREK_HOME/prek.log(#447) - Implement
mixed_line_endingas builtin hook (#444) - Support
--output-format=jsoninprek list(#446) - Add context message to install error (#455)
- Add warning for non-existent hook id (#450)
Performance
- Refactor
fix_trailing_whitespace(#411)
Bug fixes
- Calculate more accurate max cli length (#442)
- Fix uv install on Windows (#453)
- Static link
liblzma(#445)
0.0.24
Enhancements
- Add dynamic completion of hook ids (#380)
- Implement
prek listto list available hooks (#424) - Implement
pygreplanguage support (#383) - Support
prek runmultiple hooks (#423) - Implement
check_jsonas builtin hook (#416)
Performance
- Avoid reading whole file into memory in
fix_end_of_fileand make it consistent withpre-commit-hooks(#399)
Bug fixes
- Do not set
GOROOTandGOPATHfor system found go (#415)
Documentation
0.0.23
Breaking changes
In this release, we've renamed the project to prek from prefligit. It's shorter so easier to type, and it avoids typosquatting with preflight.
This means that the command-line name is now prek, and the PyPI package is now listed as prek.
And the Homebrew will be updated to prek as well.
And previously, the cache directory was ~/.cache/prefligit, now it is ~/.cache/prek.
You'd have to delete the old cache directory manually, or run prefligit clean to clean it up.
Then uninstall the old prefligit and install the new prek from scratch.
Enhancements
- Relax uv version check range (#396)
Bug fixes
Other changes
- Rename to
prekfromprefligit(#402)
0.0.22
Enhancements
- Add value hint to
prefligit runflags (#373) - Check minimum supported version for uv found from system (#352)
Bug fixes
- Fix
check_added_large_filesparameter name (#389) - Fix
npm installon Windows (#374) - Fix docker mount options (#377)
- Fix identify tags for
Pipfile.lock(#391) - Fix identifying symlinks (#378)
- Set
GOROOTwhen installing golang hook (#381)
Other changes
0.0.21
Enhancements
- Add
--directorytoprefligit run(#358) - Implement
tags_from_interpreter(#362) - Set GOBIN to
<hook-env>/bin, set GOPATH to$PREGLIGIT_HOME/cache/go(#369)
Performance
Bug fixes
- Add
nodeto PATH when runningnpm(#371) - Fix bug that default hook stage should be pre-commit (#367)
- Fix cache dir permission before clean (#368)
Other changes
- Move
Projectintoworkspacemodule (#364)
0.0.20
Enhancements
- Support golang hooks and golang toolchain management (#355)
- Add
--last-commitflag toprefligit run(#351)
Bug fixes
Documentation
- Add migration section to README (#354)
0.0.19
Enhancements
Bug fixes
- Add
--install-linkstonpm install(#347) - Fix large file check to use staged_get instead of intent_add (#332)
0.0.18
Enhancements
- Impl
FromStrfor language request (#338)
Performance
Bug fixes
- Fix node path match, add tests (#339)
- Skipped hook name should be taken into account for columns (#335)
Documentation
0.0.17
Enhancements
- Add
sample-config --fileto write sample config to file (#313) - Cache computed
dependencieson hook (#319) - Cache the found path to uv (#323)
- Improve
sample-configwriting file (#314) - Reimplement find matching env logic (#327)
Bug fixes
- Fix issue that
entryofpygrepis not shell commands (#316) - Support
python311as a valid language version (#321)
Other changes
0.0.16
Enhancements
- Improve error message for hook (#308)
- Improve error message for hook installation and run (#310)
- Improve hook invalid error message (#307)
- Parse
entrywhen constructing hook (#306) - Rename
autoupdatetoauto-update,init-templatedirtoinit-template-dir(#302)
Bug fixes
- Fix
end-of-file-fixerreplaces\r\nwith\n(#311)
0.0.15
In this release, language: node hooks are fully supported now (finally)!.
Give it a try and let us know if you run into any issues!
Enhancements
- Support
nodejslanguage hook (#298) - Show unimplemented message earlier (#296)
- Simplify npm installing dependencies (#299)
Documentation
- Update readme (#300)
0.0.14
Enhancements
- Show unimplemented status instead of panic (#290)
- Try default uv managed python first, fallback to download (#291)
Other changes
- Update Rust crate fancy-regex to 0.16.0 (#286)
- Update Rust crate indicatif to 0.18.0 (#287)
- Update Rust crate pprof to 0.15.0 (#288)
- Update Rust crate serde_json to v1.0.142 (#285)
- Update astral-sh/setup-uv action to v6 (#289)
0.0.13
Enhancements
- Add
PREFLIGIT_NO_FAST_PATHto disable Rust fast path (#272) - Improve subprocess error message (#276)
- Remove
LanguagePreferenceand improve language check (#277) - Support downloading requested Python version automatically (#281)
- Implement language specific version parsing (#273)
Bug fixes
0.0.12
Bug fixes
- Ignore
config not stagederror for config outside the repo (#270)
Other changes
0.0.11
Enhancements
- Support reading
.pre-commit-config.ymlas well (#213) - Refactor language version resolution and hook install dir (#221)
- Implement
prefligit install-hookscommand (#258) - Implement
pre-commit-hooks:end-of-file-fixerhook (#255) - Implement
pre-commit-hooks:check_added_large_fileshook (#219) - Implement
scriptlanguage hooks (#252) - Implement node.js installer (#152)
- Use
-vto show only verbose message,-vvshow debug log,-vvvshow trace log (#211) - Write
.prefligit-repo.jsoninside cloned repo (#225) - Add language name to 'not yet implemented' messages (#251)
Bug fixes
- Do not install if no additional dependencies for local python hook (#195)
- Ensure flushing log file (#261)
- Fix zip deflate (#194)
Other changes
- Bump to Rust 1.88 and
cargo update(#254) - Upgrade to Rust 2024 edition (#196)
- Bump uv version (#260)
- Simplify archive extraction implementation (#193)
- Use
astral-sh/rs-async-zip(#259) - Use
ubuntu-latestfor release action (#216) - Use async closure (#200)
0.0.10
Breaking changes
Warning: This release changed the store layout, it's recommended to delete the old store and install from scratch.
To delete the old store, run:
rm -rf ~/.cache/prefligit
Enhancements
- Restructure store folders layout (#181)
- Fallback some env vars to to pre-commit (#175)
- Save patches to
$PREFLIGIT_HOME/patches(#182)
Bug fixes
Other changes
- Do not publish to crates.io (#191)
- Bump cargo-dist to v0.28.0 (#170)
- Bump uv version to 0.6.0 (#184)
- Configure Renovate (#168)
- Format sample config output (#172)
- Make env vars a shareable crate (#171)
- Reduce String alloc (#166)
- Skip common git flags in command trace log (#162)
- Update Rust crate clap to v4.5.29 (#173)
- Update Rust crate which to v7.0.2 (#163)
- Update astral-sh/setup-uv action to v5 (#164)
- Upgrade Rust to 1.84 and upgrade dependencies (#161)
0.0.9
Due to a mistake in the release process, this release is skipped.
0.0.8
Enhancements
- Move home dir to
~/.cache/prefligit(#154) - Implement trailing-whitespace in Rust (#137)
- Limit hook install concurrency (#145)
- Simplify language default version implementation (#150)
- Support install uv from pypi (#149)
- Add executing command to error message (#141)
Bug fixes
- Use hook
argsin fast path (#139)
Other changes
- Remove hook install_key (#153)
- Remove pyvenv.cfg patch (#156)
- Try to use D drive on Windows CI (#157)
- Tweak trailing-whitespace-fixer (#140)
- Upgrade dist to v0.27.0 (#158)
- Uv install python into tools path (#151)
0.0.7
Enhancements
- Add progress bar for hook init and install (#122)
- Add color to command help (#131)
- Add commit info to version display (#130)
- Support meta hooks reading (#134)
- Implement meta hooks (#135)
Bug fixes
- Fix same repo clone multiple times (#125)
- Fix logging level after renaming (#119)
- Fix version tag distance (#132)
Other changes
- Disable uv cache on Windows (#127)
- Impl Eq and Hash for ConfigRemoteRepo (#126)
- Make
pass_env_varsruns on Windows (#133) - Run cargo update (#129)
- Update Readme (#128)
0.0.6
Breaking changes
In this release, we’ve renamed the project to prefligit (a deliberate misspelling of preflight) to prevent confusion with the existing pre-commit tool. For further information, refer to issue #73.
- The command-line name is now
prefligit. We suggest uninstalling any previous version ofpre-commit-rsand installingprefligitfrom scratch. - The PyPI package is now listed as
prefligit. - The Cargo package is also now
prefligit. - The Homebrew formula has been updated to
prefligit.
Enhancements
- Support
docker_imagelanguage (#113) - Support
init-templatedirsubcommand (#101) - Implement get filenames from merge conflicts (#103)
Bug fixes
- Fix
prefligit install --hook-typename (#102)
Other changes
- Apply color option to log (#100)
- Improve tests (#106)
- Remove intermedia Language enum (#107)
- Run
cargo clippyin the dev drive workspace (#115)
0.0.5
Enhancements
v0.0.4 release process was broken, so this release is a actually a re-release of v0.0.4.
- Improve subprocess trace and error output (#92)
- Stash working tree before running hooks (#96)
- Add color to command trace (#94)
- Improve hook output display (#79)
- Improve uv installation (#78)
- Support docker language (#67)
0.0.4
Enhancements
- Improve subprocess trace and error output (#92)
- Stash working tree before running hooks (#96)
- Add color to command trace (#94)
- Improve hook output display (#79)
- Improve uv installation (#78)
- Support docker language (#67)
0.0.3
Bug fixes
- Check uv installed after acquired lock (#72)
Other changes
- Add copyright of the original pre-commit to LICENSE (#74)
- Add profiler (#71)
- Publish to PyPI (#70)
- Publish to crates.io (#75)
- Rename pypi package to
pre-commit-rusty(#76)
0.0.2
Enhancements
- Add
pre-commit self update(#68) - Auto install uv (#66)
- Generate shell completion (#20)
- Implement
pre-commit clean(#24) - Implement
pre-commit install(#28) - Implement
pre-commit sample-config(#37) - Implement
pre-commit uninstall(#36) - Implement
pre-commit validate-config(#25) - Implement
pre-commit validate-manifest(#26) - Implement basic
pre-commit hook-impl(#63) - Partition filenames and delegate to multiple subprocesses (#7)
- Refactor xargs (#8)
- Skip empty config argument (#64)
- Use
fancy-regex(#62) - feat: add fail language support (#60)
Bug Fixes
- Fix stage operate_on_files (#65)