This commit is contained in:
Mikhail Kilin
2026-01-31 03:48:50 +03:00
parent 1bf9b3d703
commit 644e36597d
37 changed files with 1070 additions and 600 deletions

View File

@@ -130,9 +130,13 @@ src/
├── lib.rs # Библиотечный интерфейс (для тестов)
├── types.rs # Типобезопасные обёртки (ChatId, MessageId, UserId)
├── config.rs # Конфигурация (TOML), загрузка credentials
├── error.rs # TeletuiError enum, Result<T> type alias
├── constants.rs # Константы проекта (MAX_MESSAGES_IN_CHAT, POLL_TIMEOUT_MS, etc.)
├── formatting.rs # Markdown форматирование (CharStyle, format_text_with_entities)
├── app/
│ ├── mod.rs # App структура и состояние (needs_redraw флаг)
── state.rs # AppScreen enum
── state.rs # AppScreen enum
│ └── chat_state.rs # ChatState enum (Normal, MessageSelection, Editing, etc.)
├── ui/
│ ├── mod.rs # Роутинг UI по экранам, проверка минимального размера
│ ├── loading.rs # Экран загрузки
@@ -140,7 +144,15 @@ src/
│ ├── main_screen.rs # Главный экран с папками
│ ├── chat_list.rs # Список чатов (pin, mute, online, mentions)
│ ├── messages.rs # Область сообщений (wrap, группировка, динамический инпут)
── footer.rs # Подвал с командами и статусом сети
── footer.rs # Подвал с командами и статусом сети
│ ├── profile.rs # Экран профиля пользователя/чата
│ └── components/ # Переиспользуемые UI компоненты
│ ├── mod.rs
│ ├── modal.rs
│ ├── input_field.rs
│ ├── message_bubble.rs
│ ├── chat_list_item.rs
│ └── emoji_picker.rs
├── input/
│ ├── mod.rs # Роутинг ввода
│ ├── auth.rs # Обработка ввода на экране авторизации
@@ -154,7 +166,7 @@ src/
├── messages.rs # MessageManager для сообщений
├── users.rs # UserCache с LRU кэшем
├── reactions.rs # ReactionManager
└── types.rs # Общие типы данных (ChatInfo, MessageInfo, etc.)
└── types.rs # Общие типы данных (ChatInfo, MessageInfo, MessageBuilder, etc.)
tests/
├── helpers/
@@ -299,6 +311,35 @@ reaction_other = "gray"
## Последние обновления (2026-01-31)
### P3.8 — Извлечение форматирования ✅ ЗАВЕРШЕНО!
**Что сделано**:
- ✅ Создан `src/formatting.rs` с логикой markdown форматирования (262 строки)
- ✅ Перенесены функции из `messages.rs`:
- `CharStyle` — структура для стилей символов (bold, italic, code, spoiler, url, mention)
- `format_text_with_entities()` — преобразование текста с entities в стилизованные Span
- `styles_equal()` — сравнение стилей
- `adjust_entities_for_substring()` — корректировка entities при переносе текста
- ✅ Добавлено 5 unit тестов для форматирования
- ✅ Обновлены `src/lib.rs` и `src/main.rs` для экспорта модуля
-`src/ui/messages.rs` сокращён на ~143 строки
-Все lib тесты проходят (17 passed)
- ✅ Бинарник компилируется успешно
**Преимущества**:
- 📦 Логика форматирования изолирована в отдельном модуле
- ✅ Можно тестировать независимо
- 🔄 Легко переиспользовать в других компонентах UI
- 📖 Улучшена читаемость кода
**Статус Priority 3**: 25% (2/8 задач) ✅
- ✅ P3.7 — UI компоненты
- ✅ P3.8 — Форматирование ← ТОЛЬКО ЧТО!
- ⏳ P3.9 — Группировка сообщений
- ⏳ P3.10 — Hotkey mapping
---
### 🎉🎊 PRIORITY 2 ЗАВЕРШЁН НА 100%! 🎊🎉
**P2.7 — MessageBuilder pattern** ✅ ФИНАЛЬНАЯ ЗАДАЧА ЗАВЕРШЕНА!
@@ -548,12 +589,14 @@ let message = MessageBuilder::new(MessageId::new(123))
4. ~~**MessageInfo реструктуризация**~~ ✅ — группировка полей в логические структуры (2026-01-31)
5. ~~**MessageBuilder pattern**~~ ✅ — fluent API для создания сообщений (2026-01-31)
**Завершено** (Priority 3): ✅ 1/4 (25%)
1. ~~**P3.7 — UI компоненты**~~ ✅ — выделение переиспользуемых компонентов (2026-01-31)
2. ~~**P3.8 — Форматирование**~~ ✅ — вынесено markdown форматирование в src/formatting.rs (2026-01-31)
**В работе** (Priority 3-5):
1. **UI компоненты** — выделение переиспользуемых компонентов
2. **MessageBuilder** — упрощение создания сообщений
3. **UI компоненты** — выделить переиспользуемые компоненты
4. **Форматирование** — вынести markdown форматирование в отдельный модуль
5. **Юнит-тесты** — добавить для utils и других модулей
1. **P3.9 — Группировка сообщений** — вынести логику группировки в отдельный модуль
2. **P3.10 — Hotkey mapping** — добавить настройку хоткеев в конфиг
3. **Юнит-тесты** — добавить для utils и других модулей
## Известные проблемы