diff --git a/AGENTS.md b/AGENTS.md index 49f6428..7310225 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -5,8 +5,8 @@ Cross-platform desktop launcher for the ShaCraft Minecraft network. It is a Tauri 2 application: React/Vite is the UI and Rust owns all filesystem, network and process-adjacent work. Profiles are **Aeronautics** (Minecraft 1.21.1, NeoForge 21.1.248, Java 21) -and **Minigames** (Minecraft 26.2, Fabric 0.19.5, Java 25). See the staged -Minigames integration record below; published launcher status is separate. +and **Minigames** (Minecraft 26.2, Fabric 0.19.5, Java 25). See the Minigames +integration record below and `docs/release-0.1.6.md` for publication evidence. This repository owns the launcher only. The server-side API and published payload are in `/root/shacraft` on the ShaCraft host; see @@ -220,7 +220,7 @@ signed-manifest retrieval and download/repair/restoration of the admission jar only in a temporary directory. Mac 0.1.5 connection failure remains unclassified pending exact error/log; this is not a verified macOS fix or desktop UI test. -## Minigames integration (2026-09-13, staged) +## Minigames integration (2026-09-13, published in 0.1.6) - Native profile mapping is fixed: aeronautics → aoc; minigames → minigames. Both display/claim the canonical existing aoc nickname. The backend enforces @@ -245,3 +245,13 @@ pending exact error/log; this is not a verified macOS fix or desktop UI test. - Production updater publication requires a separately built, monotonically newer launcher release and existing operator signatures. Source tests or a client jar alone do not update installed 0.1.5 launchers. + +Launcher 0.1.6 was built from `799fa692` on `codex/launcher-updater`; divergent +`main` remains unchanged. All four native CI builds, UI/native checks and 18 +publisher signature tests pass. The unchanged Fabric companion completed a +real Minecraft 26.2 → Paper configuration handshake with a synthetic account; +its CI artifact is byte-identical. All eight public packages and the stable +feed were signed with the existing local updater key and verified through +public HTTPS downloads. See `docs/release-0.1.6.md` and its committed receipt. +This records successful release/admission verification, not a Windows/macOS +cold install or OS signing/notarization certification. diff --git a/README.md b/README.md index 5b5f31f..57ede57 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,8 @@ React/TypeScript интерфейс, Rust — файлы, сеть и запус Реализованы отдельные профили Aeronautics (Minecraft 1.21.1, NeoForge, Java 21) и Minigames (Minecraft 26.2, Fabric, Java 25), подписанная синхронизация файлов, проверка/восстановление модов и конфигурации, установка игры и Java, настройки -памяти, обработка установки/запуска/выхода. Minigames добавлен в кандидате 0.1.6; -статус публикации фиксируется в [записи релиза](docs/release-0.1.6.md). +памяти, обработка установки/запуска/выхода. Minigames опубликован в 0.1.6; +проверки и результаты публикации — в [записи релиза](docs/release-0.1.6.md). Вход выполняется через аккаунт ShaCraft — тот же, что на сайте. Игровой ник общий для обоих профилей и берётся только из подтверждённой привязки `aoc`. diff --git a/docs/release-0.1.6.md b/docs/release-0.1.6.md index 4056938..3e54862 100644 --- a/docs/release-0.1.6.md +++ b/docs/release-0.1.6.md @@ -1,4 +1,4 @@ -# Launcher 0.1.6 candidate +# Launcher 0.1.6 release Adds a separate Minigames profile (Minecraft 26.2 / Fabric 0.19.5 / Java 25) while keeping Aeronautics and its installed profile intact. Both use the @@ -10,9 +10,21 @@ Local checks: 87 native tests, 33 UI tests, TypeScript/Vite, three Java client proof tests, an official Fabric metadata resolution check and the Linux native release build. The [real Fabric/Paper smoke](verification/minigames-fabric-2026-09-13.json) passed with a synthetic account: the unchanged production companion entered -the lobby and the backend consumed its Minigames ticket. Cross-platform CI -and production rollout results must be recorded before calling this published. No updater feed has -been changed by preparing this candidate. +the lobby and the backend consumed its Minigames ticket. Published on 2026-09-13: +all four cross-platform jobs succeeded in [build run 34778218510](https://github.com/emil28092005/shacraft-launcher/actions/runs/34778218510) +at runtime source `799fa692ef5e775f0044fe300f65fd4564771d47`. +[Checks run 34778334417](https://github.com/emil28092005/shacraft-launcher/actions/runs/34778334417) +passed at `5b741771b4668a834a2c5b757379340f11b8ae3a`; the only difference is the +CI job that runs all 18 publisher signature tests on Ubuntu 24.04. The CI Fabric +jar exactly matches the one used by the real client smoke. + +All eight packages were signed locally, verified again on the server, and +published after a successful dry-run. Full public HTTPS downloads match the +recorded SHA-256 values; package signatures and the public feed signature pass. +The feed payload equals the locally signed canonical bytes. See the +[publication receipt](verification/launcher-release-0.1.6.json). The previous +0.1.5 feed was backed up; its packages remain unchanged. The private key stayed +on the operator workstation. ## Build contract @@ -23,7 +35,7 @@ Push the reviewed commit to the production branch, then dispatch `gh workflow run build.yml --ref codex/launcher-updater --repo emil28092005/shacraft-launcher`. The check workflow runs on branch pushes. Verify each run's head SHA equals the reviewed commit before downloading artifacts. A main push also triggers the -build matrix, but is not the publication path for this candidate. +build matrix, but was not the publication path for this release. CI publishes unsigned artifacts named: - `shacraft-launcher-linux-x64`: AppImage and deb. diff --git a/docs/verification/launcher-release-0.1.6.json b/docs/verification/launcher-release-0.1.6.json new file mode 100644 index 0000000..862e0f3 --- /dev/null +++ b/docs/verification/launcher-release-0.1.6.json @@ -0,0 +1,84 @@ +{ + "recorded_at": "2026-09-13T20:03:46.913196+00:00", + "version": "0.1.6", + "source_sha": "799fa692ef5e775f0044fe300f65fd4564771d47", + "branch": "codex/launcher-updater", + "build_run": 34778218510, + "checks_run": 34778334417, + "stable_feed": "https://shacraft.ru/launcher/updates/stable.json", + "feed_sha256": "342876aee8760a984421889cec1453dd642ebf988ab2bad27f23ea4f4f203f8d", + "feed_signature_verified": true, + "feed_payload_equals_locally_signed_payload": true, + "platforms": [ + "darwin-aarch64", + "darwin-x86_64", + "linux-x86_64", + "linux-x86_64-appimage", + "linux-x86_64-deb", + "windows-x86_64" + ], + "artifacts": [ + { + "artifact": "ShaCraft.Launcher_0.1.6_amd64.AppImage", + "url": "https://shacraft.ru/downloads/shacraft-launcher/0.1.6/ShaCraft.Launcher_0.1.6_amd64.AppImage", + "size": 83274232, + "sha256": "fa01905baddebd08b59ab7855009f0b29df02fcd3813941a0190f5135ff58f7c", + "public_signature_verified": true + }, + { + "artifact": "ShaCraft.Launcher_0.1.6_amd64.deb", + "url": "https://shacraft.ru/downloads/shacraft-launcher/0.1.6/ShaCraft.Launcher_0.1.6_amd64.deb", + "size": 5997818, + "sha256": "01621fde16f6fc1ca453acffb1d22d664c8d8b60909d22a8aa2af10ac80d8737", + "public_signature_verified": true + }, + { + "artifact": "ShaCraft.Launcher_0.1.6_x64-setup.exe", + "url": "https://shacraft.ru/downloads/shacraft-launcher/0.1.6/ShaCraft.Launcher_0.1.6_x64-setup.exe", + "size": 3793645, + "sha256": "0bb2a577d88d4387f23efcd28b19bf83e373b1b10c5cbbb5d6e0f69428d9f9ab", + "public_signature_verified": true + }, + { + "artifact": "ShaCraft.Launcher_0.1.6_x64_en-US.msi", + "url": "https://shacraft.ru/downloads/shacraft-launcher/0.1.6/ShaCraft.Launcher_0.1.6_x64_en-US.msi", + "size": 5554176, + "sha256": "8a53a9d8d6dbdd98238b294df604fe5050375e64709dfdff942bf60fcd61519b", + "public_signature_verified": true + }, + { + "artifact": "ShaCraft.Launcher_0.1.6_aarch64.app.tar.gz", + "url": "https://shacraft.ru/downloads/shacraft-launcher/0.1.6/ShaCraft.Launcher_0.1.6_aarch64.app.tar.gz", + "size": 5876796, + "sha256": "c113afc0794eaa6788cb994e7d84f821d22573d559f3cddfb0bcd5c2cad557cf", + "public_signature_verified": true + }, + { + "artifact": "ShaCraft.Launcher_0.1.6_aarch64.dmg", + "url": "https://shacraft.ru/downloads/shacraft-launcher/0.1.6/ShaCraft.Launcher_0.1.6_aarch64.dmg", + "size": 6420101, + "sha256": "0391a1d4afa6cb21663f1f8de367ecdd68a51656db48e86ad0bec617270c6036", + "public_signature_verified": true + }, + { + "artifact": "ShaCraft.Launcher_0.1.6_x86_64.app.tar.gz", + "url": "https://shacraft.ru/downloads/shacraft-launcher/0.1.6/ShaCraft.Launcher_0.1.6_x86_64.app.tar.gz", + "size": 6032564, + "sha256": "ee025cd13af1887334d0af5a7e04259eddd6339fe8509b108e0b3ac0e7268daf", + "public_signature_verified": true + }, + { + "artifact": "ShaCraft.Launcher_0.1.6_x64.dmg", + "url": "https://shacraft.ru/downloads/shacraft-launcher/0.1.6/ShaCraft.Launcher_0.1.6_x64.dmg", + "size": 6591340, + "sha256": "cd54c8f975bb7a1ec587bbadde35caf4a3eb9a1f86182150310590e41dec4023", + "public_signature_verified": true + } + ], + "previous_feed_version": "0.1.5", + "previous_feed_sha256": "d81ab2b007f7f9a385f2ec28d17f204e75c0c2e92cf40931064dd66d3bd2898f", + "previous_feed_backup": "/root/shacraft/.release-staging/launcher-0.1.6/stable.before-0.1.6.json", + "private_key_location": "remains on operator workstation; not uploaded", + "remote_publication": "all8 local signatures verified, remote hashes/signatures verified, dry-run passed, atomic publish passed", + "limitations": "Cross-platform CI and package inspection passed. Windows/macOS cold installation and OS signing/notarization were not exercised." +}