Skip to content

Hydrophone 0.6.0

Choose a tag to compare

@thijsw thijsw released this 29 Jul 13:22
· 19 commits to main since this release

The release where Sonicwave becomes Hydrophone — new name, new look, and a queue that can finally stretch its legs.

A new name and a new face

  • Sonicwave is now Hydrophone — a device for listening under the surface felt right for a Subsonic client (and the old name collided with two other products). New bundle identifier, new domain: hydrophone.app.
  • New app icon — a play button floating half-submerged at dusk: crisp above the waterline, refracting the sunset below it.
  • The in-app accent moved from red to ocean aqua to match.
  • Coming from Sonicwave? The rename means a fresh start: Hydrophone won't see the old app's settings, so reconnect to your server once, then delete the old Sonicwave.app.

Queue-first Now Playing

  • A chevron next to the track title collapses the big artwork card to a compact strip — the play queue takes (nearly) the whole panel. Click the strip to bring the hero back; the choice persists across launches.
  • The panel can also be dragged wider than before.

Fixes

  • Cover art, once per album — every track of an album used to download its own identical copy of the cover; the cache is now album-keyed, so a freshly queued album shows hero + all queue thumbnails instantly with a single download. Transient network blips also get a retry instead of leaving gray tiles for the session.
  • Smooth scrolling — a long-standing glitch could make the Albums grid (and Home/artist pages) visibly skip ~50–100 px mid-scroll at certain window widths. Scroll restore is now one-shot, so the snap is structurally impossible.
  • Clicking the current sidebar section returns to its root — with an album open, clicking "Albums" now takes you back to the grid, exactly where you left it (the same convention as tapping the current tab in iOS Music).
  • Streaming read-ahead actually holds its cap — the player could buffer entire tracks (~55 MB of decoded audio) ahead of the playhead, and in one scenario a dropped connection silently skipped the rest of a track. Read-ahead is now measured honestly and parsed in bounded slices, keeping memory flat and long sessions stable.

Under the hood

A deep "one implementation per idea" cleanup of the playback engine, API layer, and UI state: the engine's four lifecycle flags became two phase enums, fifteen bespoke response decoders became two generic ones, and every UI state now has a single source of truth. Same behavior, far fewer moving parts.


Install: unzip, drop in /Applications. Signed & notarized — no Gatekeeper warnings. Requires an OpenSubsonic server (Navidrome, Gonic, LMS, …) or try the built-in demo server button.