diff --git a/desktop/README.md b/desktop/README.md index 97fccac..66d1a0c 100644 --- a/desktop/README.md +++ b/desktop/README.md @@ -357,14 +357,21 @@ python3 scripts/desktop-perf.py --runs 3 # 3 холодных старта + - **Аватары в уведомлениях** (thumb/буква) и группировка — сейчас иконка приложения. - **Захват экрана и микрофон**: разрешения macOS выдаёт webview, отдельных экранов-инструкций у обёртки нет. -- **Developer ID и нотаризация** macOS, EV/Trusted Signing для Windows — только - в CI с платными сертификатами (ниже — точные команды). +- **Подпись и нотаризация macOS — сознательно не делаются** (решение владельца + 26.09.2026): приложение распространяется неподписанным `.dmg`, карантин + снимает конечный пользователь (инструкция ниже). EV/Trusted Signing для + Windows — тем же решением не делаем. - **`.dmg`**: собирается из обычного терминала (Finder/AppleScript для раскладки окна); в песочнице агента `hdiutil create` и AppleScript запрещены, но образ **без оформления окна** собирается флагом `--sandbox-safe` к `bundle_dmg.sh` (проверено 2026-09-26, см. ниже). - **Windows/Linux-бандлы**: конфигурация кросс-платформенная, но собирались и - проверялись только macOS-arm64. + проверялись только macOS-arm64. Сборки под другие ОС **отложены**: репозиторий + живёт в Gitea на мини-ПК, а `windows-latest`/`ubuntu-24.04`-раннеры есть у + GitHub Actions, поэтому владелец зеркалит проект в GitHub позже и запускает + сборку там. Локальная часть готова и проверена: `make desktop-check`, + `scripts/desktop-release.sh --artifact … --target windows|linux` (манифест + обновления для каждой платформы складывается в общий файл версии). ## Что осталось оператору (точные команды) @@ -404,10 +411,33 @@ hdiutil verify glchat_0.1.0_aarch64.dmg Артефакты без `.dmg` (для автообновления) собираются где угодно: `make desktop-build-app`. -### macOS: подпись Developer ID и нотаризация +### macOS: подпись Developer ID и нотаризация — сознательно не делаем -Нужны сертификат Developer ID Application в связке ключей и пароль приложения -(appleid.apple.com → App-Specific Passwords): +**Решение владельца (2026-09-26): подпись Developer ID и нотаризацию не +делаем** — это платный аккаунт Apple Developer, а приложение распространяется +внутри своего круга. Распространяется **неподписанный** `.dmg`; действия при +первом запуске выполняет конечный пользователь (ниже). Подпись артефакта +обновления (ed25519, ключ инстанса) от этого не зависит и проверяется всегда — +её отсутствие или порча артефакта установку отменяют. + +Что делает конечный пользователь (короткая инструкция, её же можно передать +вместе с файлом): + +1. Открыть `.dmg` и перетащить `glchat` в `Applications`. +2. Первый запуск — **правый клик по приложению → «Открыть» → «Открыть»** в + диалоге «разработчик не может быть проверен». Дальше приложение запускается + обычным двойным кликом. +3. Если macOS не показывает кнопку «Открыть» (карантин): в терминале + `xattr -dr com.apple.quarantine /Applications/glchat.app`, либо «Системные + настройки → Конфиденциальность и безопасность → Всё равно открыть». + +Текущий установщик релиза 0.1.1: +`desktop/src-tauri/target/release/bundle/dmg/glchat_0.1.1_aarch64.dmg` +(3,1 МБ, sha256 `7f93609164dc5fdfe6255b88eaf909c02ba819a7e4fb79951cc50b142da825c0`). +Собирается `make desktop-build` (или `bundle_dmg.sh --sandbox-safe` в headless). + +Если однажды понадобится подпись, команды остаются прежними (переменные читает +сам Tauri, в репозиторий они не попадают): ```bash security find-identity -v -p codesigning # проверить наличие сертификата @@ -420,7 +450,6 @@ xcrun stapler validate desktop/src-tauri/target/release/bundle/macos/glchat.app spctl --assess --type execute --verbose=4 desktop/src-tauri/target/release/bundle/macos/glchat.app ``` -Переменные читает сам Tauri (`APPLE_*`), в репозиторий они не попадают. Проверка «не подписано»: `codesign -dv --verbose=4 ` покажет `Signature=adhoc`. ### Windows (x64): MSI/NSIS + подпись