Repository navigation
LeanRows v0.2.0
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+TabandCtrl+Shift+Tab(orCtrl+PgDnandCtrl+PgUp) move between
tabs.Ctrl+1toCtrl+8pick a tab by position andCtrl+9picks the last
one.Ctrl+WorCtrl+F4closes 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 SHA256After extraction, validate and run the per-user installer:
.\install.ps1 -ValidateOnly
.\install.ps1Installation 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.