3.4 KiB
3.4 KiB
Hotkeys System - VoIdea
Дата: 2026-05-10 Статус: Backlog (часть WebUI)
Обзор
Настраиваемая система горячих клавиш для быстрого управления приложением.
Структура хранения
База данных (primary)
CREATE TABLE user_hotkeys (
id UUID PRIMARY KEY,
user_id UUID REFERENCES users(id),
action VARCHAR(50) NOT NULL,
key_combination VARCHAR(100) NOT NULL,
modifier VARCHAR(20),
created_at TIMESTAMP,
updated_at TIMESTAMP
);
localStorage (backup for offline)
// Ключ: 'voidea_hotkeys'
{
"new_idea": "ctrl+n",
"save": "ctrl+s",
"search": "/"
}
Синхронизация
- При входе → загрузить настройки из БД
- При изменении → обновить БД и localStorage
- При оффлайн → использовать localStorage
- При восстановлении → sync БД → localStorage
Дефолтные горячие клавиши
| Действие | Клавиша | Описание |
|---|---|---|
| Новая идея | Ctrl+N |
Создать новую идею |
| Сохранить | Ctrl+S |
Сохранить текущее |
| Поиск | / |
Фокус на поиск |
| Навигация вверх | J или ↑ |
Предыдущая идея |
| Навигация вниз | K или ↓ |
Следующая идея |
| Отправить на анализ | Ctrl+Enter |
Запустить ИИ-анализ |
| Настройки | Ctrl+, |
Открыть настройки |
| Помощь | ? |
Показать справку |
| Отмена | Escape |
Закрыть модалку |
| Undo | Ctrl+Z |
Отменить действие |
| Redo | Ctrl+Shift+Z |
Повторить действие |
UI настройки
Страница настроек
├── Настройки
│ ├── Горячие клавиши
│ │ ├── Список действий
│ │ ├── Поле ввода (нажмите клавишу)
│ │ ├── Сброс на дефолт
│ │ └── Сохранить
Ввод новой комбинации
- Клик на поле ввода
- Нажатие клавиши/комбинации
- Автоматическое сохранение
- Валидация (не конфликтует с системой)
Обработка конфликтов
- Системные клавиши (Ctrl+Alt+Del) — запрещено переназначать
- Браузерные (Ctrl+T) — предупреждение
- Между пользователями — индивидуально
Поддерживаемые модификаторы
Ctrl/Cmd(Mac)Alt/OptionShift- Комбинации:
Ctrl+Shift+N
TODO
- Создать модель user_hotkeys
- Реализовать хуки для клавиш
- Добавить UI настроек
- Синхронизация БД ↔ localStorage
- Обработка конфликтов
- Тесты
- Документация для пользователей
Создано: 2026-05-10 Часть WebUI (Block 4)