# bshelper A tiny TUI for reporting **good / bad / skip / abort** verdicts during a manual bisect. Designed for `jj bisect run`, but works equally well with `git bisect run` since both use the same exit-code contract. ## Why `jj bisect run` (and `git bisect run`) hand verdicts back through the process exit code: `0`, `1`, `125`, `127`. For automated tests that's fine, but for *manual* bisects you end up typing `exit 125` and remembering which code is which. `bshelper` replaces that with a small modal picker that says the words out loud. ``` ┌─ bshelper · jj ─────────────────────────────────┐ │ │ │ Commit k7q4mzpw 78fa1c2b │ │ Author Steve Waits │ │ Date 2026-04-29 14:22 │ │ │ │ Refactor parser to remove redundant clones │ │ ───────────────────────────────────────────── │ │ │ │ GOOD build / test passed │ │ BAD build / test failed │ │ ▶ SKIP can't tell — mark indecisive │ │ ABORT stop the bisection now │ │ │ │ ───────────────────────────────────────────── │ │ ↑/k ↓/j navigate · Enter commits: SKIP │ └─────────────────────────────────────────────────┘ ``` ## Install ```sh cargo install bshelper ``` ## Use With Jujutsu (preferred): ```sh jj bisect run --range 'a..b' -- bshelper ``` With Git: ```sh git bisect start git bisect run bshelper ``` bshelper detects the VCS at runtime: jj first, git as a fallback. The selected verdict is reported via the process exit code so the parent `bisect run` keeps walking the history. ## Verdicts | Verdict | Exit | Meaning | | ------- | ---- | ------------------------------------ | | GOOD | 0 | build / test passed | | BAD | 1 | build / test failed | | SKIP | 125 | can't tell — mark indecisive | | ABORT | 127 | stop the bisection now | These match the `git bisect run` / `jj bisect run` contract exactly. ## Keys | Key | Action | | --------- | --------------------- | | `↑` / `k` | move highlight up | | `↓` / `j` | move highlight down | | `Enter` | commit the highlight | The default highlight is **SKIP** — a stray `Enter` wastes a step but never poisons the bisect. There is no second escape hatch: to abort, navigate to `ABORT` and press Enter. ## License MIT — see [LICENSE](LICENSE).