The launcher strips these launcher-only tables before horizon-mixins reads a
bundle's manifest (native_mods/api.rs). The check passed them through, so a
mod with a trait package (cpm, #317) failed with E_MANIFEST "unknown field api"
while players' launchers apply it. Mods with an API package are applied but
not compiled, as health already leaves them out.
Co-authored-by: Horizon agent <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
* native health: also cargo check, and mark the mods whose own code doesn't compile
The daily check only applied the mods, so versions that apply but don't
compile on the newest Nightly (eatinganimation's ItemRenderState, hitbox_plus's
module path, carryblock's removed Dim::min_y...) weren't marked broken_on,
while every player's build leaves them out.
After the apply pass, the mods that apply are checked together (cargo check,
with Horizon's `mods` feature) in rounds: each round's errors are traced to the
mod whose helper or support module holds them (scripts/native_trace.py, the
launcher's rule), those mods and the ones needing them leave, and the rest
compile again. An error of the kind two mods cause together (a name defined
twice...) is checked again with that mod alone, so a pair is never marked.
Mods that use an API the launcher prepares ([api], trait_method) aren't
compiled here. Dependencies and horizon-mixins come from the Actions cache.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* native health: trace helpers whose signature holds an array type, mask each file once
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* native health: an error in the call horizon-mixins generates for a helper is the helper's mod's
Co-Authored-By: Claude Opus 5.5 <[email protected]>
---------
Co-authored-by: Horizon agent <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
The first daily run (42099210086) marked horizon_physics broken for an
E_OVERWRITE_CONFLICT with another mod: a pair conflict, not a mod that
fails on the Nightly. Each mod refused in the full set is now applied
again with only the mods it needs, and is broken on that Horizon only if
horizon-mixins still refuses it.
Co-authored-by: Horizon agent <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
Players' native builds broke on mods made for an older Horizon (targets moved
by the crate split, a support module refused by a glob) and the whole build
failed. scripts/native_compat.py applies mods as the launcher builds them:
- check (pull requests): each new native-mod version on the newest Nightly
with the 20 most downloaded native mods, horizon-mixins apply then cargo
check, and its support modules' (file, name) against every registry mod's.
- health (daily, native-compat.yml): every native mod's newest version on the
newest Nightly; the ones horizon-mixins refuses go to the native-health
release, and publish marks them `broken_on` in index.json so the launcher
warns before an install.
The PR job runs main's script with a read-only token; the submission's build
scripts run under that token only.
Co-authored-by: Horizon agent <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
The repositories moved from ludovic111 to horizon-rust. GitHub redirects the
repository URLs, but not GitHub Pages: the index now lives at
https://horizon-rust.github.io/horizon-mods/. The build passes --site so icon
URLs use the new address without waiting for a new cargo-horizon-mod.
Co-authored-by: Claude Opus 5.5 <[email protected]>
- mods/coords_hud.toml: the SDK's example mod, MIT, built from
crates/horizon-mod-sdk/examples/coords-hud in Horizon.
- check.yml: a pull request's changes, each new file's checks and a trial
run in the sandbox, the index it would publish (cargo horizon-mod from
Horizon at HORIZON_REV).
- publish.yml: on main, new versions become releases, index.json and the
icons go to GitHub Pages.
- cleanup.yml: staging copies nobody needs, weekly.
- CODEOWNERS, the report form, the pull request template, revoked.toml.
Co-Authored-By: Claude Opus 5.5 <[email protected]>