Skip to content

v0.0.3 — Library fuzzy-scan + mark-as-downloaded

Choose a tag to compare

@arthursoares arthursoares released this 19 Apr 10:15
· 39 commits to main since this release

Highlights

  • Library fuzzy-scan — the Settings Scan Folder action now walks your existing Artist/Album/ collection and matches against the synced Qobuz/Tidal library. Exact matches (normalized artist+album + matching bit-depth) are auto-marked; ambiguous cases land in a three-section review slide-over.
  • Manual Mark as downloaded / Unmark button on the album detail panel — for when you know you have something but the scan can't make a clean match.
  • Tidal quality selector now exposed in Settings. Backend already honored tidal_quality; only the UI input was missing.

Schema

Schema v2 adds bit_depth, sample_rate, local_folder_path to albums. Existing v1 DBs migrate on first open with best-effort backfill from the legacy quality string.

Configuration

  • scan_sentinel_write_enabled toggle in Settings — disable when pointing the scan at a read-only NFS/SMB mount.

Security

  • POST /api/library/albums/{id}/mark-downloaded validates local_folder_path is inside the configured downloads_path (400 otherwise).
  • _find_album_folders skips symlinked children so a symlink inside the downloads root can't escape it.

Quality

All 26 pre-existing ruff check errors cleaned up; ruff format applied across the repo. Both ruff CI steps green for the first time.

API additions

Endpoint Method Description
/api/library/scan-fuzzy POST Start a background fuzzy-scan job. 409 if another scan is running.
/api/library/scan-fuzzy/{job_id} GET Poll job status.
/api/library/albums/{id}/mark-downloaded POST {local_folder_path?} — flip status, populate dedup DB, optional sentinel write.
/api/library/albums/{id}/unmark-downloaded POST Reverse the above.

New WebSocket events: scan_progress, scan_complete, album_status_changed.

Docker

Images published to ghcr.io/arthursoares/libsync:v0.0.3 (and :latest, :0.0, :0). Upgrade path: bump the image tag, restart the container — the schema migration runs automatically on first start.

Full commit list

v0.0.2...v0.0.3