⭐ Highlights
-
Refined navigation and accessibility
Sidebar, header, breadcrumbs, toolbar actions, and mobile navigation have been streamlined. Navigation states and colors are more consistent, gallery-size controls are keyboard-accessible, and touch devices no longer display persistent hover tooltips. -
Unified local and global search
Local filtering, filename search, and full-text content search are now centralized in a responsive navbar control. DedicatedCtrl/⌘shortcuts provide quick access to each search mode without overriding browser shortcuts while another input is focused. -
Faster interface loading
Main route components and file viewers are now loaded on demand, reducing the initial frontend workload. Viewers also provide dedicated loading and error states. -
Faster and more memory-efficient file operations
Copy operations now use copy-on-write reflinks when supported, with an automatic fallback to standard copies. -
Safer trash management
Trash bins can now be emptied directly while preserving their physical root directories. Internal and special filesystem entries are protected, and the interface automatically refreshes when asynchronous deletion tasks complete.
🐞 Bug Fixes
-
More reliable session renewal
Concurrent requests now share a single token-refresh operation and are safely replayed with the latest CSRF token. Authentication refreshes are restricted to same-origin requests. -
Desktop sessions preserved during service interruptions
Temporary connection failures and503responses no longer sign users out of the desktop application. The interruption is reported while the existing session remains available for recovery. -
Cache cleanup recovery after database outages
Sync-in retries the MariaDB event scheduler when the database recovers. If it remains unavailable or lacks sufficient privileges, a single internal cleanup scheduler is retained as a fallback. -
Clearer Docker database configuration failures
Docker startup now stops immediately with an explicit error when the MySQL URL is missing, instead of retrying a configuration error as though it were a temporary connection failure. -
Improved filesystem identifier compatibility
Valid negative inode-based file identifiers, including large negative values, are no longer incorrectly rejected. -
Cleaner server startup
Routine bootstrap messages are suppressed while warnings and errors remain visible. -
Updated frontend dependencies and translations
Deprecated Angular packages were removed, dependencies were refreshed, unused translation entries were cleaned up, and the Dutch translations for recent items were corrected.
Contributors: @Stephan-P
Features
- frontend:search: centralize local and global search in the navbar (68805c2)
- trash: support trash emptying without deleting their physical roots (588c8bb)
Bug Fixes
- auth: preserve desktop app session during service interruptions (0bbb3b6)
- backend:cache: retry MariaDB event scheduler after database recovery (d4b965e)
- backend:files: accept unsafe negative inode IDs (8509428)
- backend:files: throw consistent error for unsafe filenames in unzip tests (a0652de)
- build: fail when PDF.js assets cannot be downloaded (19caf0f)
- docker: fail fast when MySQL URL is missing (cadd351)
- frontend:auth: safely replay requests after session refresh (1d96f81)
- frontend: disable tooltips on touch devices (884e421)
- frontend: replace deprecated trash icon and expand recents layout (84ac4ed)
- search: prevent browser shortcuts when input is focused (a1ef31c)