Skip to content

[Bug]: Offline cache is a frozen snapshot — never reconciles (playlists, albums, artists) #950

@artplan1

Description

@artplan1

What's wrong?

Offline cache snapshots track IDs at download time and never resyncs. If the source's contents change on the server afterwards, the cache silently goes stale.

Steps to reproduce

  1. Cache a playlist offline.
  2. On the server, add a track to that playlist (and/or remove one).
  3. Reopen the playlist in Psysonic.

What should happen?

Cache reflects current contents — new track downloaded, removed track's file deleted.

What actually happens?

  • Added track: never downloaded. Button stays on "Remove offline" — no way to pull the new track without delete + re-download.
  • Removed track: file orphaned on disk, dead ID kept in meta.trackIds.

Root cause: downloadAlbum stores trackIds = songs.map(s => s.id) once; isCached checks that snapshot, not live contents. No resync path exists. Same applies to albums and artist downloads.

Suggested fix: resyncOffline(albumId, currentSongs, serverId) diffing meta.trackIds vs current IDs — download missing, delete removed, update meta. Call on opening a cached item.

Psysonic version

1.46.0

Operating system

macOS

Install source

.dmg (macOS)

Subsonic-compatible server

Navidrome

Server version

No response

Logs

Screenshots / video

No response

Anything else

Let me know if this makes sense and I'll work on PR

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions