diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..fd5a2e2
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,212 @@
+# Changelog
+
+All notable, and not so notable, changes to this project will be documented in this file.
+
+## [0.9.0] - 2024-04-19
+
+### Features
+
+- [`7c1576e`](https://github.com/ryanccn/nrr/commit/7c1576e939bb07704d4e654f424a8b498ec4b418) [**breaking**] Arbitrary command execution (#27) - Ryan Cao
+- [`b6d0d14`](https://github.com/ryanccn/nrr/commit/b6d0d14fc49de19db6a109a6e651e6e93bdd18f2) Add `silent` flag - Ryan Cao
+- [`e3ebf16`](https://github.com/ryanccn/nrr/commit/e3ebf165a08571d341ce3b717a0cea49050046bd) Adopt `simd_json`, drop zero-copy - Ryan Cao
+- [`0adae88`](https://github.com/ryanccn/nrr/commit/0adae88811096ded12a6e028c5c8ee829579d21e) Add binary artifacts and static builds (#31) - seth
+- [`fd8e1de`](https://github.com/ryanccn/nrr/commit/fd8e1dee6658473de4d1c4ce1a25355945e122ea) Load environment files with `-e/--env-file` - Ryan Cao
+- [`6aa164f`](https://github.com/ryanccn/nrr/commit/6aa164fc4f9bd1c3fedfcbf3b270af4e1496a0e9) (_exec_) Allow non-npm installed commands, adopt `execvp` on unix - Ryan Cao
+
+### Bug Fixes
+
+- [`ff7320e`](https://github.com/ryanccn/nrr/commit/ff7320ec7b7876514891f193cc95857efee37133) (_exec_) Never print information - Ryan Cao
+
+### Refactor
+
+- [`ed04295`](https://github.com/ryanccn/nrr/commit/ed04295ff662f1e2fc497e6e73c5d6650b1d2a32) Reduce duplication and improve organization - Ryan Cao
+
+### Performance
+
+- [`6d187e6`](https://github.com/ryanccn/nrr/commit/6d187e6c6bfeecea6239b07c0ba23004d87dd9e9) Use `itoa` for integer formatting - Ryan Cao
+
+### Testing
+
+- [`a8a4859`](https://github.com/ryanccn/nrr/commit/a8a485922abd742bd6f4acd9c50e11d1a72ca7ab) Add integration tests - Ryan Cao
+
+### Documentation
+
+- [`7eba97b`](https://github.com/ryanccn/nrr/commit/7eba97bc83cfaca9e2ecaaa1e874b4d7d4e897f4) Fix admonition syntax - Ryan Cao
+
+### Miscellaneous
+
+- [`06ec194`](https://github.com/ryanccn/nrr/commit/06ec194a0447f449c3457234d0cd7c0423c7f9d2) Adopt `cargo-auditable` - Ryan Cao
+- [`d622834`](https://github.com/ryanccn/nrr/commit/d622834916e5a9e7973bfcd577697675879f929e) Remove unused fns - Ryan Cao
+
+### Revert
+
+- [`10aaa49`](https://github.com/ryanccn/nrr/commit/10aaa49a33f4daa223a46da1c03df1396e18019c) Don't use `exec` on unix - Ryan Cao
+
+## [0.8.1] - 2024-02-24
+
+### Bug Fixes
+
+- [`f0ed577`](https://github.com/ryanccn/nrr/commit/f0ed577b5df48b81eb3331ca8389fc2339c36442) Inverted suggestions sorting - Ryan Cao
+
+### Documentation
+
+- [`5c09207`](https://github.com/ryanccn/nrr/commit/5c09207426ab432cb48703a6d63d97ac128cfb4b) Explain features - Ryan Cao
+
+## [0.8.0] - 2024-02-24
+
+### Features
+
+- [`79aefab`](https://github.com/ryanccn/nrr/commit/79aefabb74e6f5cd459fdab853fb73c785e046b2) Add spelling suggestions - Ryan Cao
+
+### Bug Fixes
+
+- [`a38d15d`](https://github.com/ryanccn/nrr/commit/a38d15da479c63910235e611de5ce2866b4de128) Remove extra newline when listing - Ryan Cao
+- [`e52fded`](https://github.com/ryanccn/nrr/commit/e52fded8d970f344311f9c66fb0d7277fba7185a) Adopt `serde_with` - Ryan Cao
+
+### Performance
+
+- [`2876e81`](https://github.com/ryanccn/nrr/commit/2876e81ef4903bb49e0de24e96fb928f25624ea4) Remove async runtime (Tokio) - Ryan Cao
+
+### Miscellaneous
+
+- [`123e864`](https://github.com/ryanccn/nrr/commit/123e864ca95b876ed8195d1c38c3d50b21efe3f8) Update benchmarks - Ryan Cao
+
+## [0.7.0] - 2024-02-21
+
+### Features
+
+- [`922dbb1`](https://github.com/ryanccn/nrr/commit/922dbb10a1f21c405901138d5eb9cdf9980b2ed3) [**breaking**] Allow hyphen values for extra arguments - Ryan Cao
+
+### Performance
+
+- [`2cea6d5`](https://github.com/ryanccn/nrr/commit/2cea6d5206f24ac931270c102bece1e79ad6d8a7) Use AES-backed hashing - Ryan Cao
+- [`d6ba0c1`](https://github.com/ryanccn/nrr/commit/d6ba0c11b8b1f6914e45a8866cdbbdfc26dae473) Reduce unnecessary allocs when constructing arguments - Ryan Cao
+- [`5322336`](https://github.com/ryanccn/nrr/commit/5322336981e803b9805d776f6509faaa522ca7cf) Adopt `smartstring` to automatically inline small strings - Ryan Cao
+
+## [0.6.0] - 2024-02-20
+
+### Performance
+
+- [`abad8b7`](https://github.com/ryanccn/nrr/commit/abad8b7b6a6e031f9d69b5d278e13772d14a8c47) Use `OnceLock` to cache script level - Ryan Cao
+- [`f5b9727`](https://github.com/ryanccn/nrr/commit/f5b97273ed931e9a687ccfac11c776fbcdbdfc25) Implement zero-copy correctly - Ryan Cao
+
+## [0.5.2] - 2024-02-04
+
+### Bug Fixes
+
+- [`065f285`](https://github.com/ryanccn/nrr/commit/065f2854b76ef3799d29cec83f5e2c042243d681) Use `Cow` in `PackageJson` struct - Ryan Cao
+
+## [0.5.1] - 2024-01-28
+
+### Refactor
+
+- [`e9293dd`](https://github.com/ryanccn/nrr/commit/e9293dd78a69e02821aea9ae388a3a3d571f835a) Improve logic, cleanup - Ryan Cao
+
+### Documentation
+
+- [`db71ba5`](https://github.com/ryanccn/nrr/commit/db71ba5c58a81bf6211c4e97c1a9b1f2eb8556f9) Remove code block languages in usage [skip ci] - Ryan Cao
+
+## [0.5.0] - 2024-01-26
+
+### Removed
+
+- [`2a64c47`](https://github.com/ryanccn/nrr/commit/2a64c472602ef0634000a361ebe4f0cf7595d752) [**breaking**] Compatibility modes - Ryan Cao
+
+### Documentation
+
+- [`79133da`](https://github.com/ryanccn/nrr/commit/79133da713313d98bcdcc061ff49619350dc66a5) Update README - Ryan Cao
+
+### Miscellaneous
+
+- [`be8c177`](https://github.com/ryanccn/nrr/commit/be8c177639b0ca15ac4e4fd91554e392651eb441) Update flake inputs - Ryan Cao
+
+## [0.4.1] - 2024-01-24
+
+### Features
+
+- [`0713169`](https://github.com/ryanccn/nrr/commit/07131690cf3ee1e780077392e422aaaea5c29a5e) Add exit status logging - Ryan Cao
+
+### Refactor
+
+- [`97b61c3`](https://github.com/ryanccn/nrr/commit/97b61c3726dbaed7c241b85a4a90f86c268f2e31) Don't read package again when serializing to environment - Ryan Cao
+
+### Miscellaneous
+
+- [`74f1061`](https://github.com/ryanccn/nrr/commit/74f1061478941c604a385fc3e3032042826e4704) Add garnix config - Ryan Cao
+- [`59fac25`](https://github.com/ryanccn/nrr/commit/59fac25986cc9bc7108954a81a84a42ed2cc7378) Remove Nix workflow in favor of garnix - Ryan Cao
+
+## [0.4.0] - 2024-01-23
+
+### Features
+
+- [`b8d8c4a`](https://github.com/ryanccn/nrr/commit/b8d8c4a8837a7ad43200b28b56525c9c0c6667f2) Track script level and log script name in nested scripts - Ryan Cao
+
+## [0.3.1] - 2023-12-25
+
+### Features
+
+- [`73924d9`](https://github.com/ryanccn/nrr/commit/73924d90dff5373c0f47904c1568492d6b7a78a3) Print help if no scripts are found - Ryan Cao
+
+### Refactor
+
+- [`318d5b1`](https://github.com/ryanccn/nrr/commit/318d5b1ca674f2fa3f2df9a8299fbc55ea559ecc) Improve iterators - Ryan Cao
+
+## [0.3.0] - 2023-12-18
+
+### Bug Fixes
+
+- [`7a166f0`](https://github.com/ryanccn/nrr/commit/7a166f0c8dca85eaabe506fd93111666d809ee34) Handle pre/post script prefixes properly - Ryan Cao
+
+### Refactor
+
+- [`c4a32f5`](https://github.com/ryanccn/nrr/commit/c4a32f589b656f6cbf56bd9c4b3ee44cad33c5ed) Use `color_eyre` - Ryan Cao
+
+## [0.2.0] - 2023-11-25
+
+### Features
+
+- [`cd0aea7`](https://github.com/ryanccn/nrr/commit/cd0aea7f1577c05161295f90c202f6b65e5d7a49) Initial commit - Ryan Cao
+- [`819be15`](https://github.com/ryanccn/nrr/commit/819be15cebcc4f0caf39c7a7fc48d5292134e1dd) Add script listing - Ryan Cao
+
+### Bug Fixes
+
+- [`7483b4d`](https://github.com/ryanccn/nrr/commit/7483b4dacd537bd484377e9023179bc24179fc3b) Ensure that `NRR_COMPAT_MODE` is not empty - Ryan Cao
+- [`b70afec`](https://github.com/ryanccn/nrr/commit/b70afec1e5adb55454c42ae4993476ded0221850) Handle errors on `Child::wait` - Ryan Cao
+- [`ce8e4fb`](https://github.com/ryanccn/nrr/commit/ce8e4fb921b33283dcedb44e78a6aa312a3a0a49) Allow run-script in nested compat mode - Ryan Cao
+- [`efa2e97`](https://github.com/ryanccn/nrr/commit/efa2e97a9c7e4da3114c8f33cd0e5508fe4aac56) Only handle unix signals on unix - Ryan Cao
+- [`733288e`](https://github.com/ryanccn/nrr/commit/733288e58416a7b9337952bf41e0d4a0f8888877) Sort scripts and display in normal text - Ryan Cao
+
+### Refactor
+
+- [`d2d6afe`](https://github.com/ryanccn/nrr/commit/d2d6afec34a5c93b2f90d5c3e86ddec4ff3a4568) Search packages and resolve node modules incrementally - Ryan Cao
+- [`5f6ede8`](https://github.com/ryanccn/nrr/commit/5f6ede88e911868146acb35fb8af39543354ddf1) Optionally run pre and post scripts - Ryan Cao
+
+### Performance
+
+- [`58d45d0`](https://github.com/ryanccn/nrr/commit/58d45d08ddeab4cf09b53c7240b2a14f618399aa) Only include `ctrl_c` on unix - Ryan Cao
+
+### Documentation
+
+- [`2d6ec80`](https://github.com/ryanccn/nrr/commit/2d6ec80884f74d33c1296d57aa826887cba1a9f2) Add cargo git install [skip ci] - Ryan Cao
+- [`93bebed`](https://github.com/ryanccn/nrr/commit/93bebeda5422731dbda362a05e9fad25d1af1edf) Use published crate - Ryan Cao
+
+### Styling
+
+- [`d3db9c1`](https://github.com/ryanccn/nrr/commit/d3db9c1fc1d2e0ae5aaa9dca2dc780cadc476164) `searched_dirs` → `searched_pkgs` - Ryan Cao
+
+### Miscellaneous
+
+- [`1373b97`](https://github.com/ryanccn/nrr/commit/1373b972de7540e9496217b3121455b4eddb83dd) Add cargo release workflow - Ryan Cao
+
+[0.9.0]: https://github.com/ryanccn/nrr/compare/v0.8.1..v0.9.0
+[0.8.1]: https://github.com/ryanccn/nrr/compare/v0.8.0..v0.8.1
+[0.8.0]: https://github.com/ryanccn/nrr/compare/v0.7.0..v0.8.0
+[0.7.0]: https://github.com/ryanccn/nrr/compare/v0.6.0..v0.7.0
+[0.6.0]: https://github.com/ryanccn/nrr/compare/v0.5.2..v0.6.0
+[0.5.2]: https://github.com/ryanccn/nrr/compare/v0.5.1..v0.5.2
+[0.5.1]: https://github.com/ryanccn/nrr/compare/v0.5.0..v0.5.1
+[0.5.0]: https://github.com/ryanccn/nrr/compare/v0.4.1..v0.5.0
+[0.4.1]: https://github.com/ryanccn/nrr/compare/v0.4.0..v0.4.1
+[0.4.0]: https://github.com/ryanccn/nrr/compare/v0.3.1..v0.4.0
+[0.3.1]: https://github.com/ryanccn/nrr/compare/v0.3.0..v0.3.1
+[0.3.0]: https://github.com/ryanccn/nrr/compare/v0.2.0..v0.3.0
diff --git a/Cargo.lock b/Cargo.lock
index 0766344..327c376 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -554,7 +554,7 @@ checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be"
[[package]]
name = "nrr"
-version = "0.8.1"
+version = "0.9.0"
dependencies = [
"ahash",
"clap",
diff --git a/Cargo.toml b/Cargo.toml
index 8ce0307..a180471 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "nrr"
-version = "0.8.1"
+version = "0.9.0"
edition = "2021"
rust-version = "1.70"
diff --git a/README.md b/README.md
index 1f3623c..5df23e2 100644
--- a/README.md
+++ b/README.md
@@ -1,51 +1,63 @@
-# `nrr`
+# nrr
+
+[![Crates.io Version](https://img.shields.io/crates/v/nrr?style=flat-square&logo=rust)](https://crates.io/crates/nrr) [![Crates.io Total Downloads](https://img.shields.io/crates/d/nrr?style=flat-square&logo=rust)](https://crates.io/crates/nrr) [![GitHub Actions Build Workflow Status](https://img.shields.io/github/actions/workflow/status/ryanccn/nrr/build.yml?branch=main&event=push&style=flat-square&logo=github)](https://github.com/ryanccn/nrr/actions/workflows/build.yml) [![GitHub Actions Build Workflow Status](https://img.shields.io/github/actions/workflow/status/ryanccn/nrr/test.yml?branch=main&event=push&style=flat-square&logo=github&label=test)](https://github.com/ryanccn/nrr/actions/workflows/test.yml) [![GitHub License](https://img.shields.io/github/license/ryanccn/nrr?style=flat-square&color=blue)](https://github.com/ryanccn/nrr/blob/main/LICENSE)
+
+[![built with nix](https://builtwithnix.org/badge.svg)](https://builtwithnix.org)
Minimal, blazing fast npm scripts runner.
+[**Features**](#features) • [**Installation**](#installation) • [**Usage**](#usage)
+
## Features
### Performance
-`nrr` initializes and resolves scripts way faster than package managers. It achieves this by providing the largest feature coverage possible while keeping it simple and performant.
+nrr initializes and resolves scripts way faster than other package managers and script runners. It achieves this by providing the largest feature coverage possible while keeping it simple and performant.
-Benchmark of nrr
, npm
, yarn
, pnpm
, bun
, and dum
running a simple echo
script
+Benchmark of nrr
, npm
, yarn
, pnpm
, bun
, and dum
running a simple true
script
-| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
-| :-------- | ----------: | -------: | -------: | -----------: |
-| **`nrr`** | 6.1 ± 0.3 | 5.6 | 8.2 | 1.17 ± 0.09 |
-| `dum` | 5.2 ± 0.3 | 4.9 | 6.1 | 1.00 |
-| `bun` | 7.8 ± 0.3 | 7.3 | 9.0 | 1.50 ± 0.10 |
-| `yarn` | 152.7 ± 0.9 | 151.0 | 154.8 | 29.39 ± 1.51 |
-| `npm` | 162.2 ± 1.3 | 159.9 | 164.8 | 31.21 ± 1.62 |
-| `pnpm` | 223.8 ± 2.7 | 220.4 | 231.3 | 43.07 ± 2.27 |
+| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
+| :-------- | -----------: | -------: | -------: | -------------: |
+| **`nrr`** | 1.9 ± 0.1 | 1.7 | 2.3 | 1.00 |
+| `dum` | 2.5 ± 0.2 | 2.3 | 3.5 | 1.35 ± 0.11 |
+| `bun` | 6.9 ± 0.2 | 6.6 | 7.7 | 3.69 ± 0.21 |
+| `yarn` | 304.8 ± 10.5 | 291.2 | 347.2 | 162.32 ± 10.13 |
+| `npm` | 332.0 ± 17.5 | 314.1 | 421.5 | 176.84 ± 13.10 |
+| `pnpm` | 511.5 ± 20.6 | 482.8 | 606.3 | 272.41 ± 17.91 |
-hyperfine --shell=none --warmup=5 --output=pipe --export-markdown=benchmark.md 'npm run dev' -n 'npm' 'yarn run dev' -n 'yarn' 'pnpm run dev' -n 'pnpm' 'bun run dev' -n 'bun' 'dum run dev' -n 'dum' 'nrr dev' -n 'nrr'
+Benchmarks run on an AWS EC2 `t4g.micro` instance with the command hyperfine --shell=none --warmup=5 --runs=1000 --output=pipe --export-markdown=benchmark.md 'npm run dev' -n 'npm' 'yarn run dev' -n 'yarn' 'pnpm run dev' -n 'pnpm' 'bun run dev' -n 'bun' 'dum run dev' -n 'dum' 'nrr dev' -n 'nrr'
### Package and script metadata display
-`nrr` provides a better-looking display of package details and the command being run than most, and also prints this information to `stderr` instead of `stdout` like some of the package managers do (erroneously).
+nrr provides a better-looking display of package details and the command being run than most, and also prints this information to `stderr` instead of `stdout` like some of the package managers do (erroneously).
-### Spelling suggestions
+### Command execution
+
+On top of the standard script runner functionality that runs your scripts in `package.json`, nrr can also execute arbitrary commands in your npm package environments! You can use the `nrr exec` and `nrr x` commands to execute commands, similar to how `npx` or `pnpm exec` works (but faster, of course).
-If you mistype a script name (e.g. `buils` instead of `build`), `nrr` will intelligently suggest the right script to run in the error message using the Jaro similarity algorithm from the [`strsim`](https://docs.rs/strsim/latest/strsim/fn.jaro.html) crate.
+Do note, however, that nrr cannot run commands from remote packages! That feature falls within the purview of package managers, which nrr is not.
+
+> [!TIP]
+>
+> If you create a symlink that has a name of `nrx` (or, on Windows, a hard link that has a name of `nrx.exe`) in your `PATH`, you can execute commands through the `nrx` binary without using a subcommand!
### Script listing
-Running `nrr` without any arguments will try to find any packages in the current working directory and its ancestors, and list the scripts available from them, both name and command.
+Running nrr without any arguments or running the `nrr list` subcommand will try to find any packages in the current working directory and its ancestors, and list the scripts available from them, both name and command.
### Tooling compatibility
-`nrr` has compatibility functionality that patches `npm_execpath` so that tools like [`npm-run-all2`](https://github.com/bcomnes/npm-run-all2) use it instead of package managers for running sub-scripts.
+nrr has compatibility functionality that patches `npm_execpath` so that tools like [`npm-run-all2`](https://github.com/bcomnes/npm-run-all2) use it instead of package managers for running sub-scripts.
> [!WARNING]
>
> This may cause unexpected behavior when `npm_execpath` is used for non-script running purposes, so open an issue if you encounter any bugs.
-When running nested scripts with `nrr`, `nrr` has specialized behavior that prints extra information while staying minimal and performant:
+When running nested scripts with nrr, nrr has specialized behavior that prints extra information while staying minimal and performant:
```
sveltekit-project@0.0.1
@@ -54,6 +66,10 @@ sveltekit-project@0.0.1 lint
$$ eslint .
```
+### Spelling suggestions
+
+If you mistype a script name (e.g. `buils` instead of `build`), nrr will intelligently suggest the right script to run in the error message using the Jaro similarity algorithm from the [`strsim`](https://docs.rs/strsim/latest/strsim/fn.jaro.html) crate.
+
## Installation
### Nix
@@ -64,7 +80,7 @@ Add the overlay or package from the `github:ryanccn/nrr` flake to your own syste
$ nix profile install 'github:ryanccn/nrr#nrr'
```
-`nrr` is also available in [Nixpkgs](https://github.com/NixOS/nixpkgs) as `nixpkgs#nrr`.
+nrr is also available in [Nixpkgs](https://github.com/NixOS/nixpkgs) as `nixpkgs#nrr`.
### Cargo
@@ -76,23 +92,30 @@ $ cargo install nrr
$ cargo install --git https://github.com/ryanccn/nrr.git
```
+### GitHub Releases
+
+You can download
+
## Usage
-```
+```console
$ nrr dev
+$ nrr run dev
```
+```console
+$ nrx eslint --help
+$ nrr x eslint --help
+$ nrr exec eslint --help
```
-sveltekit-project@0.0.1
-$ vite dev
-
- VITE v5.0.12 ready in 10 ms
- ➜ Local: http://localhost:5173/
- ➜ Network: use --host to expose
- ➜ press h + enter to show help
+```console
+$ nrr
+$ nrr list
```
+This section provides an overview of nrr's command-line functionality. For more options and information, run `nrr --help`!
+
## License
GPLv3
diff --git a/cliff.toml b/cliff.toml
new file mode 100644
index 0000000..a6bd342
--- /dev/null
+++ b/cliff.toml
@@ -0,0 +1,70 @@
+[changelog]
+header = """
+# Changelog
+
+All notable, and not so notable, changes to this project will be documented in this file.
+
+"""
+
+body = """
+{% if version %}\
+ ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
+{% else %}\
+ ## [Unreleased]
+{% endif %}\
+{% for group, commits in commits | group_by(attribute="group") %}
+ ### {{ group | striptags | trim | upper_first }}
+ {% for commit in commits %}
+ - [`{{ commit.id | truncate(length=7, end="") }}`](/commit/{{ commit.id }}) \
+ {% if commit.scope %}(*{{ commit.scope }}*) {% endif %}\
+ {% if commit.breaking %}[**breaking**] {% endif %}\
+ {{ commit.message | upper_first }} - {{ commit.author.name }}
+ {%- endfor %}
+{% endfor %}\n
+"""
+
+footer = """
+{% for release in releases -%}
+ {% if release.version -%}
+ {% if release.previous.version -%}
+ [{{ release.version | trim_start_matches(pat="v") }}]: \
+ /compare/{{ release.previous.version }}..{{ release.version }}
+ {% endif -%}
+ {% else -%}
+ [Unreleased]: /compare/{{ release.previous.version }}..HEAD
+ {% endif -%}
+{% endfor %}
+"""
+
+trim = true
+
+postprocessors = [{ pattern = '', replace = "https://github.com/ryanccn/nrr" }]
+
+[git]
+conventional_commits = true
+filter_unconventional = true
+split_commits = false
+
+commit_preprocessors = []
+
+commit_parsers = [
+ { message = "^rm", group = "Removed" },
+ { message = "^feat", group = "Features" },
+ { message = "^fix", group = "Bug Fixes" },
+ { message = "^doc", group = "Documentation" },
+ { message = "^perf", group = "Performance" },
+ { message = "^refactor", group = "Refactor" },
+ { message = "^style", group = "Styling" },
+ { message = "^test", group = "Testing" },
+ { message = "^build\\(deps.*\\)", skip = true },
+ { message = "^chore\\(deps.*\\)", skip = true },
+ { message = "^chore|^ci|^nix", group = "Miscellaneous" },
+ { message = "^revert", group = "Revert" },
+]
+
+protect_breaking_commits = false
+filter_commits = false
+topo_order = true
+
+[bump]
+breaking_always_bump_major = false