Skip to content

Latest commit

 

History

History
116 lines (93 loc) · 5.64 KB

File metadata and controls

116 lines (93 loc) · 5.64 KB

Changelog

All notable changes to RCDir are documented in this file.

[Unreleased]

[5.1.1132] - 2026-02-28

Added

  • /Tree switch: hierarchical directory tree view with Unicode box-drawing connectors (├──, └──, )
  • /Depth=N switch: limit tree recursion depth (e.g., /Depth=2 shows two levels)
  • /TreeIndent=N switch: configurable indent width per tree level (1–8, default 4)
  • /Size=Auto switch: Explorer-style abbreviated file sizes (e.g., 8.90 KB, 1.00 MB, 2.38 GB) with fixed 7-character width — default in tree mode
  • /Size=Bytes switch: explicit opt-in for exact comma-separated sizes (existing default for non-tree modes)
  • Tree connector color (TreeConnector) configurable via RCDIR environment variable
  • RCDIR env var support for Tree, Tree-, Depth=N, TreeIndent=N, Size=Auto, Size=Bytes
  • Thread-safe empty subdirectory pruning when file masks are active (producer-side upward propagation via parent back-pointers and condition variables)
  • Reparse-point cycle guard: junction/symlink directories are listed but not expanded, preventing infinite loops in both /S and /Tree modes
  • Interleaved sort in tree mode: directories and files sorted together (not grouped)
  • Per-directory summary at each tree level plus grand total at end
  • Comprehensive test suite: 314 tests covering tree connectors, depth limiting, pruning, streams, icons, reparse points, and column alignment

Changed

  • Minor version bump from 5.0 to 5.1

Incompatibilities

  • /Tree cannot be combined with /W (wide), /B (bare), /S (recurse), or /Owner
  • /Size=Bytes cannot be used with /Tree (tree mode requires fixed-width sizes)
  • /Depth and /TreeIndent require /Tree

[5.0.1131] - 2026-02-27

Added

  • Application icon and VERSIONINFO resource block for Windows file properties
  • WinGet package manifest (relmer.RCDir) and automated publish step

Changed

  • Statically link the C runtime (eliminates vcruntime140.dll dependency)

Fixed

  • WinGet workflow: install wingetcreate before publish step
  • WinGet workflow: use env context for PAT secret in step conditions

[5.0.1129] - 2026-02-19

Minor fixes.

Fixed

  • /O:d- (and similar trailing characters after the sort key) now correctly produces an error instead of being silently ignored
  • Mapped network drives could resolve UNC path information incorrectly
  • Cloud status help section now shows Nerd Font glyphs when a Nerd Font is active

[5.0] - 2026-02-17

Added Nerd Fonts icon support for file extensions and well-known directories. Port of initial TCDir implementation of this feature.

Added

Core Listing

  • Initial release — complete Rust port of TCDir with full feature parity.
  • Colorized directory listing with headers and footers
  • File size, date/time, and attribute columns
  • Sort options: name, extension, size, date (/O switch)
  • Attribute filtering (/A: switch with all standard + cloud attributes)
  • Mask grouping: multiple patterns targeting the same directory grouped and deduplicated
  • Page-at-a-time display (/P switch)

Recursive Listing

  • Recursive directory listing (/S switch)
  • Multi-threaded producer-consumer architecture with streaming output
  • Single-threaded fallback for single-file mask patterns

Display Modes

  • Wide listing mode (/W switch) with dynamic column layout
  • Bare listing mode (/B switch) with full paths

Cloud Status

  • Cloud sync status visualization for OneDrive, iCloud, etc.
  • Status symbols: ○ (cloud-only), ◐ (local), ● (pinned/always available)
  • Cloud attribute filters: /A:O (cloud-only), /A:L (local), /A:V (pinned)

File Metadata

  • File owner display (/Q switch) via GetNamedSecurityInfoW/LookupAccountSidW
  • Alternate data streams display (/R switch) via FindFirstStreamW/FindNextStreamW

Nerd Font Icons

  • ~187 file extension icon mappings aligned with Terminal-Icons default theme
  • ~65 well-known directory icon mappings (Terminal-Icons aligned with intentional deviations)
  • Auto-detection of Nerd Font availability via system font enumeration
  • WezTerm auto-detection (bundles Nerd Font symbols natively)
  • ConPTY terminal detection (Windows Terminal, VS Code, etc.)
  • /Icons and /Icons- CLI switches for manual icon override
  • RCDIR=Icons / RCDIR=Icons- env var for persistent icon preference
  • RCDIR=.ext=Color,U+XXXX icon override syntax for per-extension custom icons
  • Cloud status Nerd Font glyph upgrade (nf-md glyphs when NF available)
  • Icon colors inherit file type colors from extension color configuration
  • Icon display in /Config and /Env diagnostics

Configuration

  • RCDIR environment variable for persistent configuration
  • Extension color customization (e.g., RCDIR=.rs=Cyan)
  • Background color support (e.g., RCDIR=.log=White on Blue)
  • Well-known directory color overrides (e.g., RCDIR=dir:node_modules=DarkGray)
  • Configuration display (/Config switch) with color table, icon status, and env var diagnostics
  • Color validation: invalid background colors reject entire entry; same fg/bg rejected as unreadable
  • Foreground colors matching terminal background auto-corrected with contrasting background

Help and Diagnostics

  • Colorized help output (/? switch)
  • Environment variable help (/Env switch) with syntax reference and active overrides
  • Performance timing (/T switch)

Build and CI

  • Dual-target builds: x86_64-pc-windows-msvc and aarch64-pc-windows-msvc
  • Auto-increment build version via build.rs and Version.toml
  • Release profile: LTO, single codegen unit, symbol stripping
  • CI/CD pipeline with GitHub Actions (build, clippy, test, artifact upload)
  • PowerShell build, test, and deploy scripts