106 lines
5.2 KiB
Markdown
106 lines
5.2 KiB
Markdown
# 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: Глубокий рефакторинг памяти [DONE]
|
||
|
||
- [x] Удалить дублирование current_messages между App и TdClient
|
||
- [x] Использовать единый источник данных для сообщений
|
||
- [x] Реализовать LRU-кэш для user_names/user_statuses вместо простого лимита
|
||
- [x] Lazy loading для имён пользователей (батчевая загрузка последних 5 за цикл)
|
||
- [x] Лимиты памяти:
|
||
- MAX_MESSAGES_IN_CHAT = 500
|
||
- MAX_CHATS = 200
|
||
- MAX_CHAT_USER_IDS = 500
|
||
- MAX_USER_CACHE_SIZE = 500 (LRU)
|
||
|
||
## Фаза 8: Дополнительные фичи [IN PROGRESS]
|
||
|
||
- [x] Markdown форматирование в сообщениях
|
||
- Bold, Italic, Underline, Strikethrough
|
||
- Code (inline, Pre, PreCode)
|
||
- Spoiler (скрытый текст)
|
||
- URLs, упоминания (@)
|
||
- [x] Редактирование сообщений
|
||
- ↑ при пустом инпуте → выбор сообщения
|
||
- Enter для начала редактирования
|
||
- Подсветка выбранного сообщения (▶)
|
||
- Esc для отмены
|
||
- [x] Удаление сообщений
|
||
- d / в / Delete в режиме выбора
|
||
- Модалка подтверждения (y/n)
|
||
- Удаление для всех если возможно
|
||
- [x] Индикатор редактирования (✎)
|
||
- Отображается рядом с временем для отредактированных сообщений
|
||
- [x] Блочный курсор в поле ввода
|
||
- Vim-style курсор █
|
||
- Перемещение ←/→, Home/End
|
||
- Редактирование в любой позиции
|
||
- [ ] Reply на сообщения
|
||
- [ ] Forward сообщений
|