You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
v0.42.1: OGG Opus transcribe fix + config loader overlayFile fix
- transcribe tool: whisper.cpp cannot read OGG Opus audio.
Added convertToWAV() that auto-detects unsupported formats
and uses ffmpeg (16kHz mono WAV) before passing to whisper.
Best-effort — falls through to original path if ffmpeg unavailable.
- config loader: overlayFile() was missing Transcription field
propagation. Adding transcription section to ~/.odek/config.json
was silently ignored. Now properly propagates the pointer field.
- docs: updated CHANGELOG (v0.42.0 + v0.42.1), TELEGRAM.md
(auto-transcribe section with OGG→WAV docs), AGENTS.md (version)
Copy file name to clipboardExpand all lines: docs/CHANGELOG.md
+30Lines changed: 30 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,35 @@
1
1
# Changelog
2
2
3
+
## v0.42.1 (2026-05-24) — OGG Opus Transcribe Fix
4
+
5
+
### Bug Fixes
6
+
-**transcribe tool** — whisper.cpp cannot read OGG Opus audio (`dr_wav`/`dr_mp3` limitation). Telegram voice messages are OGG Opus → produced empty transcriptions silently. Added `convertToWAV()` that auto-detects unsupported formats and uses ffmpeg (16kHz mono WAV) before passing to whisper. Best-effort: falls through to original path if ffmpeg unavailable, so whisper's own error bubbles up
7
+
-**config loader** — `overlayFile()` was missing `Transcription` field propagation. Adding `"transcription"` to `~/.odek/config.json` was silently ignored. Now properly propagates the pointer field
8
+
9
+
### Stats
10
+
- 43 insertions across 2 files (transcribe_tool.go, loader.go)
11
+
- All 19 packages pass with `-race`
12
+
13
+
---
14
+
15
+
## v0.42.0 (2026-05-24) — Session Search
16
+
17
+
### New Tool: `session_search`
18
+
- Built-in `session_search` tool — browse, search, and recall past sessions by keyword or browse most recent
19
+
- Uses FTS5 full-text search on the sessions index JSON
20
+
- Supports: keyword queries with OR/AND, phrase search, role filtering, prefix search
21
+
- Returns LLM-summarized matching sessions with timestamps and previews
22
+
- Zero new dependencies (stdlib `encoding/json` + FTS5 via sqlite)
23
+
24
+
### CI
25
+
- Bumped `softprops/action-gh-release` from v2 to v4
@@ -292,6 +292,21 @@ Media files are saved to `~/.odek/media/` (created automatically on first downlo
292
292
- Saves as `photo_<truncated_fileID>.<ext>` (default extension: `.jpg`)
293
293
- Same fileID truncation as voice downloads
294
294
295
+
### Auto-Transcribe (Voice → Text)
296
+
297
+
When `transcription.auto_transcribe: true` is set in config and whisper is installed, voice messages are automatically transcribed into text before reaching the agent:
298
+
299
+
```
300
+
Voice message received → DownloadVoice (OGG Opus to disk)
301
+
→ convertToWAV (ffmpeg: OGG→16kHz mono WAV)
302
+
→ whisper.cpp (local transcription)
303
+
→ transcribed text injected as user message
304
+
```
305
+
306
+
**OGG Opus handling:** whisper.cpp uses `dr_wav`/`dr_mp3` internally and does not support OGG Opus. The transcribe tool auto-detects unsupported formats and converts via ffmpeg. If ffmpeg is unavailable, the original file is passed to whisper which produces a clear error message.
307
+
308
+
**Fallback:** If auto-transcribe fails (ffmpeg unavailable, corrupt audio, whisper error), the agent receives the file path with a suggestion to use the `transcribe()` tool manually.
309
+
295
310
## Types (`types.go`)
296
311
297
312
The package defines Telegram API types used throughout:
0 commit comments