# SHD Desktop Исходники настольного приложения SHD для Apple и Windows. ## Папки - `Apple/` — приложение macOS на Swift и WKWebView. - `Windows/` — место для версии Windows. ## Вход в macOS-приложении Пункт **«Учётная запись → Войти по passkey в системном браузере…»** открывает страницу авторизации текущего контура в браузере по умолчанию (или в Safari, если браузер по умолчанию не поддерживает такой вход). После входа приложение принимает одноразовый код и отправляет его в WKWebView, чтобы сервер создал веб-сессию для выбранного контура. Для работы сервер должен предоставить: 1. `GET /desktop-auth/authorize` с параметрами `client_id=shd-macos`, `redirect_uri=shd-auth://callback`, `response_type=code`, `state`, `code_challenge` и `code_challenge_method=S256`. После обычного входа, включая passkey, сервер возвращает браузер на `shd-auth://callback?code=…&state=…`. 2. `POST /desktop-auth/complete` с полями `code` и `code_verifier`. Сервер проверяет одноразовый код и PKCE, создаёт веб-сессию, устанавливает защищённую cookie и перенаправляет WKWebView на SHD. Код должен быть одноразовым, связанным с PKCE и действовать не более 60 секунд. Callback URI фиксирован в приложении. Маршрут завершения должен принимать только такой код и verifier; исключение CSRF-защиты допустимо только для этого маршрута при обязательной проверке кода и PKCE. ## Сборка macOS-приложения Из каталога `Apple/` запустить `./Scripts/build-app.sh`. Сборка создаёт проверенный архив `Apple/dist/SHD-macOS-arm64.zip` и не устанавливает приложение в `/Applications`.