You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Tools → Generate Session Journal (Ctrl+J / 📓 toolbar) — sends the current transcript and detected callsigns to Google Gemini 3.5 Flash; saves a titled AI-generated summary to journals/YYYYMMDD_HHMMSS.json. Requires a free Gemini API key in Settings → Configuration → Gemini API Key.
Tools → View Session Journals (Ctrl+Shift+J / 📓 toolbar) — non-modal split-pane browser for reviewing past journal entries while listening. Includes per-entry delete with confirmation.
Callsigns Detected improvements
Persist across Listen cycles — the Callsigns Detected grid no longer resets when Listen is toggled off/on; callsigns accumulate for the whole operating session. Only the Clear button or switching to FRS mode resets the list.
Remove individual entries — right-click any row or select it and click Remove selected to drop a single callsign from the session without touching Contacts.
YouTube Stream audio source
Select YouTube Stream (no speakers) in the Input Device dropdown and paste any YouTube URL to stream audio directly into the STT/VAD pipeline — useful for testing without a radio. Requires yt-dlp ≥ 2026.03.17 and ffmpeg on PATH.
Renamed: Attendance → Callsigns Detected
The panel, menu toggles, config key label, and all UI copy now use the clearer name Callsigns Detected.
Internal code quality
Extracted TXController from MainWindow (SRP)
Introduced AppConfig wrapper to centralize config access (DRY)
Replaced PTT if/elif dispatch with a registry dict
Added normalize_callsign utility to consolidate callsign normalization
Introduced WorkerBase shared base class for background workers
Added pyserial and reportlab to NOTICES.md
Upgrade notes
No database or config migration needed — config.json is backward-compatible.
To use session journals, add a gemini_api_key entry to config.json or set it via Settings → Configuration. Leave it empty to keep the app fully offline.
For YouTube Stream testing: pip install --upgrade yt-dlp and ensure ffmpeg is on PATH.