Commit Graph
2 Commits
  • Stop the admin panel hanging when slskd is down
    /api/admin/system probed slskd with the shared client, whose 30s timeout is
    sized for searches and transfers. So the panel sat on skeletons for the full
    30s exactly when slskd was unreachable -- the case you open it to diagnose --
    and the 5s UI poll stacked requests behind it. Probes now get 4s: above a LAN
    round-trip, under the poll interval.
    
    httpx.ConnectTimeout also stringifies to "", so the banner rendered
    "slskd unreachable -- " with nothing after the dash. Fall back to the
    exception class name.
    
    Add dev.sh, because the documented dev commands could not work: MUSE_DB
    defaults to /config/muse.db which a Mac cannot write, and the auth preflight
    refuses to boot without a client ID.
    
    Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
  • muse: request a single song, get it tagged in your library
    Lidarr's smallest unit is a MusicBrainz release, so asking for one track
    means monitoring a whole discography. Soulseek trades individual files but
    has no concept of a request. muse bridges the two: search, click, and the
    song lands in the library correctly tagged.
    
    The design point is that the user picks the exact track before anything
    downloads, so muse holds artist, album, year and track number as ground
    truth and tags deterministically rather than inferring them afterwards from
    whatever a stranger named the file.
    
    Search is Deezer rather than MusicBrainz, decided on measurement:
    MusicBrainz put eight covers above the real recording for "radiohead creep"
    and never surfaced Queen for "bohemian rhapsody" across 90 results, because
    its index matches a word in a cover's title as readily as in the artist
    field. Re-ranking cannot rescue a result set missing the right row.
    
    Imports are os.link(), so downloads keep seeding from the Soulseek share
    while the library gets a second name for the same bytes.