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:
61
CONTEXT.md
61
CONTEXT.md
@@ -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. При первом запуске нужно пройти авторизацию
|
||||
|
||||
Reference in New Issue
Block a user