Files
telegram-tui/ROADMAP.md
Mikhail Kilin f291191577 fixes
2026-01-27 23:29:00 +03:00

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

  • Markdown форматирование в сообщениях
    • Bold, Italic, Underline, Strikethrough
    • Code (inline, Pre, PreCode)
    • Spoiler (скрытый текст)
    • URLs, упоминания (@)
  • Редактирование сообщений
    • ↑ при пустом инпуте → выбор сообщения
    • Enter для начала редактирования
    • Подсветка выбранного сообщения (▶)
    • Esc для отмены
  • Удаление сообщений
    • d / в / Delete в режиме выбора
    • Модалка подтверждения (y/n)
    • Удаление для всех если возможно
  • Индикатор редактирования (✎)
    • Отображается рядом с временем для отредактированных сообщений
  • Блочный курсор в поле ввода
    • Vim-style курсор █
    • Перемещение ←/→, Home/End
    • Редактирование в любой позиции
  • Reply на сообщения
    • r / к в режиме выбора → режим ответа
    • Превью сообщения в поле ввода
    • Esc для отмены
  • Forward сообщений
    • f / а в режиме выбора → режим пересылки
    • Превью сообщения в поле ввода
    • Выбор чата стрелками, Enter для пересылки
    • Esc для отмены
    • Отображение "↪ Переслано от" для пересланных сообщений

Фаза 9: Расширенные возможности [IN PROGRESS]

  • Typing indicator ("печатает...")
    • Показывать когда собеседник печатает
    • Отправлять свой статус печати при наборе текста
  • Закреплённые сообщения (Pinned)
    • Отображать pinned message вверху открытого чата
    • Клик/хоткей для перехода к закреплённому сообщению
  • Поиск по сообщениям в чате
    • Ctrl+F — поиск текста внутри открытого чата
    • Навигация по результатам (n/N или стрелки)
    • Подсветка найденных совпадений
  • Черновики
    • Сохранять набранный текст при переключении между чатами
    • Индикатор черновика в списке чатов
    • Восстановление текста при возврате в чат
  • Профиль пользователя/чата
    • i — открыть информацию о чате/собеседнике
    • Для личных чатов: имя, username, телефон, био
    • Для групп: название, описание, количество участников
  • Копирование сообщений
    • y / н в режиме выбора — скопировать текст в системный буфер обмена
    • Использовать clipboard crate для кроссплатформенности
  • Реакции
    • Отображение реакций под сообщениями
    • e в режиме выбора — добавить реакцию (emoji picker)
    • Список доступных реакций чата
  • Конфигурационный файл
    • ~/.config/tele-tui/config.toml
    • Настройки: цветовая схема, часовой пояс, хоткеи
    • Загрузка конфига при старте