backoffice: dedicated Launcher page, scope-aware Sync
The launcher and the game versions are different release cadences managed by the same operator. Mixing them on one page muddied the workflow. Split them into two top-level nav entries. SignManifest::run(string $scope) -------------------------------- - 'all' (default, used by CLI tools/sign-manifest.php) — unchanged. - 'versions' — only re-hashes the Proserve ZIPs and bumps `latest`. - 'launcher' — only re-hashes the launcher EXE. The Ed25519 sign step always runs at the end so the manifest stays verifiable. Selectively hashing avoids unrelated noise (e.g. mass-hash 14 GB ZIPs when all you wanted was to update the launcher exe). admin/launcher.php (new page) ----------------------------- Self-contained page with the launcher state, Set/Remove forms, the blue "🔁 Hasher le launcher + signer" button, and a list of the .exe files present in builds/launcher/. Workflow doc inline. admin/versions.php ------------------ Cleaned up: launcher card and its set_launcher / remove_launcher / sync_launcher actions removed. The remaining global Sync button is relabeled and now triggers scope='versions' (only Proserve ZIPs). Layout::navHtml gains a "Launcher" item between Versions and Audit. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -38,6 +38,7 @@ HTML;
|
||||
'dashboard' => ['index.php', 'Dashboard'],
|
||||
'licenses' => ['licenses.php', 'Licenses'],
|
||||
'versions' => ['versions.php', 'Versions'],
|
||||
'launcher' => ['launcher.php', 'Launcher'],
|
||||
'audit' => ['audit.php', 'Audit'],
|
||||
];
|
||||
$links = '';
|
||||
|
||||
Reference in New Issue
Block a user