GopherTrunk v0.3.8 — social announcement drafts
One-click copy-paste blurbs for posting the v0.3.8 release. Each block below is a fenced code block so the rendered-markdown “copy” button grabs exactly what you’d paste.
Release: https://github.com/MattCheramie/GopherTrunk/releases/tag/v0.3.8
Reddit — title
GopherTrunk v0.3.8 — a pure-Go LoRa / LoRaWAN receiver, a daemon that never stops silently, skip-recording for encrypted calls, and intelligible P25 female voice
Reddit — body
**[GopherTrunk](https://gophertrunk.org) v0.3.8 is out** — pure-Go digital-trunking scanner for RTL-SDR / HackRF / Airspy. P25 (Phase 1+2), DMR (AMBE+2 voice), NXDN, Motorola Type II, EDACS, LTR, MPT 1327, dPMR, D-STAR, YSF, M17, plus APRS, POCSAG + FLEX paging, and AIS / DSC / ADS-B. No CGO, single static binary for Linux / macOS / Windows.
**What's new since v0.3.7:**
* **Pure-Go LoRa / LoRaWAN receiver** (#586) — a zero-CGO LoRa PHY (chirp dechirp/FFT demod, preamble/sync/SFD acquisition with carrier-offset and timing recovery, Gray/de-interleave/Hamming FEC, de-whitening, CRC) with spreading-factor auto-detection across SF7–SF12 and 125/250/500 kHz bandwidths. One SDR is split into several parallel LoRa sub-channels via the tuner channelizer/DDC bank. LoRaWAN 1.0.x frames are MAC-decoded and, when you supply operator session keys, the MIC is verified and the payload decrypted (no key recovery). Configure under `lora.channels`; frames persist to `lora_log`, serve at `GET /api/v1/lora/frames`, and render live on a new `/lora` panel.
* **The daemon never stops silently anymore** (#606) — component panics are recovered and logged (clean shutdown instead of a process kill), a soft memory limit is set at startup (`GOMEMLIMIT` / `diagnostics.memory_limit_mb` / ~70% of RAM), and a periodic runtime heartbeat logs uptime/goroutines/heap so a leak or pre-kill footprint shows up in the timeline. Opt-in pprof behind `GOPHERTRUNK_PPROF`.
* **Skip recording encrypted calls** (#607) — opt-in `recordings.skip_encrypted` suppresses WAV/raw files for calls you can't decode, gating both at the control-channel grant and mid-call when encryption surfaces on the traffic channel, so partials never reach the upload feeds. Default off keeps recording everything.
* **Intelligible P25 IMBE female voice** (#605) — a follow-up to the §6.3 voiced-phase regeneration: the phase dispersion is now a bounded per-frame offset on a coherent phase memory, scaled by the unvoiced-harmonic fraction, so mostly-voiced (high-pitch) speech stays intelligible and the high-pitched recording onset is gone.
* **Hardware + browser fixes** — Airspy USB initialisation corrected against libairspy's command set (#454), HackRF now claims its USB interface on macOS (#511), live audio plays in Chrome via a new Web Audio player (#598), and the Eye/Symbol/Tuning/Histogram scopes default to the control SDR instead of an idle dongle (#402).
**Downloads** (Linux / macOS / Windows, x64 + ARM64): https://github.com/MattCheramie/GopherTrunk/releases/tag/v0.3.8
**Docs:** https://gophertrunk.org
Heads-up: the v0.x line is still flagged prerelease — actively developed, feedback / captures / bug reports very welcome.
Discord
**GopherTrunk v0.3.8 is out** — pure-Go trunking scanner for RTL-SDR / HackRF / Airspy. P25, DMR, NXDN, M17, analog trunked, APRS, POCSAG + FLEX paging, AIS / DSC / ADS-B. Single static binary, zero CGO.
**What's new since v0.3.7:**
- **Pure-Go LoRa / LoRaWAN receiver** (#586) — full LoRa PHY (dechirp/FFT, FEC, de-whitening, CRC) with SF7–SF12 auto-detect and 125/250/500 kHz, one SDR channelized into parallel sub-channels; LoRaWAN 1.0.x MAC decode + optional MIC-verify/decrypt with session keys. New `/lora` panel + `GET /api/v1/lora/frames`.
- **Daemon never stops silently** (#606) — panic recovery + clean shutdown, soft memory limit, runtime heartbeat, opt-in pprof.
- **Skip recording encrypted calls** (#607) — opt-in `recordings.skip_encrypted`, gated at grant and mid-call.
- **Intelligible P25 IMBE female voice** (#605) — coherent bounded phase dispersion scaled by the unvoiced fraction; high-pitched onset fixed.
- **Fixes:** Airspy USB init (#454), HackRF interface-claim on macOS (#511), Chrome live audio via Web Audio (#598), symbol scopes default to the control SDR (#402).
Download: <https://github.com/MattCheramie/GopherTrunk/releases/tag/v0.3.8>
Docs: <https://gophertrunk.org>