# packwiz — modpack source of truth ## Summary `packwiz` (installed at `~/go/bin/packwiz`) authors the modpack. The `./pack` directory is the **single source of truth** for mods, consumed by both: - the **server** (itzg `PACKWIZ_URL`), and - **clients** (Fjord launcher imports the pack / packwiz-installer). Caddy serves `./pack` at `pack.ulicraft.net`. packwiz emits **metadata** (`pack.toml`, `index.toml`, `mods/*.pw.toml`); the `.pw.toml` files reference Modrinth/CF **CDN URLs**, so server and clients fetch the jars from those CDNs. The stack assumes the internet is present. ## Behaviors confirmed - **Prune**: packwiz-installer tracks a manifest and **removes** client mods no longer in the index on re-run. (Server side via itzg likewise re-syncs.) - **Download source**: jars come from the CDN URLs in `.pw.toml`, not the pack host (which serves only metadata). - **itzg side filtering**: itzg downloads **server-side mods only**. Client-only mods MUST be tagged `side = "client"` (not `both`) or the server may pull and crash on them. ## NeoForge pinning `pack.toml` pins MC `1.21.1` + NeoForge `21.1.x`. Verify exact NeoForge build against projects.neoforged.net before locking. ## Tasks - [ ] `packwiz init` → `./pack` (MC 1.21.1, modloader neoforge, pinned version) - [ ] Curate mod shortlist (perf/tech/magic/storage/QoL/worldgen/map/voice) - [ ] Tag client-only mods `side = "client"` - [ ] `packwiz refresh`; verify `index.toml` committed (clients fetch it) - [ ] Point server `PACKWIZ_URL=http://pack.ulicraft.net/pack.toml` - [ ] Test install end-to-end on a fresh client