Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
54522d7
docs: add design spec for audio response messages feature
vkavun Mar 28, 2026
38679a5
docs: add implementation plan for audio response messages
vkavun Mar 28, 2026
5d574a2
feat: add TTS voice response settings
vkavun Mar 28, 2026
e052eeb
feat: add voice_responses_enabled feature flag
vkavun Mar 28, 2026
5edebe3
feat: add voice_responses_enabled column and repository methods
vkavun Mar 28, 2026
24f3a33
feat: add synthesize_speech() TTS method to VoiceHandler
vkavun Mar 28, 2026
d5cec76
feat: add /voice on|off toggle command
vkavun Mar 28, 2026
dbd6640
feat: add _maybe_send_voice_response() to orchestrator
vkavun Mar 28, 2026
6543313
feat: wire voice response into agentic_text() flow
vkavun Mar 28, 2026
f31da0d
test: update orchestrator tests for /voice command (7 commands)
vkavun Mar 28, 2026
d1b08e3
feat: add long response test and TTS fallback note
vkavun Mar 28, 2026
c27851e
docs: update CLAUDE.md with /voice command and TTS settings
vkavun Mar 28, 2026
e15bcf4
fix: wire voice response into _handle_agentic_media_message() too
vkavun Mar 28, 2026
0fdf73d
fix: use Mistral REST API for TTS (SDK 1.x lacks audio.speech)
vkavun Mar 28, 2026
cd91f62
fix: remove redundant 'Voice response' text label for short responses
vkavun Mar 28, 2026
71cfcf6
feat: inject voice capability instructions into Claude system prompt
vkavun Mar 28, 2026
a69a1b1
feat: add check_match callback handler for escalation message evaluation
Apr 4, 2026
00d255a
feat: add investigate_trade callback handler for deep trade analysis
Apr 4, 2026
2c52cd6
fix: preserve Investigate button when Check Match updates message
Apr 4, 2026
b308dae
feat: replace web search with SofaScore API for Check Match button
Apr 4, 2026
88ce4a2
fix: strict 3-line output from Check Match, parse verdict lines only
Apr 4, 2026
2e1cbbd
fix: player name regex matching across newlines
Apr 4, 2026
a1b6317
fix: use DB snapshots instead of SofaScore API for Check Match
Apr 4, 2026
4afbb1f
fix(bot): handle stale callback buttons gracefully after restart
Apr 5, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,8 @@ Output verbosity: `VERBOSE_LEVEL` (default 1, range 0-2). Controls how much of C

Voice transcription: `ENABLE_VOICE_MESSAGES` (default true), `VOICE_PROVIDER` (`mistral`|`openai`, default `mistral`), `MISTRAL_API_KEY`, `OPENAI_API_KEY`, `VOICE_TRANSCRIPTION_MODEL`. Provider implementation is in `src/bot/features/voice_handler.py`.

Voice responses (TTS): `ENABLE_VOICE_RESPONSES` (default false), `VOICE_RESPONSE_MODEL` (default `voxtral-mini-tts-2603`), `VOICE_RESPONSE_VOICE` (voice UUID from Mistral `/v1/audio/voices`), `VOICE_RESPONSE_FORMAT` (default `opus`), `VOICE_RESPONSE_MAX_LENGTH` (default 2000). Users toggle via `/voice on|off`. Long responses are summarized before TTS; on failure, falls back to text with note.

Feature flags in `src/config/features.py` control: MCP, git integration, file uploads, quick actions, session export, image uploads, voice messages, conversation mode, agentic mode, API server, scheduler.

### DateTime Convention
Expand All @@ -122,7 +124,7 @@ All datetimes use timezone-aware UTC: `datetime.now(UTC)` (not `datetime.utcnow(

### Agentic mode

Agentic mode commands: `/start`, `/new`, `/status`, `/verbose`, `/repo`. If `ENABLE_PROJECT_THREADS=true`: `/sync_threads`. To add a new command:
Agentic mode commands: `/start`, `/new`, `/status`, `/verbose`, `/voice`, `/repo`. If `ENABLE_PROJECT_THREADS=true`: `/sync_threads`. To add a new command:

1. Add handler function in `src/bot/orchestrator.py`
2. Register in `MessageOrchestrator._register_agentic_handlers()`
Expand Down
Loading