eDirStat v2.1.0 — 8 Languages, Themes, Web Snapshot Viewer & Linux MFT

eDirStat 2.1.0 is our biggest quality-of-life release yet — eight languages, four themes, a browser-based snapshot viewer, NTFS MFT scanning on Linux, and a faster v3 snapshot format, all backed by 100+ new tests.

eDirStat v2.1.0 — 8 Languages, Themes, Web Snapshot Viewer & Linux MFT

eDirStat 2.1.0 is our biggest quality-of-life release yet — eight languages, four themes, a browser-based snapshot viewer, NTFS MFT scanning on Linux, and a faster v3 snapshot format, all backed by 100+ new tests.

✨ Highlights

  • 🌍 Speak your language — Full GUI localization in 8 languages with a built-in selector
  • 🎨 Your theme, your way — System (auto), Dark, Light, and High Contrast themes
  • 🌐 Snapshots in the browser — Explore saved .edst scans online, no install required
  • 🐧 MFT scanning on Linux — NTFS Master File Table parsing joins Windows, extension records included
  • 💾 v3 snapshots — Compact columnar encoding: smaller files, faster loads (v2 files still open)
  • ⏹️ Total scan control — Cancel any scan mid-flight, or restrict it to a single filesystem
  • 🖥️ New Scan dialog — Pick from detected drives and mount points, no typing required
  • 🏁 Termination race fixed — A rare work-stealing early-exit bug is gone, with stress tests to prove it

🔧 Under the hood: the project is now three crates (edirstat-core, edirstat, edirstat-gui) for cleaner crates.io publishing · view preferences persist between sessions · Del / Shift+Del trash & delete shortcuts · configurable timestamp formats · UI stack upgraded to egui v0.36 · 100+ new tests now guard the arena, snapshot format, scan engine, and every statistics chart.

Added

GUI Enhancements & Features

  • 🌍 Full GUI Localization: Migrated the entire interface to Fluent translations and added a language selector to the View menu, shipping with translations for Spanish, German (community-reviewed), Dutch, French, Portuguese, Italian, and Polish.
  • 🎨 Theme System Overhaul: Added a System theme with automatic runtime detection, plus brand-new High Contrast and Light themes.
  • 🖌️ Treemap Styling Options: Added a View option to draw borders around treemap rectangles, new treemap styles for improved visual clarity and contrast, and dedicated fallback coloring for directory leaf blocks.
  • 🗂️ "New Scan" Modal: Added a new scan dialog, redesigned to list detected drives and mount points for quick scanning, and defaulted the scan path input to the current working directory.
  • ⏹️ Scan Cancellation: Added the ability to cancel an in-progress directory scan.
  • 🖇️ Same-Filesystem Scan Option: Added a toggle to restrict traversal to the root filesystem and avoid crossing mount points.
  • 📂 File Open Operation: Added a FileOpen table operation to the directory explorer.
  • ↕️ Sort Scrolling: The directory explorer now scrolls to the relevant row after sorting by a column.
  • ⌨️ Delete Shortcuts: Added Del and Shift + Del keyboard shortcuts for trash and delete operations, along with an option to bypass their confirmation dialogs.
  • 🕐 "Time Format" View Option: Added a configurable timestamp display format for the directory explorer.
  • 💾 View Preferences Persistence: View options are now persisted to disk via a new preferences model and restored on launch.
  • 🌳 Refresh State Restoration: Open/expanded tree states are now restored after refreshing a directory.
  • 🧮 Deduplicator Interaction Gating: Deduplicator row interactions are now disabled until the deduplication run has fully completed.
  • 📏 Layout Sizing: Improved the table/statistics panel split sizing and the default name column width.

Web App & Browser Viewer

  • 🌐 Browser Snapshot Viewer: Split the project into three crates (edirstat-core, edirstat, edirstat-gui) and launched edirstat-web, a wasm32 browser build of the GUI acting as a pure snapshot viewer.
  • 🌐 Wasm Demo Snapshot: Added a wasm-ready MGS3 demo snapshot to the website.
  • 🌐 Graceful Web Degradation: Non-viable UI elements on the web build are now shown disabled with explanatory tooltips instead of being hidden.
  • 🌐 Demo & Welcome Improvements: Improved the demo and welcome screens across the GUI and website, plus website metadata improvements.
  • 🎥 Comparison Videos: Added WinDirStat and WizTree comparison videos to the website.

CLI & Headless Tooling

  • 💾 Snapshot Extension Handling: The --to headless snapshot mode now automatically appends the .edst extension when not specified, with a clearer help message.

Platform & Filesystem

  • 🐧 Linux NTFS MFT Scanning: NTFS drives can now be scanned via the Master File Table on Linux when permissions allow (#14), including information folded in from MFT extension records (#15).

Developer Tooling & Testing

  • 🧪 Expanded Test Suite: Added 100+ new unit and integration tests covering the arena, snapshot format, varint codecs, scan engine, coordinator, MFT parser, CLI, and all statistics charts.
  • 🚀 itch.io Deploy Job: Initialized a CI/CD job to deploy multivers binaries and installers to itch.io on release.
  • 🛠️ Multi-Target Multivers Script: Extended the local multivers builder to support multiple compilation targets.

Changed

Performance & Allocations

  • ⚡ V3 Snapshot Format: Introduced a new columnar v3 snapshot persistence format for significant memory and CPU speedups.
  • ⚡ Transparent Zstd Layer: Made the snapshot zstd compression layer transparent to loaders and added an optional uncompressed mode (--no-compression).
  • ⚡ Frozen String Pool: Added a frozen variant of the arena StringPool, reducing indexing memory.
  • ⚡ Compact Timestamps: Removed access-time support and packed timestamps as u32 epoch seconds.
  • ⚡ BitSet Explorer Cache: Switched cached explorer matches from Vec<bool> to a BitSet.
  • ⚡ MFT Metadata Records: Avoided collecting the first 16 (metadata) NTFS records during MFT scans.

Platform Compatibility & Hardening

  • 🛡️ Snapshot Bounds Checking: Significantly strengthened bounds checking in the snapshot persistence loader.

Project Maintenance & Build Configuration

  • 📦 egui v0.36: Upgraded the UI stack to egui v0.36 and egui-table-kit v0.6, vendoring egui-notify in-tree (upstream no longer updated).
  • 📦 Dependency Updates: Bumped project dependencies throughout, including compact_str v0.10 and the web/npm packages.
  • ⚙️ Toolchain Update: Updated the Rust nightly compiler toolchain to nightly-2026-07-15.
  • ⚙️ GitHub Actions Updates: Unified all CI/CD workflow actions to their latest major versions (checkout@v7, upload-artifact@v7, download-artifact@v8).
  • 🧹 Engine Cleanup: Refactored the traversal engine's worker context handle and renamed the deduplicator tab module.
  • 🧹 Git Ignore Rules: target/ directories are now ignored at any repository depth.
  • 📦 crates.io README: The edirstat crate now renders the repository's root README.md on crates.io via the readme manifest field, retiring the separate crate-local blurb.
  • 📄 Documentation: Linked the project website from the README.

Fixed

Directory Scanner & Deduplicator

  • 🏁 Traversal Termination Race: Fixed a work-stealing termination race in the parallel scanner that could truncate scans early on deep directory trees — an idle worker could declare completion while tasks sat unpicked in local worker queues. Termination is now driven by an in-flight task counter, backed by multithreaded stress regression tests.

GUI & Interactive Elements

  • 🖱️ Hover Occlusion: Fixed the table row hover effect being occluded (via egui-table-kit bump).
  • 🔺 Expand/Collapse Triangle: Fixed the click hitbox for the expand/collapse triangle in the classic view.
  • 🎨 System Theme Detection: Fixed System theme reading on modern egui.
  • 🖼️ Modal Icons: Migrated modal icons to PNG, avoiding SVG text rendering issues.
  • 📐 View Dropdown Icons: Fixed an icon alignment inconsistency in the View dropdown.
  • 🔄 Refresh Timing Cache: Fixed directory refresh incorrectly re-using cached timing results.
  • ♻️ Cache Invalidation: Made GUI cache invalidation robust across data changes.
  • 🌳 Tree Header Render: Fixed the explorer tree header rendering on error, and a header padding clip issue.
  • 🌐 wasm Gating: Improved feature gates for wasm no-op paths, and fixed feature gating of the egui-async image loader call.

Cross-Platform & Windows

  • 🪟 Windows Cancel Token: Corrected the cancel token arguments for the Windows traversal path.

Localization & Web

  • 🌍 Translation Fixes: Corrected the Dutch selection-items string, and resolved German translation conflicts and typos.
  • 🌐 Favicon Packaging: Corrected asset packaging for the website favicon.

Project Maintenance

  • 📦 crates.io Packaging: Moved compile-time-embedded assets (licenses, locales, and images) into the edirstat-gui crate so every published crate builds standalone on crates.io, backed by a new regression test.
  • 🍏 macOS Bundle Versioning: Fixed stale hardcoded version strings in macOS app bundles; CFBundleShortVersionString is now generated from Cargo.toml in both CI/CD workflows.
  • 🧪 Case-Sensitivity Test Portability: Fixed the $MFT probing tests to detect filesystem case sensitivity at runtime instead of assuming case-sensitive semantics, resolving macOS CI failures.
  • 🔢 Version Sync: Synchronized version numbers across all manifests.

💖 Contributors & Thanks

  • @Lej77 — for the NTFS $MFT fixes and improvements, including Master File Table scanning of NTFS drives on Linux (#14) and support for folding in MFT extension records (#15).
  • @AlexanderSchuetz97 — for the many feature requests, German translation review, and extensive bug testing that helped shape this release.


Explore eDirStat Features & Tools


Get eDirStat v2.1.0

Official pre-compiled binaries are available exclusively on itch.io, funding open-source development.

Get on itch.io GitHub