Skip to content

Releases: noborus/ov

v0.55.0

Choose a tag to compare

@noborus noborus released this 29 Sep 04:01
e799baf

Highlights

  • Added configurable indentation for wrapped lines in word-wrap mode.
    • Use --break-indent or Ctrl+Alt+n.
    • Supports fixed indentation, source-line indentation (L), and relative values such as L+2, L-2, +2, and -2.
    • The default indentation is now 0.
  • Added display markers for wrapped, continued, and truncated lines.
    • Use --sign-mode or Ctrl+Alt+m.
    • Supports break (↳), continuation (↵), and truncation (…) markers.
  • Added an action to suppress search-result highlighting while preserving the active search.
    • Search highlighting is restored when search navigation resumes.
    • The default key binding is Ctrl+Alt+u.

Improvements and Fixes

  • Improved word wrapping for long words and multi-line content.
  • Improved marker rendering at content boundaries and with narrow terminals.
  • Fixed cache invalidation when changing line-number settings in word-wrap mode.
  • Improved searching through long and unloaded lines.
  • Fixed search highlighting for case-insensitive and quoted-field searches.
  • Improved CSV delimiter handling, including delimiters inside quoted fields.
  • Fixed alignment and column-width detection for escaped and irregular input.
  • Fixed fractional line navigation and section-related write operations.
  • Improved terminal width detection and close-operation handling.

Compatibility Notes

  • Building from source now requires Go 1.26 or later.

Dependencies

  • Updated tcell to v3.5.0.
  • Updated clipboard, compression, and related dependencies.

New Contributors

Thanks for the issue.

Full Changelog: v0.54.0...v0.55.0

v0.54.0

Choose a tag to compare

@noborus noborus released this 12 Jul 06:22
0a791c8

What's Changed

ov v0.54.0 focuses on making style inspection and suppression easier to use, while tightening sidebar rendering and improving runtime stability.

Style suppression is now much more practical

You can now suppress styles individually instead of falling back to a fully plain view.
This is especially useful when using ov with tools that emit ANSI styling, such as bat.

  • Added selective style suppression.
  • Added numbered style selection with comma and range syntax.
  • Added commands for toggling all styles more easily.
  • Improved style-related help and on-screen guidance.

New style list in the sidebar

The sidebar can now display a style list, making it easier to inspect available styles and choose what to suppress.

  • Added styles as a sidebar mode.
  • Added completion support for sidebar mode styles.
  • Added a helpful message when no ANSI escape sequences are present.

Fixes and improvements

  • Fixed rendering of tabs and special characters in the status line.
  • Fixed sidebar current-item rendering so the active item style is applied more consistently.
  • Fixed race conditions in follow-state handling and stabilized related tests.
  • Expanded the document cache size.
  • Switched clipboard handling to golang.design/x/clipboard for more consistent behavior.

New Contributors

Full Changelog: v0.53.0...v0.54.0

v0.53.0

Choose a tag to compare

@noborus noborus released this 25 May 06:37
5abf424

What's Changed

  • Add support for ctrl+a and ctrl+e in input.go by @noborus in #1056
  • Generating YAML files from code, in order to improve the maintainability of the configuration. by @noborus in #1066
  • feat: add generate-config output for default/less templates by @noborus in #1067
  • fix: show line numbers in filtered documents by @noborus in #1068
  • fix(filter): apply filter state before async dispatch by @noborus in #1074
  • Upgrade tcell/v3 to v3.4.0 by @noborus in #1075
  • Stop displaying messages that could cause a deadlock by @noborus in #1077
  • Enhance incremental input for search, filter, and multicolor features by @noborus in #1079

Full Changelog: v0.52.0...v0.53.0

v0.52.0

Choose a tag to compare

@noborus noborus released this 21 Apr 02:15
c1e6c81

v0.52.0

New Features

Word Wrap Mode

Word wrap has been added, and the --wrap / -w option now accepts a string instead of a boolean.

  • -w or -w=char (default): Wrap lines at screen width, breaking anywhere (character-based).
  • -w=word: Wrap lines at screen width, breaking at word boundaries.
  • -w=none: Disable line wrapping.

Toggle word wrap with the new default key alt+w.

⚠ Breaking change: The configuration key WrapMode: true must be updated to Wrap: "character".

View Mode Sidebar

When pressing p to enter view mode selection, the sidebar now opens automatically and displays the list of available view modes with index numbers. You can select a mode either by name or by its number (e.g., entering 1 selects the second mode in the list).

Notifications

ov now sends desktop notifications via Screen.ShowNotification() when execNotify is triggered. This is supported in terminals that implement the Kitty keyboard protocol notification feature.


Changes

  • tcell v2 → v3: Upgraded the underlying terminal library to tcell v3.
  • Go 1.25.0: Updated minimum Go version to 1.25.0.
  • Color name "grey" / "slategrey" unified to "gray" / "slategray" in config and defaults.
  • ClipboardMethod: Added "auto" (new default behavior — automatically selects "OSC52" or "system" based on terminal support). The old "default" value is replaced by "system".
  • Key binding display is now normalized (consistent casing for modifier keys).
  • New converter type wordwrap available via --converter wordwrap.
  • Sidebar restores its previous mode automatically after input is confirmed or canceled.
  • Screen.PollEvent() replaced with <-Screen.EventQ() (tcell v3 API).
  • sort.Strings / sort.Ints replaced with slices.Sorted + maps.Keys.

Bug Fixes

  • Text selection is now reset when calling goLine(), goLineNumber(), moveBeginLeft(), or moveEndRight().
  • Text selection is now reset when disabling mouse support.
  • Fixed boundary check in nextMark() and prevMark() to prevent out-of-range access.
  • store.GetChunkLine now uses RLock instead of Lock (read-only operation).
  • Fixed a bug where maxWidths was incorrectly overwritten for shrunk columns in align mode.
  • Fixed shrunk column widths not being applied before comparison in setAlignConverter.

Full Changelog: v0.51.1...v0.52.0

v0.51.1

Choose a tag to compare

@github-actions github-actions released this 20 Feb 03:46

What's Changed

Enhanced Mark Feature (#948, #972)

  • Mark navigation has been improved: jumping to a mark by absolute position or by relative movement (+n/-n) is now supported.
  • Mark number input mode (default key: ,) allows direct or relative mark selection.
  • "Mark by pattern" (default key: *) enables marking all lines matching a pattern at once.
  • The mark list is now available in the sidebar for easier navigation and selection.

Thanks to @btakita.

Sidebar Feature Added

  • A new sidebar can be toggled to display:
    • Help (Alt+h)
    • Mark list (Alt+m)
    • Document list (Alt+l)
    • Section list (Alt+u)
  • Sidebar width and initial mode are configurable (via CLI or config file).
  • Sidebar scrolling is independent from the main content, with dedicated key bindings.
  • Sidebar content updates dynamically according to the current mode.

Other Changes

  • Fixed: The output width when quitting with -F (or --quit-if-one-screen) is now adjusted to the actual terminal size instead of being fixed at 80 columns. (#957) Thanks to @MinekPo1 .
  • Fixed: Resolved an issue where output could not be produced when using follow mode in combination with the -X option. (#978) Thanks to @HippoPerson .

Full Changelog: v0.50.2...v0.51.0

v0.50.2

Choose a tag to compare

@noborus noborus released this 06 Dec 03:57
73ee730

Main Changes

  • Update tcell to v2.13.2 (Buf Fix Release)
    • Upgraded the tcell dependency to v2.13.2.
    • This fixes a problem that affected some applications on Windows (wrong terminal dimensions due to an off-by-one error).
    • See: tcell v2.13.2 release notes
  • v0.50.1 was skipped due to a mistake in the release tag

What's Changed

  • GetContent has been deprecated and changed to Get by @noborus in #924
  • Update tcell v2.13.1 to v2.13.2 by @noborus in #925
  • Add string type to prepare for replacing SetContent with Put by @noborus in #926
    #927

Full Changelog: v0.50.1...v0.50.2

v0.50.1-pre2

Choose a tag to compare

@noborus noborus released this 06 Dec 02:46
751e38c

pre2 test release

v0.50.1-pre1

Choose a tag to compare

@noborus noborus released this 06 Dec 02:04
751e38c

Main Changes

  • Update tcell to v2.13.2 (Buf Fix Release)
    • Upgraded the tcell dependency to v2.13.2.
    • This fixes a problem that affected some applications on Windows (wrong terminal dimensions due to an off-by-one error).
    • See: tcell v2.13.2 release notes

What's Changed

  • README.md: Update for v0.50.0 by @noborus in #922
  • Grammar correction for v0.50.0 update by @noborus in #923
  • GetContent has been deprecated and changed to Get by @noborus in #924
  • Update tcell v2.13.1 to v2.13.2 by @noborus in #925
  • Add string type to prepare for replacing SetContent with Put by @noborus in #926
  • Replace TAP_GITHUB_TOKEN with APP_TOKEN for GoReleaser and workflow by @noborus in #927

Full Changelog: v0.50.0...v0.50.1-pre1

v0.50.1

Choose a tag to compare

@noborus noborus released this 06 Dec 03:32

Main Changes

  • Update tcell to v2.13.2 (Buf Fix Release)
    • Upgraded the tcell dependency to v2.13.2.
    • This fixes a problem that affected some applications on Windows (wrong terminal dimensions due to an off-by-one error).
    • See: tcell v2.13.2 release notes

What's Changed

  • GetContent has been deprecated and changed to Get by @noborus in #924
  • Update tcell v2.13.1 to v2.13.2 by @noborus in #925
  • Add string type to prepare for replacing SetContent with Put by @noborus in #926

Full Changelog: v0.50.0...v0.50.1

v0.50.0

Choose a tag to compare

@noborus noborus released this 02 Dec 00:23
61e3966

⚠️ Important Changes & Notes

  • Key input handling has changed significantly on terminals supporting tcell's CSI u.
    • On CSI u compatible terminals, keys such as Ctrl+h, Backspace, and Enter are now strictly distinguished.
    • You can now assign different actions to these keys.
    • If you want the same action for multiple keys, please assign them explicitly in your config file.
    • Some keys may be intercepted by your OS or editors like VS Code terminal, so we recommend assigning multiple keybindings or customizing as needed.
  • Character width calculation has switched from runewidth to uniseg.
    • As a result, ambiguous-width characters are now treated as width 1 by default.
    • If you want ambiguous-width characters to be treated as width 2 (East Asian width), set the environment variable RUNEWIDTH_EASTASIAN=1.

✨ Main Changes

⌨️ Keybindings & Input

  • Removed all ctrl+shift keybindings and replaced them with alternatives like alt+arrow keys.
  • Unified Alt+uppercase keybindings to Alt+lowercase.
  • All key event matching is now case-insensitive and unified.
  • Removed fallback logic that treated multiple keys as the same action.
  • Updated config files (ov.yaml, ov-less.yaml) to reflect new keybindings.
  • Improved cursor movement, deletion, and paste behavior in input fields.

🖥️ Display & UI

  • Switched character width calculation from runewidth to uniseg, making display width match your terminal more accurately.
  • If display width mismatches still occur, ov now uses Sync as needed to prevent screen corruption.

🖱️ Mouse, Selection & Clipboard

  • Added anchor-and-extend selection with Alt+click.
  • Right-click now copies the selected range.
  • Clipboard operations now have a timeout to prevent UI freezes.

📦 Library Updates

  • tcell v2.9.0 → v2.13.1
  • cbind v0.1.6 → v0.1.7
  • tcellansi v0.2.0 → v0.3.0

Full Changelog: v0.45.1...v0.50.0