Release Date: December 6, 2025
Version 1.4.0 delivers significant performance improvements across the application, focusing on File Manager responsiveness, Asset Manager efficiency, and enhanced playback controls. This release eliminates UI blocking during folder navigation and adds professional NLE-style JKL scrubbing controls.
Professional NLE-style playback controls for the fullscreen preview player:
- J key: Play backward (reverse playback)
- K key: Pause
- L key: Play forward
Works with both videos (via GStreamer rate control) and image sequences (direction-aware frame stepping). Controls work even when media is already playing.
- Removed UI blocking: Everything SDK queries now run off the UI thread using
QtConcurrent::run - Non-blocking navigation: Folder tree expansion no longer freezes the application during enumeration
- Responsive UI: Users can interact with the application while folder contents are being loaded
- Technical details: Implemented async pattern in
EverythingFolderModel::fetchChildrenAsync()withQFutureWatchercallbacks
- Partial results immediately:
indexForPath()now returns results as far as it can traverse without blocking - Async continuation: Unfetched nodes trigger asynchronous fetches that complete in the background
- Smart notification:
childrenFetchedsignal notifies when data is ready for deferred tree expansion
- 50ms debounce timer: Prevents rapid successive navigation from overwhelming the system
- Smoother experience: Reduces system load when users quickly click multiple folders
- Optimized performance: Consolidates multiple rapid requests into single operations
- Wait for data:
fmScrollTreeToPath()now waits asynchronously for child data before expanding - Graceful loading: Tree expands only when data is available, preventing visual glitches
- Pending path tracking: Stores navigation state while async operations complete
- Removed disk lookups:
FmItemDelegatenow usesQFileSystemModel::isDir()for cached data - Eliminated I/O in paint: No more
QFileInfo::isDir()calls during item rendering - Faster painting: Grid/list view rendering is now significantly faster
- New DB columns: Added
file_typeandlast_modifiedcolumns to assets table - Eliminated QFileInfo calls:
AssetsModel::query()now reads metadata from DB instead of disk - Faster folder navigation: No more per-file disk I/O when loading asset lists
- Automatic migration: Existing databases are upgraded automatically
- Fixed QCache cost calculation: LivePreviewManager now uses actual pixmap memory size for eviction
- Proper memory budgeting: Cache now correctly manages ~64MB of thumbnails (256 entries × 256KB each)
- Fixed thumbnail flickering: Resolved aggressive cache eviction causing video thumbnail flicker
- Memory-first lookup: Cache checks memory before disk for faster hits
- Static font caching:
AssetItemDelegateandFmItemDelegatenow cache QFont objects - Eliminated per-paint allocations: Fonts created once, reused on every paint call
- Smoother scrolling: Reduced CPU usage during grid/list view rendering
- Debug logging gated: ThumbnailCacheManager debug output disabled in release builds
- SequenceDetector optimized: Uses string parsing instead of QFileInfo for file extensions
- Safer processEvents(): Import dialogs use timeout-limited event processing to reduce reentrancy
- Lambda-based async callbacks: Replaced
qobject_castpattern with lambda connections to avoid template issues - Mutex protection: Added thread-safe tracking of in-flight async fetch operations
- Smart duplicate prevention: Prevents simultaneous fetches of the same path
- Case-folded path keys: Handles Windows path case-insensitivity correctly
- GStreamer playback rate: Added
setPlaybackRate()API for reverse playback support
- Fixed UI freezes when selecting folders in File Manager
- Fixed UI hangs when expanding folder trees with many subfolders
- Eliminated blocking I/O operations on the UI thread during navigation
- Resolved paint performance issues in file grid/list views
- Fixed video thumbnail flickering in File Manager caused by cache eviction
- Fixed QFileInfo blocking calls in AssetsModel during folder navigation
- Folder navigation: Now responsive even with thousands of subfolders
- Tree expansion: Typically completes without user-perceptible delay
- UI responsiveness: Application remains fully interactive during folder operations
- Memory usage: Optimized with bounded LRU cache (~64MB for thumbnails)
- Asset loading: Significantly faster with DB-cached metadata
src/everything_folder_model.h- Added async infrastructuresrc/everything_folder_model.cpp- Implemented async enumeration patternsrc/mainwindow.h- Added debounce timer and pending path trackingsrc/mainwindow.cpp- Integrated async signals and deferred navigationsrc/fm_item_delegate.cpp- Replaced disk lookups with model cache, static font caching
src/assets_model.cpp- Read file_type/last_modified from DB instead of QFileInfosrc/db.cpp- Added file_type, last_modified columns with migration and indexsrc/asset_item_delegate.cpp- Static font cachingsrc/live_preview_manager.cpp- Fixed cache lookup order and QCache cost calculationsrc/thumbnail_cache_manager.cpp- Gated debug logging with NDEBUGsrc/sequence_detector.cpp- Replaced QFileInfo with string parsingsrc/import_progress_dialog.cpp- Timeout-limited processEvents()
src/media/gstreamer_player.h- Added setPlaybackRate() and playbackRate() APIsrc/media/gstreamer_player.cpp- Implemented variable rate playback with GStreamersrc/preview_overlay.h- Added sequencePlayDirection for reverse sequence playbacksrc/preview_overlay.cpp- JKL key handling, direction-aware sequence timer
native/qt6/CMakeLists.txt- Version update to 1.4.0installer/kassetmanager.nsi- Version update to 1.4.0
- Folder enumeration performance depends on Everything SDK availability on Windows
- Very large folder trees (10,000+ subfolders) may still show minor delays on initial load
- UNC paths (network shares) may have longer enumeration times due to network latency
- Reverse video playback (J key) depends on codec support; some formats may not support negative rates
- Folder Navigation: Test expanding large folder trees with many subfolders
- Rapid Clicking: Verify debouncing works by rapidly clicking different folders
- UI Responsiveness: Confirm application remains responsive during folder operations
- Memory Usage: Monitor memory consumption during extended file manager sessions
- Everything SDK: Test with and without Everything SDK installed to verify fallback behavior
- JKL Scrubbing: Test J/K/L keys on videos and image sequences in fullscreen preview
- Thumbnail Stability: Verify video thumbnails no longer flicker in File Manager
- Asset Loading: Test navigating between folders with many assets
- This is a minor version update with no breaking changes
- Database will be automatically migrated to add new columns (file_type, last_modified)
- All previous settings and configurations are compatible
- Recommended for all users, especially those working with large folder structures
Performance improvements powered by:
- Qt 6 (
QtConcurrent::runandQFutureWatcher) - Everything SDK for fast folder enumeration
- GStreamer for professional video playback with rate control
- Efficient async/await patterns for responsive UI
For more information, visit the Documentation folder or check the Developer Guide.