What's Changed
- fix(import): enhance normalizeRarPartFilename to preserve padding width by @javi11 in #91
- feat(symlink): update symlinks on update the mount by @javi11 in #93
- feat(export): add par2 to the meta files to allow the export by @javi11 in #95
- feat(queue): add sorting functionality to queue items by @javi11 in #96
- refactor(health): remove dir cleanup from lib scan by @javi11 in #99
- Fix: Remove recursive parameter from vfs/forget call and enhance vfs/… by @drondeseries in #98
- fix(health): prevent scan error on NULL scheduled_check_at in health DB by @DrMxrcy in #106
- Alpha5 by @drondeseries in #111
- feat: add pause and other sabnzbd queue methods by @drondeseries in #119
- Fix: ARR repair paths to prefer symlink import dir when available over mount fallback by @sureshfizzy in #125
- feat(migration): add a tool to migrate nzbdav to altmount by @drondeseries in #122
- Fix docs for Windows rclone commands by @hansmok in #120
- fix(auth): add JWT cookie configuration options by @MythodeaLoL in #117
- feat: add speed test by @drondeseries in #126
- feat: dashboard and navigation improvements by @drondeseries in #129
- feat: display active streams on dashboard by @drondeseries in #130
- fix: prevent panic on par2 files parsing by @javi11 in #134
- fix: improve mount retry logic and import error handling by @javi11 in #136
- fix: prevent memory/CPU leaks in importer and nzbfilesystem by @javi11 in #143
- fix(import): correctly resolve nzb import root relative to mount by @MythodeaLoL in #141
- fix: add periodic cleanup for stale active streams by @javi11 in #149
- fix: prevent program hang from resource leaks and deadlocks by @javi11 in #153
- test: add comprehensive tests for database contention fixes by @javi11 in #155
- fix: prevent 'closed pipe' errors with thread-safe segment writer by @javi11 in #156
- fix: multiple fixes and features by @javi11 in #159
- fix: prevent use-after-free race condition in NZB parser by @javi11 in #160
- fix: resolve nil pointer dereference in triggerFileRepair by @drondeseries in #161
- fix: resolve AES-encrypted 7z file download blocking on last bytes by @javi11 in #162
- fix: resolve category dir path instead of using category name by @javi11 in #163
- fix: resolve memory leak in UsenetReader by replacing bufpipe with io.Pipe by @javi11 in #165
- fix: improve sample detection to handle underscore patterns by @javi11 in #164
- fix: resolve file descriptor leak in stream tracker by @javi11 in #167
- fix: remove redundant ARR scan triggers causing errors in v4+ by @drondeseries in #166
- feat: add SOCKS5 proxy support for NNTP providers by @javi11 in #170
- fix: cumulative updates and optimizations by @drondeseries in #169
- Fix Plex stability, improve import speed, and restore bulk queue actions by @drondeseries in #171
- fix(importer): fix context cancellation propagation to prevent stuck imports by @javi11 in #172
- fix: downgrade nntppool and simplify stale items reset by @javi11 in #173
- refactor: standardize API responses and add shared utilities by @javi11 in #174
- refactor(importer): decompose service into focused sub-packages by @javi11 in #175
- refactor(health): remove dead code and fix Go anti-patterns by @javi11 in #179
- feat(usenet): improve error propagation in UsenetReader by @javi11 in #180
- fix(health): ensure playback failures trigger immediate repair by @drondeseries in #176
- fix(importer): do not mark items as fallback if not configured by @drondeseries in #177
- fix(api): include DownloadClientBaseURL in SABnzbd config response by @drondeseries in #181
- fix(arrs): improve category handling for ARR auto-setup and connectivity tests by @drondeseries in #182
- fix: frontend build by @javi11 in #185
- fix(health/arrs): improve health check scheduling and arrs integration by @drondeseries in #188
- refactor(importer): remove unused code from importer package by @javi11 in #186
- feat(nzblnk): add NZBLNK link resolver with NZBKing and NZBIndex support by @javi11 in #202
- feat: Add symlink regeneration option for unlinked files by @javi11 in #201
- feat(importer): implement directory watcher for automated NZB imports by @drondeseries in #205
- feat(ui): add Directory Watcher configuration UI by @drondeseries in #208
- fix: API and UI Quality of Life improvements by @drondeseries in #210
- fix(api): return error if arrs disabled on sabnzbd auth by @drondeseries in #213
- fix(importer): remove ID prefix from NZB filenames and fix formatting by @javi11 in #215
- fix(usenet): prevent premature segment closure during streaming by @javi11 in #216
- fix(importer): NZB cleanup behavior and persistence improvements by @drondeseries in #207
- fix(importer): implement replace strategy for persistent NZB storage by @javi11 in #219
- feat(nzbdav): importer robustness and performance improvements by @drondeseries in #209
- fix(importer): ignore persistent .nzbs path in virtual directory calculation by @drondeseries in #220
- fix(importer): fix segment validation by @javi11 in #222
- fix(importer): use relative paths in directory watcher by @drondeseries in #232
- Clean pr 68 by @drondeseries in #228
- feat(health): Robust validation, self-repair, and protection by @drondeseries in #245
- fix(core): UI, Config, and Watcher stability improvements by @drondeseries in #243
- feat(importer): Enhanced NZB categorization and queue cleanup by @drondeseries in #244
- feat: Core stability, health check improvements, and config updates by @drondeseries in #247
- Fix health status not updating from checking to healthy by @firestaerter3 in #257
- fix(usenet): prevent memory leak by closing all segments in Clear() by @firestaerter3 in #254
- fix(api): prevent accidental metadata deletion via ARR webhooks by @drondeseries in #256
- fix(api): ignore EpisodeFileDelete webhook to prevent accidental library wipes by @drondeseries in #253
- feat(strm): add support for configuring host in generated .strm files by @drondeseries in #252
- fix(arrs): handle boolean deletedFiles and MovieDelete events in webhooks by @drondeseries in #251
- feat(health): add metadata integrity checks and zombie cleanup by @drondeseries in #265
- fix(api): improve SABnzbd category compatibility for Sonarr/Radarr by @drondeseries in #272
- feat(health): add hybrid data verification mode to detect corrupted files by @drondeseries in #263
- feat(metadata): add automatic metadata backup system by @drondeseries in #269
- feat(importer): add import deduplication and validation optimization by @drondeseries in #266
- feat(importer): enhance NZBDav import UI with progress and detailed status by @drondeseries in #264
- feat(arrs): improve path matching with filename and folder fallbacks by @drondeseries in #267
- feat(fuse): add internal FUSE mount with auto-start support by @javi11 in #275
- feat(fuse): add metadata cache to reduce filesystem lookups by @javi11 in #276
- fix(nzbfilesystem): reset originalRangeEnd on Seek to fix video playback by @javi11 in #277
- feat(nntppool): upgrade to v4 and update related code by @javi11 in #282
- feat(provider): fix provider connection pool by @javi11 in #283
- feat(nntp, fuse): improve con manager and fuse by @javi11 in #284
- feat(fuse): improve FUSE performance and unify mount configuration by @javi11 in #285
- feat(fuse): cross-platform force unmount & mount health validation by @javi11 in #286
- feat(ui): modern redesign of Queue, Health, Files, and Import pages by @drondeseries in #287
- feat(importer): persistent import history and category support by @drondeseries in #289
- feat(dashboard): overhaul with Activity Hub and real-time metrics by @drondeseries in #288
- feat(health): advanced monitoring, path recovery, and data verification by @drondeseries in #290
- fix(fuse): handle context cancellation as debug logs, not errors by @javi11 in #291
- fix(fuse): resolve mount stuck state showing mounted when not ready by @javi11 in #292
- feat(ui): modern redesign of Configuration page and NNTP Provider cards by @drondeseries in #293
- fix(explorer): add symlink support and improve playback speed tracking by @drondeseries in #294
- fix(fuse): implement Statfs to report filesystem size by @drondeseries in #295
- feat(config): expose all missing backend configuration parameters to frontend by @drondeseries in #296
- fix(fuse): improve move/rename operations with atomic renames and proper cleanup by @javi11 in #297
- feat(docs): improve documentation by @javi11 in #298
- feat(ui): responsive mobile layouts for Queue and Health tables by @javi11 in #299
- fix(ui): update logo and improve layout for better responsiveness by @javi11 in #300
- fix(frontend): resolve TypeScript build errors with missing type definitions by @javi11 in #301
- fix(fuse): resolve mount hanging on file reads by @javi11 in #302
- fix(ui): increase prefetch slider max from 50 to 100 by @javi11 in #303
- fix(ui): update StreamingConfigSection for improved user guidance and functionality by @javi11 in #305
- fix(importer): strip virtual path prefix & feat(ci): timestamped dev tags by @drondeseries in #304
- fix(usenet): resolve send on closed channel panic in UsenetReader by @javi11 in #307
- perf(fuse): optimize Linux mount options inspired by rclone by @javi11 in #308
- feat: segment cache implementation by @javi11 in #309
- fix(importer): prevent panic on NZB files with segment-less entries by @drondeseries in #306
- feat(ui): Enhance Queue/Import experience, strict metrics & cleanup by @drondeseries in #312
- style(ui): improve readability and mobile responsiveness by @drondeseries in #315
- feat(ui): add DaisyUI theme selector and clean up custom themes by @javi11 in #316
- fix(fuse,nnttppol): update nntppool to v4.4.1 and add cgofuse v1.6.0 by @javi11 in #318
- fix(security): secure unauthenticated NZBDav import endpoints by @drondeseries in #317
- perf(usenet): lazy on-demand segment loading by @javi11 in #319
- fix(health,importer): skip rclone VFS notifications for FUSE/none mounts by @javi11 in #320
- fix(ui): require save button for provider reorder and extend cache size range by @javi11 in #321
- feat(update): add self-update feature with Docker-based one-click updates by @javi11 in #322
- feat(importer): nested RAR archive support by @javi11 in #324
- security: harden JWT secrets, path traversal, CORS, and auth by @javi11 in #325
- Revert "feat(importer): nested RAR archive support" by @javi11 in #327
- feat(auth): align auth pages with DaisyUI theme + harden JWT secret handling by @javi11 in #329
- fix(auth): disable XSRF check and add admin password change by @javi11 in #330
- fix(auth): auto-redirect to login on 401 when JWT expires by @javi11 in #331
- feat(auth): simplify to single admin user model by @javi11 in #332
- feat(health): optimize library sync for large libraries by @drondeseries in #333
- fix(health): prevent file deletion before replacement is confirmed by @javi11 in #334
- fix(health): reset stuck pending jobs on startup and add disable toggle by @javi11 in #335
- fix(importer): improve RAR/7zip error messages and password handling by @javi11 in #336
- fix(frontend): fix import queue display, health % with pending, and auto-clear by @javi11 in #338
- feat(dashboard): UX improvements and restore metrics by @javi11 in #340
- fix(config): tooltips, segment cache note, queue grid by @javi11 in #341
- fix(frontend): ensure fresh playback data on tab switch by @javi11 in #342
- feat(importer): add nested RAR archive support for RAR and 7zip processors by @javi11 in #343
- fix(health): fix four DB-ordering and state-management bugs in health worker by @javi11 in #344
- perf(importer): improve import pipeline throughput with 6 targeted optimizations by @javi11 in #345
- fix(importer): fail import on nested RAR extraction error instead of fallback by @javi11 in #346
- perf(parser): 4 targeted optimizations for NZB import pipeline by @javi11 in #347
- feat(config): add configurable nested RAR extraction toggle by @javi11 in #348
- fix(api): include allow_nested_rar_extraction in GET config response by @javi11 in #354
- fix(postprocessor): use 0775 group write permissions for created directories by @javi11 in #349
- fix(importer): remove fallback item from queue after SABnzbd transfer by @javi11 in #350
- fix(rclone): set DiskSpaceTotalSize to match VFSCacheMaxSize by @javi11 in #351
- fix(importer): defer processing when no NNTP providers are configured by @javi11 in #355
- fix(api): add User-Agent header for NZB URL downloads to avoid 403 by @javi11 in #352
- fix(importer): prevent NZB filename collision from overwriting existing files by @javi11 in #353
- fix(api): validate numeric prefix before stripping from queue target_path by @javi11 in #356
- feat(queue): manual priority control with up/down arrows in queue UI by @javi11 in #361
- perf(importer): raise default max_download_prefetch from 3 → 10 by @javi11 in #359
- feat(rclone): add --links flag support for symlink mounts by @javi11 in #363
- fix(frontend): resolve sidebar always showing 0.0.0 version by @javi11 in #365
- feat(importer): expand ISO contents in RAR/7zip, keep only largest file by @javi11 in #366
- feat(frontend): show file format labels in FileExplorer by @javi11 in #368
- feat(core): implement performance and reliability enhancements for high-traffic environments by @drondeseries in #367
- fix(frontend): align slider track width with tick labels in config sections by @javi11 in #369
- refactor: frontend lint by @javi11 in #370
- docs: document all supported archive formats in intro by @javi11 in #371
- Add optional rclone cache cleanup when switching mount type by @javi11 in #373
- fix(auth): auto-detect COOKIE_SECURE from request by @javi11 in #376
- fix(fuse): use DIRECT_IO for zero-size files and refactor error translation by @javi11 in #377
- feat(system): add auto-update, fix peak speed reporting, and granular reset stats by @drondeseries in #375
- feat(streamio): add POST /api/nzb/stremio-streams endpoint by @javi11 in #372
- feat(stremio): add configurable base_url to StremioConfig by @javi11 in #378
- feat(queue): add search-by-name NZB import by @javi11 in #379
- feat(database): add PostgreSQL support alongside SQLite by @javi11 in #380
- fix(parser): improve NZB naming resolution to match SABnzbd logic by @javi11 in #382
- feat(stremio): add native Stremio addon with Prowlarr auto-search by @javi11 in #384
- docs: improve homepage features section with icons and expanded content by @javi11 in #385
- feat(providers): add skip_ping support and upgrade nntppool to v4.5.0 by @javi11 in #388
- docs(api): add OpenAPI spec and interactive API explorer by @javi11 in #389
- fix(docs): add Buffer polyfill for API Explorer by @javi11 in #390
- fix(iso): fix size truncation for Blu-ray ISO streams >4GB by @javi11 in #391
- feat(docs): upgrade API spec to OpenAPI 3.0 and fix dark-mode styles by @javi11 in #392
- feat(errors): introduce ErrArticlesNotFound for missing NZB segments by @javi11 in #393
- perf(parser): improve performance and progress reporting for NZBs with 430 Not Found by @javi11 in #394
- fix(importer,health): reduce health check jitter and clean up metadata on failure by @javi11 in #395
- feat(windows): add Windows compatibility guards and build target by @javi11 in #398
- feat(stremio): prefer TVDB series search with IMDb fallback by @wrxco in #396
- feat(sse): replace polling with SSE streams for health and queue pages by @javi11 in #399
- fix(api): bypass cached 301 redirects and improve render performance by @javi11 in #400
- feat(webdav): remove virtual /library folder from WebDAV filesystem by @javi11 in #401
- feat(webdav): remove golang.org/x/net/webdav dependency by @javi11 in #404
- fix(importer): merge all PAR2 index files and group RAR archives by base name by @javi11 in #406
- fix(sabnzbd): use Content-Disposition header for NZB filename on addurl by @javi11 in #407
- perf(segcache): reduce catalog write amplification with dirty flag by @javi11 in #408
- feat(progress): add stage labels to progress updates by @javi11 in #413
- feat(health): optimize validation, add automatic metadata regeneration and enforce strict linking by @drondeseries in #411
- feat(logs): add real-time log viewer page with SSE streaming by @javi11 in #414
- fix(arrs): treat 404 on queue delete as a no-op instead of an error by @javi11 in #415
- feat(import): add target_path param to force symlink at exact destination by @javi11 in #416
- fix(importer): correct PAR2 detection when yEnc header omits .par2 extension by @javi11 in #417
- fix(api): sse events for queue and health by @javi11 in #418
- feat(config): move import section to Automation group in sidebar by @javi11 in #419
- feat(health): resilient metadata/symlink/DB sync with safety guards by @javi11 in #421
- fix(health): prevent false-positive orphaned file deletions during library sync by @drondeseries in #420
- feat(import): preserve failed NZBs + auto-cleanup stale failed items by @javi11 in #423
- perf(fuse): cross-platform 1MB I/O size + mutex removal + prefetch increase by @javi11 in #424
- feat: advanced ARR integration, health triggers, and dev-mode updates by @drondeseries in #422
- chore: remove dead code, unused deps, and fix Go formatting by @javi11 in #428
- fix: goroutine leak in UsenetReader.Close() and Go idiom modernization by @javi11 in #429
- fix: address 14 code review issues across Go backend by @javi11 in #430
- feat: add regenerate symlink button to queue page and file explorer by @javi11 in #431
- fix: harden symlink lifecycle against ARR import race conditions by @javi11 in #432
- feat: Added config switches to disable file renaming and Sample/Proof filtering by @piefke84 in #425
- Revert "feat: Added config switches to disable file renaming and Sample/Proof filtering" by @javi11 in #434
- feat: add rename_to_nzb_name and filter_sample_files import config toggles by @javi11 in #433
- refactor: deduplicate shared types between rar and sevenzip packages by @javi11 in #435
- refactor: clean up internal/api dead code and migrate to response builders by @javi11 in #436
- refactor: remove dead code across backend and frontend (round 2) by @javi11 in #437
- fix: make hanwen FUSE Handle.Read() context-aware by @javi11 in #438
- feat: add Download NZB action to health item actions menu by @javi11 in #440
New Contributors
- @drondeseries made their first contribution in #98
- @DrMxrcy made their first contribution in #106
- @hansmok made their first contribution in #120
- @wrxco made their first contribution in #396
- @piefke84 made their first contribution in #425
Full Changelog: v0.0.1-alpha6...v0.1.0