Composer Pillar 4: история отправок через ArrowUp/Down
Что изменилось
Первая из пяти «polish»-возможностей Composer Pillar 4 реализована: история отправленных сообщений с навигацией через стрелки клавиатуры — как в Shell или браузерной адресной строке.
- ArrowUp из пустого поля показывает последнее отправленное сообщение. Повторное нажатие — предыдущее. Стек хранит до 100 записей с FIFO-вытеснением старых.
- Scratch-буфер: если вы начали набирать текст и нажали ArrowUp, незавершённый ввод сохраняется. ArrowDown в конце стека восстанавливает его — ничего не теряется.
- Дедупликация: если вы отправили то же сообщение, что и предыдущее, дубликат не добавляется в стек — история остаётся чистой.
- Изоляция по сессии: при переключении на другую сессию стек очищается. История каждой сессии независима.
- Конфликт с меню: если открыто slash-меню или mention-меню, ArrowUp обрабатывается ими. История активируется только из пустого поля без открытого меню.
- 10 unit-кейсов на чистый reducer, 5 RTL integration-сценариев на компонент. Coverage 94%.
Где попробовать
Откройте любую сессию, напишите и отправьте 2-3 сообщения. Нажмите ArrowUp в пустом поле композера — появится последнее. Навигируйте вверх/вниз. Попробуйте начать новый текст и нажать ArrowUp — scratch сохранится.
Технические детали: состояние реализовано как чистый функциональный reducer без мутаций. Интеграция с FreeFormInput использует useReducer + useCallback для мемоизации keyboard handlers. Ownership matrix решена: при открытом slash-меню или mention-меню ArrowUp передаётся меню, не истории — никаких конфликтов навигации.
Связанное
Дорожная карта: Чат и Композер v2. Следующие: emphasis toolbar (B/I/code/strike), line-numbers gutter, paste-image dialog.