feat(landing): rename crew to "El valle" + source downloads from launcher.json

Rename all "crew" mentions (en/es/eu) to the untranslated proper name
"El valle" across hero, members, and features copy in i18n/ui.ts.

Rewire the homepage launcher download list to the custom-launcher build
output launcher.json (productName/version/files[]) instead of the
never-produced launcher-manifest.json shape. site.ts now reads launcher.json
and normalizes files[] -> internal builds[]; launcher.example.json is the
committed fallback. Drop the stale launcher-manifest.example/schema, update
.gitignore and docs (CLAUDE.md, plan/18).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-11 01:55:05 +02:00
parent 1019da66a3
commit 037b1777d6
8 changed files with 113 additions and 214 deletions

View File

@@ -35,14 +35,16 @@ authlib step.
your credentials. (No authlib URL — launcher is preconfigured.)
3. **Join the server** — launch, connect to `site.serverAddress` (IP copy chip).
**Launcher manifest (delivery = synced local file, option B):**
- Contract: `landing/src/data/launcher-manifest.schema.json` (already written;
JSON-Schema draft 2020-12).
- The `custom-launcher` release flow **produces** `launcher-manifest.json` and syncs
it into `landing/src/data/launcher-manifest.json` (gitignored, generated), same
pattern as `sync-server-mods.sh`.
- Landing **imports** it at build → renders per-OS buttons from `builds[]`. Missing
file → hide the buttons (build must not fail).
**Launcher list (delivery = synced local file, option B):**
- Source of truth: the `custom-launcher` build output `launcher.json` (shape
`productName/version/baseUrl/files[]`, each file `{name,os,arch,ext,size,url}`),
published to `https://distribution.${BASE}/launcher/launcher.json`.
- The release flow syncs it into `landing/src/data/launcher.json` (gitignored,
generated), same pattern as `sync-server-mods.sh`. `launcher.example.json`
committed as the documented fallback shape.
- Landing reads it at build (`site.ts` `loadLauncherManifest`), normalizes
`files[]` → internal `builds[]`, renders per-OS buttons. Missing file → hide
the buttons (build must not fail).
**Fjord — alternative path, OWN page, off the homepage:** new `/fjord` (+ `/es`,
`/eu`). Download Fjord (existing `/launcher/` mirror), add authlib-injector account
@@ -174,7 +176,7 @@ Tasks:
- [ ] `site.ts`: feed `stats[0]` count from `mods.json`.
- [ ] Run the generator pre-`pnpm build`; document in `12-build-order.md` /
`14-deploy.md`. `.gitignore`: `landing/src/data/mods.json`,
`landing/src/data/launcher-manifest.json`, `landing/src/data/players.json` (if
`landing/src/data/launcher.json`, `landing/src/data/players.json` (if
any baked), `landing/public/mod-logos/`.
---
@@ -182,7 +184,7 @@ Tasks:
## Verification (whole rework)
- **Build:** `cd landing && set -a && . ../.env && set +a && pnpm run build` then
`pnpm check`. Must pass offline even if `launcher-manifest.json` / `mods.json` are
`pnpm check`. Must pass offline even if `launcher.json` / `mods.json` are
absent (buttons/list hidden).
- `grep -ri packwiz landing/` → no live join references remain (Fjord page may mention
its own import).
@@ -201,4 +203,5 @@ Tasks:
- `15-mc-status.md` — the mc-status service (now also serves the roster).
- `16-landing-registration.md` — the browser-direct Drasl pattern WS4 reuses.
- `17-mod-shortlist.md` — the mod gap doc + the `mods.json` dataset.
- `landing/src/data/launcher-manifest.schema.json` — the launcher manifest contract.
- `launcher.json` — the `custom-launcher` build output (download list); landing
syncs it to `landing/src/data/launcher.json`, `launcher.example.json` committed.