Refine party, timer, and Extension mechanics

This commit is contained in:
2026-08-17 21:07:20 -07:00
parent db19a89957
commit 879cfd4fd0
16 changed files with 218 additions and 105 deletions
+15 -9
View File
@@ -23,14 +23,16 @@ Twitch identities; they do not require credentials.
1. Run `npm run dev` and open `http://localhost:3000`.
2. Confirm the exact dormant banner appears and no timer runs.
3. Use **Local viewer login** to spawn and bind a viewer.
4. Confirm 3 HP, 2 AP, no Guard, a ready heal, and a 25-second phase.
5. Exercise movement, invalid walls, Attack, Heal, and Pass. Invalid actions
4. Confirm 3 HP, 2 AP, no Guard, a ready heal, and a five-second phase.
5. Confirm the viewer's first accepted action resets the timer to five seconds
and their second accepted action does not reset it again.
6. Exercise movement, invalid walls, Attack, Heal, and Pass. Invalid actions
must not consume AP.
6. Open a second browser/private window with a different ID. Confirm both
7. Open a second browser/private window with a different ID. Confirm both
characters share the dungeon but each controller spends only its own AP.
7. Refresh during a phase. Confirm a snapshot restores the map/log and no
8. Refresh during a phase. Confirm a snapshot restores the map/log and no
command replays.
8. Run `npm run build && npm start` and repeat the smoke test against the built
9. Run `npm run build && npm start` and repeat the smoke test against the built
server.
The local-only endpoints `/api/dev/spawn` and `/api/dev/redemption` exist only while
@@ -52,7 +54,8 @@ cyan control-region boundary and a pink controller boundary. Both switches are
accepted only on `localhost`, `127.0.0.1`, or `[::1]`, so the diagnostics cannot
be enabled on the deployed Extension origin.
Verify at 1920×1080, 1280×720, and a narrower or 4:3 viewport:
Verify at 1920×1080, 1280×720, a narrower or 4:3 viewport, and a mobile-width
viewport:
- the document and empty overlay canvas remain transparent;
- controls stay within the upper-left debug boundary and remain readable;
@@ -61,7 +64,9 @@ Verify at 1920×1080, 1280×720, and a narrower or 4:3 viewport:
- Up, Down, Left, Right, Attack, Heal, and Pass reach the same backend routes;
- missing character, dead character, non-player phase, and zero-AP states still
disable the controls; and
- loading `/` still presents the full local game and controller.
- loading `/` still presents the full local game and controller;
- mobile identity/color, HP, AP, and heal status remains visible; and
- mobile directional buttons are at least 56px and action buttons at least 52px.
Remove the query string for the production-shaped local view. Twitch-hosted
testing still must cover identity sharing, player ownership, theater mode,
@@ -69,15 +74,16 @@ fullscreen, embeds, ads/pauses, and Twitch player-control safe zones.
## Live-channel campaign
After completing `docs/twitch-setup.md`, use two follower accounts and one
After completing `docs/twitch-setup.md`, use five follower accounts and one
non-follower account. Capture redacted evidence for:
- eligible, ineligible, and duplicate `!spawn` attempts;
- matching and mismatched Extension identities;
- independent commands from two viewers;
- four deterministic party slots/colors and a rejected fifth viewer;
- phase expiry and AutoGuard while one viewer is disconnected;
- death and a configured Channel Points reward redemption from the same user;
- escape with the Goblin alive, floor revival, and total-party defeat dormancy;
- escape with the Goblin alive, complete next-floor reparty, and total-party defeat dormancy;
- refresh/reconnect during a phase and transition; and
- repeated floors and a short soak session.