Commit Graph
35 Commits
Author SHA1 Message Date
rouggy 901e967b53 feat: live operator status goes offline after 5 min idle, online on log
The multi-op live status heartbeated every 15 s, so an operator who left the
log open but stopped working still showed on air. Now it publishes an explicit
online flag: online when a new contact was logged within the last 5 minutes,
offline otherwise. live_status gains `online` + `last_qso_at` columns (added to
existing tables via ALTER). Logging a QSO (manual, UDP, ADIF monitor) stamps the
time and republishes at once, so they flip back online instantly.

At launch the last-QSO time is seeded from the DB (Repo.LastQSOTime), so an
operator who worked someone just before starting OpsLog is shown online right
away rather than offline until their next contact. LiveLastQSOAgeSec exposes it
to the UI badge.
2026-07-19 18:14:43 +02:00
rouggy 64e80986ea fix: QSL/recording no longer revert a QSO's upload status + faster logging
Status clobber: sending an OpsLog QSL card (or stamping a recording) read the
QSO, did slow work (e-mail send), then wrote the WHOLE row back from that now-
stale copy — silently reverting clublog/qrz_qso_upload_status from Y to R that a
concurrent auto-upload had just set. That's why QSOs "showed R again, but only
with QSL sending on", intermittently. New Repo.SetExtra does a targeted
`UPDATE qso SET extras = ?` that touches only the extras column, so an app-field
stamp can never clobber another column. Used by SendEQSL, markRecordingSent and
the recording-path stamp.

Logging speed: the log path no longer runs a callsign lookup at all — the e-mail
already arrives on the QSO from the entry lookup, so the second one was
redundant and stalled logging on a slow/not-found QRZ. And the entry lookup
(LookupCallsign) is now bounded to ~2 s: providers get 2 s, then it falls
through to cty.dat instead of spinning 10 s+ on a call that isn't in QRZ.
2026-07-19 17:42:14 +02:00
rouggy 9d4ccb9254 feat: QSO rate meter (10/60 min) in the header
Opt-in via Settings→General (portable pref opslog.showQsoRate). Shows the
contest-style QSO rate in QSOs/hour, projected from the trailing 10-minute
(count ×6) and 60-minute windows, between the widget icons and propagation.

Backend: qso.RecentRate counts QSOs whose start time falls in each trailing
window, scanning only the last 400 rows (cheap on a large log); App.GetQSORate
exposes the 10/60-min counts. Frontend refreshes on qso:logged and a 30s tick.

The meter shares the propagation grid cell — the header is a fixed 6-column
grid, so adding it as its own child pushed profile/band-map/compact onto a
second row. i18n EN + FR.
2026-07-18 21:51:51 +02:00
rouggy 80c5fdc095 feat: Optimization of spots not to miss any 2026-07-18 12:17:22 +02:00
rouggy eb2ff8ed59 feat: New badges in cluster view for new Counties and new POTA 2026-07-17 15:28:36 +02:00
rouggy 1a155e3627 fix: bugs 2026-07-17 11:55:40 +02:00
rouggy cd13921322 fix: QSL Manager properly calculating new slot (Digi modes are grouped together) 2026-07-16 23:26:04 +02:00
rouggy e6744c1d0a fix: Renamed Operator Name into My Name to match the ADIF field 2026-07-16 09:31:46 +02:00
rouggy a00817b93e fix: while connected to MySQL if internet was lost no qso would be logged anymore 2026-07-12 18:01:03 +02:00
rouggy f3bf0b2f5c fix: different bugs on eQSL 2026-07-09 18:36:24 +02:00
rouggy 206a6bff09 feat: Implemented the download of eQSL 2026-07-09 13:16:04 +02:00
rouggy 5f9ee9efa2 fix: Added missing field for bulk edit 2026-07-08 09:26:30 +02:00
rouggy 165f33caa5 fix: recording not being sent if mail enable was not checked 2026-06-28 19:08:32 +02:00
rouggy 79dc20a859 fix: Showing beam heading on map even if no call is entered 2026-06-22 21:46:41 +02:00
rouggy 183db7ac2b fix: Upload to HRDLog 2026-06-18 22:58:00 +02:00
rouggy 679e8f8d39 fix: added additional selection in recent qso filters 2026-06-18 19:08:38 +02:00
rouggy cdd71b17c8 feat: implemented HRDLog upload 2026-06-18 14:27:33 +02:00
rouggy e1f1ab4922 fix: bug sending LoTW on close 2026-06-18 12:16:39 +02:00
rouggy b6d991b799 fix: Bug where renaming the main folder did not update db path
settings where the ones of the previous folder.
2026-06-18 11:20:20 +02:00
rouggy 22e3bb4a18 up 2026-06-15 23:45:14 +02:00
rouggy 67203cd4a8 up 2026-06-14 00:55:27 +02:00
rouggy 408b29896c qsl designer 2026-06-11 21:54:35 +02:00
rouggy 8040a37315 up 2026-06-07 02:51:00 +02:00
rouggy 17f7a00bd7 up 2026-06-06 14:16:30 +02:00
rouggy 88623f55df awards 2026-06-05 17:22:38 +02:00
rouggy 2b4326b553 feat: Winkeyer 2026-06-02 01:17:26 +02:00
rouggy 806b39970b feat: status bar added 2026-05-30 01:35:50 +02:00
rouggyandClaude Opus 4.8 8f1ad126ac External services (QRZ/Clublog/LoTW) + QSL Manager
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-05-29 00:52:10 +02:00
rouggy 33a7b6c4ac feat: upload qrz.com clublog and lotw manually 2026-05-29 00:16:59 +02:00
rouggy 5c004f5e2f feat: upload to external services clublog qrz 2026-05-28 22:52:50 +02:00
rouggy e8cac569e3 rigs completed 2026-05-28 18:35:22 +02:00
rouggy d3c9982c66 up 2026-05-28 11:09:07 +02:00
rouggy a8b7622667 update 2026-05-28 08:48:41 +02:00
rouggy 7e518ddba3 update 2026-05-26 00:56:08 +02:00
rouggyandClaude Opus 4.7 7ace2cc602 Initial codebase: Go + Wails amateur radio logbook
Backend (Go 1.25 / Wails v2):
- QSO storage on SQLite (modernc) with embedded migrations (0001..0005)
- Streaming ADIF import (batch insert) + WorkedBefore per callsign and DXCC
- Callsign lookup with QRZ.com + HamQTH providers (primary/failsafe routing)
  and SQLite-backed TTL cache
- DXCC resolver from cty.dat (auto-download, longest-prefix-match)
- Multi-profile operator identities (home/portable/SOTA/contest) — every
  QSO stamps MY_* from the active profile
- CAT control via OmniRig COM on a single OS-locked goroutine, with
  bidirectional sync (freq/mode/band/split/VFOs) and Rig1/Rig2 hot-swap
- Settings store (key/value), CAT debug log at %APPDATA%/HamLog/cat.log

Frontend (React 18 + TypeScript + Tailwind v4 + shadcn-style):
- Single-row entry strip with CAT-aware band/mode/freq, RST, Start/End
  UTC, per-field locks (band/mode/freq/start/end) for backdated QSOs
- Topbar: live freq (MHz.kHz.Hz dotted), live UTC, band/mode/SPLIT badges,
  CAT pill with rig selector and clickable Azimuth pill (rotor TODO)
- Settings tree: Profiles (Log4OM-style manager), Station Information
  (edits the active profile), unified Callsign Lookup with Test buttons,
  Bands/Modes lists, CAT
- Worked-before matrix (band × mode × class) with new-DXCC highlighting
- ADIF import from menu + Maintenance > Refresh cty.dat

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
2026-05-26 00:16:45 +02:00