- Remove Embeddium 1.0.15 (breaks Iris, Iris-FLW-Compat, and Sable's
embedded Veil — all require Sodium 0.8.x API)
- Re-add Sodium 0.8.13-beta.2 (same version used before, verified
compatible with all three)
- World Portal removal from prior commit stays (fixes the original
sable mixin conflict)
- Pack validates: 140 client / 131 server mods, 57 story keys
- Remove worldportal (redundant: IP 6.0.7 + Dimensional Doors already provide
portal mechanics; zero lore/story impact — not referenced anywhere in the
pack's KubeJS scripts, advancements, datapacks, or story files)
- Swap Sodium 0.8.13-beta.2 → Embeddium 1.0.15 (NeoForge-native fork with
better mod compatibility; resolves the mixin conflict with sable 2.0.5)
- Root cause: worldportal EntityLMixin (priority 750) and sable EntityMixin
(priority 1000) both inject into Entity::getRelativePortalPosition. Sable is
required by Create Aeronautics; worldportal was the redundant mod.
- Verified: all 16 Create addons at latest versions, pack validates (140 client
/ 131 server mods), story generation OK (57 keys)
Users get one SCICRAFT-<tag>.mrpack to import into Prism Launcher.
Dropping the 362MB CurseForge zip eliminates the large-upload 502 that
failed release asset uploads. All 144 mods are bundled (32 CF jars in
overrides) or auto-fetched from Modrinth at import.
upload-artifact@v4 requires the GitHub-only artifact v2 API
(GHESNotSupportedError on Gitea). v3 uses the v1 protocol that
Gitea's act_runner implements, and is mirrored on the Forgejo
mirror.
The node:20-bullseye runner image ships Python 3.9, which lacks
tomllib (3.11+). Extract inline workflow validation into
tools/validate_pack.py using regex-based parsing of the machine-
generated packwiz TOML subset, and call it from the workflow.
softprops/action-gh-release@v1 is not mirrored on the Forgejo action
mirror, which fatally aborted the job at action-download. Create the
release via the Gitea REST API using the built-in GITHUB_TOKEN and
upload both pack artifacts directly.
Builds the client pack on the media-server docker runner: refreshes the
packwiz index, runs integrity + download-resolvability checks, exports
Modrinth (.mrpack) and CurseForge (.zip) artifacts, validates the
CurseForge manifest completeness, uploads artifacts, and publishes a
release on v* tags.