fix(call-to-play): let callers start before the roster fills
The card hid Start now until the roster filled or the deadline elapsed, preventing groups from starting early with fewer players. Expose the existing start action for every unfinished caller-owned call, including scheduled calls before check-in. Keep check-in controls and launch only after core acceptance. Add rendered-card regressions for six-of-eight players, solo and scheduled starts, creator authority, terminal states, and unavailable local games. Use installed React packages for these tests without rewriting the app lockfile, and document the caller's control over start time. Test Plan: - `just frontend-test` -- passed, 107 tests including 8 rendered-card tests - `just test` -- passed, 797 Rust tests - `just clippy` -- passed with warnings denied - `just fmt` -- passed - `deno task build` -- passed TypeScript and Vite production build - `git diff --cached --check` -- passed
This commit is contained in:
1 parent
a73acccf1a
commit
37899da18a
6 files changed
+228
-36
No files matched your search
+11
-3
@@ -818,7 +818,7 @@ Source: `calltoplay.jsx` (the feature) + `ctp-chat.jsx` (per-call chat + shared
|
||||
| Set up with | game + max players + **duration** (5/10/15/30/60 min) | game + max players + **clock time** (24h, + which day) |
|
||||
| Others respond | `Ready now` or `+N minutes` | `I'm in` (RSVP), then check in later |
|
||||
| Resolves | when the roster fills **or** the timer runs out | at the scheduled time, after a check-in window |
|
||||
| Who starts it | the **caller** decides the actual launch | the **caller**, once people have checked in |
|
||||
| Who starts it | the **caller** decides the actual launch | the **caller** decides, including before check-in |
|
||||
|
||||
**Check-in window.** `CHECKIN_LEAD_MS = 15 min`. A scheduled call sits in the
|
||||
`scheduled` phase collecting RSVPs until 15 minutes before its start time, then
|
||||
@@ -830,6 +830,13 @@ When the deadline passes, the call is labeled **Time's up** rather than Ready.
|
||||
It remains visible for five minutes so the caller can start or extend it, then
|
||||
the call and its history expire as a unit.
|
||||
|
||||
The caller can use **Start now** at any time while the call is visible and has
|
||||
not been started or cancelled, including before scheduled check-in. The player
|
||||
count and deadline guide coordination; they do not gate starting. An
|
||||
eight-player call can start with six ready players, or even the caller alone.
|
||||
Starting marks the call Running and then invokes the caller's local game action
|
||||
only after the peer accepts it.
|
||||
|
||||
**Every call carries a small group chat** (see "Per-call chat" below).
|
||||
|
||||
### Three surfaces
|
||||
@@ -892,8 +899,9 @@ Top to bottom:
|
||||
avatar chips for each participant plus empty slots up to `maxPlayers`.
|
||||
5. **Actions** — context-dependent on your role (**creator** / **participant** /
|
||||
**outsider**) and phase: `Ready now` + `+5/10/15/30m` buffer buttons,
|
||||
`I'm in` (RSVP), `Start now` / `Add 5 more minutes` (creator once resolved),
|
||||
`Leave` / `Can't make it`, or a status note.
|
||||
`I'm in` (RSVP), `Start now` (creator at any time before Start/Cancel),
|
||||
`Add 5 more minutes` (creator once resolved), `Leave` / `Can't make it`, or a
|
||||
status note.
|
||||
6. **Chat** — the collapsible per-call chat panel.
|
||||
7. **Cancel** — creators get a `Cancel this call` link with an inline confirm.
|
||||
|
||||
|
||||
Reference in new issue
Block a user