# Текущий контекст проекта

## Статус: Базовая интеграция с TDLib работает

### Что сделано

#### TDLib интеграция
- Подключена библиотека `tdlib-rs` v1.1 с автоматической загрузкой TDLib
- Реализована авторизация через телефон + код + 2FA пароль
- Сессия сохраняется автоматически в папке `tdlib_data/`
- Отключены логи TDLib через FFI вызов `td_execute` до создания клиента
- Updates обрабатываются в отдельном потоке через `mpsc` канал (неблокирующе)

#### Функциональность
- Загрузка списка чатов (до 50 штук)
- Отображение названия чата и счётчика непрочитанных
- Загрузка истории сообщений при открытии чата
- Отображение сообщений с именем отправителя и временем

#### Управление
- `j/k` или стрелки — навигация по списку чатов
- `д/л` — русская раскладка для j/k
- `Enter` — открыть выбранный чат
- `Esc` — закрыть открытый чат
- `Ctrl+k` — перейти к первому чату
- `Ctrl+R` — обновить список чатов
- `Ctrl+C` — выход

### Структура проекта

```
src/
├── main.rs           # Точка входа, UI рендеринг, event loop
├── tdlib/
│   ├── mod.rs        # Модуль экспорта
│   └── client.rs     # TdClient: авторизация, загрузка чатов, сообщений
```

### Ключевые решения

1. **Неблокирующий receive**: TDLib updates приходят в отдельном потоке и передаются в main loop через `mpsc::channel`. Это позволяет UI оставаться отзывчивым.

2. **FFI для логов**: Используем прямой вызов `td_execute` для отключения логов синхронно, до создания клиента, чтобы избежать вывода в терминал.

3. **Синхронизация чатов**: Чаты загружаются асинхронно через updates. Main loop периодически синхронизирует `app.chats` с `td_client.chats`.

### Зависимости (Cargo.toml)

```toml
ratatui = "0.29"
crossterm = "0.28"
tdlib-rs = { version = "1.1", features = ["download-tdlib"] }
tokio = { version = "1", features = ["full"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
dotenvy = "0.15"
```

### Переменные окружения (.env)

```
API_ID=your_api_id
API_HASH=your_api_hash
```

## Что НЕ сделано / TODO

- [ ] Отправка сообщений
- [ ] Поиск по чатам
- [ ] Папки телеграма (сейчас только "All")
- [ ] Отображение онлайн-статуса пользователя
- [ ] Markdown форматирование в сообщениях
- [ ] Скролл истории сообщений
- [ ] Отметка сообщений как прочитанные
- [ ] Обновление чатов в реальном времени (новые сообщения)

## Известные проблемы

1. При первом запуске нужно пройти авторизацию
2. Имя отправителя показывается как "User_ID" (нужно загружать имена пользователей)
