Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ body:
id: version
attributes:
label: LeanRows version
placeholder: 0.5.0
placeholder: 0.5.1
validations:
required: true
- type: input
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,7 @@ jobs:
./artifacts/*.sha256 `
--verify-tag `
--title "LeanRows ${{ github.ref_name }}" `
--notes-file ./docs/releases/v0.5.0.md
--notes-file ./docs/releases/v0.5.1.md

deploy-pages:
name: Deploy the verified product page
Expand Down
35 changes: 35 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,40 @@ All notable changes to LeanRows are recorded in this file. The format follows
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and releases use
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.5.1] - 2026-11-06

Zooming is fast, and the lists have thin scroll bars.

### Changed

- A zoom step sets the column widths with the list's redraw off, gives the new
fonts to the rows and their titles only, and paints once. It no longer
rebuilds and repaints the whole window.
- Ctrl+wheel notches already queued are taken as one zoom change.
- Each column keeps the width it was designed at, so zooming in and out no
longer makes widths drift. A width set by hand becomes the new basis.
- Columns of a file opened while zoomed are sized for that zoom.
- The rows and the settings shortcut list have thin scroll bars in the theme's
colours, without arrow buttons, as in LeanMark. High contrast keeps the
system scroll bars.
- The settings shortcut list fits its width: long actions wrap onto a second
line and the list has no horizontal scroll bar.

### Measured

On the maintainer's laptop, 0.5.0 and 0.5.1 built and measured the same way:

| Measure | 0.5.0 | 0.5.1 |
| --- | --- | --- |
| Zoom step, six-column 2 MB file (median) | 285 ms | 31 ms |
| Zoom step, 10M-row file (median) | 115 ms | 21 ms |
| 8 Ctrl+wheel notches at once, 2 MB file | 1,234 ms | 22.5 ms |
| Page Down, 10M-row file | 20.4 ms | 21.0 ms |
| One wheel notch, 10M-row file | 2.45 ms | 2.07 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 |
| Executable size, local build | 986,112 bytes | 1,024,512 bytes |

## [0.5.0] - 2026-11-05

LeanRows takes on LeanMark's look, and sorting a large file is several times
Expand Down Expand Up @@ -240,6 +274,7 @@ Column sorting, contributed by @w3bgr3p in #9.
- File content is displayed as inert native text and no network or telemetry
path is included.

[0.5.1]: https://github.com/abooodbah/leanrows/releases/tag/v0.5.1
[0.5.0]: https://github.com/abooodbah/leanrows/releases/tag/v0.5.0
[0.4.0]: https://github.com/abooodbah/leanrows/releases/tag/v0.4.0
[0.3.0]: https://github.com/abooodbah/leanrows/releases/tag/v0.3.0
Expand Down
4 changes: 2 additions & 2 deletions CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ type: software
authors:
- family-names: Bahbouh
given-names: Abdulfatah
version: 0.5.0
date-released: 2026-11-05
version: 0.5.1
date-released: 2026-11-06
license: MIT
repository-code: https://github.com/abooodbah/leanrows
url: https://abooodbah.github.io/leanrows/
Expand Down
8 changes: 4 additions & 4 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ members = [
resolver = "2"

[workspace.package]
version = "0.5.0"
version = "0.5.1"
edition = "2024"
rust-version = "1.97"
license = "MIT"
Expand Down
10 changes: 7 additions & 3 deletions PROGRESS.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Progress

Work for LeanRows desktop 0.5.0. This file is updated with every merge.
Work for LeanRows desktop 0.5.0 and its 0.5.1 patch. This file is updated with every merge.

## Goal for 0.5.0

Expand Down Expand Up @@ -100,14 +100,18 @@ measured the same way.
| 11. Toolbar and tabs restyle | [#38](https://github.com/abooodbah/leanrows/pull/38) | LeanMark's ghost, secondary and primary buttons with hover, the bordered search field with a focus ring, the "LR" wordmark, the bar's border, and tabs without separators. |
| 12. Version 0.5.0 | [#40](https://github.com/abooodbah/leanrows/pull/40) | Merged as `830c7ca`. |
| 7. Dim and Dusk themes | [#30](https://github.com/abooodbah/leanrows/pull/30) | Five themes with LeanMark 0.6.0's values; start time, memory and size unchanged. |
| 15. Fast zoom steps (0.5.1) | [#43](https://github.com/abooodbah/leanrows/pull/43) | A step sets the column widths with the list's redraw off and paints once. Maintainer's laptop, six-column 2 MB file: 264.5 ms to 25.8 ms per step (median). |
| 16. Thin scroll bars (0.5.1) | [#44](https://github.com/abooodbah/leanrows/pull/44) | Theme-coloured bars without arrows over the rows and the shortcut list, which now wraps to fit its width. High contrast keeps the system bars. |
| 17. Version 0.5.1 | this pull request | `docs/releases/v0.5.1.md`. |

## In progress

- 13. Tag `v0.5.0`: blocked in this session (see Known gaps).
- 18. Tag `v0.5.1` on the merge of the version pull request, which starts the
release workflow and the Store package workflow.

## Remaining

Items 13 and 14 of the plan: the tag, the release and Store workflows it starts, and the post-release update of `site/`, `store/listing.md` and `docs/VALIDATION_STATUS.md`.
For 0.5.1: the post-release update of `site/`, `store/listing.md` and `docs/VALIDATION_STATUS.md`, and the Scoop, winget, Chocolatey and Partner Center steps.

## Known gaps

Expand Down
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ runtime, no admin rights.**
*20,000,001 rows, 1,532,454,643 bytes, fully indexed. Peak working set: 18.4 MB.*

Excel stops at about 1.05 million rows. Most tools that go further are paid, need
an installer, or live in a terminal. LeanRows is a single 987 KB executable you
an installer, or live in a terminal. LeanRows is a single 1,025 KB executable you
can copy onto a locked-down work machine and run.

It is strictly read-only, so it cannot alter the file it is inspecting. There is
Expand Down Expand Up @@ -124,15 +124,15 @@ The official package is attached to the
[GitHub release](https://github.com/abooodbah/leanrows/releases/latest) as:

```text
LeanRows-v0.5.0-windows-x64-unsigned.zip
LeanRows-v0.5.0-windows-x64-unsigned.sha256
LeanRows-v0.5.1-windows-x64-unsigned.zip
LeanRows-v0.5.1-windows-x64-unsigned.sha256
```

LeanRows 0.5 is not Authenticode-signed. Windows may therefore show a security
warning. Verify the downloaded ZIP before running it:

```powershell
Get-FileHash .\LeanRows-v0.5.0-windows-x64-unsigned.zip -Algorithm SHA256
Get-FileHash .\LeanRows-v0.5.1-windows-x64-unsigned.zip -Algorithm SHA256
```

The result must match the value in the accompanying `.sha256` file from the
Expand Down
2 changes: 1 addition & 1 deletion crates/leanrows-app/resources/leanrows.manifest
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
name="LeanRows.Desktop"
processorArchitecture="amd64"
type="win32"
version="0.5.0.0" />
version="0.5.1.0" />
<description>LeanRows native large-file viewer</description>
<dependency>
<dependentAssembly>
Expand Down
4 changes: 2 additions & 2 deletions docs/ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ of row-oriented local files. The source file remains the primary backing store;
the application does not import the document into a database or construct a
whole-file in-memory model.

This document describes the 0.5.0 implementation. Future candidates are kept
This document describes the 0.5.1 implementation. Future candidates are kept
in the [roadmap](../ROADMAP.md) rather than presented as current behavior.

## System boundary
Expand Down Expand Up @@ -40,7 +40,7 @@ The production interface uses Win32 common controls. It does not embed a
browser engine, start a helper process, or use a GUI framework with a second
runtime.

The 0.5.0 shell uses warm, opaque light surfaces, coordinated dark surfaces, a
The 0.5.1 shell uses warm, opaque light surfaces, coordinated dark surfaces, a
single blue action accent, and restrained rules. Its top bar arranges file
identity, inline search, and document commands in wide, default, or narrow
layouts based on the DPI-scaled client width. Commands that do not fit remain
Expand Down
75 changes: 75 additions & 0 deletions docs/releases/v0.5.1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# 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.
6 changes: 3 additions & 3 deletions installer/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
LeanRows v0.1 uses a portable, explicitly unsigned ZIP. Packaging creates:

```text
LeanRows-v0.5.0-windows-x64-unsigned.zip
LeanRows-v0.5.0-windows-x64-unsigned.sha256
LeanRows-v0.5.1-windows-x64-unsigned.zip
LeanRows-v0.5.1-windows-x64-unsigned.sha256
```

The version is read from `[workspace.package]` in `Cargo.toml`; a mismatched
Expand All @@ -15,7 +15,7 @@ twice and requires identical SHA-256 digests.
## Portable package contents

```text
LeanRows-v0.5.0-windows-x64-unsigned/
LeanRows-v0.5.1-windows-x64-unsigned/
leanrows.exe
install.ps1
uninstall.ps1
Expand Down