Skip to content

Releases

LeanRows v0.5.1

Choose a tag to compare

@github-actions github-actions released this 07 Nov 15:29
e9db8b0

LeanRows 0.5.1

LeanRows 0.5.1 makes zooming fast and gives the lists thin scroll bars.

Everything from 0.5.0 works as before.

Zoom

  • A zoom step now changes only the rows and their column titles and paints
    them once. In 0.5.0 a step repainted every visible row once per column
    and then the whole window.
  • A fast spin of Ctrl and the mouse wheel is taken as one change, at the
    level the spin ends on.
  • Column widths no longer drift when you zoom in and out. A column you
    widened by hand keeps its width, scaled with the zoom.
  • A file opened while zoomed gets columns sized for that zoom.

Scroll bars

  • The rows and the settings shortcut list have thin scroll bars in the
    theme's colours, without arrow buttons, as in LeanMark. A thumb grows a
    little under the mouse.
  • Dragging the thumb, clicking or holding the track, the wheel, the keyboard
    and touch scroll as before.
  • With Windows high contrast on, the system scroll bars and colours come back.

Settings

  • Every shortcut in the settings panel fits its width. A long action wraps
    onto a second line instead of being cut off, and the list has no sideways
    scroll bar.

Measured

On the maintainer's laptop, 0.5.0 and 0.5.1 built and measured the same way,
in a 1400 x 900 window:

Measure 0.5.0 0.5.1
Zoom step, six-column 2 MB file, median / p90 285 / 379 ms 31 / 50 ms
Zoom step, 10M-row two-column file, median / p90 115 / 155 ms 21 / 24 ms
8 Ctrl+wheel notches at once, until painted, 2 MB file 1,234 ms 22.5 ms
Ctrl+Plus held for 8 repeats, wait after the last, 2 MB file 1,038 ms 1.3 ms
Page Down, 10M-row file 20.4 ms (20.0 to 21.7) 21.0 ms (21.0 to 21.2)
One wheel notch, 10M-row file 2.45 ms (2.40 to 2.60) 2.07 ms (2.00 to 2.22)
Open the 10M-row file until the row count settles 3,957 ms 3,966 ms
Start to input idle, no file 285 ms 281 ms
Start to input idle, the 10M-row file 428 ms 425 ms
Peak working set, the 10M-row file open 18.0 MiB 18.0 MiB
Peak private bytes, the 10M-row file open 3.3 MiB 3.3 MiB
Executable size, local build 986,112 bytes 1,024,512 bytes

Zoom steps are timed until the rows have painted. Page Down and the wheel are
medians of 300 presses or notches in each of 3 alternating runs, with the
range of the runs. Page Down is 0.6 ms slower: the thin bars repaint with the
rows. Start numbers are medians of 7 starts. The zoom numbers on the 10M-row
file are from a second run; in the first, single steps took up to 0.7 s on
0.5.0 and 1.1 s on 0.5.1.

Known gaps

  • A zoom step is not under 16 ms: most of it is the list painting its rows,
    which costs about as much as a Page Down. On a file with 64 columns a step
    takes about 150 ms, because the list asks for every column of every
    visible row.
  • The column titles' text does not zoom, although the title row grows.
  • The rows can show an empty sideways scroll bar when the columns' total
    width falls within 7 pixels of the window's width.
  • High contrast, a change of display scaling and touch were not tried on
    this release; they need system settings changed or a touch screen.
  • Sorting and Find do not work on .xlsx workbooks yet. Sorting says so
    instead of sorting.
  • The installer and the Store package do not register .xlsx.
  • The full local QA run with a receipt, as recorded for 0.2.0, has not been
    run for 0.5.1.

LeanRows v0.5.0

Choose a tag to compare

@github-actions github-actions released this 06 Nov 14:00
830c7ca

LeanRows 0.5.0

LeanRows 0.5.0 looks and works like LeanMark 0.6.0, and sorts a large file
several times faster.

Everything from 0.4.0 works as before.

Themes

  • Five themes, as in LeanMark: System, Light, Dark, Dim and Dusk. Dim and
    Dusk are softer dark themes, with LeanMark's colours.
  • The theme button shows a coloured dot for the current theme. Its tooltip
    names the theme, for example "System (Dark)", and gives the shortcut,
    Ctrl+Shift+T.
  • With Windows high contrast on, every theme uses the system colours.

Settings and shortcuts

  • The settings button, next to Open, opens a panel on the right with the
    theme, the zoom and the list of every keyboard shortcut and mouse action,
    sorting included. Ctrl+/ or F1 opens it, and Escape closes it.

Zoom

  • Ctrl+Plus, Ctrl+Minus and Ctrl+0, or Ctrl with the mouse wheel,
    zoom the rows from 50% to 300% in LeanMark's steps. Only the rows and their
    column titles zoom. The zoom is remembered.

Toolbar and tabs

  • The toolbar and tabs follow LeanMark: plain buttons that show a hover, a
    bordered Open button, a rounded search field with a focus ring, the "LR"
    wordmark, and tabs without separators whose close mark shows on the
    selected or hovered tab.

Faster sorting

Sorting keeps its limits: 16 MiB of memory, temporary files only in
%LOCALAPPDATA%\LeanRows\sort-cache, and the free-space check before it
starts.

  • It merges up to 64 sorted runs at a time instead of two, so any file it can
    sort needs at most two passes over its temporary data.
  • It writes the map from rows to their sorted places in sequence, instead of
    a seek and a small write for every row.
  • It decides most comparisons from the first 32 bytes of each value without
    reading the values again.

Measured

On one windows-2022 GitHub Actions runner, 0.4.0 and 0.5.0 built and measured
the same way (run 42051703441),
with a 10,000,000-row, 250,000,000-byte CSV sorted by its first column in text
order:

Measure 0.4.0 0.5.0
Sort, core engine 102.1 s 16.1 s
Sort, the app's worker not measured 14.1 s
Sort, memory charged to its 16 MiB limit 2.6 MiB 6.6 MiB
Sort, temporary disk at its peak 2,441 MiB 2,441 MiB
Start to input idle, no file 59 ms 62 ms
Start to input idle, the CSV open 91 ms 104 ms
Peak working set, the CSV open 16.2 MiB 16.3 MiB
Executable size 918,528 bytes 986,624 bytes

The sort uses 4 MiB more memory while it merges, for the 64 read pages. The
earlier maintainer's-laptop figure of about 6 minutes for 10 million rows was
measured in the app; this runner is faster, so compare the two columns, not
the laptop.

Known gaps

  • Sorting and Find do not work on .xlsx workbooks yet. Sorting says so
    instead of sorting.
  • A number with a very large exponent, such as 1e999999999999999999999, makes
    a numeric sort fail with a message instead of placing it.
  • The installer and the Store package do not register .xlsx.
  • A file opened while zoomed starts with the default column widths.
  • Fonts, rounded corners and circles cannot be drawn exactly as LeanMark's
    browser draws them; Windows uses its own font and draws without smoothing.
  • The full local QA run with a receipt, as recorded for 0.2.0, has not been
    run for 0.5.0.

LeanRows v0.4.0

Choose a tag to compare

@github-actions github-actions released this 02 Nov 20:43
f62a7d6

LeanRows 0.4.0

LeanRows 0.4.0 sorts a whole file by any column. Sorting was contributed by
@w3bgr3p in
#9. Thank you.

Everything from 0.3.0 works as before. Sorting works on CSV, TSV, JSONL,
NDJSON, log, and text files, not yet on .xlsx workbooks.

Column sorting

  • Click a column header to sort the whole file ascending. Click it again to
    reverse the order.
  • Right-click a header to choose text or numeric order. The overflow menu has
    the same commands for the last sorted column.
  • Click the Row header, or choose Restore source order, to go back to the
    file's own order. Cancel sort stops a sort that is still running and keeps
    the view you had.
  • Text order compares the full value, case sensitively, byte by byte. Numeric
    order compares integers, decimals, and scientific notation exactly, without
    rounding. In numeric order, numbers come first, then text, then empty
    values, in both directions. Rows with equal values keep their original
    order.
  • Row numbers, Find, and Go to row still use the file's original row numbers,
    so a row keeps its number after sorting.
  • The file is never changed and no database is created.

Memory and disk

Sorting is limited to 16 MiB of memory. Larger files are sorted in passes
through temporary files under %LOCALAPPDATA%\LeanRows\sort-cache, which are
removed when the tab is closed or the file reloaded, and on the next start
after a crash.

A sort needs about 256 bytes of temporary disk space per row at its peak, about
2.4 GB for 10 million rows. The limit is 8 GiB, so files above roughly 33
million rows cannot be sorted. LeanRows checks the space before it starts and
says how much it needs if the drive, or the limit, is too small.

One sort runs at a time. A sort started in another tab waits for it to finish.

Measured

On a Windows 11 laptop (16 GB RAM), with a 52.5 MB CSV of 1,000,000 shuffled
rows and three columns, sorted by the first column in text order, three runs
with the release build of this version:

Step Result
Peak working set after opening the file 18.0 to 18.9 MiB
Peak working set while sorting 20.6 MiB
Sort time 27.5 to 27.8 s

Before the final changes, on the same machine, a 10,000,000-row file opened at
about 18 MiB, peaked at about 21 MiB while sorting, and took 344 to 356 s to
sort. Opening a file uses the same memory as 0.3.0.

The executable is 918,528 bytes, up from 755,200 in 0.3.0.

Known gaps

  • Sorting and Find do not work on .xlsx workbooks yet. Sorting says so
    instead of sorting.
  • Sorting a large file is slow: about 6 minutes for 10 million rows. A faster
    merge is planned.
  • A number with a very large exponent, such as 1e999999999999999999999, makes
    a numeric sort fail with a message instead of placing it.
  • The installer and the Store package do not register .xlsx.
  • The full local QA run with a receipt, as recorded for 0.2.0, has not been run
    for 0.4.0.

LeanRows v0.3.0

Choose a tag to compare

@github-actions github-actions released this 30 Oct 01:44
eebaca7

LeanRows 0.3.0

LeanRows 0.3.0 opens Excel .xlsx workbooks, read-only, one worksheet at a
time. CSV, TSV, JSONL, NDJSON, log, and text files work as in 0.2.0.

Excel workbooks

  • LeanRows shows the values the workbook stores. Formulas are shown as their
    cached results and are never evaluated. Macros are not run and external
    links are not followed.
  • Columns are titled A, B, C, as in the sheet. Rows the sheet leaves out are
    shown empty, so row numbers match the sheet.
  • The first visible worksheet opens. Next sheet and Previous sheet in the
    overflow menu move between visible worksheets, and the status line shows,
    for example, Sheet 2 of 3: Name. Hidden sheets and chart sheets are not
    offered.
  • Dates and times with a date or time format are shown as 2026-01-01,
    2026-01-01 06:30:15, or 06:30:00. Other numbers are shown as stored, so
    12.5% shows as 0.125.
  • The full rules, with an example for each cell type, are in
    XLSX cell text.

A workbook is refused with a message when it is beyond one of these limits:

Limit Value
Rows 1,048,576
Columns 16,384
One ZIP entry, unpacked 1 GiB
Unpacked to packed size of one entry, past its first MiB 200 to 1
Shared-string text in total 256 MiB

Truncated files, files with a DOCTYPE, and workbooks whose sheet points
outside the file are also refused.

Measured

On Linux (Intel Xeon 2.1 GHz, 4 vCPU), six runs with a 120,001-row workbook of
4,202,904 bytes written by XlsxWriter:

Step Result
Open and show the first 128 rows 42 to 58 ms
Scan the whole sheet 433 to 503 ms
128 rows from the middle, after the scan 10 to 12 ms
Peak resident memory of the measuring process about 5.6 MiB

The same data as CSV scans in 28 to 30 ms on that machine, so a workbook scan
is about 15 times slower. These are not Windows numbers. Working set on
Windows with a workbook open has not been measured yet.

Known gaps

  • Find does not work on .xlsx files yet.
  • The installer and the Store package do not register .xlsx. Open a workbook
    with the Open dialog, by dropping it on the window, or from the command line.
  • Switching sheets has no keyboard shortcut.
  • The shared-string table is kept in memory, up to 256 MiB of text, so a very
    large workbook can use much more memory than a CSV file of the same size.
  • .xlsm, .xlsb, .xls, password-protected workbooks, and ZIP64 archives
    are refused.
  • _xHHHH_ escapes in text are shown as stored, not decoded.
  • No test workbook was written by Excel itself. The test files come from
    LibreOffice, openpyxl, and XlsxWriter.

Behavior retained

LeanRows remains a Windows x64, read-only viewer. It does not load a
whole-file object model, alter the source, send telemetry, or retrieve network
content. Editing, saving, export, sorting, filtering, regular expressions, SQL,
archives, and tail/follow mode remain outside the 0.3 boundary.

The per-user installer continues to register LeanRows in Open with for
.csv, .tsv, .jsonl, .ndjson, and .log, with the same safeguards as
0.2.0.

Download

This release provides two attachments:

LeanRows-v0.3.0-windows-x64-unsigned.zip
LeanRows-v0.3.0-windows-x64-unsigned.sha256

LeanRows 0.3.0 is not Authenticode-signed. Windows may display a warning for a
downloaded executable. Verify the ZIP against the .sha256 attachment from
this same release:

Get-FileHash .\LeanRows-v0.3.0-windows-x64-unsigned.zip -Algorithm SHA256

After extraction, validate and run the per-user installer:

.\install.ps1 -ValidateOnly
.\install.ps1

Verification

Windows CI ran formatting, the workspace tests, strict Clippy, the release
build, the native shell smoke, the reduced QA run (which now opens a workbook
through the document smoke), and packaging. The tagged release workflow
rebuilds and checks the release commit and its published assets.

The full local QA run with a receipt, as recorded for 0.2.0, has not been run
for 0.3.0.

LeanRows is available under the MIT License. The complete change summary is in
the changelog.
Security-sensitive findings should use
private vulnerability reporting.

LeanRows v0.2.0

Choose a tag to compare

@github-actions github-actions released this 24 Sep 12:18

LeanRows 0.2.0

LeanRows 0.2.0 opens every file in one window, each in its own tab, and uses
less memory when several files are open. It also fixes white blocks that could
appear in the top bar. The bounded, read-only document engine and installer
safeguards are unchanged.

One window, one tab per file

  • Opening a file from Explorer or the command line while LeanRows is running
    adds a tab to the running window instead of starting another process.
    Opening a file that is already open selects its tab. Starting LeanRows again
    brings the running window forward.
  • The tab strip appears when two or more files are open. Click a tab to show
    it. Click its close mark or middle-click it to close it.
  • Ctrl+Tab and Ctrl+Shift+Tab (or Ctrl+PgDn and Ctrl+PgUp) move between
    tabs. Ctrl+1 to Ctrl+8 pick a tab by position and Ctrl+9 picks the last
    one. Ctrl+W or Ctrl+F4 closes the current tab.
  • Each tab keeps its own scroll position, selected row, column widths, and
    Find state. A tab that is not showing keeps indexing in the background.
  • The Open dialog accepts several files, and several supported files can be
    dropped at once. At most 32 files can be open at once.
  • An installed copy and a portable copy started from a different folder keep
    separate windows.

Memory

Each extra LeanRows window cost about 3 MiB of private memory and 17.5 MiB of
working set. An extra tab costs about 0.14 MiB of private memory. With the QA
fixtures, five open files measured:

0.1.3, five windows 0.2.0, five tabs
Processes 5 1
Private memory 14.7 MiB 3.8 MiB
Working set 88.1 MiB 18.5 MiB
Working set while minimized 88.1 MiB 0.8 MiB

With one file open, the two versions measure within 0.1 MiB of each other. On
a generated 20,000,001-row, 1,586,666,734-byte CSV indexed to completion, peak
working set was 18.10 to 18.12 MiB for 0.1.3 and 18.15 to 18.18 MiB for 0.2.0
across two runs each.

Minimizing the window now asks Windows to page out the process, and a window
with no open file starts no background thread.

Fixed

In the Dark appearance, the file name, file details, and Match case controls
could show as white blocks. Their background brush was returned through a
conversion that failed for some Windows brush handles, so the controls were
left unpainted. The problem dated from the 0.1.2 redesign and appeared in about
half of launches. The native shell smoke now samples those three backgrounds.

Behavior retained

LeanRows remains a Windows x64, read-only viewer for local CSV, TSV, JSONL,
NDJSON, log, and text files. It does not load a whole-file object model, alter
the source, send telemetry, or retrieve network content. Editing, saving,
export, sorting, filtering, regular expressions, SQL, archives, and tail/follow
mode remain outside the 0.2 boundary.

The per-user installer continues to register LeanRows in Open with for
.csv, .tsv, .jsonl, .ndjson, and .log. It changes a direct per-user
default only when no protected Explorer UserChoice exists, preserves later
user choices, and does not register or change .txt.

Download

This release provides two attachments:

LeanRows-v0.2.0-windows-x64-unsigned.zip
LeanRows-v0.2.0-windows-x64-unsigned.sha256

LeanRows 0.2.0 is not Authenticode-signed. Windows may display a warning for a
downloaded executable. Verify the ZIP against the .sha256 attachment from
this same release:

Get-FileHash .\LeanRows-v0.2.0-windows-x64-unsigned.zip -Algorithm SHA256

After extraction, validate and run the per-user installer:

.\install.ps1 -ValidateOnly
.\install.ps1

Installation requires no administrator privileges. LeanRows is added to the
current user's Start menu and Installed Apps list.

Local qualification

The native shell smoke now lays the shell out for two files and checks the
rendered tab strip, samples the file name, file details, and Match case
backgrounds on first presentation, and checks that a second ordinary launch
hands its file to the running window and exits.

Formatting, 158/158 workspace all-target locked tests, strict Clippy, release
app and spike builds, native shell and document smokes, release engineering,
and the full non-skipped local QA run passed. The receipt at
artifacts/qa/v0.2.0-final-frozen-pass/qa-receipt.json passed 25/25 checks
with 0 failures in 53,651 ms.

The frozen executable is 618,496 bytes with SHA-256
D0D24FCA9730BE6C7A0E1385AAB5CB6F08C8D495A595FC32E4066F583BC88A8D.
The deterministic unsigned ZIP has SHA-256
912AB4ACF7BCBEC30EBAA593CEA19ED8C07DA343B3A2112A71BD1E88E556504E.
Cold and document-open process-tree observations, 1 and 10 GiB sparse
fixtures, 24/24 deterministic seeks, polling-bounded network observation, and
aggregate cleanup passed within the recorded local scope.

A live installer cycle upgraded an installed pre-release build of main and
passed install, identical-state reinstall, uninstall, and final install. It
restored four direct defaults to absent during uninstall, then left four
direct defaults and five Open with registrations pointing to the frozen
v0.2.0 installation. The protected Notepad .log choice and .txt remained
unchanged. LeanRows intentionally creates no App Paths key.

The tagged release workflow independently verifies the release commit, rebuild,
quality gates, package checksum, and published assets. The local receipt above
records the frozen pre-tag qualification; it is not a substitute for that
tagged proof.

LeanRows is available under the MIT License. The complete change summary is in
the changelog.
Security-sensitive findings should use
private vulnerability reporting.

LeanRows v0.1.3

Choose a tag to compare

@github-actions github-actions released this 10 Aug 04:24

LeanRows 0.1.3

LeanRows 0.1.3 corrects the appearance and progress behavior of the redesigned
native shell introduced in 0.1.2. The bounded, read-only document engine and
installer safeguards are unchanged.

Appearance correction

  • System appearance now follows the active Windows app theme instead of
    resolving unconditionally to Light.
  • The appearance button cycles through System, Light, Dark, and back to System.
    An explicit Dark selection is retained across application restarts.
  • Native child controls use documented Windows painting and theme APIs so the
    top bar, search controls, header, grid, status area, and progress rule follow
    the selected appearance consistently.
  • Windows high contrast remains authoritative and replaces application colors
    with the applicable system colors.
  • Native control roles, keyboard behavior, focus indication, and accessibility
    semantics remain intact.

Progress alignment

The indexing indicator remains a native PROGRESS_CLASS control for its
control identity and accessibility behavior. LeanRows now paints it as a flat,
two-DIP rule at y=55, immediately below the 56-DIP top bar. The accent prefix
shows completed progress against the current surface and border colors. The
control does not use marquee animation.

This geometry and visual treatment align the indicator with LeanMark without
introducing a browser renderer or replacing the native control contract.

Behavior retained

LeanRows remains a Windows x64, read-only viewer for local CSV, TSV, JSONL,
NDJSON, log, and text files. It does not load a whole-file object model, alter
the source, send telemetry, or retrieve network content. Editing, saving,
export, sorting, filtering, regular expressions, SQL, archives, and tail/follow
mode remain outside the 0.1 boundary.

The per-user installer continues to register LeanRows in Open with for
.csv, .tsv, .jsonl, .ndjson, and .log. It changes a direct per-user
default only when no protected Explorer UserChoice exists, preserves later
user choices, and does not register or change .txt.

Download

This release provides two attachments:

LeanRows-v0.1.3-windows-x64-unsigned.zip
LeanRows-v0.1.3-windows-x64-unsigned.sha256

LeanRows 0.1.3 is not Authenticode-signed. Windows may display a warning for a
downloaded executable. Verify the ZIP against the .sha256 attachment from
this same release:

Get-FileHash .\LeanRows-v0.1.3-windows-x64-unsigned.zip -Algorithm SHA256

After extraction, validate and run the per-user installer:

.\install.ps1 -ValidateOnly
.\install.ps1

Installation requires no administrator privileges. LeanRows is added to the
current user's Start menu and Installed Apps list.

Local qualification

The native shell smoke now exercises the complete appearance cycle and checks
the persisted preference, effective runtime theme, and grid repaint. It also
checks that the progress indicator retains its native class, has no marquee
style, reports a 50 percent position, and renders the exact accent, surface,
and border pixels expected by the selected appearance.

Formatting, 143/143 workspace all-target locked tests, strict Clippy, release
app and spike builds, native shell and document smokes, release engineering,
and the full non-skipped local QA run passed. The authoritative receipt at
artifacts/qa/v0.1.3-final-frozen-pass/qa-receipt.json passed 25/25 checks
with 0 failures in 38,863 ms.

The frozen executable is 546,816 bytes with SHA-256
F8394AC84BFDD1E4857AF087B509088B5586172048A499E761DF0D5701F8A7A1.
The deterministic unsigned ZIP has SHA-256
BCD32B49FEA25E4079782403AF03366AC1C38DB1DD907B6B9920503DD396A8A3.
Cold and document-open process-tree observations, 1 and 10 GiB sparse
fixtures, 24/24 deterministic seeks, polling-bounded network observation, and
aggregate cleanup passed within the recorded local scope.

A live installer cycle upgraded an installed v0.1.2 baseline and passed
install, identical-state reinstall, uninstall, and final install. It restored
four prior direct defaults to absent during uninstall, then left four direct
defaults and five Open with registrations pointing to the exact v0.1.3
installation. The protected Notepad .log choice remained unchanged. LeanRows
intentionally creates no App Paths key; its absolute open commands and Start
menu shortcut were verified. The final v0.1.3 installation remains in place,
with no process or temporary residue.

Two earlier network-observation receipts remain preserved as fail-closed. A
race made a transient empty viewport unreliable after reload, so the harness
was corrected to require a durable top-index reset and viewport repopulation.
The final receipt passed. Network evidence remains polling-bounded rather than
an ETW trace or packet capture.

The tagged release workflow independently verifies the release commit, rebuild,
quality gates, package checksum, and published assets. The local receipt above
records the frozen pre-tag qualification; it is not a substitute for that
tagged proof.

LeanRows is available under the MIT License. The complete change summary is in
the changelog.
Security-sensitive findings should use
private vulnerability reporting.

LeanRows v0.1.2

Choose a tag to compare

@github-actions github-actions released this 10 Aug 01:58

LeanRows 0.1.2

LeanRows 0.1.2 redesigns the native Windows interface while preserving the
bounded, read-only document engine and the installer safeguards introduced in
0.1.1.

Interface redesign

  • Introduces a warm, opaque visual system aligned with the LeanMark family:
    dark ink, one blue action accent, restrained one-pixel rules, and deliberate
    spacing.
  • Replaces the permanent legacy menu with a responsive top bar. File identity,
    search, and document commands adapt across narrow, default, and wide window
    layouts.
  • Moves literal search into the main window. The field includes Match case,
    previous, and next controls, while Ctrl+F, F3, and Shift+F3 remain
    available from the keyboard.
  • Keeps the virtual owner-data grid as the row surface. Cell requests remain
    cache lookups; file reads, decoding, and indexing continue on the bounded
    worker path.
  • Provides System and Light appearance choices. When Windows high contrast is
    active, LeanRows uses the applicable system colors. This release does not
    claim a native dark theme.
  • Retains the standard Windows title bar, snap behavior, per-monitor DPI
    handling, visible focus, and native accessibility semantics.

Behavior retained

LeanRows remains a Windows x64, read-only viewer for local CSV, TSV, JSONL,
NDJSON, log, and text files. It does not load a whole-file object model, alter
the source, send telemetry, or retrieve network content. Editing, saving,
export, sorting, filtering, regular expressions, SQL, archives, and tail/follow
mode remain outside the 0.1 boundary.

The per-user installer continues to register LeanRows in Open with for
.csv, .tsv, .jsonl, .ndjson, and .log. It changes a direct
per-user default only when no protected Explorer UserChoice exists,
preserves later user choices, and does not register or change .txt.

Download

This release provides two attachments:

LeanRows-v0.1.2-windows-x64-unsigned.zip
LeanRows-v0.1.2-windows-x64-unsigned.sha256

LeanRows 0.1.2 is not Authenticode-signed. Windows may display a warning for a
downloaded executable. Verify the ZIP against the .sha256 attachment from
this same release:

Get-FileHash .\LeanRows-v0.1.2-windows-x64-unsigned.zip -Algorithm SHA256

After extraction, validate and run the per-user installer:

.\install.ps1 -ValidateOnly
.\install.ps1

Installation requires no administrator privileges. LeanRows is added to the
current user's Start menu and Installed Apps list.

Validation and source

The tagged workflow rebuilds the application on Windows, runs the pinned
quality and native smoke gates, validates deterministic packaging, and
publishes the unsigned ZIP with its checksum. The
validation status
separates frozen-release evidence from earlier candidate results.

LeanRows is available under the MIT License. The complete change summary is in
the changelog.
Security-sensitive findings should use
private vulnerability reporting.

LeanRows v0.1.1

Choose a tag to compare

@github-actions github-actions released this 09 Aug 23:12

LeanRows 0.1.1

LeanRows 0.1.1 is a Windows installer patch release. The native viewer and its
large-file engine are unchanged from 0.1.0.

Installer corrections

  • Fixes a fresh-install failure in the 0.1.0 package when PowerShell attempted
    to write a registry default value whose name is the required empty string.
  • Preserves every earlier value when multiple registrations share one registry
    key, and uses an exact writable per-user key when uninstall restores or
    removes a direct default.
  • Keeps LeanRows in Open with for .csv, .tsv, .jsonl, .ndjson, and
    .log.
  • For a supported extension with no protected Explorer UserChoice, records
    the prior per-user direct default and makes LeanRows the direct per-user
    default.
  • Preserves every protected UserChoice. The optional -OpenDefaultApps
    switch opens Windows Default Apps when manual confirmation is wanted.
  • Makes reinstalls idempotent: LeanRows is never recorded as its own previous
    handler.
  • On uninstall, restores or removes only direct defaults that still point to
    LeanRows. A handler selected later by the user is preserved.
  • Does not register or change .txt.

Download

This release provides two attachments:

LeanRows-v0.1.1-windows-x64-unsigned.zip
LeanRows-v0.1.1-windows-x64-unsigned.sha256

LeanRows 0.1.1 is not Authenticode-signed. Windows may display a warning for a
downloaded executable. Verify the ZIP against the .sha256 attachment from
this same release:

Get-FileHash .\LeanRows-v0.1.1-windows-x64-unsigned.zip -Algorithm SHA256

After extraction, validate and run the per-user installer:

.\install.ps1 -ValidateOnly
.\install.ps1

Installation requires no administrator privileges. LeanRows is added to the
current user's Start menu and Installed Apps list.

Application behavior and limits

The viewer retains the 0.1.0 behavior and boundaries: Windows x64 only;
read-only local CSV, TSV, JSONL, NDJSON, log, and text viewing; bounded
previews; no telemetry or network retrieval; and no editing, saving, export,
sorting, filtering, regular expressions, SQL, archives, or tail/follow mode.

The README contains the full
usage boundary. Security-sensitive findings should use
private vulnerability reporting.

Source and license

LeanRows is available under the MIT License. The complete change summary is in
the changelog.

LeanRows v0.1.0

Choose a tag to compare

@github-actions github-actions released this 09 Aug 11:58

LeanRows 0.1.0

LeanRows 0.1.0 is the first public release of a native, read-only Windows
viewer for large row-oriented files. It prepares a bounded viewport without
loading the complete source into memory and continues indexing in the
background.

Highlights

  • Opens CSV, TSV, JSONL, NDJSON, log, and text files from local Windows
    volumes.
  • Preserves quote-aware CSV and TSV record boundaries, including embedded
    newlines and escaped quotes.
  • Displays bounded CSV and TSV fields in independent native columns.
  • Uses fixed-capacity adaptive checkpoints and bounded viewport previews rather
    than an in-memory offset or object for every row.
  • Provides demand-driven literal Find with next/previous navigation, checked
    absolute-row jumps, bounded tab-delimited clipboard copy, and native file
    drag-and-drop.
  • Detects source replacement or revision changes before stale offsets can be
    reused.
  • Escapes invalid UTF-8 bytes and marks truncated previews instead of silently
    normalizing input.
  • Provides a native Win32 interface with keyboard focus, system colors,
    per-monitor DPI handling, and accessibility names.
  • Includes no telemetry, account, updater, network retrieval, or bundled web
    runtime.

Download

This release provides two attachments:

LeanRows-v0.1.0-windows-x64-unsigned.zip
LeanRows-v0.1.0-windows-x64-unsigned.sha256

The ZIP is portable and contains leanrows.exe, optional per-user install and
uninstall scripts, the MIT license, the unsigned-build notice, and a manifest
with the size and SHA-256 of every payload.

Verify and run

LeanRows 0.1.0 is not Authenticode-signed. Windows may display a warning for a
downloaded executable. Verify the ZIP against the .sha256 attachment from
this same release:

Get-FileHash .\LeanRows-v0.1.0-windows-x64-unsigned.zip -Algorithm SHA256

After extraction, launch leanrows.exe directly or validate and run the
optional per-user installer:

.\install.ps1 -ValidateOnly
.\install.ps1

The installer does not require administrator privileges and does not silently
replace existing Windows file defaults. It adds LeanRows to the current user's
Start menu and Installed Apps list.

Frozen release measurements

The final local aggregate QA run for the Windows release candidate recorded:

  • Cold full-process-tree private bytes: 2,428,928 bytes (2.32 MiB; three
    samples).
  • Document-open full-process-tree private bytes: 3,301,376 bytes (3.15
    MiB; three samples with large.log).
  • Document-open full-process-tree working set: 18,759,680 bytes (17.89
    MiB; three samples with large.log).
  • Deterministic seek and document-smoke result: 35/35 completed: 24/24
    deterministic viewport seeks across three fixtures with zero mismatches, and
    11/11 positive or expected-failure document-smoke cases.
  • Sparse logical-scale result: first-viewport checks passed for structurally
    verified 1 GiB and 10 GiB sparse logical files.

These observations are specific to the recorded Windows host and workload.
They are not universal RAM or startup guarantees. The deterministic seek
matrix exercises the architecture-spike command-line entry point, not automated
random-seek interaction through the native owner-data control. The sparse files
were descriptor-verified synthetic fixtures allocated at 128 KiB each; they
were not scanned completely, and full-file SHA-256 hashes were not computed.

Snapshot behavior

The active source is opened without write access. LeanRows also excludes
in-place write sharing so bytes cannot change underneath indexed offsets. An
application that appends to, truncates, or rewrites the same file may receive a
sharing violation while LeanRows holds it open. Atomic replacement remains
possible; LeanRows detects the new path identity and requires reload.

Known limits

  • Windows x64 is the only 0.1 release target.
  • The package is unsigned.
  • Format selection is based on the file extension.
  • JSONL and NDJSON are displayed as line-oriented records; 0.1 does not provide
    schema validation or a JSON-tree view.
  • Remote and UNC paths, reparse points, device paths, editing, saving, export,
    sorting, filtering, regular expressions, SQL, archives, and tail/follow mode
    are not supported.
  • Bounded previews can omit part of a long record or field and mark the display
    as truncated.

The README provides the complete
usage boundary. Security-sensitive findings should use
private vulnerability reporting.

Source and license

LeanRows is available under the MIT License. The complete change summary is in
the changelog.