From 7f24af1a3715ffefea2992eade7493ef07e32361 Mon Sep 17 00:00:00 2001 From: Erik Date: Fri, 14 Aug 2026 15:17:53 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20Campaign=20LA=20Linux=20posture=20?= =?UTF-8?q?=E2=80=94=20full=20launcher=20stack=20Linux-tested;=20GUI=20wai?= =?UTF-8?q?ts=20for=20Slice=20L?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit User decision 2026-08-14: everything the launcher does ships Linux-tested in this campaign (launcher UI, install/update with manual DAT picker, headless launches with plugins + login commands, probe, per-slice Linux test runs, Linux connected-gate section at LA11). GUI client launches stay Windows-only until Slice L resumes later; the launcher renders GUI modes disabled on Linux with an explicit note, and the host-agnostic session-config contract means Slice L lights them up with no launcher changes. Co-Authored-By: Claude Fable 5 --- docs/plans/2026-08-14-launcher-campaign.md | 26 +++++++++++++++++++ .../2026-08-14-launcher-campaign-design.md | 1 + 2 files changed, 27 insertions(+) diff --git a/docs/plans/2026-08-14-launcher-campaign.md b/docs/plans/2026-08-14-launcher-campaign.md index 1a104e65..ecb3620b 100644 --- a/docs/plans/2026-08-14-launcher-campaign.md +++ b/docs/plans/2026-08-14-launcher-campaign.md @@ -51,6 +51,32 @@ Parallelism guide: LA3/LA4 (launcher side) proceed alongside LA5–LA8 (client side) — different assemblies, no shared files. LA9/LA10 close the launcher side; LA11 closes the campaign. +## Linux posture (binding — user decision 2026-08-14) + +Everything the launcher does must WORK ON LINUX in this campaign, except +GUI client launches: the Linux graphical client is Slice L, parked at L1, +resuming later ("ok we will do it later"). Concretely: + +- **Linux-shipping in LA:** the Avalonia launcher UI, profile CRUD + + 0600-permission file, installer (manual DAT picker — the auto-detect + paths are Windows-only; `acdream-bake` is GL-free and runs on Linux), + updater (staged swap; Linux can replace a running binary but keep the + same staged-atomic flow), headless launches with plugins + login + commands, and the character probe. +- **Launcher UX on Linux:** the `gui` / `guiSelect` launch modes render + disabled with an explicit "requires the Linux graphical client (Slice + L)" note — never a silent failure. +- **Per-slice enforcement:** every slice touching Launcher.Core, Headless, + Runtime, Bake, or Platform runs its test projects on Linux (native + Ubuntu or WSL, matching the K-slice practice) before the slice is DONE; + LA4/LA9/LA10 additionally prove a real `linux-x64` self-contained + publish. LA11's connected-gate script gets a Linux section: launcher on + Ubuntu doing CRUD, probe, headless launch with plugin + login commands, + first-run install with a manual DAT path, and an update swap. +- When Slice L later ships, the launcher's Linux GUI modes light up with + NO launcher changes (the session-config contract is host-agnostic) — + that expectation is part of LA's design acceptance. + ## LA0 — `AcDream.Platform` extraction New BCL-only project `src/AcDream.Platform/` holding `ApplicationPathSet` + diff --git a/docs/superpowers/specs/2026-08-14-launcher-campaign-design.md b/docs/superpowers/specs/2026-08-14-launcher-campaign-design.md index 162778ff..a68527c5 100644 --- a/docs/superpowers/specs/2026-08-14-launcher-campaign-design.md +++ b/docs/superpowers/specs/2026-08-14-launcher-campaign-design.md @@ -45,6 +45,7 @@ Decided this session (2026-08-14): | Launcher ↔ client coupling | **Approach A: file-contract orchestrator** (config in, status events out; no game-protocol code in the launcher) | | Update feed | **GitHub Releases** (manifest.json + per-RID zips as release assets) | | Profile editing | **Full CRUD in the launcher UI** — add/edit/remove servers, accounts, passwords, per-character settings. The JSON file is storage (hand-editable as a bonus), never the required interface | +| Linux scope | **Full launcher stack Linux-tested in LA** (launcher UI, install/update, headless + plugins + probe); GUI launches stay Windows-only until Slice L resumes later (user 2026-08-14). Launcher disables GUI modes on Linux with an explicit note | | Character enumeration | **On-demand probe**: launcher spawns the headless host in a probe mode (connect → `CharacterList` → status event → graceful disconnect BEFORE entering world → exit) and folds the roster into the profile store | Rejected: the launcher itself embedding Runtime/Core.Net to speak the