-
0.2.5 Stable
released this
2026-09-11 09:40:55 +00:00 | 0 commits to master since this releaseSyncFM Core 0.2.5 expands the supported profile names.
Changes since 0.2.4:
- Allow uppercase letters and dots in profile names. Names must start with a letter or number and may contain letters, numbers, underscores, hyphens, and dots.
- Update the profile validation error message to describe the supported characters.
- Remove the outdated lowercase-only profile naming restriction from the README.
- Bump the package version and uv lockfile to 0.2.5.
Validation: Ruff and Pyright pass; profile-name acceptance and rejection smoke checks pass; uv successfully built the wheel and source distribution.
Full changelog: https://git.hirad.it/Hirad/syncfm-core/compare/0.2.4...0.2.5
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
0.2.4 Stable
released this
2026-08-30 10:34:17 +00:00 | 2 commits to master since this releaseSyncFM Core 0.2.4 adds resolved synchronization ranges to progress updates. New synchronizations report the automatically resolved range, resumed sessions report their persisted range, and the optional SyncProgress field is appended to preserve positional API compatibility.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
0.2.3 Stable
released this
2026-08-30 05:54:33 +00:00 | 3 commits to master since this releaseSyncFM Core 0.2.3 fixes metadata progress reporting for GUI and callback consumers. Completed metadata-enrichment events now carry the fetched duration and MusicBrainz ID, allowing rows to populate those values when they transition from Fetching to Ready.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
0.2.2 Stable
released this
2026-08-28 09:30:53 +00:00 | 4 commits to master since this releaseSyncFM Core 0.2.2 adds per-scrobble failure reporting for GUI and callback consumers. SyncProgress now exposes current_scrobble_failed with validation for mutually exclusive completion and failure states. Metadata enrichment and scrobble submission emit failure progress after persisting failed queue state, and the terminal dashboard displays failed items in both interactive and plain-text modes.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
0.2.1 Stable
released this
2026-08-23 08:35:01 +00:00 | 5 commits to master since this releaseHighlights
- Correct inclusive timestamp-range handling for Last.fm, Libre.fm, and GNU.fm history requests made through pylast.
- Widen pylast query boundaries before locally filtering results, reconciling pylast’s exclusive
fromandtobehavior with SyncFM’s inclusive range contract. - Prevent the target’s latest existing scrobble—the inferred start boundary—from being falsely queued for submission and later reported as missing during verification.
- Preserve correct range results when a caller combines timestamp boundaries with a scrobble limit.
This is a focused bug-fix release following 0.2.0.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
0.2.0 Stable
released this
2026-08-22 07:48:00 +00:00 | 6 commits to master since this releaseHighlights
- Verify every completed synchronization against fresh source and target histories over the exact resolved timestamp range.
- Report final source and target counts plus scrobbles still missing from either network through the new public
SyncVerificationresult model. - Poll the target after submission to allow newly submitted scrobbles time to become visible.
- Show verification results in the CLI and offer confirmed retries for scrobbles still missing from the target after both
syncandresumeoperations. - Retry through the normal durable synchronization pipeline using the original resolved range, preserving comparison, metadata enrichment, and recovery behavior.
API note
SyncResultnow includes a requiredverificationfield containing the resolved range, fresh counts, directional difference lists, and coverage helpers.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
0.1.1 Stable
released this
2026-08-19 08:08:07 +00:00 | 7 commits to master since this releasesyncfm-core 0.1.1
This release improves project readiness, documentation, and network-name presentation since
0.1.0.Highlights
- Mark the package as beta software in its project metadata.
- Add
NetworkType.display_namefor human-readable Last.fm, Libre.fm, and GNU.fm labels in user-facing integrations. - Expand the README with installation, quick-start synchronization, profile and credential management, proxy configuration, recovery workflows, environment variables, Python API examples, and development guidance.
- Bump the package and lockfile version to
0.1.1.
Validation
- Ruff: passed
- Pyright: passed with zero errors or warnings
- Source distribution and wheel: built successfully
- Pytest: no test files are currently present
Full history: https://git.hirad.it/Hirad/syncfm-core/compare/0.1.0...0.1.1
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
0.1.0 Stable
released this
2026-08-14 06:42:20 +00:00 | 11 commits to master since this releasesyncfm-core 0.1.0
The first release of
syncfm-coreprovides a reusable Python synchronization engine and a command-line interface for copying missing scrobbles between Last.fm, Libre.fm, and GNU.fm-compatible networks.Highlights
- Synchronize missing scrobbles between reusable source and target network profiles, with optional Unix timestamp bounds.
- Resume, inspect, or discard interrupted synchronization sessions.
- Store durable synchronization state, snapshots, and queues in SQLite for recovery after failures.
- Enrich scrobbles with metadata before submission and retry recoverable network operations.
- Manage network profiles through the CLI, with secrets stored in the system keyring or configuration file.
- Connect through HTTP, HTTPS, and SOCKS proxies configured per profile.
- Follow synchronization activity through an interactive Rich dashboard, with a plain-text fallback for non-interactive terminals.
- Embed the typed Python application layer independently of the CLI.
CLI
The
syncfmcommand includes:syncfm profile add|list|show|removesyncfm sync --source <profile> --target <profile> [--start <timestamp>] [--end <timestamp>]syncfm statussyncfm resumesyncfm discard
Run
syncfm --helporsyncfm <command> --helpfor complete usage information.Requirements
- Python 3.12 or newer
- Credentials for each network being synchronized
- A supported system keyring when keyring-backed credential storage is selected
Notes
This is the initial release. Synchronization is directional: scrobbles present on the source but missing from the target are submitted to the target. Review the selected source, target, and timestamp range before starting a sync.
Full history: https://git.hirad.it/Hirad/syncfm-core/commits/tag/0.1.0
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
generated from Hirad/Template