# Launcher v1.1.2 publish steps

1. Artifacts must be publicly readable under:
   https://launcher.cdn.play-otopia.com/v1.1.2/<platform>/<file>
   (the workflow uploads them automatically when the B2 secrets are set;
   otherwise upload the `artifacts/` tree there yourself.)

2. With the LAUNCHER_PUBLISH_TOKEN secret set, the workflow already
   POSTed `latest-config.json` to /api/launcher/publish and the
   release is LIVE - nothing to paste. Manual fallback: paste every
   key into the website config (admin > configuration, category
   `launcher`) - the keys match the row names one for one. Setting
   `latest_version` LAST is the go-live switch:
   /launcher-updates/latest.json serves 204 until it is set.

3. Verify: `curl https://play-otopia.com/launcher-updates/latest.json`
   must list windows-x86_64, darwin-aarch64 and darwin-x86_64 with
   non-empty signatures.

4. Website download page links (first install, not self-update):
   - https://launcher.cdn.play-otopia.com/v1.1.2/windows-x86_64/Otopia_1.1.2_x64-setup.exe
   - https://launcher.cdn.play-otopia.com/v1.1.2/darwin-aarch64/Otopia.app.tar.gz
   - https://launcher.cdn.play-otopia.com/v1.1.2/darwin-aarch64/Otopia_1.1.2_aarch64.dmg
   - https://launcher.cdn.play-otopia.com/v1.1.2/darwin-x86_64/Otopia.app.tar.gz
   - https://launcher.cdn.play-otopia.com/v1.1.2/darwin-x86_64/Otopia_1.1.2_x64.dmg
   Windows users install the NSIS setup exe; macOS users take the DMG.
   (.app.tar.gz files are the self-update payloads; no need to link them.)

5. Optional kill switch: set `min_version` to force old launchers to
   update before login.

Rollback: point the url/sig rows back at the previous version's
artifacts and set `latest_version` accordingly - keep old version
directories on the CDN.
