Files
shd-desktop-app/README.md
T
bulava92 9074b82c0c
Windows desktop build / publish (push) Canceled after 0s
Document desktop clients and align passkey client ID
2026-10-28 16:19:19 +03:00

43 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SHD Desktop
Исходный код настольных приложений SHD для macOS и Windows. Оба приложения открывают веб-версию SHD в отдельном окне и поддерживают работу с DEV и PROD.
## Возможности и ограничения
- **macOS:** Swift, AppKit и WKWebView; вкладки и окна, печать, масштабирование, камера и микрофон. Сборка рассчитана на Apple Silicon и macOS 14 или новее.
- **Windows:** WPF и WebView2; окна и вкладки, загрузки, печать, масштабирование, системные диалоги сайта, камера и микрофон. Сборка рассчитана на Windows x64.
- **Passkey:** на странице входа приложение использует ту же кнопку passkey, что и сайт, и открывает вход в браузерной сессии. После входа ответ возвращается в приложение по `shd-auth://callback`.
- **Ограничение входа:** серверный поток настольной авторизации подключён только на DEV. В PROD вход по passkey в приложении пока не работает.
## Сборка macOS
Нужен Mac с Xcode Command Line Tools и Swift 6. Из корня репозитория выполните:
```sh
./Apple/Scripts/build-app.sh
```
Скрипт создаёт `Apple/dist/SHD-macOS-arm64.zip`. Внутри будет `SHD.app`; распакуйте архив и перенесите приложение в `/Applications`. Архив подписан локальной ad-hoc подписью и не нотарифицирован Apple.
## Сборка Windows
Для сборки нужны Windows x64 и .NET 10 SDK. В PowerShell из корня репозитория выполните:
```powershell
./Windows/Scripts/build.ps1
```
Скрипт создаёт `Windows/dist/SHD-Windows-x64.zip`, включающий приложение и сценарии установки. На компьютере пользователя .NET устанавливать не нужно; требуется Microsoft Edge WebView2 Runtime. Подробности установки и удаления описаны в [`Windows/README.md`](Windows/README.md).
GitHub Actions запускает Windows-сборку при изменениях в `Windows/` и вручную через workflow **Windows desktop build**. ZIP появляется в артефактах только после успешной сборки.
## Вход по passkey
Нажатие существующей кнопки passkey на сайте запускает поток настольной авторизации:
1. Приложение открывает `/desktop-auth/authorize` в браузере с `client_id=shd-desktop`, `redirect_uri=shd-auth://callback`, случайными `state` и PKCE challenge (S256).
2. После обычного входа сервер возвращает одноразовый код и `state` приложению через `shd-auth://callback`.
3. Приложение отправляет код и PKCE verifier в теле POST-запроса на `/desktop-auth/complete` из своего WebView. Сервер создаёт обычную веб-сессию, поэтому cookie остаётся в профиле приложения.
Код одноразовый и ограничен по времени. В приложениях нельзя включить PROD-вход одной настройкой: сервер должен отдельно разрешить и развернуть поток на PROD.