Phone pairing over Tailscale now works on the first scan, your VFO profiles and cloud connection stay in sync across desktop and phone, and this release brings a first look at Mercury HF data, PSK31 keyboard mode, and JTCAT "Answer Callers."
📶 Tailscale QR code — pair on the first scan
If you turned on Tailscale and then immediately opened the pairing QR (or a share link), the code could be minted before POTACAT had picked up your tailnet address — so a Tailscale-only phone scanning it had nothing to dial, and pairing failed. The QR and share link now refresh your Tailscale and cloud host names at the moment they're generated, so "turn on Tailscale, then scan" works the first time.
🔄 Profile sync — VFO profiles and your cloud connection stay put
- VFO profiles sync cleanly between desktop and phone. Profiles edited on the phone are now validated before they're saved (bad entries dropped, names length-capped, unknown fields preserved) instead of trusting the wire verbatim, and frequencies round-trip at sub-kHz precision so CW/FT8 dial offsets survive a save-and-apply.
- The Cloud Tunnel finds its config and auto-connects again. After POTACAT began storing each operator's tunnel settings in their own profile folder, the tunnel manager was still looking in the old shared location — so on some machines the cloud connection silently stayed off after a restart, and its settings kept drifting back to the wrong folder. It now reads and writes the per-profile config, so cloud auto-connects on launch as it should.
- Phone cloud pairing no longer trips over a stale directory entry (thanks W7RTA). A boot-timing race could register your shack before the cloud tunnel was live, leaving the phone dialing an address that wasn't ready yet. Registration is now refreshed whenever any detail the phone dials actually changes.
- The cloud tunnel survives restarts. A lost profile pointer could leave two competing config files and resurrect a stale one; the newer config now wins, and a missing pointer self-heals.
📡 Mercury HF data modem — new, experimental
First release of POTACAT's integration with the Mercury HF data modem (Rhizomatica/HERMES) — keyboard chat and file transfer over an ARQ link, POTACAT-to-POTACAT. Mercury runs as a separate modem process that POTACAT launches, supervises, and talks to over a TNC, while POTACAT keeps PTT and the radio under its own control. This release includes:
- Configure it entirely in Settings (Station ▸ Mercury) — enable it, point at the binary, choose sound system and input/output devices, bandwidth, and TX gain — no JSON editing.
- A one-click device-discovery wizard that lists your soundcards and auto-matches your rig's DAX channels.
- A native chat / file popout — connect, listen, send text, send files.
- Install instructions with a direct download link for the Mercury binary.
- Fix: the popout's Abort and Disconnect buttons now work while a call is still ringing. Previously they only became active once the other station answered, so an unanswered call couldn't be stopped from the window — and it kept the radio keyed. Abort now also drops PTT immediately as a safety stop.
Mercury is opt-in and off by default. It needs the external Mercury binary, and because an inbound call keys your transmitter, it's built for attended operation.
⌨️ PSK31 keyboard mode
PSK31 is now a keyboard mode in the JTCAT popout — send and receive live text with:
- Six editable macro slots — right-click a button to edit it (thanks W4MPT), with
$MYCALL/$GRID/$CALLsubstitution. - A carrier that no longer forces the squelch open, plus an operator squelch slider so you decode when you mean to.
- A status strip that sweeps a live countdown across each transmission.
- Mobile support — ECHOCAT phone clients get the PSK31 wire feed too.
QSOs log as MODE=PSK / SUBMODE=PSK31.
🤖 JTCAT — Answer Callers
New Answer Callers toggle (on by default): when JTCAT is idle, it will auto-answer a station calling you directly — for example one you'd abandoned who finishes their QSO and calls back — then resume hunting (thanks KQ4MHD). Also in this release:
- Popout UX batch — the activation log no longer misses auto-logged contacts, directed rows are easier to read, a bottom status strip shows a big countdown and an RX/TX progress bar, and the panes have a draggable splitter.
- 160m and 60m band buttons for every mode.
- Flex "check DAX routing" hint — when a Flex slice's audio flatlines for about 8 seconds, the waterfall now warns that DAX may not be routed.
🚀 Start POTACAT at login
New Station-tab option to launch POTACAT when your computer starts (default off) — Windows, macOS, and Linux. Also fixed a startup bug where, with that option enabled, the app could fail to launch because it checked the setting before your settings had finished loading.
📱 More for ECHOCAT phone users
- Lower first-syllable latency — the phone→rig audio bridge now pre-warms the moment a client connects (without grabbing your capture devices), and TURN credentials are minted early, so the first word of speech isn't clipped. New latency instrumentation lands in the logs.
- Flex TX power reaches the phone — the phone VFO could read 0 W on transmit; power is now read back correctly.
- Clock-sync status on the phone — the phone now knows when your desktop's clock has drifted, which silently kills FT8 decoding.
🏆 Contest calendar
POTA Support Your Parks is corrected to the 3rd full weekend, quarterly (thanks W7RTA).
Windows, macOS (Intel + Apple Silicon), and Linux (x64 + arm64) installers are attached below; the app auto-updates from here.