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.
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 }
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.
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.
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
- feat(git): add push option for selected bookmarks in multi-select by @neil-sriv in #702
- Feat/background blend by @idursun in #712
- docs: require jj 0.37 or later by @baggiiiie in #714
- Allow pushing all bookmarks in selected changes by @nikosavola in #716
New Contributors
- @neil-sriv made their first contribution in #702
Full Changelog: v0.10.8...v0.10.9