b4 0.16.0 released

Konstantin Ryabitsev <[email protected]>
Newsgroups org.kernel.linux.tools
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:
- https://b4.docs.kernel.org/en/latest/releases.html

Getting started guide for reviewers:
- https://b4.docs.kernel.org/en/latest/reviewer/getting-started.html

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:
- https://github.com/git-bug/git-bug

Bugs stored this way can also be viewed via git.kernel.org -- for
example, b4's own bug tracker:
- https://git.kernel.org/pub/scm/utils/b4/b4.git/bugs/

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):

- liblore, which provides all lore.kernel.org/public-inbox access,
  including automatic failover between mirror endpoints:
  https://git.kernel.org/pub/scm/utils/liblore/liblore.git
- ezgb, which provides git-bug access and powers the new "b4 bugs"
  command:
  https://git.kernel.org/pub/scm/utils/ezgb/ezgb.git

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 [email protected].

Best regards,
-K
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.