Skip to content

Releases: javi11/altmount

Dev Build

22 Apr 14:32
c3fccd2

Choose a tag to compare

Dev Build Pre-release
Pre-release

Rolling development build from main branch (commit 0dbe405)

v0.2.0

03 Apr 17:03
dc80b5b

Choose a tag to compare

What's Changed

  • fix: update nntppool to v4.7.0 and expose keepalive config in UI by @javi11 in #443
  • Disable segment cache options when cache is disabled by @javi11 in #444
  • fix: extract applyNzbRename helper and add test for rename_to_nzb_name=false by @javi11 in #445
  • fix: respect rename_to_nzb_name setting for single-file archive normalization by @javi11 in #446
  • fix: respect skip_ping when testing and saving providers by @javi11 in #447
  • feat: preserve internal folder structure when extracting RAR/7zip archives by @javi11 in #449
  • fix: enable save button when skip_ping is true for new providers by @javi11 in #450
  • feat: enhance Arrs integration, NZBDav performance, and provider metrics by @drondeseries in #442
  • fix: add linux build tag to hanwen handle_test.go by @javi11 in #451
  • fix: render toast notifications above modals by @javi11 in #453
  • feat(health): improve streaming failure handling and dynamic ARR configuration by @drondeseries in #455
  • fix: restore correct passwords after provider reorder by @javi11 in #456
  • feat(importer): parallelize archive processing and add encryption-aware segment validation by @javi11 in #459
  • fix(auth): re-evaluate auth state immediately after disabling login requirement by @javi11 in #460
  • fix(importer): remove duplicate folder when nested RAR subfolder matches virtual dir name by @javi11 in #461
  • fix(importer): read import config dynamically instead of caching at startup by @javi11 in #462
  • perf(fuse): eliminate per-read goroutine churn by @javi11 in #463
  • fix(health): improve relinking, library path tracking and blocklist logic by @drondeseries in #458
  • feat(health): route symlink regeneration to correct path per trigger source by @javi11 in #464
  • feat(config): add option to regenerate symlinks when mount path changes by @javi11 in #465
  • feat(backup): cron-based backup scheduling with friendly UI picker by @javi11 in #466
  • fix(stremio): align default categories with Newznab API convention by @javi11 in #467
  • fix(ui): show full filenames without truncation by @javi11 in #468

Full Changelog: v0.1.0...v0.2.0

v0.1.0

24 Mar 20:41

Choose a tag to compare

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(...
Read more

v0.0.1-alpha6

27 Feb 16:21

Choose a tag to compare

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)
  • --links flag support for symlink mounts (#363)

Configuration

  • All missing backend configuration parameters now exposed to frontend (#296)
  • Exposed allow_nested_rar_extraction in GET config response (#354)
  • Configurable host in generated .strm files (#252)

⚡ Performance Improvements

  • Raise default max_download_prefetch from 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 PackedSize for RAR segment validation (#222)
  • Ignore persistent .nzbs path 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-Agent header for NZB URL downloads to avoid 403 errors (#352)
  • Include allow_nested_rar_extraction in GET config response (#354)
  • Prevent accidental metadata deletion via ARR webhooks (#256)
  • Ignore EpisodeFileDelete webhook to prevent accidental library wipes (#253)
  • Handle boolean deletedFiles and MovieDelete events 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 Statfs to report filesystem size (#295)
  • Improve move/rename operations with atomic renames and proper cleanup (#297)
  • Set DiskSpaceTotalSize to match VFSCacheMaxSize (#351)
  • Reset originalRangeEnd on 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.Pipe in UsenetReader (#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

Full Changelog: v0.0.1-alpha5...v0.0.1-alpha6

v0.0.1-alpha5

13 Nov 20:36

Choose a tag to compare

What's Changed

  • doc: docker volume plugin by @VEEC023 in #57

  • doc: add rshared flag to docker volume documentaion by @VEEC023 in #72

  • feat: alpha5 by @javi11 in #44

  • feat: lot of improvements and bug fixing

  • feat: rar/7zip passwored support

  • feat: strm support

  • fix: health check system

Breaking Changes migration steps

  1. Stop altmount
  2. Copy your config.yaml and make a backup cp config.yaml config.backup.yaml
  3. Copy the config.sample.yaml into the same config dir and rename it to config.yaml cp config.sample.yaml config.yaml
  4. Modify the new config file with your old configuration
  5. Run almount again
  6. End the configuration in altmount admin panel

New Contributors

Full Changelog: v0.0.1-alpha4...v0.0.1-alpha5

v0.0.1-alpha4

01 Oct 16:46
82964e2

Choose a tag to compare

What's Changed

  • feat(rclone): implement RClone connection testing functionality in API and frontend by @javi11 in #25
  • docs: update some documentation by @randrini in #31

[!SUMMARY]
Adds built-in RClone RC mount service with API/UI, revamps config (streaming cache, RC/mount options), improves health/SABnzbd, WebDAV and importer, and updates Docker/runtime.

  • Core/Backend:
    • RClone RC & Mount Service: Introduces internal/rclone with RC-managed mounts; new API routes under /api/rclone for status/start/stop; health checker uses RefreshDir.
    • Config Overhaul: Removes streaming.max_range_size and streaming.streaming_chunk_size; adds streaming.max_cache_size_mb; major rclone config (RC, mount, VFS/cache, system options); adds root-level mount_path; adds auth.login_required.
    • Health: Adds sorting, bulk restart endpoint, shorter default intervals; segment checks use timeouts; improved stats.
    • Importer: Improves NZB parsing (yEnc headers, segment normalization), RAR handling with Usenet FS cache, retries; deobfuscation noise reduced.
    • SABnzbd: CompleteDir respects mount path; auto-create category dirs; optional fallback to external SABnzbd with API key.
    • SABnzbd: Sabnzbd fallback in case of error.
    • ARR Integration: Per-instance root_folder; mount path handling clarified; repair paths fixed.
    • Pool/Infra: Pool manager simplified; go.mod deps updated.
  • API/Frontend:
    • UI: New RClone config/mount page (start/stop/status), auth config (login optional), enhanced health table (filters/sort/bulk), file actions (export NZB).
    • Client: Adds endpoints for health sorting/bulk restart, NZB export, auth config, rclone mount control; WebDAV directory param for corrupted files.
  • Docker/Deploy:
    • Installs rclone and FUSE, adds capabilities (/dev/fuse, SYS_ADMIN, apparmor:unconfined), uses :rshared mounts; dev compose added.
    • README/docs updated for new mount/RC workflows and configuration.

BREAKING CHANGE: removed max_range_size and streaming_chunk_size
BREAKING CHANGE: add it required config max_cache_size_mb defaults to 32mb

New Contributors

Full Changelog: v0.0.1-alpha3...v0.0.1-alpha4

v0.0.1-alpha3

09 Sep 15:54

Choose a tag to compare

What's Changed

BREAKING CHANGE:

  • (config): moved mount_dir from arrs to root config
  • (config): rename mount_dir to complete_dir in sabnzbs.complete_dir
  • (auth): add COOKIE_DOMAIN env variable in case you use a domain different that localhost

New Contributors

Full Changelog: v0.0.1-alpha2...v0.0.1-alpha3

v0.0.1-alpha2

07 Sep 17:53
ec1c5cd

Choose a tag to compare

v0.0.1-alpha1

06 Sep 16:11
ff82e8f

Choose a tag to compare

What's Changed

  • feat: add documentation and multiple fix by @javi11 in #2

New Contributors

  • @javi11 made their first contribution in #2

Full Changelog: v0.0.1-alpha0...v0.0.1-alpha1

v0.0.1-alpha0

05 Sep 08:23

Choose a tag to compare