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