Два требования desktop-клиента (docs/client-tauri.md §5), которые живут в
веб-слое — том же, что и в браузере:
- **Палитра команд.** Ctrl/Cmd+K (на документе или сообщением `openPalette` от
обёртки) открывает быстрый переход: серверы (в первую доступную комнату),
комнаты выбранного сервера с группировкой по категориям, личные беседы из уже
загруженного снапшота, действия (настройки профиля/безопасности/внешнего вида,
настройки сервера, создание сервера, друзья, микрофон и «не слышу» при
активной голосовой сессии). Новых запросов палитра не делает; поиск по
подстроке без учёта регистра, 8 пунктов на раздел, стрелки со
`scrollIntoView`, `role=listbox/option` и `aria-activedescendant`;
- **Подтверждение выхода.** Формы с локальным черновиком регистрируются в общем
реестре (`stores/unsaved.ts` + хук `useUnsavedChanges`): платформа получает
один `setDirty` на переход «есть правки / нет правок», а на сообщение обёртки
`closeRequested` клиент отвечает тряской контента и диалогом «Сохранить /
Выйти без сохранения». При `prefers-reduced-motion: reduce` тряску заменяет
подсветка рамки; в браузере вместо сообщения обёртки работает штатный
`beforeunload`. Хук добавлен в формы с явной кнопкой «Сохранить»:
профиль, общие настройки сервера, ник, эмодзи, звуки, оформление, вебхуки,
лимиты инстанса, переименование сервера (автосохраняемые переключатели
намеренно не помечаются);
- Deep link `glchat://dm/<channelId>` (личная беседа без сервера) — его
присылает обёртка при клике по уведомлению о личном сообщении.
Тесты: 525 passed (501 база + 24 новых) — палитра, реестр правок, диалог
закрытия, `beforeunload`, разбор ссылок; `npm run check` и `npm run lint` зелёные.
Первый инкремент Фазы 6 (docs/client-tauri.md): окно с тем же веб-клиентом
(по умолчанию https://gl.mhspx.su, адрес настраивается), трей с меню и
индикатором непрочитанных, нативные уведомления, глобальный push-to-talk и
переключение микрофона/deafen, автозапуск, single-instance, сохранение
геометрии окна, deep links glchat://…, автообновление по подписанному
манифесту.
Связь страницы с обёрткой — через платформенный адаптер
(web/src/lib/platform.ts) и минимальный типизированный набор команд;
в веб-клиенте появились системные уведомления об упоминаниях и личных
сообщениях и переключатель в настройках.
В web/src/stores/gateway.ts вместе с вызовом уведомления лежат правки по
дефектам realtime (READY и сессии) из параллельной волны: файл коммитится
целиком по договорённости с координатором.