github idursun/jjui v0.10.9

5 hours ago

A release with per-file diff navigation, targeted bookmark pushes, filtering for changed files and choice dialogs, and adaptive light and dark themes.

Features

Browse Individual Files in the Diff Viewer

Press ctrl+t in the diff viewer to choose a changed file and show only its diff. Select (all files) to restore the complete diff.

Use [ and ] to move directly to the previous or next changed file. Navigation wraps at either end of the file list and is available for revision, Details, Diff Range, and Evolog diffs.

Push Bookmarks from Selected Changes

The Git menu can now push all eligible bookmarks from the highlighted revision or a multi-selection in one command. Open the menu with g, press p to show push commands, then press b.

The command includes non-conflicted local bookmarks that are new or tracked on the selected remote and deduplicates bookmark names across the selected changes.

(#701, #702, #715, #716)

Adaptive Light and Dark Themes

Theme files can now define shared colors with separate light and dark overrides in a single file. Selected backgrounds can also be blended toward the active component or terminal background, with a global or per-appearance strength configured through ui.background_blend.

For example, a theme can share role styles while changing the selected background and blend strength for each terminal appearance:

[colors]
":selected" = { bold = true }
"revset completion text" = { fg = "green" }
"revset completion text:selected" = { fg = "bright green" }

[light]
background_blend = 0.2

[light.colors]
":selected" = { bg = "white" }

[dark]
background_blend = 0.4

[dark.colors]
":selected" = { bg = "bright black" }

The active theme's blend strength can also be overridden from config.toml:

[ui]
background_blend = { light = 0.2, dark = 0.7 }
Selected rows blended against different component backgrounds

jjui queries the terminal background and ANSI palette when blending is enabled and reapplies the active theme when the terminal appearance changes.

Theme selectors now support the :selected suffix, including role-specific selectors such as revset completion text:selected. The legacy selected selector syntax remains supported.

(#406, #637, #668, #712)

Improvements

Filter Changed Files in Details

Press / in the Details view to filter changed files by a case-insensitive path substring. Matching text is highlighted, and existing file selections are preserved while filtering.

image

Press enter to keep the filter active or esc to clear it.

Filter Any Choice Dialog

Press / to filter any choice dialog, including dialogs created by Lua scripts. The obsolete filter option has been removed from the Lua choose() helper.

(#717)

Fixes

Selected Bookmark Push Eligibility

Fixed selected bookmark pushes so local bookmarks that exist on the chosen remote but are not tracked there are not included.

Selected Theme Styles

Selected rows now preserve role-specific styles for text, dimmed content, and matched text. Git and Bookmarks remote selectors also receive the correct scoped styles, and custom themes no longer inherit unspecified colors from the built-in theme.

Notes

Minimum Supported jj Version

jjui now requires jj v0.37 or later because the revision log uses the change_offset template keyword introduced in v0.37.

(#714)

What's Changed

New Contributors

Full Changelog: v0.10.8...v0.10.9

Don't miss a new jjui release

NewReleases is sending notifications on new releases.