RELEASE_NOTES_3.9.0.md
Rama main · réplica de lectura del repositorio original.
# Ripster 3.9.0
Two months of work in one build. This page collects everything new since 3.6.5 —
including 3.7.0, 3.7.1 and 3.8.0 — because most of it reached people through
self-update and never had one place to be read.
The theme is the same throughout: where Ripster used to stop with a bare error, it
now finds a way, or tells you exactly why there isn't one.
## When a store says no
- **A refusal no longer ends a download.** If your own accounts can't serve a
release — regional rights, a key server having a bad hour — Ripster takes the
same recording from another service you have access to, and the history entry
names both: "Deezer refused → downloaded from Qobuz".
- **A swap is only allowed if it is the same recording.** The backup search
matches on ISRC/UPC, so a karaoke cover or an alternate remaster can't land in
your folder in place of what you asked for. A release with no ISRC/UPC is
reported as "nothing to match on, not searching blind".
- **A ladder of availability replaced "not available anywhere".** Your own
storefronts, then the public pool, then another service — each rung is tried in
order, and the console line says which one delivered.
- **A quality downgrade is now loud.** If only a lower tier could be served, the
task says "downloaded in reduced quality: X instead of Y" instead of quietly
handing you the smaller file.
## Apple Music
- **One account, one device fingerprint.** New accounts get their own device-info
instead of sharing a single one; a key refusal retries a different storefront,
and an account now lives independently of the container it was added to.
- **Keys are asked for in the release's own storefront**, not the one your link
happened to point at — releases that used to answer "no keys" now come back.
- **"This account doesn't buy in its own country" is told apart from "no keys".**
Two different problems, two different messages.
- **Public-wrapper modes.** Six modes decide *when* the shared public wrapper is
consulted (off / only after mine failed / only for region-locked releases / …),
with a per-task checkbox in the download dialog and a Settings panel that shows
the real daily quota, the storefronts on offer and the 24-hour cooldown after
repeated rate-limit hits. Default: **off**, until you switch it on.
## Pre-orders and releases that are not out yet
- **A pre-order is no longer a failure.** Ripster reads the store's own release
timestamps, waits, and unlocks the download at midnight in *your account's
country* plus a small margin — you queue it once and come back to finished
files.
- **The upcoming radar covers Bandcamp and Beatport pre-orders**, not just the
streaming services.
- **A partial arrival is stated as partial.** When only part of a release exists
yet, you get "2 of 5 available so far", not a retry storm against the store.
## Files and folders
- **One folder = one release.** The edition suffix (Deluxe, 2019 Remaster, Live)
is resolved *before* the download, so two editions of an album stop sharing a
folder.
- **Multi-disc releases keep their discs straight** on Qobuz, Deezer and Tidal as
well as Apple.
- **Cleanup only ever touches Ripster's own files** — your own artwork or cue
sheet in that folder stays.
## Radio, BBC and taste
- **A live recording is checked, not trusted.** Captures are staged, decoded and
verified before they count as finished; a show that died mid-broadcast is
recovered from what is on disk, and the recording schedule is restored after an
app restart.
- **Stations only play the genre they claim**, and umbrella genres are populated
again (subgenres now count as their parent — Metal and friends work). A dead
source explains itself instead of returning a silent zero.
- **Stations learn from how you listen** — skips, finished tracks, likes,
downloads. All of it is computed and stored on your machine, and guests
listening through your instance never shape it.
- **Same-named artists are told apart**, and what shows up as yours is anchored in
what you actually downloaded, liked or listened to.
## Player, window, lyrics
- **The player can leave the app**: an external player window, openable from any
tab, with the launch guarded by a one-time pass instead of failing silently.
- **The window degrades gracefully**: a 1060×600 floor, the quality pill no
longer overlaps the transport controls, and title/artist keep a readable width.
- **Synced lyrics pick the best source available** and now reach a paired phone.
- **Queue cards start folded** — expand a tracklist only when you want it, so a
batch of tasks is no longer one endless page.
- **Windows notifications**: one toast per release, rate-limited, and every one of
them logged.
## Per-service fixes
- **Beatport** — a regional refusal falls over honestly instead of reporting an
empty catalogue, with the same quality-downgrade guard.
- **Tidal** — an expired session mints a fresh token from your refresh token in
the downloader, stations and search; one-click device login (link.tidal.com)
works out of the box.
- **Deezer** — releases listed as "Artist - Album" now resolve, and only the files
your task asked for are taken.
- **Qobuz** — long albums stop arriving short: the tracklist is fetched with a
proper page limit.
## Security and privacy
- **Apple account labels and tokens are masked** in every API answer.
- **Sharing your accounts with a phone is an explicit opt-in**, per phone, off by
default.
- Nothing changed about where your data lives: no Ripster account, no cloud, your
files and credentials stay on your machine.
## Language
- Errors, history rows and settings panels that used to answer only in Russian now
follow the interface language — the untranslated backlog on Watchlist and
History went from roughly 1100 spots to 9.