github idursun/jjui v0.9.7

one day ago

🎉 This release enhances performance and introduces stability improvements in log parsing and command execution. It also takes back some of the stability by adding basic mouse support.

Features

📈 Performance Improvements

Implemented frame-rate limited rendering (capped at 120 FPS) to significantly improve application performance by deferring view generation until the next frame tick. This addresses the slowest path in the application - view generation - making it much more responsive

🐭 Mouse Support

  • Clickable and scrollable revisions view (excluding operations) (#391)
  • Clickable and scrollable op log view
  • Draggable and scrollable (vertically + horizontally) preview pane
  • Scrollable diff window
  • Replaced custom viewport with bubbles/viewport for more responsive rendering (#396)
mouse.mp4

🔎 Preview

  • Replaced surrounding border with divider for more preview space (#396)

Operation Log (oplog)

  • Added jj op revert functionality with R key binding (#400)

Revset Handling

  • Pressing up arrow in empty revset field now sets the current revset (#284)
  • Fixed mismatch where empty revset input would use config default instead of session default from -r flag. Now correctly updates CurrentRevset to session default instead of empty string (#399)

Details View

  • Allow quitting from details view when quit key is pressed (e.g. q)

Bug Fixes

Rendering Issues

  • Fixed double rendering of inline describe content when next line contains only revision line. Added revisionLineRendered tracking flag to properly sequence the description overlay rendering (#403, #369)
  • Fixed viewport adjustment when PageDown moves cursor below viewport. The renderer now continues rendering until it reaches the focused item, ensuring proper viewport adjustment (#395)
  • Fixed PageUp/Down navigation at top and bottom of revset when less than one page remains. Now includes early return with feedback message when already at boundary (#387, #386)
  • Removed incorrect space trimming in renderer (#393)

Log Processing

  • Applied partial fixes to prevent out-of-order row updates in log streamer

Details View

  • Handle cases where conflict markers span multiple lines (#398)
  • Ignore virtual selection on refresh (#381)

Operation Log (oplog)

  • Fixed an issue in operation ID detection (#380, #377)

Command Execution

  • Added a mechanism for restoring failed commands to input field, allowing retries without retyping (#392)

Template System

  • Enhanced jj log parsing using native template prefixes for better change ID and commit ID detection. Fixes issues when bookmarks are "HexLike" (#358, #228, #372)

What's Changed

  • Remove teatest package and simplify tests by @idursun in #379
  • internal/parser: get revision ids with template prefixes by @baggiiiie in #372
  • fix(oplog): improve operation id detection by @idursun in #380
  • refactor: serialise command execution by @idursun in #378
  • Revert "refactor: serialise command execution" by @idursun in #383
  • revisions: fix scrolling at the top and bottom of revset by @baggiiiie in #387
  • refactor: introduce and implement common.Model by @idursun in #384
  • refactor: Replace custom cell buffer implementation with cellbuf package by @idursun in #388
  • refactor: use simple layout functions to lay out the main UI by @idursun in #389
  • Coming back to previous state when exec command failed by @ArnaudBger in #392
  • feat: add basic mouse support by @idursun in #391
  • list/renderer: fix viewport adjustment on PageDown by @baggiiiie in #395
  • Make preview horizontally scrollable by @idursun in #396
  • revset: fix revset not using default when empty by @baggiiiie in #399
  • operation: add op log revert by @baggiiiie in #400
  • revision: fix double rendering of inline describe content by @baggiiiie in #403
  • refactor: replace usages of scattered width/height pairs with ViewNode by @idursun in #401
  • describe: catch cursor blinking to avoid unnecessary rendering by @baggiiiie in #404

New Contributors

Full Changelog: v0.9.6...v0.9.7

Don't miss a new jjui release

NewReleases is sending notifications on new releases.