Work special-event stations, POTA parks in your FT8 logs, an SSTV decoder that hears what MMSSTV can't, and Flex noise filters SmartSDR doesn't even show you.
📻 SSTV: the decoder grew up
We root-caused why some of you stopped decoding SSTV in late June (a Flex speaker-mute change silently killed the DAX audio tap in v1.8.15–1.8.17 — fixed since v1.9.0) and then went after the reasons MMSSTV still felt more reliable. It shouldn't anymore:
- AFC — POTACAT now decodes stations MMSSTV can't. The decoder retunes itself to off-frequency signals automatically (±300 Hz). Real 14.230 operation routinely has stations 100–200 Hz apart in tuning; the old decoder went silently deaf past ~75 Hz. MMSSTV has no AFC at all — its users tune by eye against spectrum markers.
- Joins transmissions already in progress. Missed the VIS header (QSB, tuned in late)? The decoder now identifies the mode from the sync-pulse rhythm and starts mid-picture, like MMSSTV's no-VIS start.
- Weak signals show you something. Borderline decodes used to be silently discarded; now they display with an orange ⚠ WEAK badge (and stay out of your auto-saved gallery). Noise is still rejected — the badge is for real, marginal pictures.
- ↻ Redecode: the last transmission stays in an audio buffer — adjust the slant slider and redecode it for real (MMSSTV's "replay from RX buffer"), not just a cosmetic shear.
- ✕ NO RX AUDIO badge: when no audio is reaching the decoder (dead DAX route, wrong input, muted slice), you'll know in seconds instead of wondering why nothing decodes — and if the direct radio stream dies, the soundcard input now takes over automatically within seconds.
🎆 Special-event and compound callsigns work on FT8
Anything with a slash (PJ4/K1ABC) or an unusual shape (GB13COL, TM13COL) travels as a hashed <call> in FT8's 77 bits — and every reply JTCAT sent one silently never transmitted. Fixed end to end: reports hash their call, the final RR73/73 carries it in full, bare no-grid replies from nonstandard stations are understood, and <...> resolves automatically once their full call is heard. (13 Colonies' K2A–K2M were always ordinary calls — it's the GB13COL/TM13COL bonus stations this unlocks.)
🏞️ POTA parks finally land in your FT8 logs
Thanks KB2UXB: working a spotted POTA/SOTA/WWFF activator over JTCAT — desktop or phone — now logs their park reference automatically, exactly like SSB spot-click logging always has. N-fer activators get one entry per park, and if you're activating at the time, it logs as park-to-park.
🎪 Events, connected end to end
- Working a tracked event station (13 Colonies, America250) stamps the event into the QSO record — comment tag plus ADIF fields — so your log proves your certificate claim.
- "Stamp N past QSOs": one click backfills the event into matching contacts you made before this release, then a clean per-event ADIF export for your submission. When an event finishes, its board shows the summary ("worked 12 of 13 — 9 FT8").
- New Event filter in JTCAT shows only stations you still need, and auto-answer now prefers an event station you need over a stronger generic caller.
- Event banners retire themselves when an event ends — no more restart required (and countdowns flip to LIVE on time). The event catalog now also updates live from potacat.com, so new events appear without an app update.
- The Contests view and the events system finally know about each other: the 13 Colonies row carries a live "◉ Tracked — 8/13 worked" chip that opens your board.
🎛️ Flex: firmware noise filters SmartSDR-style clients don't expose
For 8000-series/Aurora firmware: NRL (LMS adaptive), NRS (spectral subtraction), RNN (neural-net, voice-trained), and NRF noise reduction — plus WNB wideband noise blanking on all Flex models and RF gain in radio-native dB steps. POTACAT drives these over its own API connection, so they work with SmartSDR open, AetherSDR open, or no GUI client at all. NRL validated on the 8600M.
📱 ECHOCAT FT8 replies fixed
Tapping a station that answered your CQ transmitted your grid instead of their signal report — the phone knew the right message; the desktop dropped it in transit (since April, masked because QSOs still completed with an extra cycle). Every directed-decode tap now opens with the correct message, and the desktop re-checks each tap against the raw decode so a stale phone app can never cause it again.
⚡ JTCAT quality-of-life
- Skip Grid: answer CQs with your signal report instead of your grid (WSJT-X's "skip Tx1") — one full cycle shorter each way.
- Hound mode: work FT8 DXpeditions properly — calls above 1000 Hz, auto-QSY to the fox for the report, fox dual-messages understood, logs on RR73 with no wasted 73. (Classic Fox/Hound; SuperFox not yet.)
- Type your own TX message: click the TX readout and type — validated by the real encoder, so if it's accepted, it transmits.
- Already-worked warning: double-clicking a station you've worked pops a band/mode-aware notice — and calls anyway.
🛠️ Also in this release
- Phone-logged QSOs no longer duplicate across devices (cloud sync merge fix).
- Multi-op profiles with slash callsigns (LZ3AW/P) no longer nest their settings folder; existing ones repair on startup.
- ARRL Field Day FT8 mode (class + section exchange, bit-exact to WSJT-X) rides along from the June work — ready for winter FD.
- The events section warns when the catalog hasn't refreshed in over a day, and catalog polls are now nearly free for the server (conditional fetches).
Windows, macOS (Intel + Apple Silicon), and Linux (x64 + arm64) installers are attached below; the app auto-updates from here.