Repository navigation
PyTNC Pro v0.1.8-beta — Release Notes
Big feature release. APRS messaging comes out of scaffolding, VARA FM gets a real chat feature, audio device handling is overhauled, and the first working environmental monitor (AQI) lands against the new AirNow API.
💬 APRS Messaging (new)
APRS messaging is now embedded directly in the APRS tab (right side, below the symbol picker) — no separate tab needed.
- To / From callsigns with auto-uppercase
- Live 67-character counter (amber at 60, red at 67)
- Explicit "IS" and "RF" send buttons — you choose the transport per message
- ACK tracking — outgoing messages show ⏳ pending, ✓ acked, ✗ no-ack
- Terminal-style message log with color-coded callsigns and status markers
- Recent dropdown — one-click fill of the last 10 callsigns you've messaged
- Right-click any log line → Reply / Copy text / Resend / Clear view
- Persistence — conversations saved to
pytnc_conversations.json, restored on next launch - Tab-title flash — APRS tab shows
📻 APRS 💬*on incoming message, clears when you switch to it - Auto-ACK reply — when someone messages you and requests an ACK, PyTNC sends it back
- Bulletin filtering —
BLN*/NWS*addressees stay out of the conversation log
📡 VARA FM Chat (new)
Full peer-to-peer chat over VARA FM connected sessions. Lives in the VARA FM tab (right side, below the symbol picker).
- Target callsign field with Recent dropdown of previously-linked stations
- 🔗 Link / ✂ Unlink buttons with live status (
○ idle/◐ linking…/● linked to X/◐ disconnecting…) - Color-coded chat history — outgoing in cool blue with
→, incoming in warm amber with←, system events in italic teal - Auto-accept incoming calls via VARA's
LISTEN ON(no manual accept needed) - Persistence — chat history saved per remote callsign to
pytnc_vara_chat.json - VARA tab flashes
📡 VARA FM 💬*on incoming chat - Right-click chat log → Copy line / Clear view
- 🐛 Debug toggle — surfaces VARA daemon internals: IAMALIVE/BUSY events, per-cycle PTT counts, raw data-socket hex bytes, periodic link-state summaries
🔊 Audio System Overhaul
- Audio API filter (defaults to MME, matches VARA FM) — device pickers now show one row per physical device instead of 3-4 duplicates across Windows audio APIs
- "Show all" toggle for advanced users who want the full list
- Always-on RX level meter on the Settings tab — see audio levels live without starting receive
- TX audio TX levels honored correctly — matches Send Beacon's proven pattern for messages sent via RF
⭐ Device Aliases (new)
Right-click any RX / TX / PTT / GPS device combo → give it a friendly name.
- Right-click → Rename / Clear alias / Copy device name
- Display format:
⭐ DigiRig RX · 1: USB Audio CODEC [MME] 44100Hz 2ch - Aliases persist across restarts in
pytnc_settings.json - Audio device selections now saved by name+API — surviving Windows device renumbering when USB ports change
💨 Air Quality Index (AQI) — new API
First working environmental monitor. Built against the June 2026 AirNow API (/aq/forecast/current/), so it won't break when AirNow retires the legacy endpoints on September 30, 2026.
- Fetches current AQI forecast for your beacon location
- Colored EPA badge on the map at your position (Good / Moderate / USG / Unhealthy / Very Unhealthy / Hazardous)
- Status label shows
AQI 56 · Moderate · PM2.5 · ⚠️ Action Day - Hourly auto-refresh with manual 🔄 refresh button
- Full popup with pollutant, reporting area, forecast agency, and discussion narrative
- Rate-limit safe (24 requests/day per user vs AirNow's 500/hour cap)
🏗 Layout Changes
- APRS tab: TX Log moved to bottom of left panel (fills remaining vertical space); right panel is now Symbol Picker (½) + APRS Messaging (½)
- VARA FM tab: mirrors the same layout — VARA log at bottom-left, chat on right
- VARA tab log: small 🗑️ Clear button now sits top-right of the log (was a wide button below)
🐛 Bug Fixes
- VARA
REGISTEREDno longer flips link state to True — was causing false "already linked" errors after daemon connect. OnlyCONNECTED <src> <dst>marks a real P2P link now. - Removed erroneous auto-CONNECT on incoming RING — was colliding with VARA's LISTEN-ON acceptance and breaking handshakes. VARA handles acceptance internally.
- MYCALL / CONNECT source mismatch fixed —
_vara_chat_linknow uses the exact MYCALL string that was registered with VARA, preventing endless-retransmit loops when SSID differs between UI callsign field and registered MYCALL. - VARA TX-indicator error no longer aborts sends — cosmetic indicator wrapped in try/except so chat send always completes.
- Old obsolete
setTabText(2, ...)writes removed — was writing "💬 Messages" over the Info tab (leftover from a previous refactor). - Placeholder methods replaced with working implementations —
_vara_send_chat,_toggle_aqi_monitor,_rx_toggle_aqi,_fetch_aqi_datawere all referenced-but-undefined; would have crashed on click. _load_conversations()added — previously missing, so restored APRS messages weren't loading from disk.
⚙️ Technical
- New JSON files:
pytnc_conversations.json(APRS messaging),pytnc_vara_chat.json(VARA chat per-remote) - New settings keys:
device_aliases,audio_preferred_api,audio_show_all_apis,settings_rx_audio_key,settings_tx_audio_key,audio_device_key,tx_device_key - New dependencies: none — all built on existing
sounddevice,PyQt6,requests,scipy - Backward-compatible with v0.1.7-beta settings files (new keys default sensibly if absent)
- Version:
main.pyandpytnc_config.pyboth bumped to0.1.8-beta
📻 Verified Working (Test Setup)
FT-991A + DigiRig on rear DATA port (Pin 5), 1200-baud APRS RF TX/RX working end-to-end with:
- TX Level 8%, RX Gain 0.1x (typical for narrowband packet through DigiRig)
- Menu 070 = REAR, 071 = DAKY, 079 = 1200
VARA chat verified working via FT5 ↔ FT-991A in wide/9600 mode with Pin 5 wiring.
🙏 Acknowledgments
Big session, big release. Sorry for the delay, was working all summer...
I will start a user account in the next version so I can keep track of the amount of actual users.
prbably start another tab for Mail in varafm , a winlink kind of version...
more to come
73 de KO6IKR, Belgium, Los Angeles