docs: add Phase 12 - voice message playback

Documented new feature for playing voice messages directly from TUI
with full playback controls and visual feedback.

Documentation Changes:
- ROADMAP.md: Added Phase 12 with 7 stages
  - Stage 1: Audio infrastructure (audio module, AudioPlayer, VoiceCache)
  - Stage 2: TDLib integration (VoiceNoteInfo, download_voice_note)
  - Stage 3: UI for playback (progress bar, status indicators, footer)
  - Stage 4: Hotkeys (play/pause, stop, seek, volume control)
  - Stage 5: Configuration and UX (AudioConfig, ticker updates)
  - Stage 6: Error handling and fallback (system player)
  - Stage 7: Additional improvements (prefetching, animations)

- CONTEXT.md: Added PLANNED section for Phase 12
  - Technical stack: rodio 0.17, TDLib downloadFile
  - Platforms: Linux (ALSA/PulseAudio), macOS (CoreAudio), Windows (WASAPI)
  - Architecture: src/audio/ module with 3 submodules
  - LRU cache (100 MB limit)
  - Async loading, ticker for progress updates
  - Configuration options in config.toml
  - Fallback to system players (mpv, ffplay)

- HOTKEYS.md: Added new hotkeys
  - `Space` - play/pause (in voice message selection mode)
  - `s` / `ы` - stop playback
  - `←` / `→` - seek -5s/+5s (during playback)
  - `↑` / `↓` - volume +/-10% (during playback)
  - Added new "Voice Playback" section
  - Added new "Voice Playback Mode" section

- PROJECT_STRUCTURE.md: Added audio/ module documentation
  - player.rs - AudioPlayer with rodio
  - cache.rs - VoiceCache for downloaded OGG files
  - state.rs - PlaybackState (status, position, duration, volume)
  - Updated dependencies section (rodio 0.17)
  - Updated App state with audio fields

Technical Details:
- rodio 0.17 Pure Rust audio library (cross-platform)
- OGG Opus support (Telegram voice message format)
- Visual progress bar: ▶ ████████░░░░░░ 0:08 / 0:15
- Status indicators: ▶ (playing), ⏸ (paused), ⏹ (stopped),  (loading)
- Smart caching with size limits
- Async non-blocking file download
- Ticker for smooth progress updates (100ms)
- Graceful fallback to system players

New Configuration (config.toml):
- enabled: bool - enable/disable audio playback
- default_volume: f32 - volume (0.0 - 1.0)
- seek_step_seconds: i32 - seek step in seconds (default 5)
- autoplay: bool - autoplay on selection
- cache_size_mb: usize - cache size limit in MB
- show_waveform: bool - show waveform visualization
- system_player_fallback: bool - use system player fallback
- system_player: String - system player command (mpv, ffplay)

Status: PLANNED (documentation complete, implementation pending)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Mikhail Kilin
2026-02-05 02:51:04 +03:00
parent 8844c2953d
commit 776271ff36
4 changed files with 251 additions and 0 deletions

View File

@@ -57,6 +57,28 @@
**Примечание**: Изображения отображаются inline в чате автоматически. Используйте `v` для просмотра в полном размере.
## Прослушивание голосовых сообщений
### Управление воспроизведением
| Клавиша | Русская раскладка | Действие |
|---------|-------------------|----------|
| `Space` | | Воспроизвести/Пауза (в режиме выбора голосового) |
| `s` | `ы` | Остановить воспроизведение |
### Во время воспроизведения
| Клавиша | Действие |
|---------|----------|
| `Space` | Пауза / Возобновить |
| `s` / `ы` | Остановить |
| `←` | Перемотка назад (по умолчанию -5 сек) |
| `→` | Перемотка вперед (по умолчанию +5 сек) |
| `↑` | Увеличить громкость (+10%) |
| `↓` | Уменьшить громкость (-10%) |
**Примечание**: Голосовые сообщения показывают progress bar во время воспроизведения: `▶ ████████░░░░░░ 0:08 / 0:15`
## Модалки подтверждения
### Удаление сообщения
@@ -118,6 +140,7 @@
- Копировать: `y` / `н`
- Реакция: `e` / `у`
- Просмотр изображения: `v` / `м` (если выбрано сообщение с фото)
- Воспроизведение голосового: `Space` (если выбрано голосовое сообщение)
- Отменить: `Esc`
### Режим редактирования
@@ -139,6 +162,12 @@
- Навигация: `←/→` (предыдущее/следующее изображение)
- Закрыть: `Esc`
### Режим воспроизведения голосового
- Пауза/Возобновить: `Space`
- Остановить: `s` / `ы`
- Перемотка: `←/→` (-5с / +5с)
- Громкость: `↑/↓` (+/- 10%)
## Поддержка русской раскладки
Все основные vim-клавиши поддерживают русскую раскладку:
@@ -155,6 +184,7 @@
| `y` | `н` | Copy (Yank) |
| `e` | `у` | Emoji reaction |
| `v` | `м` | View image |
| `s` | `ы` | Stop audio |
## Подсказки