Skip to content

Commit 2e97fb8

Browse files
dharmabclaude
andauthored
Backport v2-dev improvements to v1 (#647)
## Summary Backports non-breaking improvements from the v2-dev branch to main. The v2 model changes (Parakeet STT, Pocket TTS) are excluded since they have quality issues; only bug fixes, code quality improvements, and feature enhancements are included. ### Changes - **Tooling**: Update Go directive to 1.26.0, golangci-lint to v2.11.3 - **Lint fixes**: Preallocate slices, remove deprecated `HasAnyTag()` - **Wideband constant**: Extract 16kHz sample rate to `pkg/pcm/rate.Wideband` - **numwords fork**: Switch to `dharmab/numwords` with configurable fraction/article/second parsing - **Callsign parsing**: Add digit homophones (won→1, to→2, free→3, for→4, ate→8, niner→9), ordinal stripping (1st→1), STT stutter deduplication (eagle eagle→eagle), ~40 new bogey dope garble entries - **Trackfile fix**: Fix heading double-conversion bug in `Course()` + comprehensive test suite - **Radar improvement**: Interpolate group track from all contacts using circular mean instead of first contact only; report unknown track when contacts diverge >90 degrees - **SRS protocol**: Nil-safe `Client` field in `Message` type, copy-by-value fix in `newMessage()` ### Not included from v2-dev - Parakeet/Pocket model changes - Model download infrastructure - CLI/config interface changes - Whisper/Piper/macOS TTS removal - minRxDuration reduction (still needed at 1s for Whisper) ## Test plan - [x] `make lint` - 0 issues - [x] `make vet` - passes - [x] `make test` - 942 tests pass - [x] `go mod tidy && git diff --exit-code` - clean 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 35108e4 commit 2e97fb8

34 files changed

Lines changed: 906 additions & 172 deletions

go.mod

Lines changed: 39 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module github.com/dharmab/skyeye
22

3-
go 1.26
3+
go 1.26.0
44

55
require (
66
github.com/DCS-gRPC/go-bindings v0.7.1
@@ -9,6 +9,7 @@ require (
99
github.com/amitybell/piper-voice-jenny v0.0.0-20231118093224-dcf0d49e46b7
1010
github.com/bwmarrin/discordgo v0.28.1
1111
github.com/dharmab/goacmi v1.0.3
12+
github.com/dharmab/numwords v1.0.1
1213
github.com/gammazero/deque v0.2.1
1314
github.com/ggerganov/whisper.cpp/bindings/go v0.0.0-20241121150429-8c6a9b8bb6a0
1415
github.com/go-audio/aiff v1.1.0
@@ -23,15 +24,14 @@ require (
2324
github.com/pasztorpisti/go-crc v1.0.0
2425
github.com/paulmach/orb v0.11.1
2526
github.com/proway2/go-igrf v0.5.1
26-
github.com/rodaine/numwords v0.0.0-20200910203654-405f4a455f79
2727
github.com/rs/zerolog v1.33.0
28-
github.com/spf13/cobra v1.10.1
28+
github.com/spf13/cobra v1.10.2
2929
github.com/spf13/pflag v1.0.10
3030
github.com/spf13/viper v1.19.0
3131
github.com/stretchr/testify v1.11.1
3232
github.com/zaf/resample v1.5.0
33-
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0
34-
golang.org/x/sys v0.38.0
33+
golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b
34+
golang.org/x/sys v0.41.0
3535
google.golang.org/grpc v1.75.0
3636
gopkg.in/hraban/opus.v2 v2.0.0-20230925203106-0188a62cb302
3737
)
@@ -40,6 +40,7 @@ require (
4040
4d63.com/gocheckcompilerdirectives v1.3.0 // indirect
4141
4d63.com/gochecknoglobals v0.2.2 // indirect
4242
codeberg.org/chavacava/garif v0.2.0 // indirect
43+
codeberg.org/polyfloyd/go-errorlint v1.9.0 // indirect
4344
dev.gaijin.team/go/exhaustruct/v4 v4.0.0 // indirect
4445
dev.gaijin.team/go/golib v0.6.0 // indirect
4546
github.com/4meepo/tagalign v1.4.3 // indirect
@@ -49,16 +50,16 @@ require (
4950
github.com/Antonboom/errname v1.1.1 // indirect
5051
github.com/Antonboom/nilnil v1.1.1 // indirect
5152
github.com/Antonboom/testifylint v1.6.4 // indirect
52-
github.com/BurntSushi/toml v1.5.0 // indirect
53+
github.com/BurntSushi/toml v1.6.0 // indirect
5354
github.com/Djarvur/go-err113 v0.1.1 // indirect
5455
github.com/Masterminds/semver/v3 v3.4.0 // indirect
55-
github.com/MirrexOne/unqueryvet v1.3.0 // indirect
56+
github.com/MirrexOne/unqueryvet v1.5.4 // indirect
5657
github.com/OpenPeeDeeP/depguard/v2 v2.2.1 // indirect
5758
github.com/adrg/xdg v0.4.0 // indirect
58-
github.com/alecthomas/chroma/v2 v2.20.0 // indirect
59+
github.com/alecthomas/chroma/v2 v2.23.1 // indirect
5960
github.com/alecthomas/go-check-sumtype v0.3.1 // indirect
6061
github.com/alexkohler/nakedret/v2 v2.0.6 // indirect
61-
github.com/alexkohler/prealloc v1.0.0 // indirect
62+
github.com/alexkohler/prealloc v1.1.0 // indirect
6263
github.com/alfatraining/structtag v1.0.0 // indirect
6364
github.com/alingse/asasalint v0.0.11 // indirect
6465
github.com/alingse/nilnesserr v0.2.0 // indirect
@@ -72,7 +73,7 @@ require (
7273
github.com/bkielbasa/cyclop v1.2.3 // indirect
7374
github.com/blizzy78/varnamelen v0.8.0 // indirect
7475
github.com/bombsimon/wsl/v4 v4.7.0 // indirect
75-
github.com/bombsimon/wsl/v5 v5.3.0 // indirect
76+
github.com/bombsimon/wsl/v5 v5.6.0 // indirect
7677
github.com/breml/bidichk v0.3.3 // indirect
7778
github.com/breml/errchkjson v0.4.1 // indirect
7879
github.com/butuzov/ireturn v0.4.0 // indirect
@@ -83,7 +84,7 @@ require (
8384
github.com/charithe/durationcheck v0.0.11 // indirect
8485
github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc // indirect
8586
github.com/charmbracelet/lipgloss v1.1.0 // indirect
86-
github.com/charmbracelet/x/ansi v0.8.0 // indirect
87+
github.com/charmbracelet/x/ansi v0.10.1 // indirect
8788
github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd // indirect
8889
github.com/charmbracelet/x/term v0.2.1 // indirect
8990
github.com/ckaznocha/intrange v0.3.1 // indirect
@@ -100,28 +101,28 @@ require (
100101
github.com/firefart/nonamedreturns v1.0.6 // indirect
101102
github.com/fsnotify/fsnotify v1.7.0 // indirect
102103
github.com/fzipp/gocyclo v0.6.0 // indirect
103-
github.com/ghostiam/protogetter v0.3.17 // indirect
104+
github.com/ghostiam/protogetter v0.3.20 // indirect
104105
github.com/go-audio/audio v1.0.0 // indirect
105-
github.com/go-critic/go-critic v0.14.2 // indirect
106+
github.com/go-critic/go-critic v0.14.3 // indirect
106107
github.com/go-toolsmith/astcast v1.1.0 // indirect
107108
github.com/go-toolsmith/astcopy v1.1.0 // indirect
108109
github.com/go-toolsmith/astequal v1.2.0 // indirect
109110
github.com/go-toolsmith/astfmt v1.1.0 // indirect
110111
github.com/go-toolsmith/astp v1.1.0 // indirect
111112
github.com/go-toolsmith/strparse v1.1.0 // indirect
112113
github.com/go-toolsmith/typep v1.1.0 // indirect
113-
github.com/go-viper/mapstructure/v2 v2.4.0 // indirect
114+
github.com/go-viper/mapstructure/v2 v2.5.0 // indirect
114115
github.com/go-xmlfmt/xmlfmt v1.1.3 // indirect
115116
github.com/gobwas/glob v0.2.3 // indirect
116-
github.com/godoc-lint/godoc-lint v0.10.2 // indirect
117+
github.com/godoc-lint/godoc-lint v0.11.2 // indirect
117118
github.com/golang/protobuf v1.5.4 // indirect
118119
github.com/golangci/asciicheck v0.5.0 // indirect
119120
github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 // indirect
120121
github.com/golangci/go-printf-func-name v0.1.1 // indirect
121122
github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d // indirect
122-
github.com/golangci/golangci-lint/v2 v2.7.1 // indirect
123-
github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95 // indirect
124-
github.com/golangci/misspell v0.7.0 // indirect
123+
github.com/golangci/golangci-lint/v2 v2.11.3 // indirect
124+
github.com/golangci/golines v0.15.0 // indirect
125+
github.com/golangci/misspell v0.8.0 // indirect
125126
github.com/golangci/plugin-module-register v0.1.2 // indirect
126127
github.com/golangci/revgrep v0.8.0 // indirect
127128
github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e // indirect
@@ -146,15 +147,16 @@ require (
146147
github.com/jjti/go-spancheck v0.6.5 // indirect
147148
github.com/julz/importas v0.2.0 // indirect
148149
github.com/karamaru-alpha/copyloopvar v1.2.2 // indirect
149-
github.com/kisielk/errcheck v1.9.0 // indirect
150+
github.com/kisielk/errcheck v1.10.0 // indirect
150151
github.com/kkHAIKE/contextcheck v1.1.6 // indirect
151152
github.com/klauspost/compress v1.17.3 // indirect
152153
github.com/kulti/thelper v0.7.1 // indirect
153154
github.com/kunwardeep/paralleltest v1.0.15 // indirect
154155
github.com/lasiar/canonicalheader v1.1.2 // indirect
155156
github.com/ldez/exptostd v0.4.5 // indirect
156-
github.com/ldez/gomoddirectives v0.7.1 // indirect
157+
github.com/ldez/gomoddirectives v0.8.0 // indirect
157158
github.com/ldez/grignotin v0.10.1 // indirect
159+
github.com/ldez/structtags v0.6.1 // indirect
158160
github.com/ldez/tagliatelle v0.7.2 // indirect
159161
github.com/ldez/usetesting v0.5.0 // indirect
160162
github.com/leonklingele/grouper v1.1.2 // indirect
@@ -170,7 +172,7 @@ require (
170172
github.com/mattn/go-isatty v0.0.20 // indirect
171173
github.com/mattn/go-runewidth v0.0.16 // indirect
172174
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
173-
github.com/mgechev/revive v1.13.0 // indirect
175+
github.com/mgechev/revive v1.15.0 // indirect
174176
github.com/mitchellh/go-homedir v1.1.0 // indirect
175177
github.com/mitchellh/mapstructure v1.5.0 // indirect
176178
github.com/moricho/tparallel v0.3.2 // indirect
@@ -179,11 +181,10 @@ require (
179181
github.com/nakabonne/nestif v0.3.1 // indirect
180182
github.com/nishanths/exhaustive v0.12.0 // indirect
181183
github.com/nishanths/predeclared v0.2.2 // indirect
182-
github.com/nunnatsa/ginkgolinter v0.21.2 // indirect
184+
github.com/nunnatsa/ginkgolinter v0.23.0 // indirect
183185
github.com/pelletier/go-toml/v2 v2.2.4 // indirect
184186
github.com/pkg/errors v0.9.1 // indirect
185187
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
186-
github.com/polyfloyd/go-errorlint v1.8.0 // indirect
187188
github.com/prometheus/client_golang v1.12.1 // indirect
188189
github.com/prometheus/client_model v0.2.0 // indirect
189190
github.com/prometheus/common v0.32.1 // indirect
@@ -204,10 +205,10 @@ require (
204205
github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 // indirect
205206
github.com/sashamelentyev/interfacebloat v1.1.0 // indirect
206207
github.com/sashamelentyev/usestdlibvars v1.29.0 // indirect
207-
github.com/securego/gosec/v2 v2.22.10 // indirect
208-
github.com/sirupsen/logrus v1.9.3 // indirect
208+
github.com/securego/gosec/v2 v2.24.8-0.20260309165252-619ce2117e08 // indirect
209+
github.com/sirupsen/logrus v1.9.4 // indirect
209210
github.com/sivchari/containedctx v1.0.3 // indirect
210-
github.com/sonatard/noctx v0.4.0 // indirect
211+
github.com/sonatard/noctx v0.5.0 // indirect
211212
github.com/sourcegraph/conc v0.3.0 // indirect
212213
github.com/sourcegraph/go-diff v0.7.0 // indirect
213214
github.com/spf13/afero v1.15.0 // indirect
@@ -227,7 +228,7 @@ require (
227228
github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect
228229
github.com/ultraware/funlen v0.2.0 // indirect
229230
github.com/ultraware/whitespace v0.2.0 // indirect
230-
github.com/uudashr/gocognit v1.2.0 // indirect
231+
github.com/uudashr/gocognit v1.2.1 // indirect
231232
github.com/uudashr/iface v1.4.1 // indirect
232233
github.com/xen0n/gosmopolitan v1.3.0 // indirect
233234
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
@@ -237,25 +238,25 @@ require (
237238
gitlab.com/bosi/decorder v0.4.2 // indirect
238239
go-simpler.org/musttag v0.14.0 // indirect
239240
go-simpler.org/sloglint v0.11.1 // indirect
240-
go.augendre.info/arangolint v0.3.1 // indirect
241+
go.augendre.info/arangolint v0.4.0 // indirect
241242
go.augendre.info/fatcontext v0.9.0 // indirect
242-
go.uber.org/automaxprocs v1.6.0 // indirect
243243
go.uber.org/multierr v1.10.0 // indirect
244244
go.uber.org/zap v1.27.0 // indirect
245-
golang.org/x/crypto v0.45.0 // indirect
246-
golang.org/x/exp/typeparams v0.0.0-20251023183803-a4bb9ffd2546 // indirect
247-
golang.org/x/mod v0.30.0 // indirect
248-
golang.org/x/net v0.47.0 // indirect
249-
golang.org/x/sync v0.18.0 // indirect
250-
golang.org/x/term v0.37.0 // indirect
251-
golang.org/x/text v0.31.0 // indirect
252-
golang.org/x/tools v0.39.0 // indirect
245+
go.yaml.in/yaml/v3 v3.0.4 // indirect
246+
golang.org/x/crypto v0.48.0 // indirect
247+
golang.org/x/exp/typeparams v0.0.0-20260209203927-2842357ff358 // indirect
248+
golang.org/x/mod v0.33.0 // indirect
249+
golang.org/x/net v0.51.0 // indirect
250+
golang.org/x/sync v0.20.0 // indirect
251+
golang.org/x/term v0.40.0 // indirect
252+
golang.org/x/text v0.34.0 // indirect
253+
golang.org/x/tools v0.42.0 // indirect
253254
google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect
254255
google.golang.org/protobuf v1.36.8 // indirect
255256
gopkg.in/ini.v1 v1.67.0 // indirect
256257
gopkg.in/yaml.v3 v3.0.1 // indirect
257258
gotest.tools/gotestsum v1.12.0 // indirect
258-
honnef.co/go/tools v0.6.1 // indirect
259+
honnef.co/go/tools v0.7.0 // indirect
259260
mvdan.cc/gofumpt v0.9.2 // indirect
260261
mvdan.cc/unparam v0.0.0-20251027182757-5beb8c8f8f15 // indirect
261262
)

0 commit comments

Comments
 (0)