Summary
Allows imports from filesystems that cannot expose durable file or directory generation identity. A requested move now degrades to a verified copy that explicitly retains the source, instead of blocking the import, while durable-storage moves keep their existing source-retirement contract.
Changes
Added
- Added a configurable weak-storage publication policy that defaults to
CopyAndRetainSourceand can be disabled. - Added a compatibility publication journal and startup reconciliation for content-verified, additive-only imports.
- Added path-only registration leases and recovery ownership for primary audio files and unregistered companion files.
- Added root-folder and import UI disclosures that state weak-storage moves copy files and retain the source.
Changed
- Source capability checks now fall back to a content-only proof when durable filesystem identity is unsupported.
- Manual and automatic imports now report requested action, effective action, source disposition, and warning details.
- Primary audio files, tracked audio companions, and unregistered companions share the same publication-policy decision while retaining distinct recovery ownership.
- Deferred download cleanup downgrades
remove_and_deleteto non-destructive client removal when any imported source was retained.
Fixed
- Fixed NFS/CIFS imports being rejected solely because the storage cannot expose a durable file handle or inode generation.
- Fixed durable cross-volume companion publication recovery so registration state is committed before exact source retirement.
- Fixed weak-storage destination planning so an existing byte-identical but unowned pathname is not adopted as ownership proof.
Testing
dotnet build listenarr.slnx --no-restoredotnet test listenarr.slnx --no-build --no-restore— 2,952 passed, 202 skipped- Production service graph validation with
ValidateScopesandValidateOnBuild - Focused publication, c...
Automated Canary build