refactor: add hotkey mapping configuration (P3.10)

- Add HotkeysConfig structure in src/config.rs
- Implement matches(key: KeyCode, action: &str) method
- Support for 10 configurable hotkeys:
  * Navigation: up, down, left, right (vim + russian + arrows)
  * Actions: reply, forward, delete, copy, react, profile
- Add support for char keys and special keys (Up, Down, Delete, etc)
- Add default values for all hotkeys (english + russian layouts)
- Write 9 unit tests (all passing)
- Add rustdoc documentation with examples
- Update REFACTORING_ROADMAP.md (Priority 3: 4/4 tasks, 100%)
- Update CONTEXT.md with implementation details
- Overall refactoring progress: 12/17 tasks (71%)

Priority 3 is now 100% complete! 🎉

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Mikhail Kilin
2026-01-31 23:51:10 +03:00
parent 0ca3da54e7
commit 1629c0fc6a
3 changed files with 444 additions and 20 deletions

View File

@@ -779,6 +779,67 @@ let message = MessageBuilder::new(MessageId::new(123))
- Интеграция message_grouping в messages.rs
- Реализация message_bubble.rs (теперь разблокировано!)
### 31 января 2026 (поздняя ночь) — Рефакторинг Priority 3: Hotkey Mapping ✅
1. **Создана структура HotkeysConfig**
- **Файл**: `src/config.rs` (расширен на ~230 строк)
- **Реализовано**:
- Структура `HotkeysConfig` с 10 полями hotkeys
- Навигация: up, down, left, right (vim + русские + стрелки)
- Действия: reply, forward, delete, copy, react, profile (англ + русские)
- Метод `matches(key: KeyCode, action: &str) -> bool`
- Приватный метод `key_matches()` для проверки соответствия
- Поддержка специальных клавиш (Up, Down, Delete, Enter, Esc, и др.)
- Дефолтные значения для всех hotkeys
- Default impl для HotkeysConfig
2. **Добавлены unit тесты**
- 9 unit тестов для HotkeysConfig:
- test_hotkeys_matches_char_keys
- test_hotkeys_matches_arrow_keys
- test_hotkeys_matches_vim_keys
- test_hotkeys_matches_russian_vim_keys
- test_hotkeys_matches_special_delete_key
- test_hotkeys_does_not_match_wrong_keys
- test_hotkeys_does_not_match_wrong_actions
- test_hotkeys_unknown_action
- test_config_default_includes_hotkeys
3. **Обновлены файлы проекта**
- Добавлен import `crossterm::event::KeyCode` в config.rs
- Поле `hotkeys` добавлено в структуру `Config`
- `Config::default()` включает `hotkeys: HotkeysConfig::default()`
- Обновлен `REFACTORING_ROADMAP.md`:
- P3.10 отмечено как завершённое ✅
- **Priority 3: 4/4 задач (100%) 🎉🎉**
- **Общий прогресс рефакторинга: 12/17 задач (71%)**
4. **Поддержка конфигурации**
- Пользователи теперь могут настроить hotkeys в `~/.config/tele-tui/config.toml`:
```toml
[hotkeys]
up = ["k", "р", "Up"]
down = ["j", "о", "Down"]
reply = ["r", "к"]
forward = ["f", "а"]
delete = ["d", "в", "Delete"]
copy = ["y", "н"]
react = ["e", "у"]
profile = ["i", "ш"]
```
5. **Результаты**:
- ✅ Код компилируется успешно
-Все тесты проходят
- ✅ Готово к интеграции в input handlers
**🎉 Priority 3 ЗАВЕРШЁН НА 100%! 🎉**
**Следующие шаги рефакторинга**:
- Priority 4: Качество кода (unit тесты, rustdoc, config validation, async/await)
- Priority 5: Опциональные улучшения (feature flags, LRU cache, tracing)
- Интеграция message_grouping в messages.rs
- Реализация message_bubble.rs
## Известные проблемы
1. При первом запуске нужно пройти авторизацию