pkgsrc-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: pkgsrc/sysutils/lstr
Module Name: pkgsrc
Committed By: pin
Date: Tue Jul 14 11:04:47 UTC 2026
Modified Files:
pkgsrc/sysutils/lstr: Makefile cargo-depends.mk distinfo
Log Message:
sysutils/lstr: update to 0.3.0
[0.3.0] - 2026-07-12
Added
Added comprehensive sorting options for both classic and interactive modes:
--sort <TYPE>: Sort by name (default), size, modified time, or extension
--dirs-first: Sort directories before files
--case-sensitive: Use case-sensitive sorting with specific order (numbers → uppercase → lowercase)
--natural-sort: Version-aware sorting (file1 < file2 < file10)
--reverse: Reverse any sort order
--dotfiles-first: Priority ordering (dotfolders → folders → dotfiles → files)
Added comprehensive examples directory (examples/sample-directory/) with various file types, nested structures, and test scenarios for validating lstr functionality including icons, gitignore
behavior, and tree display.
Added interactive search functionality in TUI mode:
Press / to enter search mode with real-time filename filtering
Case-insensitive substring matching filters files as you type
Press Esc to exit search and restore full file list
Status line shows current search query and match count
Preserves tree structure and selection state during filtering (Closes #30)
Added
Releases are now built with cargo-dist: shell/PowerShell installers, a Windows MSI, six prebuilt targets (x86_64/aarch64 for Linux, macOS, Windows), and automated publishing to Homebrew, Scoop,
AUR (lstr-bin), and WinGet
Added --du to show directories with the cumulative size of their contents (like tree --du, implies -s); the summary line and JSON report include the total (Closes #12)
Added --output json for machine-readable classic-mode output, including sizes, permissions, and git status when the matching flags are set (progress toward #7)
Added mouse support in interactive mode: scroll wheel moves the selection, click selects, and clicking the selected entry opens/toggles it (Closes #28)
Added --file-depth <LEVEL> to hide individual files below a depth, summarized per directory as [+N files] — useful for high-level project overviews (Closes #9)
Added --max-items <N> to cap entries shown per directory, summarizing the rest as [+N more] (Closes #8)
Interactive mode now returns to the tree after closing the editor instead of exiting, preserving expansion and selection and picking up file changes (Closes #3, Closes #22)
Added --editor <COMMAND> to interactive mode for custom file openers, and $VISUAL is now honored before $EDITOR (Closes #26)
Added h/← (collapse selected or parent directory) and l/→ (expand/open) navigation keys in interactive mode (Closes #41, thanks @Kr1ngl3)
Directories now show the most severe git status of their contents with -G, in both classic and interactive modes
Changed
File permissions now display l for symlinks and the setuid/setgid/sticky special bits (s/S, t/T)
Improved sorting performance: metadata lookups and string allocations now happen once per entry instead of once per comparison (--sort modified on a 40k-entry tree: ~2.6× faster)
Improved -G git-status performance in classic mode by removing a filesystem canonicalization syscall per entry (~2× faster on a 10k-file repository)
Fixed
Fixed hyperlink escape sequences being emitted under --color never and into pipes; hyperlinks now follow the colorization decision
Fixed the TUI capturing mouse events it never handled, which broke click-drag text selection in the terminal
Fixed interactive mode printing Windows \\?\ verbatim paths from Ctrl+s (Closes #24)
Fixed wrong tree connectors with --dirs-only, where a directory could render ├── because filtered-out files after it were counted as siblings
Fixed quadratic tree-connector computation that made large directory trees (tens of thousands of entries) take seconds instead of milliseconds
Fixed ignore files (.ignore, global gitignore, .git/info/exclude) filtering output even without the -g flag; all standard ignore filters are now tied to -g in both classic and interactive modes
Fixed the interactive TUI quitting when typing q (or other command keys) into a search query
Fixed a crash when navigating an empty directory or empty search results in interactive mode
Fixed the terminal being left in raw mode on the alternate screen when the TUI exited with an error or panic
Fixed expanding a directory during search corrupting the restored file list; search mode now exits before toggling
Fixed search rejecting printable punctuation characters (e.g. +, #, () in filenames
Fixed the selection jumping to an unrelated entry after exiting search mode
CRITICAL: Fixed fundamental tree structure corruption caused by flat sorting destroying parent-child relationships. Implemented tree-aware hierarchical sorting that preserves proper tree
traversal order while sorting siblings within their respective parent directories. This resolves multiple cascading issues:
Fixed tree display connector issue where all entries showed └── instead of proper mixed ├── and └── connectors (Closes #36)
Fixed incorrect file nesting where children appeared under wrong parents or in jumbled order
Fixed duplicate/phantom entries in interactive TUI mode caused by corrupted tree structure
Fixed missing entries when tree structure calculations failed
Ensured consistent output between classic and TUI modes
Added shared sort_entries_hierarchically() function to sort module for tree-aware sorting used by both classic and interactive modes
Fixed alignment issues with permissions (-p) and git status (-G) flags where root directory formatting was inconsistent with tree entries. Root directory now properly displays permissions and git
status spacing for consistent output alignment. (Closes #32)
To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 pkgsrc/sysutils/lstr/Makefile \
pkgsrc/sysutils/lstr/cargo-depends.mk pkgsrc/sysutils/lstr/distinfo
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: pkgsrc/sysutils/lstr/Makefile
diff -u pkgsrc/sysutils/lstr/Makefile:1.1 pkgsrc/sysutils/lstr/Makefile:1.2
--- pkgsrc/sysutils/lstr/Makefile:1.1 Sat Jul 26 09:01:03 2025
+++ pkgsrc/sysutils/lstr/Makefile Tue Jul 14 11:04:47 2026
@@ -1,6 +1,6 @@
-# $NetBSD: Makefile,v 1.1 2025/07/26 09:01:03 pin Exp $
+# $NetBSD: Makefile,v 1.2 2026/07/14 11:04:47 pin Exp $
-DISTNAME= lstr-0.2.1
+DISTNAME= lstr-0.3.0
CATEGORIES= sysutils
MASTER_SITES= ${MASTER_SITE_GITHUB:=bgreenwell/}
GITHUB_TAG= v${PKGVERSION_NOREV}
@@ -10,9 +10,9 @@ HOMEPAGE= https://github.com/bgreenwell/
COMMENT= Fast, minimalist directory tree viewer
LICENSE= mit
-#RUST_REQ= 1.88.0
+#RUST_REQ= 1.97.0
#Upstream does not state the required MSRV.
-#This package is confirmed to build with Rust 1.88.0 on amd64
+#This package is confirmed to build with Rust 1.97.0 on amd64
USE_LANGUAGES= c
USE_TOOLS+= pkg-config
Index: pkgsrc/sysutils/lstr/cargo-depends.mk
diff -u pkgsrc/sysutils/lstr/cargo-depends.mk:1.1 pkgsrc/sysutils/lstr/cargo-depends.mk:1.2
--- pkgsrc/sysutils/lstr/cargo-depends.mk:1.1 Sat Jul 26 09:01:03 2025
+++ pkgsrc/sysutils/lstr/cargo-depends.mk Tue Jul 14 11:04:47 2026
@@ -1,4 +1,4 @@
-# $NetBSD: cargo-depends.mk,v 1.1 2025/07/26 09:01:03 pin Exp $
+# $NetBSD: cargo-depends.mk,v 1.2 2026/07/14 11:04:47 pin Exp $
CARGO_CRATE_DEPENDS+= aho-corasick-1.1.3
CARGO_CRATE_DEPENDS+= allocator-api2-0.2.21
@@ -70,6 +70,7 @@ CARGO_CRATE_DEPENDS+= lru-0.12.5
CARGO_CRATE_DEPENDS+= lscolors-0.9.0
CARGO_CRATE_DEPENDS+= memchr-2.7.4
CARGO_CRATE_DEPENDS+= mio-0.8.11
+CARGO_CRATE_DEPENDS+= natord-1.0.9
CARGO_CRATE_DEPENDS+= normalize-line-endings-0.3.0
CARGO_CRATE_DEPENDS+= num-traits-0.2.19
CARGO_CRATE_DEPENDS+= once_cell-1.21.3
@@ -98,6 +99,7 @@ CARGO_CRATE_DEPENDS+= same-file-1.0.6
CARGO_CRATE_DEPENDS+= scopeguard-1.2.0
CARGO_CRATE_DEPENDS+= serde-1.0.219
CARGO_CRATE_DEPENDS+= serde_derive-1.0.219
+CARGO_CRATE_DEPENDS+= serde_json-1.0.143
CARGO_CRATE_DEPENDS+= shlex-1.3.0
CARGO_CRATE_DEPENDS+= signal-hook-0.3.18
CARGO_CRATE_DEPENDS+= signal-hook-mio-0.2.4
Index: pkgsrc/sysutils/lstr/distinfo
diff -u pkgsrc/sysutils/lstr/distinfo:1.1 pkgsrc/sysutils/lstr/distinfo:1.2
--- pkgsrc/sysutils/lstr/distinfo:1.1 Sat Jul 26 09:01:03 2025
+++ pkgsrc/sysutils/lstr/distinfo Tue Jul 14 11:04:47 2026
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.1 2025/07/26 09:01:03 pin Exp $
+$NetBSD: distinfo,v 1.2 2026/07/14 11:04:47 pin Exp $
BLAKE2s (aho-corasick-1.1.3.crate) = 36150b5dacb72fa7cd0d33aee15e14857914224878f0af76eabcb9daa68e3ae0
SHA512 (aho-corasick-1.1.3.crate) = ba422a54688c4678fcf16e34fdf3ed06c333e6e3fc8b75af9272a215add494d43ebaef319021134b61327fd5d3572aec0dc655b714ffb3bc71ba3c265c9ebb69
@@ -204,15 +204,18 @@ Size (lru-0.12.5.crate) = 16047 bytes
BLAKE2s (lscolors-0.9.0.crate) = 40df275c3e934688e798aae7d99f8d79eb32a64623b7328e0066b7a63085deda
SHA512 (lscolors-0.9.0.crate) = eafca6524657ffd16a77d05c7bf4a2e6eb842618767be39c516ad1b14ea181c9dff4d02b78e246194a2088798ebd6e22b1aa6ff1498df7de1f43cb3920a47d7f
Size (lscolors-0.9.0.crate) = 20899 bytes
-BLAKE2s (lstr-0.2.1.tar.gz) = d0ffabbc3fce3bf0251953be2d9e7d96a3983a978b476240f57a48fe67975ae5
-SHA512 (lstr-0.2.1.tar.gz) = 5922be838cfb559edfe185ed3118dd587b62c7c7a854bf65f545356240f0460fe6a3c02e909d9ca6f8363063390ed3e5fdc514f8dc2e241293ea4597b49d6354
-Size (lstr-0.2.1.tar.gz) = 456818 bytes
+BLAKE2s (lstr-0.3.0.tar.gz) = 13854fef407d57a7fb06f50eb4bd0d1695014863b4aba54d37c19e2c167ceb09
+SHA512 (lstr-0.3.0.tar.gz) = d77cf27bc74b792edd893bc5778e5872c4d1ef5b319c1c38041aa29e3e69cfc0b62b50ab8a2b832694e5342b51eac27cb362a13c6ca91b362f9d6dae1c8c0c0e
+Size (lstr-0.3.0.tar.gz) = 506673 bytes
BLAKE2s (memchr-2.7.4.crate) = 87799dee61c273cba812d73b67f6ccaf05d8f18d4cc33e0f70986a1485ee0d64
SHA512 (memchr-2.7.4.crate) = 8d0e8b9c30208897d4b1b920f1bdcccd0c2b75d92a06abe4a1b2407938768abb6487d63de56c6a80419798fe69517210643dfaf11f5f5540185f0eccf220adb2
Size (memchr-2.7.4.crate) = 96670 bytes
BLAKE2s (mio-0.8.11.crate) = 659fce154676d01c5515641898ac4d103d6c8fe5a40b175e29edfb05fe043098
SHA512 (mio-0.8.11.crate) = 9a2806ea78b0637d0cf92448abcd50bc5d09bd80da0f37752c847bc98d014baae7a5cc4d929de98be6283c76d82ccab1f1467aa6ab583a4e782d97d5592b0bb1
Size (mio-0.8.11.crate) = 102983 bytes
+BLAKE2s (natord-1.0.9.crate) = 0e3a2b5077d1f66f232fcd853c5d90cb8f4542783661fafa384bb66dbb44546e
+SHA512 (natord-1.0.9.crate) = bf58eda54c759fecca1fd310bece370f26555bde1096081adc5bb1e9446a538f1652fb3049a52f898f4f62a2608805b72cb72dd52ff3fc9b88fe0a7c9071025a
+Size (natord-1.0.9.crate) = 3866 bytes
BLAKE2s (normalize-line-endings-0.3.0.crate) = d148e24dadfbeccefd806b3d8f5426498c5118471813392b089158daffe2c77f
SHA512 (normalize-line-endings-0.3.0.crate) = f8e2a6e333b0e8972febe8b9cf058c8d899c384fd177e0b6ef1c5f94e0fa18192963970cb1a2ba80e3135a8cca66cdae6796e4d84ac6b325bb369575bdfc6eea
Size (normalize-line-endings-0.3.0.crate) = 5737 bytes
@@ -297,6 +300,9 @@ Size (serde-1.0.219.crate) = 78983 bytes
BLAKE2s (serde_derive-1.0.219.crate) = 871c98d0a22904b21fc4ed9b6f67689ffd45b15bfaef16d7b9853542fcf568c8
SHA512 (serde_derive-1.0.219.crate) = 1676bbf09e11273705a35c540d52d35d1bba7cdf1f347d40a364d7ae9269167f9f0f62ff4fa384aaa613c83e432a8eb3c016587ea643bb11434c00664a5c116b
Size (serde_derive-1.0.219.crate) = 57798 bytes
+BLAKE2s (serde_json-1.0.143.crate) = 4925ffb074acdf1e6f90ddbec9b257aa6d5db2243fc35ba2be8465e095f167ad
+SHA512 (serde_json-1.0.143.crate) = 084fa35adc0d720c3868d57b2d4a2f30af08b650e876ee88014cf1b98d49079f5ddfe5b14743c63ebc5b9bd8291c6d03fd34f07b770a25874f00ea7c42bdde8b
+Size (serde_json-1.0.143.crate) = 155342 bytes
BLAKE2s (shlex-1.3.0.crate) = 00a54f2882a7a2c2170fca55bd1acd51eea79f115f972ce143b5f4c9c974ee43
SHA512 (shlex-1.3.0.crate) = 5c8cedbe666a14b8a0874defb9208146ce64579cde52ed483e4a794cac5dde6a24bf8d684404edff582f842e1fd4fa3fbeddbe074f191e4ec4aa517aa456fe8a
Size (shlex-1.3.0.crate) = 18713 bytes
Home |
Main Index |
Thread Index |
Old Index