Files
telegram-tui/ROADMAP.md
Mikhail Kilin c18f43664e fixes
2026-01-22 15:26:15 +03:00

4.2 KiB
Raw Blame History

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: Глубокий рефакторинг памяти [TODO]

  • Удалить дублирование current_messages между App и TdClient
  • Использовать единый источник данных для сообщений
  • Реализовать LRU-кэш для user_names/user_statuses вместо простого лимита
  • Lazy loading для имён пользователей (загружать только видимых)
  • Профилирование памяти и устранение утечек

Фаза 8: Дополнительные фичи [TODO]

  • Markdown форматирование в сообщениях
  • Редактирование сообщений
  • Удаление сообщений
  • Reply на сообщения
  • Forward сообщений