Skip to content

v0.8.6

Choose a tag to compare

@github-actions github-actions released this 23 Jun 22:50
· 51 commits to main since this release
996395b

v0.8.6 — 2026-06-24

Multi-Operator & Club Station Support

  • Operator profiles in config (callsign + name), per-logbook active operator
  • Ctrl+O hot-swap through configured operators, space-toggleable in station form
  • Operator menu (create/edit/delete) with validation and all-logbook cascade
  • WSJT-X auto-log preserves WSJT-X operator; warns on mismatch with active operator
  • Wizard auto-creates operator entry from callsign during first-run setup

Hamlib Rigctld Backend & Rotor Control

  • Backend-agnostic rig architecture: flrig (HTTP) and hamlib rigctld (TCP) via shared RigClient interface
  • Hamlib rigctld support: frequency, mode, VFO, split, power with graceful VFO name query fallback for Xiegu radios
  • Hamlib rotctld rotor control backend with TUI integration (azimuth, elevation, stop)
  • Per-rig rotor config in rig presets (hamlib host/port)
  • VFO mode auto-detection for split-capable radios

Windows Installer (NSIS)

  • installer/cqops.nsi — Start Menu shortcuts, PATH integration, Control Panel uninstall entry, license page, solid LZMA compression
  • scripts/build-installer.ps1 — local build with auto .ico generation from cqops.png via ImageMagick
  • Shortcut targets .exe directly; Windows Terminal shows embedded icon in tab/taskbar

Linux Packages (nfpm)

  • nfpm.yaml — deb, rpm, and archlinux (pkg.tar.zst) for amd64 + arm64
  • installer/cqops.desktop — freedesktop entry with enriched keywords
  • scripts/build-packages.sh — local cross-platform package build

Embedded App Icon & Console Icon

  • winres/winres.json — go-winres config with icon, manifest (DPI-aware, long-path, Win7+), version metadata
  • cmd/cqops/rsrc_windows_*.syso — compiled Windows resources (icon + manifest)
  • Runtime setConsoleIcon() via Win32 API — Windows Terminal tab shows CQOps icon

Error Persistence

  • Top-level recover() in main.go pauses on panic/startup failure so the terminal stays open

WSJT-X Fixes

  • QsoLoggedMessage (field-based) now constructs ADIF and saves — no more silently dropped QSOs
  • WSJT-X auto-logged QSOs now inherit ContestID so they appear in RecentQSOs when a contest is active

Bug Fixes (Audit)

  • Fixed nil map panic when saving operator to uninitialized Operators map
  • Fixed config.Upgrade() not stamping State.Version (was empty stub)
  • Fixed invalid DROP INDEX IF EXISTS in SQLite migrations; added dedup DELETE before DXC UNIQUE index
  • Fixed WSJT-X unsafe.Pointer usage with recover() and Kind check
  • Fixed Wavelog AllDuplicates detection: iterates all Messages, defaults to false when empty
  • Fixed DXC goroutine leak: stopCh checks in time.Sleep goroutines, exponential reconnect backoff
  • Fixed ListAllQSOs OOM risk: internal pagination (500 per page)
  • Fixed toast unbounded growth: capped at 20 items
  • Fixed --version flag: prints version and exits without TUI
  • Fixed default Debug: truefalse
  • Fixed logbook delete: synchronous os.Remove before toast
  • Fixed double Wavelog lookup; added retry for QRZ lookups
  • Fixed Maidenhead grid calculation (LatLonToLocator replaced with correct algorithm)
  • Fixed PSK Reporter: per-callsign fetch timestamps with 5-minute cooldown across logbook cycles
  • Fixed DXC: selected-row highlight spans full row; filter columns indicated via header
  • Fixed DXC: show "DX Cluster not configured" toast when DXC is disabled (F4)
  • Fixed bandplan export to match TUI data and formatting
  • Fixed photo cache invalidation to reduce CPU usage during rendering
  • Fixed photo loading state management in partner view

Wavelog

  • Chunked batch upload (50 QSOs per HTTP call) with individual fallback on duplicate errors
  • Operator/grid mismatch detection during upload with normalize-and-retry flow

Logging & Performance

  • Size-based log rotation (10 MB) to prevent disk exhaustion

CI & Build

  • .github/workflows/release.yml — 3-job pipeline: build-unix (Go + nfpm), build-installer (Windows NSIS), publish (GitHub Release)
  • Makefile — added installer, packages, installer-all targets
  • .gitignore — added dist/

Cleanup

  • Removed dead code: pendingSave, screenCON, handleCONUpdate, viewCON, tabbar F3 CON, lookupTimeoutMsg, openLogFile()
  • if/else if chains converted to tagged switch (wizard, rig_menu)
  • Split inefficient WriteString concatenation in bpl_views.go
  • Removed stale flrig_integration.go and flrig_interface.go (replaced by rig_poll.go + rig_client.go)
  • Updated README with downloads badge, screenshots, and Unicode normalization package reference