fixes
Some checks are pending
CI / Check (pull_request) Waiting to run
CI / Format (pull_request) Waiting to run
CI / Clippy (pull_request) Waiting to run
CI / Build (macos-latest) (pull_request) Waiting to run
CI / Build (ubuntu-latest) (pull_request) Waiting to run
CI / Build (windows-latest) (pull_request) Waiting to run

This commit is contained in:
Mikhail Kilin
2026-01-28 01:29:03 +03:00
parent f291191577
commit 051c4a0265
29 changed files with 2189 additions and 45 deletions

View File

@@ -1,6 +1,6 @@
# Текущий контекст проекта
## Статус: Фаза 9 — Расширенные возможности
## Статус: Фаза 9 — ЗАВЕРШЕНО
### Что сделано
@@ -51,6 +51,12 @@
- Emoji picker с сеткой доступных реакций (8 в ряду)
- Добавление/удаление реакций (toggle)
- Обновление реакций в реальном времени через Update::MessageInteractionInfo
- **Конфигурационный файл** (`~/.config/tele-tui/config.toml`):
- Автоматическое создание дефолтного конфига при первом запуске
- **Настройка timezone**: формат "+03:00" или "-05:00"
- **Настройка цветов**: incoming_message, outgoing_message, selected_message, reaction_chosen, reaction_other
- **Credentials файл** (`~/.config/tele-tui/credentials`): API_ID и API_HASH
- Приоритет загрузки: ~/.config/tele-tui/credentials → .env → сообщение об ошибке с инструкциями
- **Кеширование имён пользователей**: имена загружаются асинхронно и обновляются в UI
- **Папки Telegram**: загрузка и переключение между папками (1-9)
- **Медиа-заглушки**: [Фото], [Видео], [Голосовое], [Стикер], [GIF] и др.
@@ -121,6 +127,7 @@
```
src/
├── main.rs # Точка входа, event loop, TDLib инициализация, graceful shutdown
├── config.rs # Конфигурация (TOML), загрузка credentials
├── app/
│ ├── mod.rs # App структура и состояние (needs_redraw флаг)
│ └── state.rs # AppScreen enum
@@ -136,10 +143,10 @@ src/
│ ├── mod.rs # Роутинг ввода
│ ├── auth.rs # Обработка ввода на экране авторизации
│ └── main_input.rs # Обработка ввода на главном экране
├── utils.rs # Утилиты (disable_tdlib_logs, format_timestamp, format_date, get_day)
├── utils.rs # Утилиты (disable_tdlib_logs, format_timestamp_with_tz, format_date, get_day)
└── tdlib/
├── mod.rs # Модуль экспорта (TdClient, UserOnlineStatus, NetworkState)
└── client.rs # TdClient: авторизация, чаты, сообщения, кеш, NetworkState
└── client.rs # TdClient: авторизация, чаты, сообщения, кеш, NetworkState, ReactionInfo
```
### Ключевые решения
@@ -162,6 +169,10 @@ src/
9. **Перенос текста**: Длинные сообщения автоматически разбиваются на строки с учётом ширины терминала. Для исходящих — time_mark на последней строке, для входящих — время на первой строке с отступом для остальных.
10. **Конфигурационный файл**: TOML конфиг создаётся автоматически при первом запуске в `~/.config/tele-tui/config.toml`. Поддерживает настройку timezone (применяется к отображению времени через `format_timestamp_with_tz`) и цветовой схемы (парсится в `ratatui::style::Color`). Credentials загружаются с приоритетом: XDG config dir → .env → ошибка с инструкциями.
11. **Реакции**: Хранятся в `Vec<ReactionInfo>` для каждого сообщения. Обновляются в реальном времени через `Update::MessageInteractionInfo`. Emoji picker использует сетку 8x6 с навигацией стрелками. Приоритет обработки ввода: reaction picker → delete confirmation → остальные модалки (важно для корректной работы Enter/Esc).
### Зависимости (Cargo.toml)
```toml
@@ -173,20 +184,62 @@ serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
dotenvy = "0.15"
chrono = "0.4"
clipboard = "0.5"
toml = "0.8"
dirs = "5.0"
```
### Переменные окружения (.env)
### API Credentials
Приоритет загрузки (от высшего к низшему):
1. **Файл credentials** (`~/.config/tele-tui/credentials`):
```
API_ID=your_api_id
API_HASH=your_api_hash
```
## Что НЕ сделано / TODO (Фаза 9)
2. **Переменные окружения** (`.env` файл в текущей директории):
```
API_ID=your_api_id
API_HASH=your_api_hash
```
- [ ] Конфигурационный файл (~/.config/tele-tui/config.toml)
3. Если ничего не найдено — показывается сообщение об ошибке с инструкциями.
### Конфигурационный файл
Создаётся автоматически при первом запуске в `~/.config/tele-tui/config.toml`:
```toml
[general]
# Часовой пояс в формате "+03:00" или "-05:00"
# Применяется к отображению времени сообщений
timezone = "+03:00"
[colors]
# Цветовая схема (поддерживаемые цвета: black, red, green, yellow, blue, magenta, cyan, gray, white, darkgray, lightred, lightgreen, lightyellow, lightblue, lightmagenta, lightcyan)
# Цвет входящих сообщений
incoming_message = "white"
# Цвет исходящих сообщений
outgoing_message = "green"
# Цвет выбранного сообщения
selected_message = "yellow"
# Цвет своих реакций (в рамках [👍])
reaction_chosen = "yellow"
# Цвет чужих реакций
reaction_other = "gray"
```
## Что НЕ сделано / TODO
Все пункты Фазы 9 завершены! Можно переходить к следующей фазе разработки.
## Известные проблемы
1. При первом запуске нужно пройти авторизацию
2. Время отображается с фиксированным смещением +3 (MSK)