Release 2.6.0
MINOR bump: Qobuz playlist sync is the headline feature (#677), plus the Import album search fallback-source surfacing fix (#681). * web_server.py — _SOULSYNC_BASE_VERSION → 2.6.0 * webui/static/helper.js — split the 2.5.9 'Unreleased — dev cycle' entries into a new 2.6.0 block with a real release-date marker; bumped the _getLatestWhatsNewVersion fallback default; rolled the '2.5.9 Release Stability Pass' modal section down to a generic 'Earlier in v2.5' aggregator now that 2.6.0 is the current release * .github/workflows/docker-publish.yml — bumped manual version_tag default to 2.6.0 so the next workflow_dispatch defaults right
This commit is contained in:
parent
9769d8be19
commit
3ee77e3f44
3 changed files with 11 additions and 9 deletions
4
.github/workflows/docker-publish.yml
vendored
4
.github/workflows/docker-publish.yml
vendored
|
|
@ -9,9 +9,9 @@ on:
|
|||
workflow_dispatch:
|
||||
inputs:
|
||||
version_tag:
|
||||
description: 'Version tag (e.g. 2.5.9)'
|
||||
description: 'Version tag (e.g. 2.6.0)'
|
||||
required: true
|
||||
default: '2.5.9'
|
||||
default: '2.6.0'
|
||||
|
||||
jobs:
|
||||
build-and-push:
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ logger = setup_logging(_log_level, _log_path)
|
|||
|
||||
# App version — single source of truth for backup metadata, system-info, update check, etc.
|
||||
# Semver: MAJOR.MINOR.PATCH. Bump at each dev→main release.
|
||||
_SOULSYNC_BASE_VERSION = "2.5.9"
|
||||
_SOULSYNC_BASE_VERSION = "2.6.0"
|
||||
|
||||
def _build_version_string():
|
||||
"""Append short commit hash to version when available (e.g. 2.35+abc1234)."""
|
||||
|
|
|
|||
|
|
@ -3413,10 +3413,12 @@ function closeHelperSearch() {
|
|||
// projects that span multiple commits before shipping. Strip the flag at
|
||||
// release time and add a real `date:` line at the top of the version block.
|
||||
const WHATS_NEW = {
|
||||
'2.5.9': [
|
||||
{ date: 'Unreleased — dev cycle' },
|
||||
'2.6.0': [
|
||||
{ date: 'May 24, 2026 — 2.6.0 release' },
|
||||
{ title: 'Qobuz playlist sync', desc: 'new Qobuz tab on the Sync page. Connect Qobuz in Settings → Connections, hit Refresh on the tab, and your Qobuz playlists + Favorite Tracks show up alongside Tidal and Deezer. clicks run the same discovery → sync → download flow as the other sources.', page: 'sync' },
|
||||
{ title: 'Import search: show when results came from the fallback source', desc: 'if you picked MusicBrainz (or Discogs / iTunes / etc.) as your primary metadata source but the Import album search ended up serving Deezer cards, you had no idea — the chain silently fell through when the primary returned nothing. now each card shows a small "via Deezer" label when the source differs from your primary, and a banner above the grid spells it out when all results came from the fallback. backend behavior unchanged.' },
|
||||
],
|
||||
'2.5.9': [
|
||||
{ date: 'May 21, 2026 — 2.5.9 release' },
|
||||
{ title: 'Now-playing modal: lyrics panel', desc: 'new lyrics panel below the player controls in the expanded now-playing modal. fetches from LRClib via /api/lyrics/fetch, but prefers the local .lrc / .txt sidecar files SoulSync drops next to your audio during post-processing so downloaded tracks show lyrics instantly with zero network. synced LRC (timestamped) highlights the active line and auto-scrolls it into the middle of the viewport on every audio timeupdate; plain text renders without highlighting. status chip shows whether the result came back Synced or Plain. panel is collapsed by default — click the Lyrics header to expand. cached per track so revisiting a track doesn\'t refetch.' },
|
||||
{ title: 'Now-playing modal: View Artist closes the modal first', desc: 'tapping View Artist on the expanded media player now closes the now-playing modal before navigating, so the artist page is actually visible instead of sitting under a modal you\'d have to manually dismiss. click is a no-op when no artist_id is attached to the current track.' },
|
||||
|
|
@ -3508,8 +3510,8 @@ const VERSION_MODAL_SECTIONS = [
|
|||
usage_note: "Sync → Qobuz → 🔄 Refresh",
|
||||
},
|
||||
{
|
||||
title: "2.5.9 Release Stability Pass",
|
||||
description: "this release ties together the new release-based download sources and a set of fixes from real user reports: HiFi instance detection, Jellyfin full refreshes, transient SQLite disk I/O failures, and wrong-artist Album Completeness fills.",
|
||||
title: "Earlier in v2.5",
|
||||
description: "highlights from the 2.5.x cycle that landed just before 2.6.0: new release-based download sources, HiFi instance probing, Jellyfin full-refresh repairs, transient SQLite retries, and tighter Album Completeness artist matching.",
|
||||
features: [
|
||||
"Torrent and Usenet are now available as Prowlarr-backed download sources with release staging, live progress, and source-aware history labels",
|
||||
"HiFi instances are probed by actually checking whether they can return a playable manifest, including legacy public hifi-api instances",
|
||||
|
|
@ -3518,7 +3520,7 @@ const VERSION_MODAL_SECTIONS = [
|
|||
"Album Completeness rejects same-title releases from the wrong artist before importing anything",
|
||||
"Import album search now labels each card with the source that served it and warns when results came from a fallback instead of your primary",
|
||||
],
|
||||
usage_note: "version 2.5.9 focuses on safer matching and making the new release-based sources usable without disturbing existing source flows",
|
||||
usage_note: "browse the What's New panel for the full 2.5.x changelog",
|
||||
},
|
||||
{
|
||||
title: "Torrent and Usenet Are Now Live Download Sources",
|
||||
|
|
@ -3904,7 +3906,7 @@ function _getLatestWhatsNewVersion() {
|
|||
const versions = Object.keys(WHATS_NEW)
|
||||
.filter(v => _compareVersions(v, buildVer) <= 0)
|
||||
.sort((a, b) => _compareVersions(b, a));
|
||||
return versions[0] || '2.5.9';
|
||||
return versions[0] || '2.6.0';
|
||||
}
|
||||
|
||||
function openWhatsNew() {
|
||||
|
|
|
|||
Loading…
Reference in a new issue