# Автообновления TTRPG Player ## Текущее состояние (фаза 1) - Продукт переименован в **TTRPG Player** / **НРИ Плеер** (`productName`: `TTRPGPlayer`, `appId`: `com.ttrpgplayer.app`). - CI по тегу `v*` **только собирает** установщики в каталог `release/` (Win NSIS, Linux AppImage x64/arm64). Пуш в Git-репозиторий **`DndGamePlayerUpdates`** **отключён**; скрипт `scripts/sync-update-feed.mjs` удалён. - В `package.json` → `build.publish.url` стоит заглушка `https://updates.invalid.ttrpg/` до настройки реального хоста. - Секреты **`DND_UPDATE_FEED_URL`**, **`DND_UPDATES_SERVER`**, **`UPDATES_REPO`**, **`DND_UPDATES_PUSH_TOKEN`** в workflow **больше не используются** — их можно удалить из настроек репозитория. - Публичный репозиторий **`DndGamePlayerUpdates` на Gitea можно удалить** (история с бинарниками ~4 GiB больше не нужна). Клиент по-прежнему использует **electron-updater** (generic provider). Пока URL заглушка, проверка обновлений в установленной сборке завершится ошибкой сети — это ожидаемо до фазы 2. ## Фаза 2 (план): статический VPS Цель: один HTTPS- origin без Git LFS и без роста репозитория. 1. VPS с **nginx** (или аналог), TLS (Let's Encrypt). 2. Каталог, например `/var/www/ttrpg-updates/`, с **фиксированными именами** файлов (без версии в имени установщика) или с semver в `latest*.yml` и прямыми URL на те же имена. 3. CI или ручной шаг: **rsync/scp** артефактов из `release/` на сервер после тега `v*`. 4. В приватном репозитории кода — секрет **`TTRPG_UPDATE_FEED_URL`** (со слэшем в конце), подстановка в `electron-builder` при сборке релиза. 5. Mac: ручная выкладка `.dmg` / `latest-mac.yml` на тот же origin (см. `docs/MANUAL_MAC_UPDATE_UPLOAD.md`). Детали CI для VPS будут добавлены отдельным PR после выбора хоста и схемы имён файлов. ## Локальная сборка релиза ```bash npm run pack # Win (на Windows) или см. CI npm run pack:linux # Linux AppImage npm run pack:mac # macOS (на Mac) npm run release:info # версия и пример тега vX.Y.Z ``` Артефакты: `TTRPGPlayer-Setup-.exe`, `TTRPGPlayer--.AppImage`, и т.д. (см. `package.json` → `build`). ## Gitea Actions (act_runner) - Workflow: `.gitea/workflows/release.yml` - Триггер: push тега `v*` - Runner label: `ubuntu-22.04` (как в настройках раннера) Если job падает на Wine/NSIS — см. комментарии в workflow (сборка Win на Linux без i386). ## Лицензия и обновления Проверка обновлений доступна только при **активной лицензии** (как и раньше). Продуктовые ключи на клиенте: **`TTRPG-…`** и устаревшие **`DND-…`**; новые ключи выдаёт сервер лицензий (отдельный репозиторий `DndGamePlayerLicenseServer` — смена префикса на сервере вне этого PR). ## Устаревшая схема (не использовать) Раньше артефакты пушились в публичный Git **`DndGamePlayerUpdates`**, ветка `updates`, URL вида `https://git.mailib.ru/.../DndGamePlayerUpdates/raw/branch/updates/`. Эта схема приводила к раздуванию репозитория, конфликтам merge, ENOSPC на раннере и HTTP 500 при `git push`. Она **снята с поддержки**.