From bdf5bbeb257ab208fd296c108d5794159a1945ce Mon Sep 17 00:00:00 2001
From: Abdulfatah Bahbouh <60443686+abooodbah@users.noreply.github.com>
Date: Fri, 6 Nov 2026 12:58:45 -0600
Subject: [PATCH 1/2] Version 0.5.1
Fast zoom steps (#43) and thin theme-coloured scroll bars (#44).
Release notes in docs/releases/v0.5.1.md, which the tagged release
workflow publishes.
---
.github/ISSUE_TEMPLATE/bug_report.yml | 2 +-
.github/workflows/windows.yml | 2 +-
CHANGELOG.md | 35 +++++++++
CITATION.cff | 4 +-
Cargo.lock | 8 +-
Cargo.toml | 2 +-
PROGRESS.md | 10 ++-
README.md | 8 +-
.../leanrows-app/resources/leanrows.manifest | 2 +-
docs/ARCHITECTURE.md | 4 +-
docs/releases/v0.5.1.md | 75 +++++++++++++++++++
installer/README.md | 6 +-
12 files changed, 136 insertions(+), 22 deletions(-)
create mode 100644 docs/releases/v0.5.1.md
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
index e7a3643..ba107bf 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -12,7 +12,7 @@ body:
id: version
attributes:
label: LeanRows version
- placeholder: 0.5.0
+ placeholder: 0.5.1
validations:
required: true
- type: input
diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml
index 9b31e8d..ce90bfc 100644
--- a/.github/workflows/windows.yml
+++ b/.github/workflows/windows.yml
@@ -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
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6b2b795..53859b3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -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
@@ -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
diff --git a/CITATION.cff b/CITATION.cff
index f40a098..b619693 100644
--- a/CITATION.cff
+++ b/CITATION.cff
@@ -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/
diff --git a/Cargo.lock b/Cargo.lock
index d32b28c..1c6db73 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -10,28 +10,28 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
[[package]]
name = "leanrows-app"
-version = "0.5.0"
+version = "0.5.1"
dependencies = [
"leanrows-win32",
]
[[package]]
name = "leanrows-core"
-version = "0.5.0"
+version = "0.5.1"
dependencies = [
"miniz_oxide",
]
[[package]]
name = "leanrows-spike"
-version = "0.5.0"
+version = "0.5.1"
dependencies = [
"leanrows-core",
]
[[package]]
name = "leanrows-win32"
-version = "0.5.0"
+version = "0.5.1"
dependencies = [
"leanrows-core",
"windows",
diff --git a/Cargo.toml b/Cargo.toml
index 644f0a3..d7ca82e 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -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"
diff --git a/PROGRESS.md b/PROGRESS.md
index 656397d..bd3edc4 100644
--- a/PROGRESS.md
+++ b/PROGRESS.md
@@ -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
@@ -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
diff --git a/README.md b/README.md
index f3a5edd..4e9cba9 100644
--- a/README.md
+++ b/README.md
@@ -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
@@ -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
diff --git a/crates/leanrows-app/resources/leanrows.manifest b/crates/leanrows-app/resources/leanrows.manifest
index abbc72d..b5431ec 100644
--- a/crates/leanrows-app/resources/leanrows.manifest
+++ b/crates/leanrows-app/resources/leanrows.manifest
@@ -4,7 +4,7 @@
name="LeanRows.Desktop"
processorArchitecture="amd64"
type="win32"
- version="0.5.0.0" />
+ version="0.5.1.0" />
LeanRows native large-file viewer
diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md
index 1ddcbda..b466cfe 100644
--- a/docs/ARCHITECTURE.md
+++ b/docs/ARCHITECTURE.md
@@ -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
@@ -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
diff --git a/docs/releases/v0.5.1.md b/docs/releases/v0.5.1.md
new file mode 100644
index 0000000..61934f1
--- /dev/null
+++ b/docs/releases/v0.5.1.md
@@ -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; the first had pauses of up to 1.1 s on both
+versions.
+
+## 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.
diff --git a/installer/README.md b/installer/README.md
index d06a2a0..1fd7cfa 100644
--- a/installer/README.md
+++ b/installer/README.md
@@ -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
@@ -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
From 91a7680b2ffc99d1810d47507fe56159839230b1 Mon Sep 17 00:00:00 2001
From: Abdulfatah Bahbouh <60443686+abooodbah@users.noreply.github.com>
Date: Fri, 6 Nov 2026 12:59:13 -0600
Subject: [PATCH 2/2] Give the slowest zoom steps of the first 10M-row run per
version
---
docs/releases/v0.5.1.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/releases/v0.5.1.md b/docs/releases/v0.5.1.md
index 61934f1..e2e5753 100644
--- a/docs/releases/v0.5.1.md
+++ b/docs/releases/v0.5.1.md
@@ -54,8 +54,8 @@ 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; the first had pauses of up to 1.1 s on both
-versions.
+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