- Add protobuf (required for google.protobuf in mumble_pb2.py)
- Add pycryptodome (required for Crypto in crypto.py)
- These were lost when pymumble was integrated into the project
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Replace audioop module (removed in Python 3.13) with NumPy
- Implement _apply_volume() method using NumPy for volume adjustment
- Update RMS calculation in ducking_sound_received() to use NumPy
- Add numpy to requirements.txt
- Add silent flag to CachedItemWrapper for join sounds
- Join sounds now play without channel announcements
- Regular playlist items still respect announce_current_music config
- Update CLAUDE.md to document changes
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added bounded queue protection to prevent infinite memory growth during
high-latency audio processing. Limits queue to 250 frames (~5 seconds)
with conservative frame dropping to minimize stuttering while preventing
runaway memory usage that was causing 4GB+ leaks and system freezes.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>