lnav v0.14.1
Features:
- Added the
:reload-viewcommand, bound toF5/⌘-R,
that re-runs the operation that populated the current
view.
In the DB view, this re-executes the last SQL query; in
the TIMELINE view, it rebuilds the index. Views that
don't have a meaningful reload report an error. - The DB view now shows a status bar above the bottom
status bar with the SQL query that populated the view,
the relative time when it was run, and how long it took.
A reload icon on the left side of the bar can be clicked
to re-run the query. For queries that read from log-backed
tables, the status bar also calls out whether the results
are "on current log data" or "on old log data" relative to
what lnav is currently indexing. The same information is
exposed via the newlnav_views.view_detailscolumn. - For terminals that support the Kitty Keyboard
protocol, the following hotkeys are now supported
in the prompt:⌘-Cto copy the current selection to the
clipboard.⌘-Ato select all text.⌘-Xto cut the current selection to the
clipboard.⌘-Zto undo the last change.
- The multi-line prompt can now be resized with the
keyboard:ALT-=grows the prompt by one line and
ALT--shrinks it by one line. This complements
the existing click-and-drag resize on the prompt's
status bar. - Additional readline-style key bindings in the
prompt (issue #1676):ALT-f/ALT-bmove forward/backward by word.ALT-dcuts to the end of the next word.ALT-BACKSPACEis an alias forCTRL-W.ALT-l/ALT-ulower- or upper-case the
next word.ALT-ccapitalizes the next word.CTRL-handCTRL-dare aliases for
BACKSPACE and DELETE.CTRL-ttransposes the two characters before
the cursor.
- In the log message details (opened by pressing
p),
aFile:row has been added that lists the file and
line number the log message is from. Also, for JSON
logs, you can focus on theJSON fields:row and
presscto copy the raw log message to the
clipboard. - The
measure_with_unitscollator now recognizes
(KiB, MiB, ...). - Added
disfavorstoexternal-editorconfiguration
to express file names that the editor is not interested
in handling. - The
lnav_views.view_detailscolumn is now populated
for every time-based view (log, histogram, spectro,
timeline, db) with a JSONzoom-levelfield reflecting
the current:zoom-tosetting. - The
:zoom-tocommand (and thez/Zhotkeys) now
affects only the currently focused view; previously,
zooming in either the histogram or the spectrogram
view would change both views' zoom level in lockstep.
Each view (log, histogram, spectro, timeline, db) now
has its own independent zoom level. - The
:zoom-tocommand now accepts+and-as
shortcuts to step in or out by one level from the
current view's zoom (the same behavior as thez/Z
hotkeys). - SQL statements can now use
$zoom_levelto refer to
the current zoom level in the DB view. Pressing
z/Zin the DB view will now rerun the last query
with the new zoom value. Thestats.histPRQL
function now uses$zoom_levelas the default value
for thesliceparameter. - A
stats.timeseriesPRQL function has been added to
make it easier to perform an aggregation over buckets
of time.
Breaking changes:
- The
humanize_file_size()SQLite function now
uses 1,000 for the base instead of 1,024.
Bug Fixes:
- A PRQL query can now start with
letin interactive
mode. - Fix a bug in file loading that could cause a short
read and crash in some situations. - Fix a lockup when viewing a file that contained log
messages and lots of binary data. - Update Regex101 import functionality to handle a
change in their API response. - More hardening for some diabolical inputs:
- Unsupported escape-sequences were ignored before,
but they are displayed now. - Checks for archives with file paths that could
escape containment.
- Unsupported escape-sequences were ignored before,
- The duplicate file check is less aggressive now.
Previously, if the first lines of logfiles matched
exactly, they were considered duplicates and the
smallest/oldest was hidden. Now, the duplication
check is only done on files that contain at least
100 lines and those lines are checked to see if
they have the same timestamp/file-offset. - In the TIMELINE view, tags whose names start or end
with "stop", "stopped", "end", "ended", "finish", or
"finished" (case-insensitive) are now paired with
matching "start", "started", or "begin" tags that
share the same base name (for example,#start-foo
is paired with#stop-foo). The start tag's row
spans from the start time to the stop time, and the
stop tag is no longer shown as a separate row. Tags
without a base name (such as a bare#start) are
not paired.