github tim-janik/jj-fzf v0.34.0
JJ-FZF 0.34.0

10 hours ago

JJ-FZF 0.34.0 - 2025-10-02

Added:

  • In the last month, jj-fzf underwent a complete rewrite. The new version has
    out of the box support for running jj commands with multiple revisions and
    extends utilization of new jj and fzf features.

  • All key binding commands now operate on a change_id or a list thereof.

  • In case of divergent commits, an fzf list entry now expands to a commit_id,
    which also means pretty much all commands now handle divergent commits.

  • Inject will now copy the author, timestamp and message into the new commit.

  • The oplog now combines the operation show, diff and historic log views.

  • The default set of revisions for the jj-fzf log list is now
    jj-fzf.log_revset with a fallback of revsets.log (the standard jj log
    revset). To use a different revset with jj-fzf, type the revset into the
    query field for live revset updates. To persist the revset in the repo
    config under jj-fzf.log_revset, hit Alt-Enter.

  • The default commit display template for the jj-fzf log list is now
    jj-fzf.log_template with a fallback of templates.log (the standard jj
    log template). In order to configure jj-fzf for one line display, use:
    jj config set --user jj-fzf.log_template builtin_log_oneline

  • Alt-B now presents a dialog to create, move, delete or track bookmarks and
    delete tags. The former bookmark deletion under Alt-D has been merged into
    Alt-B.

  • Alt-Q will now squash changes from selected revisions into the revision
    under the pointer, or into the parent if no revisions are selected.

  • Alt-S now starts jj restore --interactive and restores files from a single
    selected revision into the revision under the pointer, or into the parent
    if no revisions are selected.

  • Ctrl-D will pre-generate a commit message for merge commits only. For normal
    commit messages, use templates.draft_commit_description instead. If you
    depend on the messages of previous jj-fzf versions, consider the hint printed
    out by: lib/draft.sh --hint
    See also: https://jj-vcs.github.io/jj/latest/config/#default-description

  • Ctrl-F now toggles between the fzf finder and live revset editing.
    There is no key binding replacement for the old 'file-editor', just run
    jj edit or jj new on an old commit and open the file of interest.

  • Ctrl-L will now either show the history up to a single selected revision,
    or for the selected (multiple) revisions only.

  • Ctrl-V is the new key binding for the evolution log browser.

  • An LLM can be used to generate commit messages with the Ctrl-S key binding.
    The generated message is provided to jj describe as a config value in
    template-aliases.default_commit_description.
    See the manual page for LLM configurations via environment variables.

  • Sub-dialogs like rebase, reparent or even bookmarks should now retain the
    commit (bookmark) pointer position.

  • An optimal column-major text layout algorithm now presents the key bindings.

  • The CI now runs and validates a selected set of screencasts.

  • New -c +c -r +r -s options allow using jj-fzf as a picker for 1 or many
    commits, 1 or many revisions or a revset expression.

Changed:

  • Bookmarks are now display with a simplified state that indicates:
    Deleted / Conflicted / Tracked / Untracked / Local Remote

  • On startup jj-fzf now offers revset editing in the query field.
    Use Ctrl-F for the fzf filter.

  • When running jj describe a $EDITOR wrapper is used that prevents jj
    from accepting an auto-generated default description as message.

  • Running a command from jj-fzf switches back from the alternative screen
    and will reload the entire jj log output before returning. This may
    take longer than the async log loading in previous versions, but it
    allows fzf to track and keep the current pointer position.

Fixed:

  • The man page now list key bindings for jj-fzf and all sub-commands.

  • A new configuration section in the man page describes config keys that
    jj-fzf makes use of, as well as how to configure LLM usage.

  • The push command now avoids querying if nothing changed.

Breaking:

  • The minimum supported fzf version is now 0.65.2.

  • This release requires jj-0.34.0

  • Commands missing from the rewrite:

    • Alt-V: vivifydivergent - use jj metaedit --update-change-id
    • Ctrl-A: author-reset - use jj metaedit --update-author
    • Ctrl-I: diff - should be handled by Ctrl-L now
    • Ctrl-V: gitk - not provided anymore
    • Ctrl-W: wb-diff - toggle ±b ±w for diff
  • A number of changes listed above could be considered breaking old
    workflows. Please provide feedback in Github discussions or IRC
    if you encounter regressions or miss important features.

Thanks to everyone who gave feedback regarding the rewrite and
helped to make this release happen!

Full Changelog: v0.33.0...v0.34.0

Don't miss a new jj-fzf release

NewReleases is sending notifications on new releases.