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>
165 lines
6.5 KiB
Markdown
165 lines
6.5 KiB
Markdown
# Горячие клавиши tele-tui
|
||
|
||
## Общая навигация
|
||
|
||
| Клавиша | Русская раскладка | Действие |
|
||
|---------|-------------------|----------|
|
||
| `↑` / `k` | `р` | Вверх по списку |
|
||
| `↓` / `j` | `о` | Вниз по списку |
|
||
| `Enter` | | Открыть чат / Отправить сообщение |
|
||
| `Esc` | | Закрыть чат / Отменить действие |
|
||
| `Ctrl+C` | | Выход из приложения |
|
||
| `Ctrl+R` | | Обновить список чатов |
|
||
|
||
## Папки и поиск
|
||
|
||
| Клавиша | Действие |
|
||
|---------|----------|
|
||
| `1-9` | Переключение между папками Telegram |
|
||
| `Ctrl+S` | Открыть поиск по чатам |
|
||
| `Ctrl+F` | Открыть поиск в текущем чате |
|
||
| `n` | Следующий результат поиска |
|
||
| `N` | Предыдущий результат поиска |
|
||
|
||
## Работа с сообщениями
|
||
|
||
### Навигация и выбор
|
||
|
||
| Клавиша | Действие |
|
||
|---------|----------|
|
||
| `↑/↓` | Скролл сообщений (в открытом чате) |
|
||
| `↑` | Выбор сообщения (при пустом поле ввода) |
|
||
| `Esc` | Отменить выбор |
|
||
|
||
### Действия с сообщениями
|
||
|
||
| Клавиша | Русская раскладка | Действие |
|
||
|---------|-------------------|----------|
|
||
| `Enter` | | Редактировать выбранное сообщение |
|
||
| `r` | `к` | Ответить на сообщение (Reply) |
|
||
| `f` | `а` | Переслать сообщение (Forward) |
|
||
| `d` / `Delete` | `в` | Удалить сообщение |
|
||
| `y` | `н` | Копировать текст в буфер обмена |
|
||
| `e` | `у` | Добавить реакцию (Emoji picker) |
|
||
| `v` | `м` | Открыть изображение в полном размере |
|
||
| `Ctrl+i` | `Ctrl+ш` | Открыть профиль чата/пользователя |
|
||
|
||
## Просмотр изображений
|
||
|
||
### Режим просмотра изображения
|
||
|
||
| Клавиша | Действие |
|
||
|---------|----------|
|
||
| `v` / `м` | Открыть изображение (в режиме выбора) |
|
||
| `←` | Предыдущее изображение в чате |
|
||
| `→` | Следующее изображение в чате |
|
||
| `Esc` | Закрыть просмотр изображения |
|
||
|
||
**Примечание**: Изображения отображаются inline в чате автоматически. Используйте `v` для просмотра в полном размере.
|
||
|
||
## Модалки подтверждения
|
||
|
||
### Удаление сообщения
|
||
|
||
| Клавиша | Русская раскладка | Действие |
|
||
|---------|-------------------|----------|
|
||
| `y` / `Enter` | `н` | Подтвердить удаление |
|
||
| `n` / `Esc` | `т` | Отменить удаление |
|
||
|
||
## Emoji Picker (реакции)
|
||
|
||
| Клавиша | Действие |
|
||
|---------|----------|
|
||
| `←` | Влево по сетке эмодзи |
|
||
| `→` | Вправо по сетке эмодзи |
|
||
| `↑` | Вверх по сетке эмодзи |
|
||
| `↓` | Вниз по сетке эмодзи |
|
||
| `Enter` | Добавить/удалить реакцию |
|
||
| `Esc` | Закрыть emoji picker |
|
||
|
||
## Редактирование текста
|
||
|
||
### Навигация по тексту
|
||
|
||
| Клавиша | Действие |
|
||
|---------|----------|
|
||
| `←` | Курсор влево |
|
||
| `→` | Курсор вправо |
|
||
| `Home` | Курсор в начало строки |
|
||
| `End` | Курсор в конец строки |
|
||
|
||
### Редактирование
|
||
|
||
| Клавиша | Действие |
|
||
|---------|----------|
|
||
| `Backspace` | Удалить символ слева от курсора |
|
||
| `Delete` | Удалить символ справа от курсора |
|
||
| `Enter` | Новая строка / Отправить (зависит от контекста) |
|
||
|
||
## Режимы работы
|
||
|
||
### Режим списка чатов
|
||
- Навигация: `↑/↓`
|
||
- Открыть чат: `Enter`
|
||
- Поиск: `Ctrl+S`
|
||
- Папки: `1-9`
|
||
|
||
### Режим открытого чата
|
||
- Скролл: `↑/↓`
|
||
- Выбор сообщения: `↑` (при пустом инпуте)
|
||
- Поиск в чате: `Ctrl+F`
|
||
- Закрыть чат: `Esc`
|
||
|
||
### Режим выбора сообщения
|
||
- Редактировать: `Enter`
|
||
- Ответить: `r` / `к`
|
||
- Переслать: `f` / `а`
|
||
- Удалить: `d` / `в` / `Delete`
|
||
- Копировать: `y` / `н`
|
||
- Реакция: `e` / `у`
|
||
- Просмотр изображения: `v` / `м` (если выбрано сообщение с фото)
|
||
- Отменить: `Esc`
|
||
|
||
### Режим редактирования
|
||
- Редактировать текст: см. "Редактирование текста"
|
||
- Отправить: `Enter`
|
||
- Отменить: `Esc`
|
||
|
||
### Режим ответа (Reply)
|
||
- Редактировать ответ: см. "Редактирование текста"
|
||
- Отправить: `Enter`
|
||
- Отменить: `Esc`
|
||
|
||
### Режим пересылки (Forward)
|
||
- Выбрать чат: `↑/↓`
|
||
- Переслать: `Enter`
|
||
- Отменить: `Esc`
|
||
|
||
### Режим просмотра изображения
|
||
- Навигация: `←/→` (предыдущее/следующее изображение)
|
||
- Закрыть: `Esc`
|
||
|
||
## Поддержка русской раскладки
|
||
|
||
Все основные vim-клавиши поддерживают русскую раскладку:
|
||
|
||
| Английская | Русская | Действие |
|
||
|------------|---------|----------|
|
||
| `h` | `р` | Влево |
|
||
| `j` | `о` | Вниз |
|
||
| `k` | `л` | Вверх |
|
||
| `l` | `д` | Вправо |
|
||
| `r` | `к` | Reply |
|
||
| `f` | `а` | Forward |
|
||
| `d` | `в` | Delete |
|
||
| `y` | `н` | Copy (Yank) |
|
||
| `e` | `у` | Emoji reaction |
|
||
| `v` | `м` | View image |
|
||
|
||
## Подсказки
|
||
|
||
- Текущие доступные команды всегда отображаются в нижней части экрана (footer)
|
||
- При открытой модалке доступны только действия этой модалки
|
||
- `Esc` всегда отменяет текущее действие и возвращает на шаг назад
|
||
- Блочный курсор █ показывает текущую позицию при редактировании текста
|