# PAPA YU — сборка DMG и обновления ## Единые пути и связи | Назначение | Значение | |------------|----------| | Репозиторий | `https://github.com/yrippert-maker/papayu` | | Обновления (endpoint) | `https://github.com/yrippert-maker/papayu/releases/latest/download/latest.json` | | Установка приложения (macOS) | `/Applications/PAPA YU.app` (рекомендуется) | | Данные приложения | Системная папка приложения (Tauri `app_data_dir`) — не зависит от $HOME | | Логотип в проекте | `desktop/src-tauri/icons/icon_source.png`, `desktop/ui/public/logo-papa-yu.png` | | Путь проекта при сборке | Задаётся переменной `PAPAYU_PROJECT_ROOT`; по умолчанию `$HOME/PAPA-YU` | Конфиг: `desktop/src-tauri/tauri.conf.json` (пути сборки, `plugins.updater.endpoints`). Чтобы сборка работала из другого каталога, задайте `export PAPAYU_PROJECT_ROOT=/путь/к/PAPA-YU` перед `cargo tauri dev` или `cargo tauri build`. --- ## Сборка DMG (один запускающий файл) Из корня проекта (или из `desktop/src-tauri`): ```bash cd ~/PAPA-YU/desktop/src-tauri cargo tauri build ``` Результат на macOS: - **.app:** `desktop/src-tauri/target/release/bundle/macos/PAPA YU.app` - **.dmg:** `desktop/src-tauri/target/release/bundle/dmg/` (если targets включают dmg) Только DMG: ```bash cargo tauri build --bundles dmg ``` Пользователь открывает DMG → перетаскивает «PAPA YU» в «Программы» → запускает приложение. Дальнейшие изменения — через кнопку обновления в приложении. --- ## Кнопка обновления (новый логотип) В интерфейсе рядом с логотипом PAPA YU есть кнопка с иконкой логотипа и стрелкой загрузки. По нажатию: 1. Проверяется наличие новой версии по GitHub Releases. 2. При наличии — скачивание и установка, затем перезапуск приложения. Единая точка входа для обновлений — эта кнопка; пути и URL заданы в конфиге. --- ## Подписание обновлений (обязательно для updater) **Ключи (публичный и приватный) вы получаете из команды генерации, указанной ниже.** Публичный ключ вставляется в конфиг; приватный — хранится локально и в GitHub Secrets для подписи релизов. --- ### Как сгенерировать ключи **Один блок команд** (выполните в **терминале** — команда запросит пароль для защиты ключа; можно нажать Enter для пустого пароля): ```bash mkdir -p ~/.tauri cd ~/PAPA-YU/desktop/src-tauri cargo tauri signer generate -w ~/.tauri/papayu.key ``` В проекте нет Tauri CLI в npm, поэтому используется **`cargo tauri signer generate`** из каталога `desktop/src-tauri` (нужен установленный Rust и Cargo). При запросе пароля введите свой или нажмите Enter для пустого пароля. После выполнения в консоль будет выведен **публичный ключ** — скопируйте его целиком для шага «Вставить публичный ключ» ниже. Приватный ключ сохранится в `~/.tauri/papayu.key`. --- **По шагам:** 1. **Создайте каталог для ключа** (опционально): ```bash mkdir -p ~/.tauri ``` 2. **Перейдите в каталог Tauri и запустите генерацию ключей** (обязательно в **интерактивном терминале** — команда запросит пароль): ```bash cd ~/PAPA-YU/desktop/src-tauri cargo tauri signer generate -w ~/.tauri/papayu.key ``` Флаг `-w` (или `--write-keys`) задаёт файл, **куда будет записан приватный ключ**. Путь `~/.tauri/papayu.key` — пример; можно использовать свой (например `./papayu.key` в репозитории, но тогда не коммитьте этот файл). 3. **Результат команды:** - В консоль выведется **публичный ключ** — длинная строка, обычно начинается с `dW50cnVzdGVk...` или похожего (base64). - **Приватный ключ** сохраняется в файл, указанный в `-w` (например `~/.tauri/papayu.key`). Этот файл никому не передавайте и не добавляйте в репозиторий. 4. **Куда подставить ключи:** - **Публичный ключ** — в `desktop/src-tauri/tauri.conf.json` в блоке `plugins.updater.pubkey` (замените заглушку `REPLACE_WITH_PUBLIC_KEY_AFTER_tauri_signer_generate` на выведенную строку целиком). - **Приватный ключ** — для локальной подписи передаётся через переменную окружения `TAURI_SIGNING_PRIVATE_KEY` или через файл `-w`. Для GitHub Actions добавьте содержимое файла `~/.tauri/papayu.key` в секрет репозитория с именем `TAURI_SIGNING_PRIVATE_KEY`. **Проверка:** после подстановки публичного ключа в конфиг пересоберите приложение и опубликуйте релиз с подписью; кнопка «Проверить обновления» в приложении должна перестать выдавать ошибку подписи. --- Обновления должны быть подписаны. Один раз: 1. Сгенерировать ключи (см. раздел «Как сгенерировать ключи» выше). 2. Вставить публичный ключ в `desktop/src-tauri/tauri.conf.json`: ```json "plugins": { "updater": { "endpoints": ["https://github.com/yrippert-maker/papayu/releases/latest/download/latest.json"], "pubkey": "ВАШ_ПУБЛИЧНЫЙ_КЛЮЧ" } } ``` Сейчас в конфиге стоит заглушка `REPLACE_WITH_PUBLIC_KEY_AFTER_tauri_signer_generate` — замените на ключ из шага 1. 3. При сборке релиза подписывать артефакты приватным ключом (переменная `TAURI_SIGNING_PRIVATE_KEY` или `-w ~/.tauri/papayu.key`). Для GitHub Releases можно использовать [tauri-action](https://github.com/tauri-apps/tauri-action) с опцией подписания и публикации `latest.json`. После этого кнопка обновления будет работать с единым endpoint и путями, заданными выше.