diff --git a/ROADMAP.md b/ROADMAP.md index 205f57f..a07984d 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -159,3 +159,22 @@ - [ ] Slack adapter via Socket Mode WebSocket - [ ] Mattermost adapter via WebSocket API - [ ] Bluesky adapter via AT Protocol firehose + REST API + +## v2.3.0 -- Mumble Voice + Multi-Bot (done) + +- [x] pymumble transport rewrite (voice + text) +- [x] Music playback: play/stop/skip/prev/queue/np/volume/seek/resume +- [x] Voice ducking (auto-lower music on voice activity) +- [x] Kept track library with metadata (!keep, !kept, !play #N) +- [x] Smooth fade-out on skip/stop/prev, fade-in on resume +- [x] In-stream seek with pipeline swap (no task cancellation) +- [x] Multi-bot Mumble: extra bots via `[[mumble.extra]]` +- [x] Per-bot plugin filtering (only_plugins / except_plugins) +- [x] Voice STT (Whisper) + TTS (Piper) plugin +- [x] Configurable voice profiles (voice, FX, piper params) +- [x] Rubberband pitch-shifting via CLI (Alpine ffmpeg lacks librubberband) +- [x] Bot audio ignored in sound callback (no self-ducking, no STT of bots) +- [x] Self-mute support (mute on connect, unmute for audio, re-mute after) +- [x] Autoplay shuffled kept tracks on reconnect (silence detection) +- [x] Alias plugin (!alias add/del/list) +- [x] Container management tools (tools/build, start, stop, restart, nuke, logs, status) diff --git a/TASKS.md b/TASKS.md index 54ae3ab..26b4f6b 100644 --- a/TASKS.md +++ b/TASKS.md @@ -1,6 +1,23 @@ # derp - Tasks -## Current Sprint -- v2.3.0 Mumble Music Playback (2026-02-21) +## Current Sprint -- v2.3.0 Mumble Voice + Multi-Bot (2026-02-22) + +| Pri | Status | Task | +|-----|--------|------| +| P0 | [x] | `src/derp/mumble.py` -- rewrite to pymumble transport (voice + text) | +| P0 | [x] | `plugins/music.py` -- play/stop/skip/queue/np/volume/seek/resume | +| P0 | [x] | `plugins/voice.py` -- STT (Whisper) + TTS (Piper), voice profiles | +| P0 | [x] | Container patches for pymumble ssl + opuslib musl | +| P0 | [x] | Multi-bot Mumble (`[[mumble.extra]]`), per-bot plugin filtering | +| P0 | [x] | Rubberband pitch-shifting via CLI (Containerfile + FX chain split) | +| P0 | [x] | Bot audio ignored in sound callback (no self-ducking/STT of bots) | +| P0 | [x] | Self-mute support (mute on join, unmute for audio, re-mute after) | +| P1 | [x] | `plugins/alias.py` -- command aliases (add/del/list) | +| P1 | [x] | Container management tools (`tools/build,start,stop,restart,nuke,logs,status`) | +| P1 | [x] | Tests: `test_mumble.py`, `test_music.py`, `test_alias.py`, `test_core.py` | +| P2 | [x] | Documentation update (USAGE.md, CHEATSHEET.md, ROADMAP.md) | + +## Previous Sprint -- v2.3.0 Mumble Music Playback (2026-02-21) | Pri | Status | Task | |-----|--------|------| @@ -242,6 +259,8 @@ | Date | Task | |------|------| +| 2026-02-22 | v2.3.0 (voice profiles, rubberband FX, multi-bot, self-mute, container tools) | +| 2026-02-21 | v2.3.0 (pymumble rewrite, music playback, fades, seek, kept library) | | 2026-02-17 | v1.2.3 (paste overflow with FlaskPaste integration) | | 2026-02-17 | v1.2.1 (HTTP opener cache, alert perf, concurrent multi-instance, tracemalloc) | | 2026-02-16 | v1.2.0 (subscriptions, alerts, proxy, reminders) | diff --git a/TODO.md b/TODO.md index cdd5dd9..48d75be 100644 --- a/TODO.md +++ b/TODO.md @@ -137,6 +137,15 @@ is preserved in git history for reference. - [x] Text chat only (no voice) - [x] Channel-based messaging - [x] Minimal protobuf encoder/decoder (no protobuf dep) +- [x] pymumble transport rewrite (voice + text) +- [x] Music playback (yt-dlp + ffmpeg + Opus) +- [x] Voice STT/TTS (Whisper + Piper) +- [x] Multi-bot with per-bot plugin filtering +- [x] Configurable voice profiles (voice, FX chain) +- [x] Self-mute support (auto mute/unmute around audio) +- [x] Bot audio isolation (ignore own bots in sound callback) +- [ ] Per-channel voice settings (different voice per channel) +- [ ] Voice activity log (who spoke, duration, transcript) ## Slack