docs: add Phase 11 - image display in chat
Documented new feature for displaying images directly in terminal instead of text placeholders like "[Фото]". Documentation Changes: - ROADMAP.md: Added Phase 11 with 6 stages - Stage 1: Infrastructure (media module, ImageCache, dependencies) - Stage 2: TDLib integration (PhotoInfo, download_photo) - Stage 3: UI rendering (inline previews, scaling) - Stage 4: Fullscreen viewer (new ViewImage mode) - Stage 5: Configuration and UX (MediaConfig in config.toml) - Stage 6: Error handling and fallback - CONTEXT.md: Added PLANNED section for Phase 11 - Technical stack: ratatui-image 1.0, TDLib downloadFile - Protocols: Sixel, Kitty Graphics, iTerm2, Unicode Halfblocks - Architecture: src/media/ module with 3 submodules - LRU cache (100 MB limit) - Async loading, lazy loading for visible images - Configuration options in config.toml - HOTKEYS.md: Added new hotkeys - `v` / `м` - open image in fullscreen (in selection mode) - `←` / `→` - navigate between images (in viewer mode) - `Esc` - close image viewer - Added new "View Image Mode" section - PROJECT_STRUCTURE.md: Added media/ module documentation - image_cache.rs - LRU cache for downloaded images - image_loader.rs - Async loading via TDLib - image_renderer.rs - Rendering with protocol detection - Updated dependencies section - Updated App state with new fields Technical Details: - Terminal protocol auto-detection (Sixel/Kitty/iTerm2/Halfblocks) - Cross-platform support (Linux, macOS, Windows) - Graceful fallback to Unicode halfblocks for all terminals - Async non-blocking image loading - Smart caching with size limits - Configurable quality and protocol settings New Configuration (config.toml): - show_images: bool - enable/disable image display - image_cache_mb: usize - cache size limit in MB - preview_quality: "low" | "medium" | "high" - render_protocol: "auto" | "sixel" | "kitty" | "iterm2" | "halfblocks" Status: PLANNED (documentation complete, implementation pending) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
37
CONTEXT.md
37
CONTEXT.md
@@ -42,6 +42,43 @@
|
||||
- `src/app/mod.rs`: вызов configure_notifications() при инициализации
|
||||
- **Тесты**: Компиляция успешна (cargo build --lib ✅, cargo build ✅)
|
||||
|
||||
**📸 PLANNED: Показ изображений в чате (Фаза 11)**
|
||||
- **Описание**: Отображение изображений прямо в терминале вместо текстовых заглушек "[Фото]"
|
||||
- **Технологии**:
|
||||
- ratatui-image 1.0 - поддержка изображений в TUI
|
||||
- Протоколы: Sixel, Kitty Graphics, iTerm2 Inline Images, Unicode Halfblocks
|
||||
- TDLib downloadFile API для загрузки фото
|
||||
- LRU кэш для загруженных изображений (лимит 100 MB)
|
||||
- **Архитектура**:
|
||||
- `src/media/` - новый модуль (image_cache, image_loader, image_renderer)
|
||||
- `PhotoInfo` в `MessageInfo` для хранения метаданных изображения
|
||||
- Асинхронная загрузка в фоне (не блокирует UI)
|
||||
- Lazy loading - загрузка только видимых изображений
|
||||
- **UX фичи**:
|
||||
- Превью в списке сообщений (миниатюры 20x10 символов)
|
||||
- Индикатор загрузки с progress bar
|
||||
- Полноэкранный просмотр: `v` в режиме выбора
|
||||
- Навигация между изображениями: `←` / `→`
|
||||
- Auto-detection возможностей терминала
|
||||
- Fallback на Unicode halfblocks для любых терминалов
|
||||
- **Конфигурация** (config.toml):
|
||||
- show_images: bool - включить/отключить
|
||||
- image_cache_mb: usize - размер кэша
|
||||
- preview_quality: "low" | "medium" | "high"
|
||||
- render_protocol: "auto" | "sixel" | "kitty" | "iterm2" | "halfblocks"
|
||||
- **План реализации**:
|
||||
- Этап 1: Инфраструктура (модуль media, ImageCache, зависимости)
|
||||
- Этап 2: Интеграция с TDLib (PhotoInfo, download_photo)
|
||||
- Этап 3: Рендеринг в UI (превью, масштабирование)
|
||||
- Этап 4: Полноэкранный просмотр (новый режим ViewImage)
|
||||
- Этап 5: Конфигурация и оптимизация
|
||||
- Этап 6: Обработка ошибок и fallback
|
||||
- **Ожидаемый результат**:
|
||||
- Фото показываются inline в чате с автоматическим масштабированием
|
||||
- Поддержка всех популярных терминалов (Kitty, WezTerm, iTerm2, и любых других)
|
||||
- Производительность: кэширование, асинхронность, lazy loading
|
||||
- **Статус**: PLANNED (документация готова в ROADMAP.md)
|
||||
|
||||
**🐛 FIX: HashMap keybindings коллизии - дубликаты клавиш**
|
||||
- **Проблема #1**: `KeyCode::Enter` был привязан к 3 командам (OpenChat, SelectMessage, SubmitMessage)
|
||||
- **Проблема #2**: `KeyCode::Up` был привязан к 2 командам (MoveUp, EditMessage)
|
||||
|
||||
Reference in New Issue
Block a user