Deep Happy

Support

Get in touch

Something broken, a question, or a feature you want: use the feedback form. It goes straight to the person who writes the code — there is no support queue, because there is no support department. You can leave an email address if you want a reply, or leave it blank and stay anonymous.

Open the feedback form


What it needs

macOS 26 or later. Deep Happy runs inside Apple's App Sandbox, needs no permission to play audio, and asks for exactly one thing — Local Network permission, and only if you turn remote control on.

Subscription, billing and refunds

Deep Happy Pro is billed by Apple, not by the developer. Manage or cancel it in your Apple ID account settings — the app's "Manage subscription" link opens Apple's own page for it directly. Deleting the app does not cancel a subscription.

Refunds are Apple's to give: request one through your Apple ID purchase history or Apple Support. The developer never sees your payment details and cannot issue a refund directly.

Playback won't start

Press Play once and let it work: a connection from cold takes a few seconds, and the status line under the track title tells you which part is slow. If it settles on Can't reach stream, the station's own server is not answering — that is the stream's end, not the app's. Switch to another station in the list to check; switching always connects afresh, so you will hear the usual few seconds of connecting rather than the wrong station.

If you are adding a station by hand, the address has to be a full http:// or https:// URL. When it is not one the app can use, it says so under the fields and keeps what you typed, so you can fix the address rather than retype it.

A station row shows what the app has actually measured about that stream underneath its name — something like "HLS · 25 s cushion", or "No live window · no cushion". A station you have never played shows no line at all, because nothing is known about it yet. That is not a fault.

What the status line is telling you

The line under the track title is the app saying what is actually happening, so you never have to guess whether it is working:

  • Playing — audio is coming out.
  • Connecting… — it is opening the stream; this is the normal few seconds after a cold start or a station switch.
  • Waiting for network — your Mac has no usable network right now. This one resolves itself when the network comes back; nothing to do.
  • Reconnecting… — the network moved under it, or the connection stalled, and it is climbing back; the line carries the attempt number, and a countdown while it waits between tries. A VPN reconnect or a lid close usually looks like this.
  • Can't reach stream — it has tried repeatedly and the server is not answering. See above.

Until a stream sends a track title, the title line shows the station's own name instead, and the lookup buttons stay dim — there is nothing to search for yet.

Remote control can't find the other Mac

Work through these in order:

  • Is it switched on over there? "Allow remote control" in Settings → Remote is off by default on every Mac, and until it is on, that Mac is not listening and nothing can discover it.
  • Local Network permission. The first time Deep Happy advertises or discovers a remote-control service, macOS asks for it. That prompt is expected — allow it, or remote control will not find the other Mac.
  • A full-tunnel VPN. It routes every connection off the LAN, mDNS included, so Bonjour cannot see the other Mac at all and the picker simply stays empty. Use the Address field in the pairing form instead and type the other Mac's name or IP address with the port it is listening on. Pairing and every session afterwards work the same way over it.
  • The PIN expired. The four digits shown on the Mac with the speakers are good for two minutes and three attempts. After that, show a new PIN and start again.
  • Three controllers already. A Mac that plays pairs with at most three controllers; a fourth attempt is refused with the reason rather than silently swapped in. Revoke one from "Paired remotes" on the Mac that plays — its connection drops immediately.

When a pairing attempt is refused, the message names which Mac had the problem, so start by reading it.

The play key on the keyboard opens Apple Music

This happens when "Play on launch" is off and you have not pressed Play in Deep Happy yet in that launch. macOS routes the hardware key to whichever app most recently made sound, and a Deep Happy that has not played yet does not hold that claim. Press Play in the player once, and the key belongs to it for the rest of the launch — including through a reconnect.

Producing a diagnostic

Settings has a Developer tab with one switch. Turn it on and Deep Happy writes a step-by-step trace of pairing and of the remote session to your Mac's system log. It is off by default because it is chatty — a line per frame on a session that runs for hours — so turn it on before you deliberately reproduce the problem, then reproduce it.

The same tab hands you two ready-made Terminal commands, each with a copy button: one watches the log live, the other reads back the last half hour. It also explains how to narrow either one to a single half of the remote layer, or to the player's own lines.

Failures in the remote layer are logged whether that switch is on or off, so if something has already gone wrong, the last-half-hour command is worth running before you reproduce anything.

The log stays on your Mac. Nothing is sent anywhere — if you want the developer to see it, you paste it into the feedback form yourself.

Reporting a problem

There is a small line at the bottom of the player, and in Settings, naming the exact build you are running. Click it and it copies that identity to the clipboard. Please paste it into the feedback form along with what happened — it is the difference between a report that can be chased and one that cannot.

Open the feedback form


Stuck on something else — stations, the Dock icon and the separate window, volume and mute, or how remote control behaves? Check the FAQ first; the form above is still there if it doesn't answer it.