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]>
* Add orbital 0.5.10
Submitted by @Stink-O through the form.
Submission: UhxCJpE6NeGS2rlo4B0KBaacOmRp-aYkbPXTW3_gGjA
Co-authored-by: Stink-O <[email protected]>
* Add orbital 0.5.10
Submitted by @Stink-O through the form.
Submission: UhxCJpE6NeGS2rlo4B0KBaacOmRp-aYkbPXTW3_gGjA
Co-authored-by: Stink-O <[email protected]>
* Add orbital 0.5.10
Submitted by @Stink-O through the form.
Submission: UhxCJpE6NeGS2rlo4B0KBaacOmRp-aYkbPXTW3_gGjA
Co-authored-by: Stink-O <[email protected]>
* Add orbital 0.5.10
Submitted by @Stink-O through the form.
Submission: UhxCJpE6NeGS2rlo4B0KBaacOmRp-aYkbPXTW3_gGjA
Co-authored-by: Stink-O <[email protected]>
* Add orbital 0.5.10
Submitted by @Stink-O through the form.
Submission: UhxCJpE6NeGS2rlo4B0KBaacOmRp-aYkbPXTW3_gGjA
Co-authored-by: Stink-O <[email protected]>
* Add orbital 0.5.10
Submitted by @Stink-O through the form.
Submission: UhxCJpE6NeGS2rlo4B0KBaacOmRp-aYkbPXTW3_gGjA
Co-authored-by: Stink-O <[email protected]>
---------
Co-authored-by: Stink-O <[email protected]>
* Edit wisdom_horizon_lite's page
Submitted by @tomasmendes01 through the form.
Co-authored-by: tomasmendes01 <[email protected]>
* Edit wisdom_horizon_lite's page
Submitted by @tomasmendes01 through the form.
Co-authored-by: tomasmendes01 <[email protected]>
* Edit wisdom_horizon_lite's page
Submitted by @tomasmendes01 through the form.
Co-authored-by: tomasmendes01 <[email protected]>
* Edit wisdom_horizon_lite's page
Submitted by @tomasmendes01 through the form.
Co-authored-by: tomasmendes01 <[email protected]>
* Edit wisdom_horizon_lite's page
Submitted by @tomasmendes01 through the form.
Co-authored-by: tomasmendes01 <[email protected]>
---------
Co-authored-by: tomasmendes01 <[email protected]>
* Edit wisdom_horizon's page
Submitted by @tomasmendes01 through the form.
Co-authored-by: tomasmendes01 <[email protected]>
* Edit wisdom_horizon's page
Submitted by @tomasmendes01 through the form.
Co-authored-by: tomasmendes01 <[email protected]>
* Edit wisdom_horizon's page
Submitted by @tomasmendes01 through the form.
Co-authored-by: tomasmendes01 <[email protected]>
* Edit wisdom_horizon's page
Submitted by @tomasmendes01 through the form.
Co-authored-by: tomasmendes01 <[email protected]>
* Edit wisdom_horizon's page
Submitted by @tomasmendes01 through the form.
Co-authored-by: tomasmendes01 <[email protected]>
---------
Co-authored-by: tomasmendes01 <[email protected]>
* Edit deepbore_quarry_native's page
Submitted by @Bioneisme through the form.
Co-authored-by: Bioneisme <[email protected]>
* Edit deepbore_quarry_native's page
Submitted by @Bioneisme through the form.
Co-authored-by: Bioneisme <[email protected]>
* Edit deepbore_quarry_native's page
Submitted by @Bioneisme through the form.
Co-authored-by: Bioneisme <[email protected]>
* Edit deepbore_quarry_native's page
Submitted by @Bioneisme through the form.
Co-authored-by: Bioneisme <[email protected]>
* Edit deepbore_quarry_native's page
Submitted by @Bioneisme through the form.
Co-authored-by: Bioneisme <[email protected]>
---------
Co-authored-by: Bioneisme <[email protected]>
* Edit customhud's page
Submitted by @sonoFrangu through the form.
Co-authored-by: sonoFrangu <[email protected]>
* Edit customhud's page
Submitted by @sonoFrangu through the form.
Co-authored-by: sonoFrangu <[email protected]>
* Edit customhud's page
Submitted by @sonoFrangu through the form.
Co-authored-by: sonoFrangu <[email protected]>
* Edit customhud's page
Submitted by @sonoFrangu through the form.
Co-authored-by: sonoFrangu <[email protected]>
* Edit customhud's page
Submitted by @sonoFrangu through the form.
Co-authored-by: sonoFrangu <[email protected]>
* Edit customhud's page
Submitted by @sonoFrangu through the form.
Co-authored-by: sonoFrangu <[email protected]>
* Edit customhud's page
Submitted by @sonoFrangu through the form.
Co-authored-by: sonoFrangu <[email protected]>
---------
Co-authored-by: sonoFrangu <[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]>
rdbt (operator, #mod-chat 11-05): the centred 'Vanished: only operators see
you' line covers the view. It is now an action bar line refreshed once a
second; unvanishing sends an empty action bar instead of clearing titles.
proof.py checks the action bar and that nothing shows mid-screen.
Co-authored-by: Horizon agent <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
glue.rs's VERSION still read 0.34.0 after #261 (0.35.0). proof.py's claims mode checks the version line and counts errors from the server's Done on (the engine logs one "No key layers" error while loading the world).
Co-authored-by: Horizon agent <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
* /ledger minted: say "partial" only when the end read stops short of the six hours
The official audit.log is ~9 MB (~1.8 MB a day), so a 1 MiB end read
covers the six hours; the note now depends on whether the lines read
reached back past the window's start, not on the file's size.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* proof.py: config.json now has a reports section
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]>
Registry v2 backfill (docs/design/registry-v2.md): categories and tags for
each entry, descriptions extended where they were short or unformatted, and
every icon stored in icons/<id>.png (creators' own icons mirrored, the
missing ones drawn). No owners, versions or keys change.
Co-authored-by: Horizon agent <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
* SMP 0.35.0: claims stop griefing from outside, chat pings
Claims: blocks placed (or fire, buckets, spawn eggs) against a claim's
border from outside, dispensers acting into a claim, lava lighting a
claim's blocks from outside, projectiles of non-members (buttons, targets,
chorus, pots, TNT, crystals, pearls, potions, animals, frames), animals,
frames and stands used by non-members, frames and animals hit by blasts
are all kept. Trust lookups no longer allocate.
Chat pings (jaszka's ask): naming an online player in chat, or /msg to
them, plays the experience orb sound to them alone (3 s apart, never the
sender), /pingsound on|off.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* SMP 0.35.0: rustfmt; the chat queue's module has plain comments
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* SMP 0.35.0: the dispenser hook binds its facing as a parameter
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* SMP 0.35.0: no attribute on the impact helper
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* SMP 0.35.0: README for the claims' new guards and chat pings
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* SMP: log each chat ping on the server
One info line per ping (at most one each 3 s per player), so bots and ops can see pings work.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* SMP: test on eaa7da4, the Horizon the minimap uses
Native mods on the newest hooks (359) must share one Horizon for the together check; r9.1 (52882c1) descends from eaa7da4 with the same hooks.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* SMP: end crystals always guarded in claims; proof SMP_PROOF=claims
A snowball or a punch from someone not trusted no longer sets off a crystal in a claim, even in worlds whose config.json lists protected entities from before. proof.py's claims mode runs two bots on a dedicated server: blocks and fire against the border, dispensers' water and arrows, a crystal, a pearl, TNT by animals and a frame, shears, and the chat pings.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* SMP README: end crystals always guarded
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]>
Registry v2 backfill (docs/design/registry-v2.md): categories and tags for
each entry, descriptions extended where they were short or unformatted, and
every icon stored in icons/<id>.png (creators' own icons mirrored, the
missing ones drawn). No owners, versions or keys change.
Co-authored-by: Horizon agent <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
Registry v2 backfill (docs/design/registry-v2.md): categories and tags for
each entry, descriptions extended where they were short or unformatted, and
every icon stored in icons/<id>.png (creators' own icons mirrored, the
missing ones drawn). No owners, versions or keys change.
Co-authored-by: Horizon agent <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
Registry v2 backfill (docs/design/registry-v2.md): categories and tags for
each entry, descriptions extended where they were short or unformatted, and
every icon stored in icons/<id>.png (creators' own icons mirrored, the
missing ones drawn). No owners, versions or keys change.
Co-authored-by: Horizon agent <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
Registry v2 backfill (docs/design/registry-v2.md): categories and tags for
each entry, descriptions extended where they were short or unformatted, and
every icon stored in icons/<id>.png (creators' own icons mirrored, the
missing ones drawn). No owners, versions or keys change.
Co-authored-by: Horizon agent <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
Registry v2 backfill (docs/design/registry-v2.md): categories and tags for
each entry, descriptions extended where they were short or unformatted, and
every icon stored in icons/<id>.png (creators' own icons mirrored, the
missing ones drawn). No owners, versions or keys change.
Co-authored-by: Horizon agent <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
Registry v2 backfill (docs/design/registry-v2.md): categories and tags for
each entry, descriptions extended where they were short or unformatted, and
every icon stored in icons/<id>.png (creators' own icons mirrored, the
missing ones drawn). No owners, versions or keys change.
Co-authored-by: Horizon agent <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
Registry v2 backfill (docs/design/registry-v2.md): categories and tags for
each entry, descriptions extended where they were short or unformatted, and
every icon stored in icons/<id>.png (creators' own icons mirrored, the
missing ones drawn). No owners, versions or keys change.
Co-authored-by: Horizon agent <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
Registry v2 lists no repository-linked entries: each of these shader packs
becomes a pinned version of its newest GitHub release's .hshader (staged
as <sha256>.hshader), with the page from the repository's
horizon-registry.toml written into the entry, categories, tags and an icon.
Co-authored-by: Horizon agent <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
Registry v2 backfill (docs/design/registry-v2.md): categories and tags for
each entry, descriptions extended where they were short or unformatted, and
every icon stored in icons/<id>.png (creators' own icons mirrored, the
missing ones drawn). No owners, versions or keys change.
Co-authored-by: Horizon agent <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
* registry: mark Create for Horizon as an unofficial port
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* icons: scale customhud's icon to 64x64 (the registry now needs 64 to 1024 px)
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]>
Submitted by @tomasmendes01 through the form.
Submission: -p-AKjDZoFl_Kou4es3JCbFL84AL8_02MDTCf4ZsUoY
Co-authored-by: tomasmendes01 <[email protected]>
Submitted by @tomasmendes01 through the form.
Submission: T6p3r_WvUBM66p1RumW8TjWkXawwML_QUuN9_pda2LE
Co-authored-by: tomasmendes01 <[email protected]>
* Add dynamic_fps_for_rust 0.1.0
Submitted by @Lyvt-Dev through the form.
Submission: MAyCnE4TcnIo3B05CCph3VzW4RMBdFYO_0S76ynJA-M
Co-authored-by: Lyvt-Dev <[email protected]>
* dynamic_fps_for_rust: describe what 0.1.0 does
The page listed Dynamic FPS's toast pausing and battery HUD and toasts, which this build doesn't have. It now names the caps it sets, the JSON config file, and that it has no settings screen.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
---------
Co-authored-by: Lyvt-Dev <[email protected]>
Co-authored-by: Horizon agent <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
* Add connected_textures 0.1.2
Submitted by @tariksabanuz through the form.
Submission: 8z1xdnIhXYT7sDm0v6CCif30RGP2lYOLB6q2V6C9ef8
Co-authored-by: tariksabanuz <[email protected]>
* connected_textures: icon from raw.githubusercontent.com (the blob page is HTML, not the image)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
---------
Co-authored-by: tariksabanuz <[email protected]>
Co-authored-by: Horizon agent <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
* Add chat_animation 0.1.0
Submitted by @tariksabanuz through the form.
Submission: gypApON8d6DU7sdJ81St9xAxOONKxb_edS-LUEh95yQ
Co-authored-by: tariksabanuz <[email protected]>
* chat_animation: icon from raw.githubusercontent.com (the blob page is HTML, not the image)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
---------
Co-authored-by: tariksabanuz <[email protected]>
Co-authored-by: Horizon agent <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
* Update horizon_physics 0.18.0
Submitted by @tariksabanuz through the form.
Submission: dUwtD3FcOST_rD7zK-b-0LW83RvCQatWATzx8eZplT0
Co-authored-by: tariksabanuz <[email protected]>
* horizon_physics: keep the hosted icon, and say it is a clean-room project not made by PhysicsMod's author
The new icon was a GitHub blob page (HTML) of a 250 KB animated preview; the entry's own icons/horizon_physics.png stays. The summary and description keep the 0.15.1 page's statement that it holds none of PhysicsMod's code or assets.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
---------
Co-authored-by: tariksabanuz <[email protected]>
Co-authored-by: Horizon agent <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
* Update mod_menu 0.3.3
Submitted by @tariksabanuz through the form.
Submission: l0GzXMA1DQh20OewDGgMOQvMM_CnMnPSnV7Imjga354
Co-authored-by: tariksabanuz <[email protected]>
* mod_menu: icon from raw.githubusercontent.com (the blob page is HTML, not the image)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
---------
Co-authored-by: tariksabanuz <[email protected]>
Co-authored-by: Horizon agent <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
Filled by horizon's tools/registry_backfill_owner_ids.py (horizon#9688): every owner login resolved and
matched the IDs the submission form recorded; nothing was left alone.
Co-authored-by: Horizon agent <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
* smp: /rtp (/wild) to a random safe spot 500-5000 blocks from the spawn, 30 min cooldown
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* smp: /rtp draws until enough points fall inside a close border
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* smp: /rtp undo as a struct; rustfmt
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* smp: /rtp proof (2 clients, flat world) and SMP_PROOF=rtp tick cost on a normal world; per-/rtp read cost in the log
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* smp: proof checks the /rtp landing with execute ... run say (block tags aside)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
---------
Co-authored-by: Claude Opus 5.5 <[email protected]>
Submitted by @ImmortalWhisper through the form.
Submission: 765YnzbfBhAVyZAv1UoXeiUShV3tjRRGT3C-A3VjDIg
Co-authored-by: ImmortalWhisper <[email protected]>
Submitted by @tomasmendes01 through the form.
Submission: QMPtuLy0qMsJH6Y0KP2iDIvzdYTpPS0FOLtPdmcSYd8
Co-authored-by: tomasmendes01 <[email protected]>
Submitted by @tomasmendes01 through the form.
Submission: XSR34WRLB30OrdD_82S40jKedlhtfgeaXXKyxlVPyis
Co-authored-by: tomasmendes01 <[email protected]>
Submitted by @eltanschauung through the form.
Submission: kwCxRPKxqLPLNKKKt1Y3GT_vcpxGHQAPWgryPVRQq2s
Co-authored-by: eltanschauung <[email protected]>
Submitted by @repositorykreml1n through the form.
Submission: jEsjBlLxuH_fH0gi0d1ZaAgPL2A5TB4NH7laEwo_zpY
Co-authored-by: repositorykreml1n <[email protected]>
* Update chatheads 0.1.1
Submitted by @Domanffe through the form.
Submission: m9iIfQyNTA6ee66EpcsIdlIFDTgx3mIakQro02chGVU
Co-authored-by: Domanffe <[email protected]>
* chatheads: fix the doubled icon URL and restore the name ChatHeads
The submission form pasted the icon URL twice and lowercased the name; the
in-game name is still ChatHeads.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
---------
Co-authored-by: Domanffe <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
Submitted by @VanishingTacos through the form.
Submission: MV28vLDz8HAq_j0ApAE1yIC4BXlLuoDRF8RWnRBpWkg
Co-authored-by: VanishingTacos <[email protected]>