Brandon McGinty (deepseek)
2cdbce8edb
Show enable/disable logs and pass debug logging to barnard
2026-08-14 12:32:41 -04:00
Brandon McGinty (deepseek)
d2dff7f521
Add barnard-ui session logging and wormhole log sharing
2026-08-14 12:29:42 -04:00
Brandon McGinty (chatgpt)
c0ef036934
Add configurable incoming audio jitter buffer
2026-08-13 17:54:30 -04:00
Brandon McGinty (chatgpt)
d338925da6
Add outgoing audio packet interval option
2026-08-13 16:00:30 -04:00
Brandon McGinty (chatgpt)
893908f9a1
Reset audio jitter state at talk burst end
2026-08-13 13:37:47 -04:00
Brandon McGinty (chatgpt)
05dc6e4e0e
Set TLS server name from Mumble address
2026-08-13 12:53:35 -04:00
Brandon McGinty (chatgpt)
883f7250f5
Avoid debug logging induced UDP loss
2026-08-12 17:38:04 -04:00
Brandon McGinty (chatgpt)
4510c25350
Recover UDP crypto after packet loss
2026-08-12 16:30:38 -04:00
Brandon McGinty (deepseek)
90f8a1ca5f
Fix recording truncation and rate mismatch causing static
...
The recording pipeline had two bugs that combined to produce
buzzing/static in recorded audio:
1. NormalizeStereoFrame truncated incoming audio frames to
frameSize*AudioChannels samples. When the Opus decoder produced
20ms frames (1920 stereo samples) but the recorder used a 10ms
frameSize (960 samples), half the audio from every packet was
silently dropped.
2. The recorder's run() loop dequeued one fixed-length frame per
source per tick. After truncation, the remaining 10ms of each
20ms packet was gone, so every other tick produced silence.
This 50 Hz on/off pattern sounded like static.
Fixes:
- NormalizeStereoFrame no longer truncates; it only converts mono
to stereo and preserves all audio data
- RecordAudioFrame now accepts an explicit stereo flag from callers
instead of guessing from sample count (which failed for even-length
mono data like 480-sample mic frames)
- run() accumulates variable-length frames per source and consumes
them in fixed-size chunks, preserving any leftover for the next tick
2026-08-10 18:34:52 -04:00
Brandon McGinty (deepseek)
cd003d7ac4
Fix jitter buffer: late-packet blockage and frame-step tracking
...
- popNext() now computes the actual frame step from PCM sample count
instead of always advancing by 1. Mumble 1.5 frame numbers are 10ms
timestamps, so 20ms stereo frames advance by 2, eliminating the
'seq gap' skip that fired on every single packet.
- Drain loop now discards late/duplicate packets (sequence < expected)
instead of letting them permanently block the buffer. Previously a
single late packet at jitterBuf[0] would cause popNext to always
return nil without the gap check catching it (only handled >), so
all subsequent drains would break immediately.
- Reduced reclaim log verbosity: log every 50th or on state change,
not every call with processed==0.
2026-08-10 18:11:26 -04:00
Brandon McGinty (deepseek)
3613a42fce
Add debug logging for OpenAL playback and jitter buffer pipeline
...
- Log OpenAL vendor/version/renderer at startup
- Log buffer creation count and user volume on new audio stream
- Enhanced reclaim(): log source state, processed/queued/empty counts,
and check for OpenAL errors; log every 50th cycle or on unusual state
- Log jitter buffer drain events (first 3 + periodic) with buffer counts
- Log sequence gap skips in jitter buffer
- WARN when processAudioPacket has no empty buffers (audio dropped)
- Check OpenAL errors after Buffer.SetData, QueueBuffer, and Play()
- Log source state transitions when calling Play() on non-playing source
2026-08-10 18:03:43 -04:00
Brandon McGinty
fd6b7514bf
config ignore
2026-08-10 16:12:14 -04:00
Brandon McGinty (chatgpt)
99f1f4b9ab
Keep OpenAL jitter playback continuous
2026-08-10 16:07:47 -04:00
Brandon McGinty (chatgpt)
5b0879ddaa
Fix UDP audio frame timestamp handling
2026-08-10 15:18:04 -04:00
Brandon McGinty (chatgpt)
9c487c2586
Add Windows platform integration scaffolding
2026-08-10 12:36:47 -04:00
Brandon McGinty (chatgpt)
fab4fd50d2
Test exclusive tone-test output creation
2026-08-10 11:25:52 -04:00
Brandon McGinty (chatgpt)
e9ba7f580a
Synchronize connection-owned stream access
2026-08-10 11:25:08 -04:00
Brandon McGinty (chatgpt)
f0aa5ff35a
Update Go dependencies
2026-08-10 11:25:08 -04:00
Brandon McGinty (chatgpt)
ef8a92149d
Report configuration persistence failures
2026-08-10 11:25:08 -04:00
Brandon McGinty (chatgpt)
655a109ce8
Create tone-test outputs exclusively
2026-08-10 11:25:08 -04:00
Brandon McGinty (chatgpt)
65489fd367
Prevent recording output path replacement
2026-08-10 11:25:08 -04:00
Brandon McGinty (chatgpt)
57961ffc9f
Synchronize connection-owned audio resources
2026-08-10 10:28:01 -04:00
Brandon McGinty (chatgpt)
b407a20132
Snapshot mutable tree display state
2026-08-10 10:27:12 -04:00
Brandon McGinty (chatgpt)
461f172035
Validate admin targets before actions
2026-08-10 10:26:03 -04:00
Brandon McGinty (chatgpt)
cf9e1c6d0a
Terminate file playback process groups
2026-08-10 10:25:25 -04:00
Brandon McGinty (chatgpt)
1d6ab79ed0
Cancel reconnect retries during shutdown
2026-08-10 10:24:38 -04:00
Brandon McGinty (chatgpt)
e68546eec5
Compare UDP authentication tags in constant time
2026-08-10 09:42:49 -04:00
Brandon McGinty (chatgpt)
9fdcf6171d
Reserve recording paths atomically
2026-08-10 08:55:25 -04:00
Brandon McGinty (chatgpt)
43d7addc15
Protect regular files from FIFO setup
2026-08-10 08:50:56 -04:00
Brandon McGinty (chatgpt)
dcffa1efa1
Use secure temporary config files
2026-08-10 08:44:58 -04:00
Brandon McGinty (chatgpt)
3ba5e03208
Restore output navigation hotkeys
2026-08-10 08:26:37 -04:00
Brandon McGinty (chatgpt)
95c7394b01
Snapshot context actions under client lock
2026-08-10 07:31:18 -04:00
Brandon McGinty (chatgpt)
7785f0a5b5
Synchronize audio encoder selection
2026-08-10 05:03:45 -04:00
Brandon McGinty (chatgpt)
d399650198
Protect crypto initialization checks
2026-08-10 04:28:38 -04:00
Brandon McGinty (chatgpt)
fa84373a81
Synchronize legacy UDP crypto setup
2026-08-10 04:06:12 -04:00
Brandon McGinty (chatgpt)
42861dfcd5
Close audio streams when listeners detach
2026-08-10 04:01:42 -04:00
Brandon McGinty (chatgpt)
2eed3c809f
Synchronize audio stream teardown
2026-08-10 03:35:35 -04:00
Brandon McGinty (chatgpt)
e8e2fc46a9
Reject overflowing manual ban durations
2026-08-10 01:11:58 -04:00
Brandon McGinty (chatgpt)
55772fa459
Synchronize connection and transmission state
2026-08-10 00:45:22 -04:00
Brandon McGinty (chatgpt)
3efbd019ce
Synchronize selected user access
2026-08-10 00:42:09 -04:00
Brandon McGinty (chatgpt)
20c6997ab0
Synchronize muted channel state
2026-08-10 00:31:29 -04:00
Brandon McGinty (chatgpt)
118799d112
Serialize configuration updates and writes
2026-08-10 00:18:42 -04:00
Brandon McGinty (chatgpt)
874cbb7818
Classify recursive channel messages as public
2026-08-10 00:00:40 -04:00
Brandon McGinty (chatgpt)
d7dcaa8b21
Support IPv6 server addresses without ports
2026-08-09 23:55:51 -04:00
Brandon McGinty (chatgpt)
770635955a
Sanitize terminal widget text
2026-08-09 23:54:49 -04:00
Brandon McGinty (chatgpt)
8348a7083d
Fix auto transmit and server messages
2026-08-09 23:28:50 -04:00
Brandon McGinty (chatgpt)
219acad951
Reject file playback in tone-test mode
2026-08-09 23:14:38 -04:00
Brandon McGinty (chatgpt)
1081d894c9
Avoid stream access from tone-test tree controls
2026-08-09 23:14:38 -04:00
Brandon McGinty (chatgpt)
df185cc9f5
Queue status updates from network callbacks
2026-08-09 23:13:20 -04:00
Brandon McGinty (chatgpt)
bad4e8172a
Detach tone-test savers on reconnect
2026-08-09 23:12:56 -04:00
Brandon McGinty (chatgpt)
b23afebdb3
Reject non-regular explicit config files
2026-08-09 23:11:31 -04:00
Brandon McGinty (chatgpt)
6da5b249f9
Reject missing explicit configuration files
2026-08-09 22:35:38 -04:00
Brandon McGinty (chatgpt)
1ea71b1862
Require talk key for tone test transmission
2026-08-09 22:31:37 -04:00
Brandon McGinty (chatgpt)
612db896ce
Show active transmission in tone test mode
2026-08-09 22:28:52 -04:00
Brandon McGinty (chatgpt)
dc9dedb523
Render initial chat prompt and submitted messages
2026-08-09 22:17:24 -04:00
Brandon McGinty (chatgpt)
21e0627509
Add context to remaining OpenAL device errors
2026-08-09 22:09:02 -04:00
Brandon McGinty (chatgpt)
0712e3150c
Report OpenAL device names in startup errors
2026-08-09 21:59:32 -04:00
Brandon McGinty (chatgpt)
3448ed5802
Avoid terminal shutdown hang after fatal startup errors
2026-08-09 21:47:24 -04:00
Brandon McGinty (chatgpt)
6bf79acc6a
Exit on fatal microphone device errors
2026-08-09 21:33:16 -04:00
Brandon McGinty (chatgpt)
d2e94c76b5
Disable stderr logging unless logfile is selected
2026-08-09 21:21:38 -04:00
Brandon McGinty (chatgpt)
29dde07337
Test long local Mumble audio intervals
2026-08-09 20:54:38 -04:00
Brandon McGinty (chatgpt)
ee8a3a6d63
Test 20ms local Mumble audio interval
2026-08-09 20:53:04 -04:00
Brandon McGinty (chatgpt)
5cd23f5df8
Test local Mumble TCP audio fallback
2026-08-09 20:51:44 -04:00
Brandon McGinty (chatgpt)
c9c6d6bab1
Verify native UDP audio against local Mumble
2026-08-09 20:35:18 -04:00
Brandon McGinty (chatgpt)
b324106d3a
Detect sequence gaps in local audio integration
2026-08-09 20:31:29 -04:00
Brandon McGinty (chatgpt)
0dbe178e7f
Check local Mumble audio fidelity
2026-08-09 20:29:02 -04:00
Brandon McGinty (chatgpt)
074bd67ad3
Verify local Mumble audio frequency round trip
2026-08-09 20:24:55 -04:00
Brandon McGinty (chatgpt)
794610929b
Use protobuf envelopes for Mumble 1.5 TCP audio
2026-08-09 20:16:47 -04:00
Brandon McGinty (chatgpt)
e8a8390cb8
Keep UDP interoperability coverage open
2026-08-09 20:11:13 -04:00
Brandon McGinty (chatgpt)
9678816a4c
Add native UDP protobuf reference vectors
2026-08-09 19:58:39 -04:00
Brandon McGinty (chatgpt)
d50c6726ad
Route network UI callbacks through UI queue
2026-08-09 19:47:14 -04:00
Brandon McGinty (chatgpt)
12761f29ca
Queue UI output and status updates
2026-08-09 19:37:18 -04:00
Brandon McGinty (chatgpt)
b10e08477c
Join terminal event polling on shutdown
2026-08-09 19:25:28 -04:00
Brandon McGinty (chatgpt)
2c636016b0
Report OpenAL lifecycle errors
2026-08-09 19:24:48 -04:00
Brandon McGinty (chatgpt)
c8ddb7a567
Test native UDP IV wrap handling
2026-08-09 19:15:48 -04:00
Brandon McGinty (chatgpt)
d4e136aa8f
Test native UDP replay rejection
2026-08-09 18:46:40 -04:00
Brandon McGinty (chatgpt)
7180b7604d
Synchronize UDP decoding with client state
2026-08-09 18:45:57 -04:00
Brandon McGinty (chatgpt)
0766178277
Snapshot connected users under client lock
2026-08-09 18:31:03 -04:00
Brandon McGinty (chatgpt)
98a29a6470
Read admin lookup maps under client lock
2026-08-09 18:30:46 -04:00
Brandon McGinty (chatgpt)
7ebe764d82
Wait for file playback workers before restart
2026-08-09 18:23:19 -04:00
Brandon McGinty (chatgpt)
f629ce0359
Snapshot channel tree maps under client lock
2026-08-09 18:15:44 -04:00
Brandon McGinty (chatgpt)
4fe32ede70
Use typed OpenAL device and context handles
2026-08-09 18:11:03 -04:00
Brandon McGinty (chatgpt)
6b7e3cdc20
Guard empty OpenAL capture buffers
2026-08-09 18:10:25 -04:00
Brandon McGinty (chatgpt)
208c986d56
Guard empty OpenAL listener slices
2026-08-09 18:09:56 -04:00
Brandon McGinty (chatgpt)
c96617c71d
Guard empty OpenAL buffer data slices
2026-08-09 18:01:41 -04:00
Brandon McGinty (chatgpt)
0e537a144d
Guard empty OpenAL source slices
2026-08-09 18:00:58 -04:00
Brandon McGinty (chatgpt)
a03800fbbc
Use local listener orientation buffers
2026-08-09 15:13:29 -04:00
Brandon McGinty (chatgpt)
cbc6369071
Preserve UTF-8 when truncating input status
2026-08-09 15:12:53 -04:00
Brandon McGinty (chatgpt)
5480dee0fd
Sanitize names rendered in the channel tree
2026-08-09 15:12:29 -04:00
Brandon McGinty (chatgpt)
cc62f8e4a7
Join capture worker before stopping OpenAL
2026-08-09 15:09:39 -04:00
Brandon McGinty (chatgpt)
28a59832c4
Reject renderer work after audio shutdown
2026-08-09 15:08:36 -04:00
Brandon McGinty (chatgpt)
1679a37783
Clamp negative protocol ban durations
2026-08-09 14:55:39 -04:00
Brandon McGinty (chatgpt)
9f90bd5c66
Synchronize listener detach and delivery
2026-08-09 14:55:03 -04:00
Brandon McGinty (chatgpt)
e309d22137
Let recorder worker close encoder stdin
2026-08-09 14:50:29 -04:00
Brandon McGinty (chatgpt)
d07d7342da
Release audio resources before reconnecting
2026-08-09 14:50:01 -04:00
Brandon McGinty (chatgpt)
25467405b8
Retain TCP audio until UDP is authenticated
2026-08-09 14:45:41 -04:00
Brandon McGinty (chatgpt)
1fa96d4f15
Reject malformed ACL and user-list records
2026-08-09 14:44:42 -04:00
Brandon McGinty (chatgpt)
3e9c9e7a81
Test OpenAL buffer deletion
2026-08-09 14:41:52 -04:00
Brandon McGinty (chatgpt)
977b690eed
Make ffmpeg pause nonblocking
2026-08-09 14:41:35 -04:00
Brandon McGinty (chatgpt)
e564bb8583
Open tone-test output before transmission
2026-08-09 14:41:01 -04:00