• v0.3.0 998e37f78b

    v0.3.0 Stable

    Hirad released this 2026-10-28 07:49:32 +00:00 | -4 commits to master since this release

    syncfm-core 0.3.0 moves network integration to PyScrobbler and adds artwork synchronization to LoneFM.

    Changes:

    • Replace the pylast network backend with PyScrobblerNetworkAdapter and require PyScrobbler 0.1.5 or newer, including its singleton recent-history response fix.
    • Collect paginated recent history through PyScrobbler while preserving inclusive timestamp boundaries and repeated plays.
    • Carry optional artwork URLs from recent tracks through SQLite snapshots, metadata enrichment, queued submissions, and session resume. Prefer medium artwork, falling back to the first nonempty image URL.
    • Upgrade the SQLite schema to version 3 without losing existing snapshots or queued work; artwork does not affect duplicate detection.
    • Restore the normal terminal before displaying sync, resume, or verification-retry errors, so dashboard failures remain visible.
    • Preserve legacy gnufm profile values and GNU.fm session names while using LoneFM naming for new configurations.
    • Close command-owned network transports on success and failure, and retain metadata conversion, authentication-error translation, and rejected-submission handling.

    Compatibility:

    • Python 3.13 or newer is required.
    • The former GNUFMNetwork, PyLastMapper, and PyLastNetworkAdapter exports and modules have been removed. Use NetworkFactory and PyScrobblerNetworkAdapter.
    • Use NetworkType.LONEFM and --type lonefm instead of NetworkType.GNUFM. Legacy serialized profile values remain readable.

    Validation: 50 tests passed using PyScrobbler 0.1.5; strict Pyright, Ruff lint, and Ruff formatting checks passed. Tests cover pagination, network configuration and cleanup, legacy resume compatibility, artwork selection and persistence, schema migration, complete sync/resume flows, and terminal error visibility. No live scrobbles were submitted during validation.

    Downloads