Files
Dylan M. Taylor 8f2b99aae7 fix: repair Linux installation flows (#221)
## What changed

- Resolve the Flatpak OCI index digest from each real GHCR manifest
instead of manufacturing a digest. Use the actual launcher package path
(`storytold/craft-launcher`) and architecture-specific release tags.
- Vary Netlify's cache key by query string on both OCI index routes;
preserve architecture, repository, ref, and tag filtering.
- Return an explicit `503` if a referenced image is missing or
inaccessible. Document GHCR requirements and remove the distro test's
fallback that treated failed installs as success.
- Fix the `.flatpakref` download route, make all Linux distro tabs
reachable on mobile, make the Arch repo setup enable its config, and
change the advertised minimum to RHEL 10+.

## External release setup required

The current launcher OCI tags were pushed to
`ghcr.io/storytold/craft-launcher`, but anonymous token requests for
that package and the Craft app packages currently return `401`. Flatpak
clients cannot install private images. Set every package included in the
OCI index to **Public** in GHCR package settings before marking this PR
ready to merge. If the website needs authenticated index resolution
during that setup, configure the server-only `FLATPAK_OCI_READ_USERNAME`
and `FLATPAK_OCI_READ_TOKEN` variables; this does not replace public
package visibility for users.

## Validation

- `npm run typecheck` — passed.
- `npx playwright test tests/flatpak-oci.spec.ts` — 9 passed.
- Linux repository Playwright suite — 21 passed locally; the mobile
browser case could not launch locally because Chromium is unavailable.
The PR CI download suite passed all 35 browser tests, including the
mobile case.
- Live GHCR probe — current launcher and PdfCraft package token requests
return `401`; this is the release configuration blocker above.

The deploy preview confirms this: `/index/static?...` responds with
`503` and GHCR's `401` message. The existing `Flatpak OCI Remote` check
therefore fails until those packages are made public. The PR is
intentionally a draft while that external release setting is unresolved.

The initial Flatpak CI crash (`getFlatpakOciIndex().Results` on a
Promise) is fixed in the latest commit. The test helper now gets its
expected app IDs from the catalog without making registry requests. CI
should now reach and report the actual GHCR access failure described
above.
2026-11-01 16:32:34 -05:00
..