chore(release): cut edge over to main — protocols 3–12, the egg, and the first release (rust phase 18, D145) #14
Reference in New Issue
Block a user
No description provided.
Delete Branch "edge"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The cutover D145 put inside phase 18:
edge→main, which fires this repo's first release (release.yml, landed in #13). Merge after Rust-Plugins#14 (§34.2.7 order).mainis at protocol 2 (phase 3);edgeis at protocol 12 (PROTOCOL_VERSION = 12). 22 commits, nothing onmainthatedgelacks. What reachesmain:src/windows.rs(a real SCM entry point, serviceRunicGatewayRust-<id>, so no 1053); empty env treated as unset (the D152 regenerate-every-boot bug); the Pterodactyl egg (egg/egg.json,install.sh,with-sidecar.sh);release.ymlbuilding linux-x86_64 (static musl) + windows-x86_64 (D149)What happens on merge
release.ymlruns on the push tomain, seeds 0.1.0 (no prior tag), builds both targets, and publishes the binaries, the launcher and the egg JSON with amanifest.jsoncarryingprotocol: 12. The installer'sbundle.ymlthen pairs it with the plugin release intobundles/v2/rust/current.json— refusing if the two protocols disagree.⚠ Secrets — please check before merging
Same as RP#14:
REGISTRY_USERandREGISTRY_TOKEN(write:repository). Unverifiable fromwtclaude. If absent, the credential preflight fails before any tag is pushed; add them and re-dispatchrelease.yml.Part of
docs/modules/rust/PLAN.md§34.🤖 Generated with Claude Code
https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
Module-rust phase 18, step 4 of docs/modules/rust/PLAN.md §34.2.7. The Windows service (D149, §34.2.5): src/windows.rs, ported from link's fix for error 1053. The same exe tries the SCM handshake and falls through to a console run on 1063; it reports Running only once the listener and store are up, and logs to a daily file beside its config. One binary serves every RunicGatewayRust-<id> instance, because the SCM ignores the dispatcher's name for an own-process service. An empty environment variable now counts as unset. A Pterodactyl egg exports every variable it declares, so a blank RUSTLINK_WEB_TOKEN arrived as "" and overrode the saved token, and a new one was generated and persisted on every boot. That breaks D152, which this change makes true. The egg (R20, R22, D151, D152, §34.2.6), in egg/: - install.sh is egg 18's script with two changes. A wipe guard moves rust-link/ to /tmp around `rm -rf ${REMOVE_FILES}`. The bridge block then fetches a schema-2 Rust bundle (pinnable by RUNICGATEWAY_BUNDLE), checks every asset's sha256 and the plugin's protocol before placing anything, and places the plugin by FRAMEWORK. Vanilla installs nothing and does not fail. - with-sidecar.sh is the launcher. It unsets blank variables, builds the web bind from RUSTLINK_WEB_PORT, and runs --print-config so that a newly generated token is printed once. It prints the URL and server id for the admin page, then execs the game. It no longer uses `set -e`: nothing the bridge gets wrong may keep the game from booting. - The startup's launcher prefix is conditional, so a server with no bridge boots exactly as egg 18 does. - build.sh assembles egg-rust-runicgateway.json. PR Checks runs it. The release (D145, §34.2.1) reuses servuo-plugins' engine. It publishes the static musl Linux binary, the Windows exe, the launcher, the egg and SHA256SUMS, and dispatches the installer's bundle.yml. PR Checks gains a clippy run for the Windows target. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY