$ show LumiBearStudio/SpanFinder
SpanFinder is a fully-featured Windows file explorer replacement built with WinUI 3 and .NET 8, implementing the macOS Finder Miller Columns paradigm. The application supports multiple view modes (Miller Columns, Details, List, Icons), multi-tab with tear-off, split pane, Quick Look preview, batch rename, archive handling (ZIP, RAR, 7z via native OtterZip engine), remote file access (FTP/SFTP/SMB), Git integration, cloud sync badges, and a file shelf for drag-and-drop staging. The architecture follows MVVM with dependency injection, extensive use of Win32 P/Invoke and COM interop for shell integration, and a separate thumbnail worker process for crash isolation. The codebase is well-organized into Services, Models, ViewModels, and Helpers, with over 150 unit tests and 40+ UI automation tests. However, it exhibits some mixed abstraction layers and a few large partial classes (MainWindow, MainViewModel), and many comments reference specific bug fixes, indicating ongoing refinement. The repository is actively maintained with recent commits, a single open issue, and regular versioned releases (v2.0.7).
The LLM identified 3 files worth highlighting for reuse:
Provides Korean initial consonant (chosung) matching and subsequence scoring for fuzzy search. Implements a custom scoring algorithm that ranks results by substring position and chosung match quality. Stateless and dependency-free, it can be extracted into any .NET project requiring Korean-friendly search.
A reusable marquee (rubber band) selection helper for WinUI ListView and GridView controls. Uses a state machine with dead zone, auto-scroll, and differential selection updates. Detachable from any view via simple attach/detach calls, making it a drop-in component for any XAML-based list selection scenario.
Implements a generic disk-based cache with LRU eviction (delete files older than 7 days or exceeding 1GB), SHA1-based cache keys, and atomic tmp-file writes. Handles concurrent access with semaphore and includes waste collection for orphaned tmp files. The cache logic is entirely self-contained and can be reused for any disk-caching need with minimal adaptation.