Repository navigation
tail-f_plot v0.3.2
A settings window for every option at runtime, an icon toolbar, and a reader that opens files like tail: a huge file opens at once and memory stays bounded.
Settings window
The new gear button on the toolbar (right of the legend-position button) opens a window that changes any command-line option while the plot keeps running.
- Display: X axis label and unit, Y unit and per-stack Y units, colors, line width, marker radius,
--max-points,--max-x-range, repaint interval, log Y, absolute X. - Files: the file groups in command-line order (add a copy, remove, reorder) and a form per file — path with Browse (the file does not have to exist yet), header and data rows, X column and its scale, delimiter, quote, fixed widths, merged delimiters, epoch column — plus a sheet of Y columns, each with a legend name and a stack. Columns can be picked by name from the file's header row, which is read in the background and refreshed while it is shown.
- Window:
--monitor(every monitor listed with its resolution) and--bounds. - Command line: the line that starts exactly these settings (the running executable, absolute file paths) with Copy. When the line holds
%, a second button copies it for a.cmdfile, where every%must be doubled.
How it applies:
- Every field is checked as you type. A field with a problem turns red with the reason, and so do its tab and its entry in the file list. OK is available while every field is valid; Apply only after a change.
- Applying goes through the command line: the window writes its settings as arguments and parses them like the real ones, so what is applied is exactly what the copied line starts.
- Files are read again only when what is read changes (file groups,
--max-points,--absolute-x). Everything else applies in place, and hidden series stay hidden as long as the series are the same. - The window is modal: owned by the main window and centered on its monitor. The main window keeps updating but takes no input until the settings window closes. Esc cancels (an open drop-down list closes first).
- Every label and field has a tooltip with its meaning and its command-line option.
Toolbar icons
The toolbar's text buttons and checkboxes are now icon buttons: Home (fit all), Zoom In, Zoom Out, Auto-X, Auto-Y, the Y scale, and Settings.
- Vector icons drawn every frame: sharp at any DPI, and they follow a live switch of the OS light/dark theme.
- Zoom In, Zoom Out, Auto-X and Auto-Y are filled while on. The Y scale button shows the current scale (linear or log) and switches to the other one on click.
- Hover a button for its tooltip.
A lone auto axis fits what is on screen
With both Auto-X and Auto-Y on (the default), nothing changes. With only one of them on, the auto axis now fits only the lines drawn inside the range the other, manual axis shows. Zoom Y to 3–5 K during a cool-down from 300 K and turn Auto-X on: the time axis trims to where the trace is inside that band instead of spanning the hours above it, and keeps growing as new rows land in the band. Auto-Y with a manual X works the same way.
- A line crossing the band counts over the part inside it, even when both of its points lie outside.
- Hidden series (legend click) no longer stretch the fit.
- When nothing is drawn inside the band, the axis keeps its last range.
- Turning Auto off before the first data no longer lets each stacked sub-plot fit itself, which made the linked X axes drift apart.
Files are read like tail
The file used to be held open, read from the top, and every row stayed in memory. Now:
- Only the newest
--max-pointsrows are read and kept, on the first load and for every appended burst. A 62 MB / 3 M-row file opened in 1.1 s instead of 6.5 s (debug build), memory stays bounded however long the plot runs, and what is drawn is unchanged. - The file is not held open between reads, so a logger can delete and re-create it.
- A file that is replaced, truncated or rewritten in place is detected (file identity, size, head/tail fingerprints) and read again from scratch. A file that disappears keeps its rows on screen until it comes back.
- File-change notifications now wake the window as soon as the file changes; polling stays as the fallback.
- Text that is not UTF-8 (e.g. a CP949 comment column) no longer drops the row, and a UTF-8 BOM is skipped.
- With
--fixed-width, leading spaces are kept, so right-aligned columns no longer shift.
--oneshot: render once, save a PNG
tail-f_plot.exe data.csv --y-cols 2 --oneshot view.png
For automated checks of the rendered view. The window waits until every file is read and the layout is stable, saves a screenshot, prints SCREENSHOT: <absolute path> and exits.
- Exit codes:
0= captured once the view settled,3= captured after a 15 s settle timeout (e.g. a file that never appeared),1= the PNG could not be written,4= no screenshot at all. - The window opens without taking focus and ignores the mouse, so a cursor over it cannot leave a crosshair or tooltip in the image.
--oneshot-settings <TAB>also saves the settings window on that tab (display,files,window,command-line) as<PNG stem>-settings.png.
Other
--monitor/--boundsnow place this instance's own window. The window used to be found by its title, which could move another instance showing the same files.- A window placed on a monitor with another DPI now ends up at the requested position and size.
- Hangul legend names and file paths render (Malgun Gothic fallback).
- The legend no longer shows empty parentheses after a value without a unit.
--colorswith no usable entry falls back to the default palette instead of crashing.- New resets for an option inherited from an earlier file group:
--y-names ""(back to default names) and--epochtime-proportion 0(back to following--x-proportion).--fixed-width 0now means delimiter mode in the first group too. - Non-finite Y values break the line instead of being drawn.
Compatibility notes
- With only one of Auto-X / Auto-Y on, the auto axis fits what is drawn inside the other axis' range, not every row. With both on (the default) the view is unchanged.
--y-names ""now means default names; it used to give one series an empty name.- Lines must end with LF or CRLF. A bare CR does not end a line.
- With
--fixed-width, columns are counted from the very start of the line; leading spaces are no longer trimmed first. - Rows older than the newest
--max-pointsare no longer kept in memory. They were never drawn, so the plot looks the same.
Win32 Signed Thumbprint
1dddd32ca1ec85b6e676c66b8ceaa626ec905908