7.8 KiB
7.8 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: Дополнительные фичи [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- Настройки: цветовая схема, часовой пояс, хоткеи
- Загрузка конфига при старте