Skip to content

Releases: Raccoon-Trashpanda/Raccoon-Ripster

Ripster 3.1.0

Choose a tag to compare

@Raccoon-Trashpanda Raccoon-Trashpanda released this 27 Jul 21:37

Send your logs in one click

Ripster can now hand its own diagnostics to the developer: Console → 📨 Send to the developer. It packs the console log and its rotations, engine errors, the launcher log, the environment and a redacted copy of your settings, uploads them, and gives you a short code to quote. No more photographing the screen — a screenshot shows one line of a failure whose cause scrolled past ten minutes earlier, and never shows the version or the environment.

Nothing is sent unless you press the button.

The background diagnostics forwarding that already existed had never worked for anyone: the shipped configuration carried an empty destination, and an empty destination disables forwarding regardless of the settings toggle. The destination now lives in the program itself, so existing installations get it too.

Errors from the page itself are also recorded now. They used to exist only in the browser's developer tools, which nobody opens — so the errors you actually saw were exactly the ones missing from the logs.

Two credential leaks, found and closed

Auditing the first real log bundle turned up two:

  • A Yandex token passed to an engine as --token <value>. Redaction recognised credential-shaped names, and a bare --token is not one. Log text is now also scrubbed by value against the credentials Ripster holds, which cannot miss a format.
  • Passwords inside the account pools. Redaction only ever walked top-level settings, so each entry's password went out in the clear — not only in reports, but through the settings API, which means guests could see them. Redaction is now recursive.

Verified end to end: none of the 24 credential values in the test installation appear anywhere in a generated bundle.

Signing in to Spotify from the Ripster window

Sign-in was impossible from Ripster.exe and worked only from the browser shortcut. The Ripster window is WebView2, which blocks pop-ups outright; the pop-up came back empty, Ripster read that as "the user blocked pop-ups", and cancelled the sign-in — which also shut down the helper waiting for Spotify's answer. Anyone who then opened the address by hand got a connection error, a second symptom of the same cause.

The page now opens in your normal browser instead, and the helper keeps waiting.

Fixes

  • OrpheusDL would not install — "destination path already exists". The clone now lands in a temporary directory and is merged in.
  • Installing over a running Ripster silently did nothing. The files were locked, so nothing was replaced and you stayed on the old build believing you had upgraded. The installer now detects a running copy and offers to close it.
  • Qobuz ISRC lookup never worked — Qobuz returns isrc as a plain field, and the matcher only understood Spotify's shape.
  • Tidal token refresh was broken — it used web client ids that never issued the token.
  • Label subscriptions disappeared after a check.
  • The player forgot the album on reload and stopped after one track.
  • A Spotify link could be queued for the Apple engine, producing "Failed to get album" with a success exit code.

Label search and label subscriptions

Search a label's releases on any service. Only Spotify and Deezer can filter by label at the API level, so they act as the catalogue of what a label released, and the target service is asked the precise question do you have this record. Matching is by identifier, never by title — deluxe editions, remasters and Extended Mixes all share a name. Measured against a live catalogue: Apple 4/4, Tidal 4/4, Qobuz 3/4.

Subscribe to a label and receive its new releases. Monitoring compares release dates rather than list position, and subscribing records a baseline instead of queueing the entire back catalogue.

Appearance

Warm dark colour schemes (Midnight, Ember, Sepia), legibility-first fonts including Atkinson Hyperlegible, and a wordless live connection indicator in place of the old text label.

Installing

RipsterSetup-3.1.0.exe is attached. Install over an existing copy — settings, tokens and downloads are preserved. Close Ripster first, including the tray icon; the installer will now tell you if you forget.

Ripster 3.0.38

Choose a tag to compare

@Raccoon-Trashpanda Raccoon-Trashpanda released this 27 Jul 12:08

Label search and label subscriptions

Search a label's releases on every service. Only Spotify and Deezer can filter by label at the API level, so they act as the catalogue of what a label put out, and the target service is asked the precise question do you have this record. Apple, Qobuz and Tidal now return real results instead of nothing.

Matching is by identifier, never by title — deluxe editions, remasters and Extended Mixes all share a name. Barcode (UPC) for Apple and Deezer, track ISRC for Qobuz and Tidal. Measured against a live catalogue: Apple 4/4, Tidal 4/4, Qobuz 3/4 exact matches.

Subscribe to a label and receive its new releases. Monitoring compares release dates rather than list position, because both catalogues answer by relevance and "the top entry changed" would fire on old albums. Subscribing records a baseline instead of queueing the entire back catalogue, and every label has a Download latest button for the current release.

Fixes

  • Qobuz ISRC lookup never worked. Qobuz returns the ISRC as a plain isrc field; the matcher only read Spotify's external_ids shape, so every lookup came back empty while the API was happily returning the track. This also broke the general ISRC resolver.
  • Tidal token refresh was broken. It used web client ids that never issued the token — Tidal replies "this token was issued to another client", and one of those ids no longer exists at all. The engine's TV session refreshes correctly and is now reused.
  • Label subscriptions disappeared after a check: watchlist repair treated an entry without an artist id as broken, resolved the label name to a same-named artist, then deleted it as a duplicate.
  • The player forgot the album on reload. Only a single track was stored, so playback stopped after it instead of continuing the queue.
  • A Spotify link could be queued for the Apple engine, producing "Failed to get album" with a success exit code.
  • OrpheusDL setup failed with "destination path already exists" — the clone now lands in a temporary directory and is merged in.

Appearance

Warm dark colour schemes (Midnight, Ember, Sepia), legibility-first fonts including Atkinson Hyperlegible, and a wordless live connection indicator in place of the old text label.

Installer

RipsterSetup-3.0.38.exe is attached to this release. It fixes three problems that stopped 3.0.38 from working on other machines:

  • a launcher restart loop when the source archive was used instead of the installer — the frozen executable was handing itself back as the Python interpreter and spawning itself forever;
  • the missing Spotify auth helper, which left the OAuth redirect with nothing listening on 127.0.0.1:4381;
  • numpy absent from the bundled interpreter, which disabled the spectral analysis used to detect lossy transcodes.

Install over an existing copy — settings, tokens and downloads are preserved. Close Ripster completely first, including the tray icon, otherwise the running executable cannot be replaced.

v3.0.37

Choose a tag to compare

@Raccoon-Trashpanda Raccoon-Trashpanda released this 24 Jul 22:06

Compilations were invisible to the radar

A various-artists compilation is credited to "Various Artists" or the label, so it is in no followed artist's discography -- every release scanner asks "which albums is this artist the artist of?", and that question can never return one. The individual tracks showed up, the compilation never did, and nothing errored: the scan reported success having never seen it.

  • Spotify: the radar now also reads each artist's "Appears On" shelf and resolves the metadata those entries omit, caching it by album id.
  • Apple (watchlist): looks releases up through the artist's tracks rather than only their albums -- a track always carries its parent collection, compilations included.
  • Compilations are filed under the existing "Compilations" filter, so they show without changing anything in the UI.
  • Live: the Hospital Records / Forza Horizon 6 compilation that prompted this now appears in the feed, along with dozens of label compilations that had never been visible.

Radar: BBC, SoundCloud and Apple as sources

The feed already merged several services and already grouped by day -- what was missing were the sources.

  • BBC -- new episodes of the known shows (Essential Mix, Pete Tong, ...).
  • SoundCloud -- recent uploads from the channels on your watchlist.
  • Apple -- new releases by the watchlist's artists, compilations included.

They share the shape of the existing feed, so search, type chips, seen/favourite state and day grouping all apply unchanged. Sources are independent: one failing service no longer empties the feed. New "Mix" release type for episodes and uploads.

Watchlist

  • It never actually worked. Every entry had an empty artist id, and the checker only looks at entries that have one -- so nothing had been checked since the feature was built. On top of that, the Apple feed it polled has been retired by Apple and answers 400 for every request. Both are fixed; adding an artist now resolves the id up front and refuses rather than creating an entry nothing will ever check. Existing entries can be repaired in place.
  • Follow in one click -- a star on the artist page and the SoundCloud channel bar, instead of retyping the name into a form.
  • Suggestions from your own library -- computed from your downloads and plays, never leaving the machine. Each card states a fact about your library: how often you grab an artist, who you have collaborations with, and -- the interesting one -- artists who appear all over your tracks as remixers or featured credits but whose own releases you have never downloaded.
  • Desktop notification when a followed artist releases something, so a release found at 4am is not discovered whenever you next open the page.
  • One check is aligned to the New Zealand Friday, the first place a Friday release exists.
  • First check of a newly added artist now records a baseline instead of "discovering" their entire back catalogue and queueing it.

Player

Track boundaries in streamed mixes had an audible hiccup. The next track was already decoded, so the delay was the transition itself: it started only after the current track had finished playing. The next source is now scheduled while the current one still plays, at the exact sample its buffer ends -- the audio clock performs the join. Correct across seek, playback speed and manual skips.

Where a compilation's own tracks were mastered with fades, that seam is in the material and no scheduling removes it.

Integrity checking

Every finished download is now decode-checked rather than trusted because the engine said "done". Malformed ALAC packets are repaired automatically; a file that cannot be repaired is reported honestly and does not block delivery.

Fixes

  • BBC cards in the radar offered ALAC/Atmos -- lossless options a radio stream cannot produce. The frontend was asking about the wrong service; any newly added source inherited Apple's quality ladder.
  • Unticking one radar source in Settings could silently drop the others.
  • Beatport reported a successful download when it had been denied the stream.
  • Spectrogram verdicts were hardcoded in one language, and ffmpeg stamped its own name into the image.
  • Download notifications were hardcoded in Russian regardless of the chosen language.

v3.0.36

Choose a tag to compare

@Raccoon-Trashpanda Raccoon-Trashpanda released this 23 Jul 15:05

Multi-account pools

  • Load-balancing multi-account support added for Deezer, Qobuz, SoundCloud, Yandex, and a UI for the existing Apple pool -- add a second account per service in Settings, tasks are dispatched across whichever account is free.
  • Apple: fixed the retry-duplicate bug where re-queuing an already-complete Tidal/Beatport album created duplicate files instead of skipping what's already on disk.

Fixes

  • Spotify search/artist-releases was returning empty results for most real queries (a quota-tier limit>10 request silently 400'd).
  • Amazon Music's status probe showed green even when the token was dead -- now does a real account check.
  • Tidal: fixed a false "session invalid" error and a redundant per-track cover-art download.
  • The public Apple wrapper-manager pool (wm.wol.moe) can go empty for real stretches (a volunteer-hosted community pool) -- added a self-heal gate so a dead pool no longer burns ~30-45s of retries per track; falls back to the local wrapper and retries the public pool again after a cooldown.
  • Removed several stale/dead settings across services (leftover Spotify auto-convert keys, a dead security whitelist entry) and added 7 missing "save path" fields that existed on the backend but had no UI.

ALAC download reliability

  • Some Apple-encoded ALAC tracks ship packets missing their bitstream terminator, which made strict decoders (ffmpeg and others) reject the file outright. Ripster now patches this automatically after every download -- no user action needed, silently a no-op for unaffected files.
  • Apple track downloads are faster: large tracks are now fetched over multiple parallel HTTP connections instead of one, with a safety check on every chunk and an automatic fallback to the old single-connection method if anything looks off.

UI

  • Redesigned the language switcher: a compact globe icon that cycles languages on click, with a small dot per language you can click to jump directly.
  • Task-card buttons (find-alternate-source, Gofile link, retry, close) are larger and have a proper raised/glossy look with the same cursor-following highlight used elsewhere in the app.
  • New: Settings -> General -> "Settings backup" -- export every preference/path/toggle to a single file and re-import it later (or on another machine). Tokens, passwords, ARLs and account data are never included.

Player

  • Fixed a layout-shift bug where the mini-player's time display would lose its fractional-second digits right at pause/play, nudging the transport controls sideways.
  • Fixed the seek-bar thumb drifting out of sync with the progress bar as the player's width changed (window resize, mini vs. fullscreen) -- it was computing its position as a percentage of its own tiny size instead of the track's width.
  • The progress bar and its position marker now glide smoothly between updates instead of snapping in visible steps, on every player view (mini bar, drawer, fullscreen) and every source, including BBC Sounds mixes.

v3.0.35

Choose a tag to compare

@Raccoon-Trashpanda Raccoon-Trashpanda released this 21 Jul 18:40

What's fixed

Apple Music wrapper

  • config.yaml was stuck on apple-wrapper: local -- the app never even checked the public wrapper-manager (wm.wol.moe), even when the local wrapper was down. Reverted to auto (local preferred, public as fallback).
  • The local AppleMusicDecrypt (AMD) client had fallen ~4 months behind upstream. Pulled in real upstream fixes: a pydantic ValidationError on tracks missing artwork/previews/data (broke metadata collection), and a stale HTTP cache that could hold onto a dead bearer token.
  • To be honest: the public wm.wol.moe is a third-party free service -- its availability is outside our control (at test time it was overloaded, 0 ready instances across 15 regions). This update fixes OUR client, not someone else's server; auto mode switches to public on its own once it's available again.

Mobile player

  • The "don't spin the cover art" setting kept re-enabling itself on mobile. Cause: the WebSocket init message (sent on every reconnect -- screen lock, backgrounding, network switch) fully overwrote the guest's local settings. Now it merges on every reconnect instead of only on first load.

New

  • Optional "Lyrics (.lrc)" checkbox right on the release card -- Apple and Deezer (the only two engines with real lyrics fetching). Overrides embed-lrc/save-lrc-file for that one download only, nothing persisted globally.

v3.0.34

Choose a tag to compare

@Raccoon-Trashpanda Raccoon-Trashpanda released this 21 Jul 10:13

Security hardening

  • Closed self-update writable-repo vector, brute-force XFF bypass, missing Host allowlist (with ngrok + WebSocket coverage), non-consensual telemetry, and a pickle RCE risk in OrpheusDL session loading.

Fixes

  • BBC Sounds downloads now pull real ~2x higher fidelity audio (was silently capped by a MediaSelector quality-tier mislabel).
  • Fixed a crash in AppleMusicDecrypt when a track has no Hi-Res/Atmos master.
  • Spotify to Deezer/Apple conversion (incl. release radar downloads) no longer serves unrelated releases that merely share words in the title -- now matches by real ISRC/UPC first.

v3.0.33

Choose a tag to compare

@Raccoon-Trashpanda Raccoon-Trashpanda released this 20 Jul 18:16
  • BBC Sounds now downloads through the same shared queue as every other service (retry, history, bot support) instead of its own separate flow. Paste a BBC Sounds link directly, or use the bot's new /bbc command for search cards.
  • Clickable artist name on Apple/Deezer/Qobuz/Tidal/SoundCloud cards and the release radar - jumps straight to that artist/channel's releases (SoundCloud channels especially - solves fresh uploads that don't show up in keyword search yet).
  • New /sc bot command - SoundCloud search with photo cards, same as the web tab.
  • Fixed the guest cache-channel silently not archiving new deliveries.
  • Fixed the launcher splash never detecting a live server (a real user hit this) - readiness is now checked from Python instead of a browser fetch that Chromium was quietly blocking.
  • Bigger, clearer mini-player visualizer.

v3.0.32

Choose a tag to compare

@Raccoon-Trashpanda Raccoon-Trashpanda released this 20 Jul 14:53

Fixes the launcher's startup splash never detecting a live server ("Server not responding" even though the server was actually up within seconds) - a real user hit this. Root cause: the splash's fetch() to /api/ping ran from an opaque-origin page and Chromium silently blocked it. Readiness is now checked from Python instead, before/while the window is open, and the window is driven to the real URL directly once confirmed.

v3.0.31

Choose a tag to compare

@Raccoon-Trashpanda Raccoon-Trashpanda released this 20 Jul 13:59
  • Ripster Radar is now actually enabled in the public build (it was advertised in the README with a screenshot but the route was never wired in - oops). No account needed for the basic crawl; add your own sp_dc cookie in Settings for the faster web-player transport.
  • Bot token-wizard validation: candidate credentials can now be probed before saving, without clobbering a working token.

v3.0.30

Choose a tag to compare

@Raccoon-Trashpanda Raccoon-Trashpanda released this 20 Jul 13:35
  • Ripster Radar: instant queryWhatsNewFeed hook (Live badge) alongside the safe per-artist crawl
  • Radar preview: Spotify tracks matched to the exact same Deezer copy via album UPC - no fuzzy matching
  • SoundCloud mix playback fixed for non-DRM HLS streams on browsers without native HLS support
  • Always-visible compact audio visualizer in the mini player, tinted to the service color
  • Tidal connection status in Settings now actually updates (was stuck on a dead placeholder); country auto-detected
  • Smoother top loading indicator
  • Launcher shows a starting-up splash instead of a raw connection-refused page on slow first boot