From 0608babaabe17eaa934fcfb9bd6ec93498d9db0c Mon Sep 17 00:00:00 2001 From: Ludovic Marie <136255825+ludovic111@users.noreply.github.com> Date: Sun, 25 Oct 2026 15:00:47 +0100 Subject: [PATCH] README: what the registry is, how to submit and report Co-Authored-By: Claude Opus 5.5 --- .gitignore | 3 +++ README.md | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 .gitignore create mode 100644 README.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..93b1299 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/files/ +/site/ +/bootstrap/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..481229d --- /dev/null +++ b/README.md @@ -0,0 +1,60 @@ +# Horizon mods + +The registry of what is made for [Horizon](https://github.com/ludovic111/horizon): mods (`.hmod`), modpacks (`.hpack`) +and resource packs, each one reviewed before it is published. Browse them at +[playhorizon.dev/mods](https://playhorizon.dev/mods) or in the launcher (Mods, then Horizon beside Modrinth). + +Players install from here through the launcher, which checks every file's SHA-256 and, when the author signs, its +signature before the game sees it. Mods run in Horizon's sandbox, with no file, network or clock access, and can only +do what their page lists. + +## Submit + +Use the form at [playhorizon.dev/mods/submit](https://playhorizon.dev/mods/submit): sign in with GitHub, pick the file +and fill in the page. The form checks the file, uploads it here and opens a pull request for you. Then: + +1. This repository's checks run on it: the file's own checks, a trial run of a mod in the sandbox, the index it would + publish. Their report is in the pull request's checks. +2. A reviewer (see [`.github/CODEOWNERS`](.github/CODEOWNERS)) reads the entry, the source and the report, and asks + for changes in the pull request if needed. +3. Merging publishes it: the file becomes a release, the project appears on the site and in the launcher within + minutes. + +What the registry takes now: mods, modpacks of registry mods, and resource packs. Shader packs open when Horizon's own +shader pack format is out (Iris and OptiFine packs are on Modrinth). Before you submit a mod, run what the checks run: + +```sh +cargo install --git https://github.com/ludovic111/horizon cargo-horizon-mod +cargo horizon-mod check target/horizon-mod/my_mod.hmod +``` + +**Updates** come the same way: the form adds a version to your entry. Only an entry's `owners` publish its updates +without a reviewer's extra look. A published file never changes: publish a new version. + +**Signing** is optional and recommended: put your [minisign](https://jedisct1.github.io/minisign/) public key in your +entry, and every later version must be signed with it, so nobody else can publish an update in your name. + +## Report + +Something wrong with a project? [Report it](../../issues/new?template=report.yml). A project that does harm is taken +down in [`revoked.toml`](revoked.toml): the launcher then refuses it and turns installed copies off, telling players +why. + +## Layout + +| Path | What | +| --- | --- | +| `mods/.toml` | One project: its page and its versions, each pinned by SHA-256 | +| `icons/.png` | Its icon, at most 256 KiB | +| `revoked.toml` | Files taken down | +| `.github/workflows/check.yml` | A pull request's checks | +| `.github/workflows/publish.yml` | On merge: releases, then `index.json` on Pages | +| `.github/workflows/cleanup.yml` | Weekly: staging files nobody needs any more | +| `scripts/` | What the workflows share | + +The format of the entries and of `index.json` is +[docs/api/mod-index.md](https://github.com/ludovic111/horizon/blob/main/docs/api/mod-index.md) in Horizon's repository; +the checks are `cargo horizon-mod check` and `cargo horizon-mod registry`, from Horizon at the commit in the +repository variable `HORIZON_REV` (else `main`). + +The index: `https://ludovic111.github.io/horizon-mods/index.json`.