Skip to content

Releases: te-x/less-sheet

less-sheet 0.1.4

Choose a tag to compare

@te-x te-x released this 09 Sep 09:16

less-sheet 0.1.4 adds file drag-and-drop on macOS and Linux. Drop a local CSV
or CSV.GZ anywhere in the window to open it.

Find, Where, and filtering now retain completed scans and reusable progress.
Returning to the same query no longer rereads the full document, including in
sorted views. The release also avoids briefly showing a fresh 0% scan when a
cached result is restored.

less-sheet 0.1.3

Choose a tag to compare

@te-x te-x released this 07 Sep 11:11

Sorting. Same install routes as 0.1.2.

Sort by any column, ascending or descending. Right-click a column header and pick Sort Ascending, Sort Descending or Clear Sort, or press ⇧⌘S (Ctrl+Shift+S on GNOME) to cycle the sort on the cursor's column. A plain click on a header still selects the column. Numbers, decimals, dates and booleans sort by value according to the column's detected or chosen type; text sorts case-insensitively with a byte-exact tiebreak; equal values keep their file order; values that do not fit the column's type come after the ones that do, and empty cells last.

The first sorted rows appear in milliseconds. The sort scans the file once in the background with a progress bar and a Cancel button. While it runs, the grid shows the exact sorted order of the rows scanned so far and keeps correcting itself as the scan reaches the rest of the file, so the rows you see are never a guess about the part that has been read. On a 1.9 GB file of 37 million rows the first sorted rows are on screen within the first 100 ms, and the full sort finishes in about 12 seconds in the core, 18 in the app. Memory during a sort stays in the same band as before: the sort keeps 64 MB of working memory and writes its keys and permutation to private temporary files instead, about 16 bytes per row while the sort is active, removed when it ends.

Everything else works on the sorted view. Find, filter, jump-to-row and the row-number gutter follow the sorted order. Changing a filter or a column type re-runs the sort. Gzipped files sort too; scrolling a sorted gzip file is slower than a plain one, and the macOS app shows a loading state and fetches smaller windows when a fetch has proven slow. Sorting a file served over HTTP downloads all of it, so the app asks first. Sort state is per session and never saved.

Verified. The final order of a 37-million-row file was compared byte for byte with an independent stable sort on an integer column and a decimal column, ascending and descending. A defect found while writing the tests, where a window read during the scan could mix rows from two stages of the sort, is fixed in this release.

macOS builds remain ad-hoc signed (Gatekeeper asks once; choose Done, then Open Anyway in Privacy & Security). Digests are in SHA256SUMS. Source is MIT: https://github.com/te-x/less-sheet.

less-sheet 0.1.2

Choose a tag to compare

@te-x te-x released this 04 Sep 22:47

Launch-time release. No new features; the same install routes as 0.1.1.

GNOME: opens in about a third of the time. Launch to the first painted rows went from about 250 ms to about 75 ms on a desktop, whatever the file size. Three changes: the app now defaults to GTK's cairo renderer, so a launch no longer pays for a GPU context (set GSK_RENDERER yourself and your choice wins); the file is opened on a worker thread while the toolkit starts, so a 10 GB file is ready by the time the window appears; and popovers, menus and the launch and error pages are built on first use instead of before the first frame. Resting memory drops by about 30 MB. Also fixed: launching a second instance with no file no longer blanks the document the first one shows.

macOS: a little faster, and half the size. The app runs AppKit's own application lifecycle instead of a SwiftUI scene, restores the window frame before the content view is built, and moves a preferences write off the launch path. Launch improves by about 10 ms; the rest of the wait is the system's launch handshake, which no app code runs during. The executable ships without its local symbol table (5.2 → 2.8 MB).

macOS builds remain ad-hoc signed (Gatekeeper asks once; choose Done, then Open Anyway in Privacy & Security). Digests are in SHA256SUMS. Source is MIT: https://github.com/te-x/less-sheet.

less-sheet 0.1.1

Choose a tag to compare

@te-x te-x released this 04 Sep 08:50

Bug-fix and performance release. No new features; the same install routes as 0.1.0.

Faster on gzipped files. Searching and filtering a .csv.gz no longer re-inflates the stream at lane boundaries: on a 500 MB gzipped file, search went from 38 s to 3.9 s and filter from 38 s to 3.9 s. Plain files are unchanged.

Correctness. A checkpoint bookkeeping bug could stop the index from taking further checkpoints after one skip, making later jumps replay from the start of the file. Checkpoints appended on short network reads could shift block lookups. Progress reported by the index is now monotone, as the API promises.

macOS. Closed a use-after-free window when a copy was cancelled by reopening a document; two overlapping opens (for example two quick dialect changes) no longer adopt over each other or reset column settings; a poll from a replaced document is discarded. The Settings panel opens faster on wide documents.

GNOME. Opening a local file now cancels an in-flight URL open instead of letting it replace the document later. A copy that hit the byte budget, the cell cap or the scan frontier says so in a toast instead of claiming a complete copy. Several teardown-order crashes and per-frame allocations in the grid were fixed.

Both frontends show the app logo when launched without a file.

macOS builds remain ad-hoc signed (Gatekeeper asks once; choose Done, then Open Anyway in Privacy & Security). Digests are in SHA256SUMS. Source is MIT: https://github.com/te-x/less-sheet.

less-sheet 0.1.0

Choose a tag to compare

@te-x te-x released this 04 Sep 08:05

First public release of less-sheet, a read-only viewer for very large CSV files.

macOS 26+ (Apple silicon): .dmg, .tar.gz, .zip. Ad-hoc signed, not notarized: on first launch macOS shows a Gatekeeper dialog; choose Done, then open the app from System Settings › Privacy & Security › Open Anyway. The .tar.gz is what the curl one-liner and the Homebrew tap install.

Linux: x86_64 and aarch64 tarballs (GTK 4.20 / libadwaita 1.8 from your distribution), and an x86_64 Flatpak bundle that carries its runtime.

Digests are in SHA256SUMS. These binaries were first published on 2026-08-16 under the v0.1.0 EULA (docs/EULA-v0.1.0.md); the source is MIT, and releases after this one ship under MIT.