# Changelog
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html)
## [Unreleased] - ReleaseDate
[Unreleased]: https://gitlab.com/pinage404/git-gamble/-/compare/version/2.14.2...HEAD
## [2.14.2] - 2026-05-24
### Technical
* add Cargo features to disable some tests related to specific `git`'s version
* `with_git_2_36_0`
* `with_git_2_54_0`
* help packaging with Nix : less strict text generation in hooks, not using shebang
* fix [AppVeyor's pipeline](https://ci.appveyor.com/project/pinage404/git-gamble) (which was broken since 2 years 🫣)
* update dependencies
[2.14.2]: https://gitlab.com/pinage404/git-gamble/-/compare/version/2.14.1...version/2.14.2
## [2.14.1] - 2026-05-21
### Technical
* try to [fix release](https://gitlab.com/pinage404/git-gamble/-/jobs/14492148309) ([`2fd3f3`](https://gitlab.com/pinage404/git-gamble/-/commit/2fd3f39f648e44a09d2b6484f288c6ac42a79520))
[2.14.1]: https://gitlab.com/pinage404/git-gamble/-/compare/version/2.14.0...version/2.14.1
## [2.14.0] - 2026-05-21
### Features
* [add `hook` sub-command to `enable` / `disable` examples hooks](https://git-gamble.is-cool.dev/usage/hooks/examples.html) ; Thanks to [@udebella (udebella)](https://github.com/udebella) for the feedback and idea
* requires `git` `2.54.0` or higher to actually execute the hooks
* [add Cargo feature](https://git-gamble.is-cool.dev/install/methods/cargo.html#remove-optional-features) `with_subcommand_hook`
* change the `default` feature to include it
### Changes
* rename Cargo feature from `with_shell_completions` to `with_subcommand_generate_shell_completions`
* rename hook
* from
* `post-gamble.real_time_collaboration.sample.sh`
* to
* `post-gamble.real-time-collaboration.sample.sh`
* rename `git-time-keeper`'s `git`'s hooks
* from
* `pre-commit.time-keeper.sample.sh`
* `post-commit.time-keeper.sample.sh`
* to
* `pre-commit.time-keeper-git-only.sample.sh`
* `post-commit.time-keeper-git-only.sample.sh`
### Documentation
* add how to [use hooks examples](https://git-gamble.is-cool.dev/usage/hooks/examples.html)
* add how to [install with Scoop community projects](https://git-gamble.is-cool.dev/install/methods/scoop.html)
* add how to [install with a `Brewfile`](https://git-gamble.is-cool.dev/install/methods/homebrew.html#install)
* add how to [do Double Loop TDD](https://git-gamble.is-cool.dev/usage/hooks.html#after-gambling-post-gamble)
### Technical
* fix pipeline
* bump dependencies
[2.14.0]: https://gitlab.com/pinage404/git-gamble/-/compare/version/2.13.1...version/2.14.0
## [2.13.1] - 2026-05-17
### Technical
* fix pipeline
[2.13.1]: https://gitlab.com/pinage404/git-gamble/-/compare/version/2.13.0...version/2.13.1
## [2.13.0] - 2026-05-17
### Backward compatibility note ⚠️
Starting with `git-gamble` `2.13.0`, it requires `git` version `2.36` or higher
`git` `2.36` was released the 2022-04-18, and is now [available in most package managers](https://repology.org/project/git/versions)
To use `git-gamble` with `git` below `2.36`, `git-gamble`'s hooks must be disabled by [installing `git-gamble` with the option to disable the feature](https://git-gamble.is-cool.dev/install/methods/cargo.html#remove-optional-features)
### Features
* support [new `git` hook format](https://git-scm.com/docs/git-hook) introduced in [`git` `2.54`](https://github.blog/open-source/git/highlights-from-git-2-54/#h-config-based-hooks) (and also introduced other cool unrelated stuffs)
* display more help messages ; Closes [Issue #10](https://gitlab.com/pinage404/git-gamble/-/issues/10)
* when the test command can't be executed
* like when the test command does not exist or is not found in the `$PATH`
* when `git` can't be executed
* like when it is not installed or is not found in the `$PATH`
* [allow to remove optional features](https://git-gamble.is-cool.dev/install/methods/cargo.html#remove-optional-features) at compile time, they are enabled by default ; this was a first step for [Issue #10](https://gitlab.com/pinage404/git-gamble/-/issues/10)
* `with_custom_hooks` : to use custom hooks
* `with_shell_completions` : to enable shell completions
### Changes
* display all errors in `stdout` instead of `stderr`
* previously some errors was displayed on `stdout`, others on `stderr`
* the boundary between a warning and an error is blurry
### Fix
* build slides in the pipeline with Gitlab.org worker
### Documentation
* [explain how to use sample hooks](https://git-gamble.is-cool.dev/usage/hooks/examples.html) ; Thanks to [@udebella (udebella)](https://github.com/udebella) for the feedback and idea
### Technical
* `.unwrap()` and `.expect()`
* in source, replace `.unwrap()` with `.expect()` to have at least an error message
* in tests, replace `.expect()` with `.unwrap()` a specific message is not needed in tests, because we have the source code just aside
* upgrade `glab` from `1.90.0` to `1.97.0`
* bump Rust from `1.94.0` to `1.95.0`
* bump dependencies
[2.13.0]: https://gitlab.com/pinage404/git-gamble/-/compare/version/2.12.1...version/2.13.0
## [2.12.1] - 2026-03-25
### Technical
* upgrade `glab` from `1.61.0` to `1.90.0` to try to fix the release step in the pipeline
[2.12.1]: https://gitlab.com/pinage404/git-gamble/-/compare/version/2.12.0...version/2.12.1
## [2.12.0] - 2026-03-24
### Features
* display more help messages
* when a commit fails ; Thanks [@wonderbird (Stefan Boos)](https://gitlab.com/wonderbird) for the report [Issue #9](https://gitlab.com/pinage404/git-gamble/-/issues/9)
* the most likely scenario is when a `pre-commit` hook fail
* possible other case (not likely a normal scenario) when an internal command (`git`) receive a signal (`SIGKILL`) while running
* when the test command can't be parsed
* when a `post-gamble` hook fails
### Fix
* since [`version/2.11.0`](https://gitlab.com/pinage404/git-gamble/-/releases/version%2F2.11.0), when [a `pre-gamble` hook](https://git-gamble.is-cool.dev/usage/hooks.html) fails, it explains what happened and how to debug
* before :
* always pretends that the `pre-gamble` hook exited with code `1`
* after :
* displays the `pre-gamble` hook exited code
### Documentation
* improve [landing page of the documentation](https://git-gamble.is-cool.dev)
* add a [Frequently Asked Questions](https://git-gamble.is-cool.dev/faq/index.html) section
* add an [example hook](https://git-gamble.is-cool.dev/usage/hooks/examples.html) that play a random sound based on the result of the gamble ; the example uses [sound samples](https://kaamelott-soundboard.2ec0b4.fr/) from the French series [Kaamelott](https://en.wikipedia.org/wiki/Kaamelott)
* improve the explanation of [the hook](https://git-gamble.is-cool.dev/usage/hooks.html)
* add a page with [all slides that are useful to make an introduction](https://git-gamble.is-cool.dev/slides.html)
* accessibility
* provide textual description of each schema in [the theory page](https://git-gamble.is-cool.dev/theory)
* make the content readable for screen readers in [the install page](https://git-gamble.is-cool.dev/install)
* fix many typos
#### Contributing
* better guide to [setup manually when wanting to contribute](https://git-gamble.is-cool.dev/contributing/development/setup.html#manual) ; Contribution by [@wonderbird (Stefan Boos)](https://gitlab.com/wonderbird) in [MR !31](https://gitlab.com/pinage404/git-gamble/-/merge_requests/31)
* better explain [the `mask` commands](https://git-gamble.is-cool.dev/contributing/development/commands.html)
* describe [the test strategy](https://git-gamble.is-cool.dev/contributing/development/test_stragegy.html)
* describe [the folders structure](https://git-gamble.is-cool.dev/contributing/development/folders_structure.html)
### Technical
* upgrade mdBook to `0.5`
* bump Rust from `1.88.0` to `1.94.0`
* bump dependencies
* try to have more idiomatic Rust code ; Thanks [@ToF- (ToF)](https://gitlab.com/ToF-) & [@etienneCharignon (Étienne Charignon)](https://gitlab.com/etienneCharignon) for the idea
* try to avoid panicking in a deep function calls (with `.unwrap()` or `.expect()`) ; Thanks [@ToF- (ToF)](https://gitlab.com/ToF-) for the idea
* some remaining, it is hard to write tests on them
* split logic between informing / warning / "erroring" a message and displaying it ; Thanks [@etienneCharignon (Étienne Charignon)](https://gitlab.com/etienneCharignon) for the idea
[2.12.0]: https://gitlab.com/pinage404/git-gamble/-/compare/version/2.11.0...version/2.12.0
## [2.11.0] - 2025-06-28
### Features
* help users to open issues
### Fix
* when [a `pre-gamble` hook](https://git-gamble.is-cool.dev/usage/hooks.html) fails
* before :
* `git-gamble` crash
* after :
* do not crash
* exit gracefully with code 1
* explain what happened and how to debug
* Co-authored-by: [@Anne-Flower (Anne-Flore Bernard)](https://github.com/Anne-Flower/)
### Technical
* bump Rust from `1.85.0` to `1.88.0`
* bump dependencies
[2.11.0]: https://gitlab.com/pinage404/git-gamble/-/compare/version/2.10.0...version/2.11.0
## [2.10.0] - 2025-03-18
### Fix
* fix `git-time-keeper` when used according to the documentation, an error message was displayed when used with `git-gamble`
* note: `git-time-keeper` is still in beta
### Documentation
* improve [documentation how to install with Chocolatey](https://git-gamble.is-cool.dev/install/methods/chocolatey.html) ; Contribution by [@alexandreduch (Alexandre Duchenne)](https://gitlab.com/alexandreduch) in [MR !9](https://gitlab.com/pinage404/git-gamble/-/merge_requests/9)
* guide where to put generated files for shell completions for Bash and Powershell ; Contribution by [@alexandreduch (Alexandre Duchenne)](https://gitlab.com/alexandreduch) in [MR !9](https://gitlab.com/pinage404/git-gamble/-/merge_requests/9)
### Distribution
* [](https://search.nixos.org/packages?show=git-gamble) starting from [2.9.0](https://gitlab.com/pinage404/git-gamble/-/releases/version%2F2.9.0)
* update Chocolatey package's version on release
* fix Chocolatey link in the release's artifact
* remove AppImage distribution [Issue #8](https://gitlab.com/pinage404/git-gamble/-/merge_requests/8)
### Technical
* remove support of legacy Nix, prefer using Nix Flake
* use [Snowfall Lib](https://snowfall.org/guides/lib/quickstart) to simplify Nix stuff with convention over configuration
* bump dependencies
* bump Rust from `1.80` to `1.85.0`
* bump Rust's `edition` from `2021` to `2024`
* in the pipeline, container images are generated from Dockerfile to Nix
* for more informations, read [the architectural decision record](https://git-gamble.is-cool.dev/decisions/0002-pipeline_single_source_of_truth.html)
[2.10.0]: https://gitlab.com/pinage404/git-gamble/-/compare/version/2.9.0...version/2.10.0
## [2.9.0] - 2024-08-05
### Features
* previously, untracked files were not deleted in case of a bad gamble ; now, untracked files are deleted in case of a bad gamble ; Thanks [@kevin.hantzen (k.hantzen)](https://gitlab.com/kevin.hantzen) for the idea [Issue #3](https://gitlab.com/pinage404/git-gamble/-/merge_requests/3)
* previously, gambling `--green` with a clean repository failed ; now, it warns that there is nothing to commit ; Thanks [@contet (Thomas Conte)](https://gitlab.com/contet) for the idea
### Documentation
* explicitly [list all supported installation methods](https://git-gamble.is-cool.dev/install/index.html) ; Contribution by [@contet (Thomas Conte)](https://gitlab.com/contet) in [MR !7](https://gitlab.com/pinage404/git-gamble/-/merge_requests/7)
### Technical
* bump dependencies
* bump Rust from `1.78` to `1.80`
[2.9.0]: https://gitlab.com/pinage404/git-gamble/-/compare/version/2.8.0...version/2.9.0
## [2.8.0] - 2024-06-15
### Features
* previously, gambling `--green` with `--fixup` (e.g. `git gamble --green --fixup ":/some commit"`) just after a `git gamble --red` failed ; this has been fixed ; Contribution by [@korrat (Markus Haug)](https://gitlab.com/korrat) in [MR !5](https://gitlab.com/pinage404/git-gamble/-/merge_requests/5)
* improve manual page
### Technical
* bump Rust from `1.75` to `1.78`
* update dependencies
* fix flaky test ; Contribution by [@korrat (Markus Haug)](https://gitlab.com/korrat) in [MR !6](https://gitlab.com/pinage404/git-gamble/-/merge_requests/6)
* replace NPM with PNPM
[2.8.0]: https://gitlab.com/pinage404/git-gamble/-/compare/version/2.7.0...version/2.8.0
## [2.7.0] - 2024-02-08
### Security
* bump dependencies to fix the high-severity security vulnerability [`RUSTSEC-2024-0006`](https://rustsec.org/advisories/RUSTSEC-2024-0006.html)
### Features
* add [`human-panic`](https://crates.io/crates/human-panic), a tool that encourages users who experience a crash to report it
### Documentation
* add [a website with all the documentation](https://git-gamble.is-cool.dev)
* add [slides about the theory](https://git-gamble.is-cool.dev/slides_theory)
* add [slides about the demo](https://git-gamble.is-cool.dev/slides_demo)
### Technical
* add `compose.yml` file to help to debug the CI
* bump container image from Debian Buster to Bookworm
* bump Rust from `1.73` to `1.75`
* bump dependencies
[2.7.0]: https://gitlab.com/pinage404/git-gamble/-/compare/version/2.6.0...version/2.7.0
## [2.6.0] - 2023-11-05
### Features
* when generating shell completion, if the user don't give the target shell, try to determine the current shell from the environment or default to Bash
### Documentation / Distribution
* add [a section](./README.md#do-you-like-this-project-) to invite people to add [a star on GitLab ](https://gitlab.com/pinage404/git-gamble) or open [open an issue](https://gitlab.com/pinage404/git-gamble/-/issues) to give feedback
* add [Nix's template](./README.md#nix-nixos)
* when installing using Nix, add [a section to avoid rebuilding using Cachix](./README.md#cachix)
* document how to download latest main version of AppImage
* add [a repository with several examples with several languages](./README.md#usage-examples)
* improve [how to use's section](./README.md#how-to-use-) ; Contribution by [@mavomo (Michelle Avomo)](https://gitlab.com/mavomo) in [MR !3](https://gitlab.com/pinage404/git-gamble/-/merge_requests/3)
* fix [Windows / Chocolatey installation](./README.md#windows--chocolatey), ask users to install git manually instead of having an automatic dependency which was not working
* fix GitLab's URL on crates.io
* fix Nix overlay
### Contributing
* document [how to do refactoring session](README.md#refactoring-session)
### Technical
* test refactoring to help readability
* improve release binary size thanks to [this repository](https://github.com/johnthagen/min-sized-rust)
* from `952 704 octets` to `739 712 octets`
* bump container base images
* bump Kaniko
* bump Rust from `1.60` to `1.73`
* bump dependencies
* make [compilation faster by combining all tests in a single test binary](https://endler.dev/2020/rust-compile-times/#combine-all-integration-tests-in-a-single-binary)
* add [VS Code's tasks](https://code.visualstudio.com/Docs/editor/tasks) to [use git-gamble inside VS Code](./.vscode/tasks.json)
* use [Mask](https://github.com/jacobdeichert/mask) to [execute commands](./maskfile.md)
* generate shell completions using the `git-gamble` binary itself instead of at build time
[2.6.0]: https://gitlab.com/pinage404/git-gamble/-/compare/version/2.5.0...version/2.6.0
## [2.5.0] - 2022-07-03
### Features
* add [custom `git-gamble` hooks](https://git-gamble.is-cool.dev/usage/hooks.html) : `pre-gamble` and `post-gamble`
### Documentation / Distribution
* add [demo](docs/src/usage/demo/README.md)
* document [how to upgrade when installing using Homebrew](https://git-gamble.is-cool.dev/install/methods/homebrew.html#upgrade)
* add Nix Flake's `overlays`
* fix changelog in release
### Contribution
* setup [Gitpod](README.md#gitpod) to help contributions
### Technical
* bump Rust `edition` from `2018` to `2021`
* replace `structopt` by `clap` which includes the same features
* add test Nix build in pipeline
* add Nix formatter
* fix coverage report [](https://gitlab.com/pinage404/git-gamble/-/commits/main)
* bump [Rust VSCode's Extension Pack](https://marketplace.visualstudio.com/items?itemName=pinage404.rust-extension-pack) that replace [Rust](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust) by [`rust-analyzer`](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer)
* replace [`spectral`](https://crates.io/crates/spectral), which is unmaintained, by [`speculoos`](https://crates.io/crates/speculoos) his fork successor
[2.5.0]: https://gitlab.com/pinage404/git-gamble/-/compare/version/2.4.0...version/2.5.0
## [2.4.0] - 2022-04-30
### Features
* add [`--edit` option](https://git-scm.com/docs/git-commit#Documentation/git-commit.txt---edit) to edit the commit message when committing which is passed to [`git commit`](https://git-scm.com/docs/git-commit) command
* add [`--fixup` option](https://git-scm.com/docs/git-commit#Documentation/git-commit.txt---fixupamendrewordltcommitgt) and [`--squash` option](https://git-scm.com/docs/git-commit#Documentation/git-commit.txt---squashltcommitgt) which are passed to [`git commit`](https://git-scm.com/docs/git-commit) command
### Documentation / Distribution
* add [Nix Flake installation instructions](README.md#nix-nixos)
### Technical
* bump some dependencies
* use Nix Flake to generate environment with `nix-shell` or `nix develop`
* use [`devshell`](https://github.com/numtide/devshell) to have commands shortcuts
* bump Rust from `1.55` to `1.60`
* ignore audit dependency because there is no safe upgrade available
* release only on main
[2.4.0]: https://gitlab.com/pinage404/git-gamble/-/compare/version/2.3.0...version/2.4.0
## [2.3.0] - 2021-10-23
### Documentation
* auto updated `git gamble generate-shell-completions --help` in [README](README.md#shells-completions)
### Distribution
* publish Linux and Windows binaries in [releases](https://gitlab.com/pinage404/git-gamble/-/releases)
### Technical
* fix [`markdownlint`](https://github.com/DavidAnson/markdownlint) issues
* hardcode TOC generated by [Markdown All In One](https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one) instead of the one generated by GitLab
* faster CI by removing useless job
* generate test coverage
[2.3.0]: https://gitlab.com/pinage404/git-gamble/-/compare/version/2.2.1...version/2.3.0
## [2.2.1] - 2021-10-03
* Fix deployment on crate.io
[2.2.1]: https://gitlab.com/pinage404/git-gamble/-/compare/version/2.2.0...version/2.2.1
## [2.2.0] - 2021-10-02
### Features
* Wrap `git-gamble --help` based on the terminal size
### Documentation
* auto updated `git-gamble --help` in [README](README.md#usage)
### Technical
* Improve release binary size thanks to [this post](https://arusahni.net/blog/2020/03/optimizing-rust-binary-size.html)
* from `5 934 760 octets` (~6Mo) to `772 416 octets` (<1Mo)
[2.2.0]: https://gitlab.com/pinage404/git-gamble/-/compare/version/2.1.0...version/2.2.0
## [2.1.0] - 2021-10-01
### Features
* improve `git-gamble --help`
* add color
* reorder `--fail`, `--pass` and `--refactor` flags
* add description of the program
* add link to the repository
* generate shell completions using the subcommand `git gamble generate-shell-completions`
### Documentation
* add [section that help to debug](README.md#debug) while crafting git-gamble itself
### Technical
* update [`release-cli`](https://gitlab.com/gitlab-org/release-cli)
* explicitly set `rustc` as a dependency
[2.1.0]: https://gitlab.com/pinage404/git-gamble/-/compare/version/2.0.0...version/2.1.0
## [2.0.0] - 2021-09-25
### Packages repositories
* **⚠️ BREAKING CHANGE ⚠️** remove BinTray package publishing
### Features
* add [`--no-verify` option](https://git-scm.com/docs/git-commit#Documentation/git-commit.txt---no-verify) to skip [githooks](https://git-scm.com/docs/githooks) that is passed to [`git commit`](https://git-scm.com/docs/git-commit) command ; Contribution by [@korrat (Markus Haug)](https://gitlab.com/korrat) in [MR !2](https://gitlab.com/pinage404/git-gamble/-/merge_requests/2)
### Documentation / Distribution
* improve [Nix / NixOS installation instructions](README.md#nix-nixos)
* add shell completions for [Nix / NixOS](README.md#nix-nixos)
* add man page for [Nix / NixOS](README.md#nix-nixos)
* improve AppImage installation instructions
### Technical
* smaller container image in CI
* upload only required files to crates.io, thanks to [`cargo-diet`](https://github.com/the-lean-crate/cargo-diet)
* bump Rust from `1.50` to `1.55`
* bump some dependencies
* remove some linters warnings
* allow `git-gamble` to run inside `nix-shell`
* explicitly set `cargo` as a dependency
### Others
* rename default branch from `master` to `main`
[2.0.0]: https://gitlab.com/pinage404/git-gamble/-/compare/version/1.3.0...version/2.0.0
## [1.3.0] - 2021-03-12
### Technical
#### Packages repositories
Packages repositories will be [moved on GitLab](https://gitlab.com/pinage404/git-gamble/-/packages) because [JFrog will shutdown BinTray](https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/)
Please **follow [installation instructions](README.md#how-to-install-)** for your specific system
* _Affected_ by this changement
* **⚠️ Automatic update won't work in the future ⚠️**
* [Debian](README.md#debian)
* [Windows / Chocolatey](README.md#windows-chocolatey)
* There is not automatic update system at the moment, you already have to manually update at each new version
* AppImage
* _Not affected_ by this changement
* Mac OS X / Homebrew
* Nix / NixOS
* Cargo
This will be a kind of **⚠️ BREAKING CHANGE ⚠️** : `2.0.0` won't be on BinTray
#### Others
* bump image's version for the CI's container
* bump Kaniko's version to build the CI's container
[1.3.0]: https://gitlab.com/pinage404/git-gamble/-/compare/version/1.2.0...version/1.3.0
## [1.2.0] - 2021-02-20
### Added
* installation for [Nix / NixOS](./README.md#nix-nixos)
### Technical
* remove warning at compile time (while using `cargo test`) ; Contribution by [@bachrc](https://gitlab.com/bachrc) in [MR !1](https://gitlab.com/pinage404/git-gamble/-/merge_requests/1)
* improve the speed of the CI
* improve the way to set up the development environment
* bump Rust to `1.50`
* bump dependencies
[1.2.0]: https://gitlab.com/pinage404/git-gamble/-/compare/version/1.1.0...version/1.2.0
## [1.1.0] - 2020-05-25
### Added
* custom logo
* shells completions
* automatically installed with Debian and Homebrew packages
* only for Bash, Fish, ZSH
[1.1.0]: https://gitlab.com/pinage404/git-gamble/-/compare/version/1.0.0...version/1.1.0
## [1.0.0] - 2020-04-26
Initial project
With the minimum functionalities required for real life use
Installable on Linux, Mac OS X and Windows
[1.0.0]: https://gitlab.com/pinage404/git-gamble/-/compare/077c3e01064ee7923917a919ccb0cb581653f4c5...version/1.0.0