Konstantin Ryabitsev has announced the release of version 0.16.0 of the b4 software-development tool. The biggest change is the addition of bug-tracking support:
The new "b4 bugs" command integrates with git-bug to let you track bug reports alongside your git repository. Bugs are stored as git objects inside the repo, so they travel with the code and can be shared via git push/pull without any external service.
There are also a lot of improvements to b4 review (which was covered here in March), better conflict resolution in b4 shazam, improved history rewriting, and more.
| From: | | Konstantin Ryabitsev <mricon-AT-kernel.org> |
| To: | | tools-AT-kernel.org, users-AT-kernel.org |
| Subject: | | b4 0.16.0 released |
| Date: | | Wed, 05 Aug 2026 13:01:31 -0400 |
| Message-ID: | | <20260805-alluring-arrogant-grouse-ece17a@meerkat> |
Hi, all:
B4 v0.16.0 is now available! Install or upgrade using your usual mechanism,
or start from scratch with:
pipx install b4
# or, if you want the review and bugs tui stuff
pipx install b4\[tui\]
Full release notes:
Getting started guide for reviewers:
Full release notes available here:
https://b4.docs.kernel.org/en/latest/releases.html
Here are some bigger items in this release:
b4 bugs -- bug tracking with git-bug (technology preview)
The new "b4 bugs" command integrates with git-bug to let you track bug
reports alongside your git repository. Bugs are stored as git objects
inside the repo, so they travel with the code and can be shared via
git push/pull without any external service.
More about the git-bug project:
Bugs stored this way can also be viewed via git.kernel.org -- for
example, b4's own bug tracker:
A full-featured TUI (b4 bugs tui) lets you browse, triage, and update
bugs; a lightweight CLI covers scripting and non-interactive use. The
git-bug tool itself also ships its own TUI and a web UI, both of which
work fine alongside b4 on the same bug data.
Highlights:
- Import from lore -- enter a message-id and b4 fetches the full thread,
uses the oldest message as the bug report, and adds follow-ups as
comments.
- Lifecycle states -- triage bugs through custom lifecycle states.
- Reply to bug reporters directly from the TUI.
Like "b4 review", this ships as a technology preview (alpha): commands,
keybindings, and formats may change between releases.
b4 review -- a large batch of improvements
The v0.15 technology preview generated a lot of excellent feedback (thank you,
everyone who wrote in -- especially Mark Brown, Christian Brauner, and
Matthieu Baerts). This release focused on making the review workflow more
robust, though it is still considered a beta-quality feature.
Here are some notable changes:
- Reworked revision upgrades -- "a newer revision exists" is now its own
attribute rather than a series status.
- Applies ("takes") run in the target branch's worktree -- applying a series
never checks the target branch out in your current worktree, and merge
conflicts are resolved in place in a conflict shell instead of aborting the
take.
- Partial-series state -- cherry-picking a subset of a series sets it to
"partial" state; the review stays alive and b4 promotes it to accepted
when later takes complete coverage.
- It's now possible to thank and archive in one motion -- an opt-in Take
checkbox chains a fully-accepting take into the thank-you preview, and
archives the series once the thanks are actually delivered.
- b4 review cron -- non-interactive periodic maintenance: wake expired
snoozes, rescan branches, update all tracked series, and deliver
queued thanks from a scheduler or a git-push wrapper.
- b4 review track --rethread -- stitch together series sent without any
threading; pass one patch and b4 does its best to get the rest from lore.
- Manual revision linking -- when automatic discovery fails, link a
revision by hand from the action menu.
- Custom reply templates -- wrap outgoing review replies in your own
template via b4.review-reply-template.
- Editor plugins for Vim and Emacs -- diff-aware syntax highlighting for
review buffers, hunk trimming with "[ ... NN lines skipped ... ]"
breadcrumbs, and adopt-comment for claiming external reviewer comments. See
misc/ in the source tree -- we don't install these automatically, but they
do really make a big difference.
- Many quality of life tweaks -- long-running network operations can be
interrupted with Escape; quitting now takes a capital Q (bare q warns);
sending from any preview screen is Ctrl-y; your own replies no longer show
up as unread; prior Reviewed-by/Acked-by replies you sent before tracking a
series are auto-detected and marked done; the Patchwork browser no longer
hangs on huge backlogs.
b4 shazam -- conflict-resolution overhaul
"b4 shazam --resolve" now resolves conflicts inline: on a git am
conflict, b4 parks the in-progress apply in a throwaway worktree and
drops you into a sub-shell there. Finish with "git am --continue",
leave the shell, and b4 completes the operation. The previous
two-phase --continue/--abort flow is gone.
The conflicted series is applied entirely through native git am, which
fixes a serious bug where a patch whose three-way fallback could not
run was silently dropped from the merge.
Native history rewriting and committer integrity
b4 no longer depends on git-filter-repo: cover-letter updates and trailer
application now rewrite history natively via pygit2. Git notes on rewritten
commits are migrated to the new commit OIDs instead of being orphaned, which
opens up possibility of better git-notes integration in the future.
Interactive trailer and thank-you review
- "b4 trailers -u -i" opens your editor with the trailers about to be
applied; rejections are persisted and honoured on future runs.
- "b4 trailers -u --fuzzy" recovers trailers for rebased/amended
commits by Link: message-id and subject when the patch-id no longer
matches.
- "b4 ty -i" lets you review and deselect individual thank-you
messages before anything is sent.
New first-party dependencies: liblore and ezgb
b4 now depends on two new libraries that are maintained as part of the
same project family (mainly, of note for distro packagers):
If you're running b4 from a git checkout, you should run "git submodule init"
and "git submodule update" after switching to 0.16.
Other notable changes
- b4 is now tested against distro-shipped dependency versions; the
pygit2 floor is lowered to 1.14 and two review-TUI crashes on older
Textual releases are fixed
- sendemail.sendmailCmd support for local mail submission
- b4.custom-msgid-cmd for custom message-id schemes on replies and
thank-yous
- b4.send-me-too = no to keep yourself out of Cc when sending
- b4 prep --cleanup-older-than for bulk-cleaning stale prep branches
- b4.review-apply-base to pre-fill the base selection dialog
- More reliable series matching for plain (non-git) diffs
Thanks
Many thanks to everyone who contributed to this release with patches,
reviews, bug reports, testing, and suggestions:
- Alice Ryhl
- Breno Leitao
- Cássio Gabriel
- Chris Samuel
- Christian Brauner
- Clément Le Goffic
- Dave Marquardt
- Jacob Keller
- Jani Nikula
- Jeremy Kerr
- Jiri Slaby
- Jonathan Wakely
- Lorenzo Stoakes
- Louis Chauvet
- Mark Brown
- Matthias Beyer
- Matthieu Baerts
- Maxime Ripard
- Miguel Ojeda
- Miroslav Benes
- Nicolas Schier
- Tamir Duberstein
- Tan Siewert
- Vlastimil Babka
As always, bug reports and feedback are welcome at tools@kernel.org.
Best regards,
-K