feat(phase1): rebrand to TTRPG Player and drop Git updates feed

Rename product to TTRPG Player (TTRPGPlayer / com.ttrpgplayer.app), use .ttrpg.zip for new saves while keeping .dnd.zip import, accept TTRPG- and DND- license keys on client, and remove sync-update-feed plus CI push to DndGamePlayerUpdates.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Ivan Fontosh
2026-05-17 20:56:14 +08:00
parent 2c03921d23
commit 7c858ba633
27 changed files with 253 additions and 1328 deletions
+20 -141
View File
@@ -1,159 +1,38 @@
# Ручная выкладка macOS-обновлений в публичный feed
# Ручная выкладка macOS-обновлений (TTRPG Player)
Инструкция для случая, когда **сборка делается на вашем Mac вручную**, а файлы для `electron-updater` нужно **вручную** положить в публичный репозиторий обновлений.
До настройки VPS (фаза 2) mac-сборка выполняется **локально на Mac**. Артефакты нужно будет положить на тот же HTTPS-origin, что и Win/Linux (`build.publish.url`).
Общая схема проекта: приватный репозиторий с кодом, публичный **`DndGamePlayerUpdates`**, ветка **`updates`**, URL feed как в `package.json`:
`https://git.mailib.ru/ifontosh/DndGamePlayerUpdates/raw/branch/updates/`
---
## 1. Что собрать на Mac
В каталоге проекта `dnd_player`:
## Сборка на Mac
```bash
cd /путь/к/dnd_player
npm ci
npm run build
npm run pack:mac
```
Сборка установщиков только под macOS (без публикации в сеть, только файлы в `release/`):
В `release/` появятся, например:
- `TTRPGPlayer-<version>-x64.dmg` (и arm64 при универсальной сборке)
- `latest-mac.yml` (если включена публикация generic при сборке)
Для локальной проверки updater можно временно указать URL:
```bash
npx electron-builder --mac --publish never \
--config.publish.provider=generic \
--config.publish.url="https://git.mailib.ru/ifontosh/DndGamePlayerUpdates/raw/branch/updates/"
--config.publish.url="https://YOUR-UPDATE-HOST/"
```
**Важно:** значение `--config.publish.url=...` должно совпадать с `package.json``build.publish.url` (**со слэшем в конце**). Так внутри приложения и в `latest-mac.yml` будет корректный базовый URL для скачивания.
(подставьте реальный origin со слэшем в конце)
После сборки откройте папку **`release/`** в корне проекта. Там должны быть, среди прочего:
## Фаза 2: выкладка на статический хост
- **`latest-mac.yml`** — обязателен для `electron-updater` на Mac;
- **`.dmg`** и/или **`.zip`** — то, на что ссылается `latest-mac.yml`;
- при необходимости **`.blockmap`** (если electron-builder их создал) — заливайте с теми же именами, что указаны в `latest-mac.yml`.
1. Скопировать на сервер обновлений:
- `latest-mac.yml`
- `.dmg` / `.zip` с именами, на которые ссылается yml
2. Проверить в браузере: `https://YOUR-UPDATE-HOST/latest-mac.yml`
3. В установленном приложении: **Настройки → Проверить обновления** (нужна активная лицензия).
Имена файлов зависят от версии и архитектур (в конфиге dmg и zip для **x64** и **arm64**). На Apple Silicon без дополнительных шагов часто получается только **arm64**; для отдельного Intel-сборщика нужна своя машина или параметры arch — ориентируйтесь на фактический список файлов в `release/`.
## Устаревшая схема (Git feed)
---
## 2. Куда заливать
Файлы должны оказаться в **публичном** репозитории:
| Параметр | Значение |
| ------------ | ------------------------------------------------------------------------- |
| Репозиторий | `ifontosh/DndGamePlayerUpdates` (подставьте свой owner/repo, если другой) |
| Ветка | `updates` |
| Расположение | **корень ветки** (не подпапка) |
Проверка: в браузере должен открываться, например:
`https://git.mailib.ru/ifontosh/DndGamePlayerUpdates/raw/branch/updates/latest-mac.yml`
Файлы Windows (`latest.yml`, `.exe`, …), которые кладёт CI, должны **остаться** в том же корне. Вы **добавляете или обновляете** только macOS-артефакты и **`latest-mac.yml`**, не удаляя артефакты Windows (если не делаете осознанную зачистку старых версий).
---
## 3. Способ A — через `git` (удобно для больших dmg)
### 3.1. Клон и ветка `updates`
```bash
cd ~/где-удобно
git clone https://git.mailib.ru/ifontosh/DndGamePlayerUpdates.git
cd DndGamePlayerUpdates
git fetch origin
git checkout updates
```
Если ветки `updates` ещё нет:
```bash
git checkout main
git pull
git checkout -b updates
git push -u origin updates
```
Дальше для каждой выкладки работайте в ветке **`updates`**.
### 3.2. Актуализировать локальную копию
```bash
git checkout updates
git pull origin updates
```
### 3.3. Скопировать файлы из `release/` в корень клона
```bash
cp /путь/к/dnd_player/release/latest-mac.yml .
cp /путь/к/dnd_player/release/*.dmg .
cp /путь/к/dnd_player/release/*.zip .
# blockmap, если есть:
cp /путь/к/dnd_player/release/*.blockmap . 2>/dev/null || true
```
Проверка, что Windows-файлы на месте:
```bash
ls -la
```
### 3.4. Коммит и push
```bash
git add latest-mac.yml *.dmg *.zip
git add *.blockmap 2>/dev/null || true
git status
git commit -m "mac: DNDGamePlayer vX.Y.Z (ручная выкладка)"
git push origin updates
```
Для HTTPS обычно используют **персональный токен (PAT)** Gitea вместо пароля, либо настроенный **SSH** (`git@git.mailib.ru:ifontosh/DndGamePlayerUpdates.git`).
### 3.5. Проверка
- Откройте `latest-mac.yml` по raw-URL (см. выше).
- Откройте в браузере прямую ссылку на один из `.dmg` из этого YAML — не должно быть 404.
---
## 4. Способ B — через веб-интерфейс Gitea
Подходит для редких правок; для больших **dmg** удобнее git.
1. Репозиторий `DndGamePlayerUpdates` → ветка **`updates`**.
2. Загрузить или изменить **`latest-mac.yml`** и бинарники (**имена как в `release/`**).
3. Не удалять при этом файлы Windows в корне, если они нужны для PC-обновлений.
---
## 5. Версии и Windows
- В **`latest-mac.yml`** и в именах файлов должна быть та **версия приложения**, которую вы отдаёте пользователям Mac (как в `package.json` на момент сборки).
- **`latest.yml`** (Windows) и **`latest-mac.yml`** (Mac) — разные файлы; версии на платформах могут совпадать или нет. Каждая ОС читает свой YAML.
---
## 6. Подпись кода (кратко)
Без **Developer ID** и при необходимости **нотаризации** macOS может ограничивать запуск после скачивания. На процедуру «залить файлы в репо» это не влияет, но влияет на UX после автообновления. Для продакшена имеет смысл позже настроить `CSC_LINK`, `CSC_KEY_PASSWORD` и нотаризацию по [документации electron-builder](https://www.electron.build/).
---
## 7. Чеклист
1. Локально собрали Mac с `--publish never` и верным `publish.url`.
2. В `release/` есть **`latest-mac.yml`** и все объекты, на которые он ссылается.
3. В ветке **`updates`** в корне репозитория обновили/добавили эти файлы, не снеся Windows-артефакты без необходимости.
4. Проверили raw-URL **`latest-mac.yml`** и ссылку на dmg.
5. В **упакованном** приложении с **активной лицензией** сработает существующий `electron-updater` (задержка первой проверки и cooldown — см. `app/main/update/installAutoUpdater.ts`).
---
## Связанные документы
- Общая схема Gitea, секреты, раннер: [GITEA_AUTO_UPDATE.md](./GITEA_AUTO_UPDATE.md).
Раньше файлы коммитили в репозиторий **`DndGamePlayerUpdates`**, ветка `updates`. Этот способ **больше не используется** — репозиторий можно удалить на Gitea.