5.2 KiB
5.2 KiB
Roadmap
Фаза 1: Базовая инфраструктура [DONE]
- Настройка проекта (Cargo.toml)
- TUI фреймворк (ratatui + crossterm)
- Базовый layout (папки, список чатов, область сообщений)
- Vim-style навигация (hjkl, стрелки)
- Русская раскладка (ролд)
Фаза 2: TDLib интеграция [DONE]
- Подключение tdlib-rs
- Авторизация (телефон + код + 2FA)
- Сохранение сессии
- Загрузка списка чатов
- Загрузка истории сообщений
- Отключение логов TDLib
Фаза 3: Улучшение UX [DONE]
- Отправка сообщений
- Фильтрация чатов (только Main, без архива)
- Поиск по чатам (Ctrl+S)
- Скролл истории сообщений
- Загрузка имён пользователей (вместо User_ID)
- Отметка сообщений как прочитанные
- Реальное время: новые сообщения
Фаза 4: Папки и фильтрация [DONE]
- Загрузка папок из Telegram
- Переключение между папками (1-9)
- Фильтрация чатов по папке
Фаза 5: Расширенный функционал [DONE]
- Отображение онлайн-статуса (зелёная точка ●)
- Статус доставки/прочтения (✓, ✓✓)
- Поддержка медиа-заглушек (фото, видео, голосовые, стикеры и др.)
- Mentions (@) — индикатор непрочитанных упоминаний
- Muted чаты (иконка 🔇)
Фаза 6: Полировка [DONE]
- Оптимизация использования памяти (базовая)
- Очистка сообщений при закрытии чата
- Лимит кэша пользователей (500)
- Периодическая очистка неактивных записей
- Оптимизация 60 FPS
- Poll таймаут 16ms
- Флаг
needs_redraw— рендеринг только при изменениях - Обработка Event::Resize для перерисовки при изменении размера
- Минимальное разрешение (80x20)
- Предупреждение если терминал слишком мал
- Обработка ошибок сети
- NetworkState enum (WaitingForNetwork, Connecting, etc.)
- Индикатор в футере с цветовой индикацией
- Graceful shutdown
- AtomicBool флаг для остановки polling
- Корректное закрытие TDLib клиента
- Таймаут ожидания завершения задач
- Динамический инпут
- Автоматическое расширение до 10 строк
- Wrap для длинного текста
- Перенос длинных сообщений
- Автоматический wrap на несколько строк
- Правильное выравнивание для исходящих/входящих
Фаза 7: Глубокий рефакторинг памяти [DONE]
- Удалить дублирование current_messages между App и TdClient
- Использовать единый источник данных для сообщений
- Реализовать LRU-кэш для user_names/user_statuses вместо простого лимита
- Lazy loading для имён пользователей (батчевая загрузка последних 5 за цикл)
- Лимиты памяти:
- MAX_MESSAGES_IN_CHAT = 500
- MAX_CHATS = 200
- MAX_CHAT_USER_IDS = 500
- MAX_USER_CACHE_SIZE = 500 (LRU)
Фаза 8: Дополнительные фичи [IN PROGRESS]
- Markdown форматирование в сообщениях
- Bold, Italic, Underline, Strikethrough
- Code (inline, Pre, PreCode)
- Spoiler (скрытый текст)
- URLs, упоминания (@)
- Редактирование сообщений
- ↑ при пустом инпуте → выбор сообщения
- Enter для начала редактирования
- Подсветка выбранного сообщения (▶)
- Esc для отмены
- Удаление сообщений
- d / в / Delete в режиме выбора
- Модалка подтверждения (y/n)
- Удаление для всех если возможно
- Индикатор редактирования (✎)
- Отображается рядом с временем для отредактированных сообщений
- Блочный курсор в поле ввода
- Vim-style курсор █
- Перемещение ←/→, Home/End
- Редактирование в любой позиции
- Reply на сообщения
- Forward сообщений