fix(call-to-play): confirm early starts inline

Starting an underfilled or scheduled call immediately sent Start. Ask "Start
this call early?" inline, with Start now and Keep waiting choices, before
publishing an early start. Ready and elapsed calls retain one-click starting,
and local launch still waits for core acceptance.

Match the existing cancel confirmation layout, reset pending confirmation on
call or actor changes, and test the real action callbacks for dismissal,
retry, deferred acceptance, normal starts, and missing local games.

Test Plan:
- `just frontend-test` -- passed, 113 tests
- `just test` -- passed on rerun, 797 tests; the initial run hit an unchanged
  scoped-process test's two-second child-start timeout
- `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:
ddidderr committed 2026-09-15 23:41:43 +02:00
1 parent 37899da18a
commit dc326a0e3f
4 files changed
+200 -17

No files matched your search

+6 -2
View File
@@ -834,8 +834,12 @@ 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.
Before the roster is ready or the deadline has elapsed, clicking **Start now**
opens a small inline confirmation: **Start this call early?**, with **Start
now** and **Keep waiting** buttons. Keeping the call waiting publishes no
action. Ready and Time's-up calls start with one click. 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).