v0.0.1-alpha6
What's Changed
✨ New Features
Core & Architecture
- Internal FUSE mount with auto-start support (#275) — AltMount can now manage its own FUSE mount lifecycle, no external setup required
- Segment cache — persistent on-disk segment cache to dramatically reduce repeat download overhead (#309)
- Nested RAR extraction — full support for RAR-in-RAR and 7zip nested archives (#324, #343)
- ISO expansion inside RAR/7zip containers; keeps only the largest file (#366)
- SOCKS5 proxy support for NNTP providers (#170)
- Configurable nested RAR extraction toggle in UI and API (#348)
Importer & Queue
- Persistent import history with category support — survive restarts (#289)
- Manual queue priority control — PATCH
/api/queue/{id}/priority+ UI button (#361) - Directory Watcher — automatically imports NZBs dropped into a watched folder (#208)
- NZBLNK resolver — resolves NZBLNK links via NZBKing and NZBIndex (#202)
- Import deduplication & validation optimization (#266)
- Enhanced NZBDav import UI with progress and detailed status (#264)
- Sample file auto-ignore on import
- PAR2 files now exported to meta to enable proper exports (#95)
Health & Monitoring
- Advanced health monitoring with path recovery and data verification (#290)
- Hybrid data verification mode to detect corrupted files (#263)
- Metadata integrity checks and zombie cleanup (#265)
- Automatic metadata backup system (#269)
- Symlink regeneration for files without library association (#201)
Authentication & Security
- Simplified single admin user model — cleaner, more predictable auth (#332)
- JWT secret hardening — auto-generated cryptographically secure secrets (#329, #325)
- Path traversal, CORS, and auth hardening (#325)
- Secure unauthenticated NZBDav import endpoints (#317)
- JWT cookie configuration options (#117)
- Auto-redirect to login on 401 / expired JWT (#331)
- Admin password change from UI (#330)
Frontend & UI
- GitHub version check and in-app update mechanism (#322)
- DaisyUI theme selector — multiple built-in themes (#316)
- Dashboard overhaul with Activity Hub and real-time metrics (#288)
- Modern redesign of Queue, Health, Files, and Import pages (#287)
- Responsive mobile layouts for Queue and Health tables (#299)
- Active streams display on dashboard (#130)
- File format labels in FileExplorer cards and info modal (#368)
- Queue sorting functionality (#96)
- Speed test for NNTP providers
- Ping (ms) metric in NNTP provider status cards (#293)
ARR Integration
- Improved path matching with filename and folder fallbacks (#267)
- Fix SABnzbd category compatibility for Sonarr/Radarr (#272)
- Improved category handling for ARR auto-setup (#182)
- Pause and additional SABnzbd queue methods (#119)
--linksflag support for symlink mounts (#363)
Configuration
- All missing backend configuration parameters now exposed to frontend (#296)
- Exposed
allow_nested_rar_extractionin GET config response (#354) - Configurable host in generated
.strmfiles (#252)
⚡ Performance Improvements
- Raise default
max_download_prefetchfrom 3 → 10 for faster streaming (#359) - 6 targeted NZB import pipeline optimizations — significant throughput improvement (#345)
- 4 targeted NZB parser optimizations (#347)
- Lazy segment loading — segments loaded on first read instead of at file open (#319)
- FUSE Linux mount options optimized inspired by rclone (#308)
- FUSE metadata cache to reduce filesystem lookups (#276)
- Library sync optimization for large libraries (#333)
- NNTP connection pool upgraded to nntppool v4 (#282)
- Improved FUSE performance and unified mount configuration (#285)
🐛 Bug Fixes
Importer
- Prevent NZB filename collision from overwriting existing files (#353)
- Skip download when no NNTP providers configured (#355)
- Fix nested RAR extraction error handling (fail instead of fallback) (#346)
- Fix context cancellation propagation to prevent stuck imports (#172)
- Strip virtual path prefix correctly (#304)
- Prevent panic on NZB files with segment-less entries (#306)
- Fix fallback item not removed from queue after SABnzbd transfer (#350)
- Use
PackedSizefor RAR segment validation (#222) - Ignore persistent
.nzbspath in virtual directory calculation (#220) - Fix replace strategy for persistent NZB storage (#219)
- Use relative paths in directory watcher (#232)
- Remove ID prefix from NZB filenames (#215)
API & Backend
- Validate numeric prefix before stripping from queue
target_path(#356) - Add
User-Agentheader for NZB URL downloads to avoid 403 errors (#352) - Include
allow_nested_rar_extractionin GET config response (#354) - Prevent accidental metadata deletion via ARR webhooks (#256)
- Ignore
EpisodeFileDeletewebhook to prevent accidental library wipes (#253) - Handle boolean
deletedFilesandMovieDeleteevents in webhooks (#251) - Return error if ARRs disabled on SABnzbd auth (#213)
- Remove redundant ARR scan triggers causing errors in v4+ (#166)
- Fix SABnzbd category compatibility for Sonarr/Radarr (#272)
- Prevent file descriptor leak in stream tracker (#167)
Health
- Fix 4 DB-ordering and state-management bugs in health worker (#344)
- Reset stuck pending jobs on startup and add disable toggle (#335)
- Move metadata to corrupted only after ARR repair is confirmed (#334)
- Fix health check scheduling and ARR integration (#188)
- Fix library sync deleting files
- Ensure playback failures trigger immediate repair (#176)
- Fix health status not updating from checking to healthy (#257)
FUSE / Filesystem
- Resolve FUSE mount hanging on file reads with context propagation (#302)
- Resolve mount stuck state showing mounted when not ready (#292)
- Handle context cancellation as debug (not errors) (#291)
- Implement
Statfsto report filesystem size (#295) - Improve move/rename operations with atomic renames and proper cleanup (#297)
- Set
DiskSpaceTotalSizeto matchVFSCacheMaxSize(#351) - Reset
originalRangeEndon Seek to fix video playback (#277) - Skip rclone VFS notifications for FUSE/none mounts (#320)
Authentication
- Properly handle disabled auth state in UI (#261)
- Fix XSRF check and admin password change (#330)
- Auto-redirect to login on 401 (#331)
Usenet / Streaming
- Prevent memory leak by closing all segments in
Clear()(#254) - Prevent premature segment closure during streaming (#216)
- Resolve send on closed channel panic in
UsenetReader(#307) - Prevent use-after-free race condition in NZB parser (#160)
- Fix memory leak — replace bufpipe with
io.PipeinUsenetReader(#165) - Fix AES-encrypted 7z file download blocking on last bytes (#162)
- Resolve nil pointer dereference in
triggerFileRepair(#161)
Frontend
- Resolve sidebar always showing 0.0.0 version (#365)
- Fix import queue display, health % with pending, and auto-clear (#338)
- Ensure fresh playback data on tab switch (#342)
- Fix TypeScript build errors with missing type definitions (#301)
- Require save button for provider reorder and extend cache size range (#321)
🔐 Security
- JWT secrets hardened — auto-rotated if weak/missing (#325, #329)
- Path traversal protection added (#325)
- CORS policy tightened (#325)
- NZBDav import endpoints secured — require authentication (#317)
🔧 Refactoring & Internals
- Importer decomposed into focused sub-packages (#175)
- ARR module split into sub-packages with injected dependencies
- Config path validation extracted to separate package
- Standardized API responses with shared utilities (#174)
- NNTP connection pool upgraded to nntppool v4 (#282)
- cgofuse updated to v1.6.0 (#318)
- Go version updated to 1.25.1
- rardecode updated to v2.1.2
📚 Documentation
- Improved integration and import strategy documentation
- Added migration tool from NZBDav to AltMount
- Docker volume plugin documentation by @VEEC023
- Improved general documentation (#298)
🎉 New Contributors
- @drondeseries made their first contribution
Full Changelog: v0.0.1-alpha5...v0.0.1-alpha6