Ian Renton and Claude Sonnet 5
e33eecbc4e
Fix mojibake in DX cluster and RBN spot comments
...
Both providers always decoded telnet bytes as Latin-1, which silently
mangles nodes that send UTF-8 (Latin-1 decode never raises, so mixed
encodings across cluster nodes went unnoticed). Added a shared
decode_telnet_bytes() helper that tries UTF-8 first and falls back to
Latin-1, since a byte stream that happens to be valid multi-byte UTF-8
is essentially never accidental Latin-1 text.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com >
2026-09-20 19:08:05 +01:00
Ian Renton
190c9f6cef
Improve handling of GMA SOTA spots, SOTA references in comments, and grids in comments on VHF
2026-09-20 10:25:08 +01:00
Ian Renton
d33259d619
Fix a bug in PNP spot handling where an exception would be thrown if an activity had a location name but not a reference ID.
2026-09-20 10:10:39 +01:00
Ian Renton
1b41520f7c
Merge branch 'main' into 147-sig-activity-changes
...
# Conflicts:
# core/constants.py
# pyproject.toml
2026-09-20 09:51:29 +01:00
Ian Renton
f45b7d51b0
Give threads less time to shut down gracefully. Attempt shutdown() rather than stop() on the telnet connections to see if that improves things
2026-09-19 15:07:31 +01:00
Ian Renton
682e2c267c
Improve handling of empty JSON repsonses from ParksNPeaks (and potentially others)
2026-09-19 10:49:09 +01:00
Ian Renton
59d5f61d90
Potential fix for an issue where the telnet client was reconnecting right at the same time we try to shut down spothole, causing the stop() method to close one telnet object but then a new one is created and read from anyway.
2026-09-19 07:55:12 +01:00
Ian Renton
c1c9bcd5ae
Merge branch 'main' into 147-sig-activity-changes
2026-09-18 21:35:56 +01:00
Ian Renton
f0df4f38ca
Turns out "if x in list" returns true if list[x] = None, so guard against that by checking list.get(x) instead
2026-09-18 21:33:26 +01:00
Ian Renton
54d779f036
Allow QRP spots from PnP APIs #147
2026-09-18 20:56:46 +01:00
Ian Renton
1a1743d11c
ruff fixes
2026-09-18 18:38:35 +01:00
Ian Renton
40033d122e
Add a has_refs field to activities #147
2026-09-18 18:28:30 +01:00
Ian Renton
e5caf7353d
Refactor activity names to use an enum instead of a string to avoid typos #147
2026-09-18 18:09:41 +01:00
Ian Renton
81cd686a00
Giant refactor to rebrand "SIG" as "Activity" anywhere that doesn't touch API or config file (which is to be addressed in a future breaking change). #147
2026-09-18 14:54:11 +01:00
Ian Renton
29d8654234
Use _stop_event consistently across all threads as the way to signal that it should stop. Add thread joins with timeouts to allow the program to exit cleanly
2026-09-18 09:21:38 +01:00
Ian Renton
a03e1336c8
Code review fixes
2026-09-18 07:56:08 +01:00
Ian Renton
3b575de36a
Fix SSE timeout
2026-09-10 17:58:02 +01:00
Ian Renton
d6e53c14e9
Support RSGB contests
2026-09-05 09:00:32 +01:00
Ian Renton
9d117a6069
Split out event type SIGs, and do other enum conversions. Closes #138
2026-09-02 09:38:05 +01:00
Ian Renton
606cf1be68
Start converting some enum-like strings to proper enums, plus global reformat
2026-09-02 08:37:13 +01:00
Ian Renton
9258d680fc
Overnight bug fixes
2026-09-02 07:40:57 +01:00
Ian Renton
fa2e4b929a
Start converting some enum-like strings to proper enums
2026-09-02 07:26:02 +01:00
Ian Renton
12e9b6a4ca
Remove distinction between DV modes and LSB/USB
2026-08-31 11:17:05 +01:00
Ian Renton
9083470482
Add support for DTMBA
2026-08-31 08:59:49 +01:00
Ian Renton
c3a360e691
Consistency about whether "GMA Islands" is plural or not; widen columns on SIG list so it doesn't wrap
2026-08-29 08:34:04 +01:00
Ian Renton
f346444ec3
Defensive coding improvements
2026-08-22 08:08:27 +01:00
Ian Renton
1fd6611ac2
GMA Islands support
2026-08-22 08:02:57 +01:00
Ian Renton
c5d6a65786
Bug fixes and minor doc clarifications
2026-08-20 07:30:21 +01:00
Ian Renton
7f1a5ae3be
Overnight bug fixes
2026-08-18 17:56:31 +01:00
Ian Renton
38bc03a603
Improve checking callsign validity by regex, and fix passing v1 type credentials into v2 APIs
2026-08-17 16:30:24 +01:00
Ian Renton
03164d747f
More defensive coding
2026-08-17 13:43:40 +01:00
Ian Renton
7623ae667e
Overnight bug fixes
2026-08-17 06:47:20 +01:00
Ian Renton
1db0c2787a
Overnight bug fixes
2026-08-17 06:41:31 +01:00
Ian Renton
7220a0f58d
ruff format && ruff check --fix
2026-08-16 14:11:45 +01:00
Ian Renton
f8032973ca
Error handling improvements
2026-08-16 09:26:05 +01:00
Ian Renton
00c1bc7ba3
Fix potential NPE
2026-08-15 17:04:52 +01:00
Ian Renton
ae1f752516
Fix bugs in GMA and WWBOTA providers
2026-08-15 13:59:52 +01:00
Ian Renton
a6e54f524d
More ruff linter fixes
2026-08-15 08:43:19 +01:00
Ian Renton
dd89ff4af7
Replace root logger calls with module-specific loggers
2026-08-15 08:35:06 +01:00
Ian Renton
af3f82c14d
Use ruff linter to fix issues and provide consistent formatting
2026-08-15 08:25:54 +01:00
Ian Renton
7391c28cd0
flynt pass to provide consistency to string formatters and concatenation
2026-08-15 07:55:32 +01:00
Ian Renton
bff5b79f8f
Logging tidy-up, IDE inspection fixes
2026-08-15 07:42:38 +01:00
Ian Renton
9cd6d9c177
Better logging on telnet disconnect
2026-08-15 07:11:45 +01:00
Ian Renton
605b629d43
Fix ZLOTA location lookup
2026-08-14 14:32:42 +01:00
Ian Renton
9e42e4bd93
Merge branch 'main' into 2.0-pre
...
# Conflicts:
# core/constants.py
# templates/status.html
2026-08-11 05:54:04 +01:00
Ian Renton
c687202a61
Replace dash-separated config & API properties with underscore-separated versions. #127
2026-08-10 20:55:18 +01:00
Ian Renton
5c86346074
Merge branch 'main' into 2.0-pre
...
# Conflicts:
# core/config.py
# core/status_reporter.py
# server/handlers/api/options.py
# static/js/bands.js
# static/js/map.js
# static/js/spots.js
# templates/status.html
2026-08-10 18:34:32 +01:00
Ian Renton
4be4e4550a
Backwards compatibility for critical v1 APIs. Closes #119
2026-08-08 14:15:29 +01:00
Ian Renton
43763bf76f
SANPCPA support. Closes #120
2026-08-08 13:45:02 +01:00
Ian Renton
605b172bb3
Replace "WAB/WAI GRID" as a location source. Closes #116
2026-08-08 13:19:28 +01:00