• 9.0.0-alpha.9 c68fa28988

    9.0.0-alpha.9
    Some checks failed
    Generate Release / semantic-release (push) Has been skipped
    Build Release / Preparations (push) Successful in 22s
    Docker Test / build image (push) Successful in 20m53s
    Docker Test / build image (pull_request) Successful in 14m20s
    Documentation / Help image (push) Successful in 2m2s
    Documentation / Writerside webhelp (push) Successful in 2m10s
    Test / build (push) Successful in 35m36s
    Build Release / Docker images (push) Successful in 16m38s
    Qodana / notify (push) Successful in 15s
    Qodana / scan (push) Successful in 21m49s
    Build Release / JARs, media and checksums (push) Successful in 23m34s
    Build Release / Forgejo release (push) Successful in 2m40s
    Build Release / VirusTotal scan (push) Successful in 1m38s
    Build Release / Publish Maven (push) Successful in 6m9s
    Build Release / News on Discord (push) Successful in 41s
    Build Release / Mirror release outward (push) Failing after 5m56s
    Test / build (pull_request) Successful in 48m11s
    Pre-release

    Griefed released this 2026-09-14 19:33:33 +02:00 | -1309 commits to main since this release

    ✂️ Refactor

    • clientside: a seam for what a Forge-family loader provides (599a81d)
    • clientside: drop a fixture no guard reads (3ba3404)
    • clientside: let the registry offer more than one ref per mod id (89730de)
    • clientside: name the verdict after the target, not the loader (1d21e26)
    • clientside: route the dependency comparison through VersionOfFile (bcce3c6)

    📔 Docs

    • audit and analysis of the UNVERIFIABLE pass (iteration 1) (1983d94)
    • audit and analysis, iteration 2 (3d29c5b)
    • audit and analysis, iteration 3 (b818eda)
    • close B36 — the Connector boot is dropped, not deferred (d3131bc)
    • document the last 9 declarations Dokka reported silent (dc763e9)
    • iteration 1's resolutions, and why four findings were recorded rather than rewritten (2cb1259)
    • iteration 2's resolutions, and M-4 corrected in place (7cc2905)
    • iteration 3's resolutions, and what three passes were each good for (e6b6ed0)
    • make the renamed field findable, and scope the channel rule (4d605ad)
    • measured counts, and three lessons from the loader-choice pass (a8bb9f7)
    • re-measure clientside after the end-to-end guards (13cc457)
    • the branch's measured equivalence against develop (99c0896)
    • the false positive in the published list, and the audit that missed it (8c3f6a4)
    • the field report that found a class, not a case (32c9b58)
    • the grind axis, and the per-loader claims it made false (08116fa)
    • the three landmines the audit iterations produced (e8c7915)
    • the two facts a real jar had to settle, and what they show (9f660ad)
    • the UNVERIFIABLE pass, its landmines and its two deferrals (f823999)
    • the whole branch proved equivalent to develop for every pre-existing guard (5a38e8d)
    • what the public grinder's 40 dependency failures turned out to be (aa7de38)
    • clientside: the two ways a loader choice is now re-opened after staging (92a9f51)
    • clientside: why LOADER_PRIORITY starts at NeoForge, measured (071f023)
    • plugin-grinder: document the 19 declarations Dokka reported silent (80d3ffc)

    📦 Other

    🧪 Tests

    • pin the six rules the analysis found asserted nowhere (8c9415d)
    • api: pin that an unparseable Minecraft version cannot crash NeoForge dispatch (0c10011)
    • clientside: both new refusals reach re-selection, through real staging (53be818)
    • clientside: name the sampled artifact's guards after what they pin, and pin the producer (3e1e135)
    • clientside: pin a client-only dependency as decisive evidence (RED) (ad0accd)
    • clientside: pin botanypots as a mod id no guess can reach (RED) (5b904a7)
    • clientside: pin re-selecting the loader from the jar (red) (c51d67e)
    • clientside: pin that a clean boot outranks an inherited client-only proof (52d46b9)
    • clientside: pin that a Connector placeholder is not a Forge mod (3a671ff)
    • clientside: pin that a CurseForge dependency is found across the version line (3853b77)
    • clientside: pin that a Forge-family loader provides its own id (RED) (f898e49)
    • clientside: pin that a forked project serves its original's mod id (red) (7c8207a)
    • clientside: pin that a release beats a newer-Minecraft beta (4eadf4e)
    • clientside: pin that a verdict names the file staging selected (e9f6910)
    • clientside: pin that Quilt's unless clause satisfies a requirement (c1ac29d)
    • clientside: pin the Connector marker in NeoForge's renamed descriptor (de4ffee)
    • clientside: pin the line prefix, and a dot that must not separate (RED) (f28e997)
    • clientside: pin the loader gate to the descriptor eras (851098c)
    • clientside: pin the plain build over its own variant (RED) (9e2a199)
    • clientside: pin the three defects the audit found (red) (99fefab)
    • clientside: pin the two ways a declared range fails to narrow (RED) (c5b3f0d)
    • clientside: pin the two ways a dependency ref goes missing or is invented (red) (9643d2d)
    • clientside: pin three CurseForge ids no slug guess can reach (RED) (739febe)
    • grinder: pin that a verdict's identity is its Minecraft line (6066438)
    • grinder: pin that only a followable scheme becomes an href (red) (52c09e7)
    • grinder: pin that the Filename column names the sampled artifact (cbddb26)

    🚀 Features

    • clientside,grinder: grind one target per Minecraft version-line (d39af6e)
    • clientside: boot a caller-chosen target, and carry its Minecraft version (f81ea45)
    • clientside: MinecraftLinePolicy, which lines of a project get ground (4aee754)
    • clientside: pickGrindTargets, one loader per Minecraft line (21310b7)
    • grinder: SPC_GRINDER_MINECRAFT_LINES_NEWEST and _LINE_ANCHORS (e0ac9fb)
    • grinder: the report shows and filters the Minecraft line (602f088)
    • plugin-grinder: show the Minecraft line a verdict is about (b05379a)

    🛠 Fixes

    • build: refuse to configure a Dokka module that has no module.md (fae4402)
    • build: stop dokkaJavadocJar failing on a duplicate index.html (780115b)
    • ci: publish the api's javadoc jar, not every module's (0731b75)
    • ci: stop five workflows running on the creation of alpha/beta (b8b28d8)
    • clientside,grinder: a clean boot outranks an inherited client-only proof (4bc3516)
    • clientside,grinder: judge a demand the loader itself has to satisfy (60ad8fe)
    • clientside: a bundled jar's own demands bind like a staged jar's (6acd289)
    • clientside: a dependency the loader calls client-only is a finding (2226261)
    • clientside: a verdict names the artifact that actually staged (4bdc748)
    • clientside: an unless alternative counts when it is bundled, not only provided (e775fbd)
    • clientside: an exhausted backtrack is nobody's failure, not the host's (6ce930d)
    • clientside: an untagged file means Forge only where the facet did not exist (fc7baf3)
    • clientside: ask a dead pin once, like a live one (5db90b2)
    • clientside: ask CurseForge for the dependency's version line (cf78607)
    • clientside: fetch a dependency from the other platform when ours has none (7028c7e)
    • clientside: honour Quilt's unless clause when staging a dependency (1443d9f)
    • clientside: honour the range a jar declares, and file a mixin failure as one (2af13e9)
    • clientside: judge a demand on the loader's own id (78bebad)
    • clientside: keep both disagreement channels, and order the retries in one place (4e70870)
    • clientside: prefer a plain build over its own variant (6aeec16)
    • clientside: prefer the newest release, then beta, then alpha (eb277c8)
    • clientside: re-check a publishable crash on its own era's other loader (17d1f19)
    • clientside: reach the fork that serves the original's mod id (6ee12d4)
    • clientside: reaching Mojang's rendering layer is client-only evidence (85133ad)
    • clientside: read a jar's loader at the descriptor era it was built in (3d61e97)
    • clientside: read a line-prefixed version, and stop a dot separating one (551bcb2)
    • clientside: read the Connector marker from both TOML descriptors (7e4611e)
    • clientside: read the mod's own version, qualifier and all (e35dfcc)
    • clientside: refuse a loader that cannot reach the build the jar demands (9a52ef9)
    • clientside: resolve a pinned dependency, and stop inventing a null one (37e2d27)
    • clientside: resolve betterquesting, sewingkit and botanypots on CurseForge (bee99ba)
    • clientside: resolve botanypots, a slug the guess cannot reach (56cfd7d)
    • clientside: resolve the six mod ids observed going unresolved (a237817)
    • clientside: verify a Connector placeholder under the loader it really is (971d9e8)
    • clientside: verify a mis-ticked jar under the loader it declares (355d322)
    • docs: resolve the KDoc links whose targets exist but are unreachable (3e60748)
    • docs: stop documenting Confidence, which was deleted (deefe7f)
    • grinder: key a verdict on its Minecraft line, not its modloader (cafa60a)
    • grinder: link a project only when the scheme is one a browser should follow (a862556)
    • grinder: re-file boot artifacts written before the Minecraft line (179bc9c)
    • grinder: the Filename column carries the sampled artifact's real name (ab188df)
    • plugin-grinder: add the module.md every Dokka task in this module requires (f797481)

    VirusTotal

    Downloads