# Roadmap ## Фаза 1: Базовая инфраструктура [DONE] - [x] Настройка проекта (Cargo.toml) - [x] TUI фреймворк (ratatui + crossterm) - [x] Базовый layout (папки, список чатов, область сообщений) - [x] Vim-style навигация (hjkl, стрелки) - [x] Русская раскладка (ролд) ## Фаза 2: TDLib интеграция [DONE] - [x] Подключение tdlib-rs - [x] Авторизация (телефон + код + 2FA) - [x] Сохранение сессии - [x] Загрузка списка чатов - [x] Загрузка истории сообщений - [x] Отключение логов TDLib ## Фаза 3: Улучшение UX [DONE] - [x] Отправка сообщений - [x] Фильтрация чатов (только Main, без архива) - [x] Поиск по чатам (Ctrl+S) - [x] Скролл истории сообщений - [x] Загрузка имён пользователей (вместо User_ID) - [x] Отметка сообщений как прочитанные - [x] Реальное время: новые сообщения ## Фаза 4: Папки и фильтрация [DONE] - [x] Загрузка папок из Telegram - [x] Переключение между папками (1-9) - [x] Фильтрация чатов по папке ## Фаза 5: Расширенный функционал [DONE] - [x] Отображение онлайн-статуса (зелёная точка ●) - [x] Статус доставки/прочтения (✓, ✓✓) - [x] Поддержка медиа-заглушек (фото, видео, голосовые, стикеры и др.) - [x] Mentions (@) — индикатор непрочитанных упоминаний - [x] Muted чаты (иконка 🔇) ## Фаза 6: Полировка [DONE] - [x] Оптимизация использования памяти (базовая) - Очистка сообщений при закрытии чата - Лимит кэша пользователей (500) - Периодическая очистка неактивных записей - [x] Оптимизация 60 FPS - Poll таймаут 16ms - Флаг `needs_redraw` — рендеринг только при изменениях - Обработка Event::Resize для перерисовки при изменении размера - [x] Минимальное разрешение (80x20) - Предупреждение если терминал слишком мал - [x] Обработка ошибок сети - NetworkState enum (WaitingForNetwork, Connecting, etc.) - Индикатор в футере с цветовой индикацией - [x] Graceful shutdown - AtomicBool флаг для остановки polling - Корректное закрытие TDLib клиента - Таймаут ожидания завершения задач - [x] Динамический инпут - Автоматическое расширение до 10 строк - Wrap для длинного текста - [x] Перенос длинных сообщений - Автоматический wrap на несколько строк - Правильное выравнивание для исходящих/входящих ## Фаза 7: Глубокий рефакторинг памяти [TODO] - [ ] Удалить дублирование current_messages между App и TdClient - [ ] Использовать единый источник данных для сообщений - [ ] Реализовать LRU-кэш для user_names/user_statuses вместо простого лимита - [ ] Lazy loading для имён пользователей (загружать только видимых) - [ ] Профилирование памяти и устранение утечек ## Фаза 8: Дополнительные фичи [TODO] - [ ] Markdown форматирование в сообщениях - [ ] Редактирование сообщений - [ ] Удаление сообщений - [ ] Reply на сообщения - [ ] Forward сообщений