From 87d3d2067d8899a7ef5e45e28e041742afa0d728 Mon Sep 17 00:00:00 2001 From: "@permadeath.com" Date: Tue, 18 Aug 2026 18:13:35 -0400 Subject: [PATCH] feat(setup-tree): pick a force's side on its own card MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The team pill became a select: the scenario's own answer, or teams 1 to 8. The lobby's columns follow it live, so moving a seat regroups the screen. A daily keeps the pill — its sides are the challenge, and a control that changed them would make it a different fight to the same score. The hover card also closes on scroll now, rather than being left pointing at a trigger that has moved. Co-Authored-By: Claude Opus 5 (1M context) Change-Id: I410f201d8b843b9d84eb79fbdbef933a41a4c0ea --- plan/setup-tree.md | 41 ++++++----- web/scripts/lobby-screen.test.mjs | 85 +++++++++++++++++----- web/scripts/pilot-hover.test.mjs | 22 ++++++ web/src/api.ts | 16 ++++ web/src/screens/lobby.ts | 117 +++++++++++++++++++++++------- web/src/screens/pilot-hover.ts | 10 +++ web/src/styles.css | 13 ++++ 7 files changed, 241 insertions(+), 63 deletions(-) diff --git a/plan/setup-tree.md b/plan/setup-tree.md index d338004..74850bb 100644 --- a/plan/setup-tree.md +++ b/plan/setup-tree.md @@ -85,24 +85,6 @@ after load or the node does not exist. ## Still open -- [ ] **A team control in the lobby.** Every piece under it is now in place: - a scenario declares teams, the API defaults them per slot, the launch - manifest carries them and arena applies them (`--teams`, arena #96). What - is missing is the control itself. Stock MegaMek has one — `ChatLounge` - has a team selector, and scenario factions load as ghosts precisely so a - human can take one and change sides — and lance.blue seats players - directly with no way to alter it, so today the scenario's own teams are - final. - - The scenario stays the default. A lobby that opened with everyone - unassigned would make every fight a setup chore; what a control adds is - the ability to *differ* from the file, which is what makes Monte Diablo - playable as something other than the two sides it shipped with. - - It is one node of the tree this epic is about, so it should arrive as - one: `Locked` for a daily, free for an ordinary lobby, and whatever a - tutorial wants in between. - - [ ] **Distinguish `VisiblyLocked` from `InvisiblyLocked`.** A locked setting has two meanings and the tree does not yet tell them apart. Some locks are the point and belong on screen — a daily's rules and its AI, which is @@ -143,4 +125,25 @@ Duel-is-only-a-filter note is the same observation from the other side. ## Done -Nothing closed yet. +- [x] **A team control in the lobby.** One `