Keep popup instructions readable until continued
Show concise progress during first room create/join; reserve persistent recovery instructions for saved/uncertain attempts. Retain completed-action text until a local Continue button, without gating rules or AI. Preserve unread text across backgrounding, bounded summaries, mute and private-safe feedback. Fix the container QA helper path-import collision. Verified: typecheck, lint, 5200 offline tests, 52 HTTP tests and production build. Delayed/lost-response browser checks prove progress, refresh recovery and exact retry without duplicates. Notice stayed for over 47 seconds while the QA game progressed; Continue advances only presentation. Mobile 16px/44px controls verified. Existing games preserved. Container/deployed acceptance follows publication.
This commit is contained in:
1 parent
c2d392e155
commit
f29d05620c
10 files changed
+238
-115
No files matched your search
+23
-11
@@ -15,30 +15,41 @@ its separate mute and volume settings still apply.
|
||||
|
||||
## Bursts, refresh and controls
|
||||
|
||||
Each notice lasts 1.5 seconds and does not intercept pointer or keyboard input.
|
||||
Each notice stays visible until the player chooses **Continue** or switches
|
||||
notices off. Continue dismisses only this local message; it does not submit a
|
||||
game action, delay AI progress or pause a saved decision. Notices do not move
|
||||
keyboard focus or open a modal. Only the notice itself intercepts pointer input;
|
||||
the rest of the table remains usable. Regular text is at least 14 pixels, with
|
||||
a 44-pixel minimum button height and scrolling for a short viewport.
|
||||
|
||||
The queue holds at most three notices including the visible one. When more
|
||||
actions arrive, older pending notices merge into a count beside the most recent
|
||||
action in that group; their individual details remain in the table chronicle.
|
||||
A new burst never replaces the currently displayed notice. After arrivals stop,
|
||||
the visible notice and pending queue finish within 4.5 seconds, rather than
|
||||
retaining minutes of old events.
|
||||
A new burst never replaces the currently displayed notice. Continue displays
|
||||
the next queued notice, if any, until that notice is also dismissed.
|
||||
|
||||
Initial and restored snapshots establish a silent baseline. Already-seen events
|
||||
do not replay. Events received while notices are off or the page is hidden are
|
||||
consumed silently. Hiding the page clears any visible or queued notice. The
|
||||
consumed silently. Hiding the page clears pending notices while preserving the
|
||||
unread notice already displayed, so it is still there when the player returns. The
|
||||
**Automatic action notices** toggle remains cosmetic; it cannot submit a game
|
||||
action or change a saved decision. Reduced motion removes the fade.
|
||||
action or change a saved decision. Notices have no timed fade or dismissal.
|
||||
|
||||
## Verification boundary
|
||||
|
||||
`tests/action-notice-queue.test.tsx` checks small updates, a full 250-entry burst,
|
||||
successive bursts during an active notice, exact represented counts and the
|
||||
initial nonblocking output, plus stale/duplicate sequence handling and silent
|
||||
consumption without replay. `tests/completed-action-events.test.ts` exercises
|
||||
consumption without replay. The local presentation tests exercise Continue,
|
||||
unread text across bursts/backgrounding, mute and no replay; the rendered notice
|
||||
test checks readable content and its connected Continue control without focus
|
||||
or modal behavior. These tests do not mount a browser DOM.
|
||||
`tests/completed-action-events.test.ts` exercises
|
||||
committed results and pending/canceled paths. Private checkpoint evidence records
|
||||
the browser checks and final source-bound verification.
|
||||
|
||||
Browser QA used genuine Basic Atreides/Harkonnen/Emperor setup. Private batches
|
||||
Earlier browser QA, before the persistent Continue control, used genuine Basic
|
||||
Atreides/Harkonnen/Emperor setup. Private batches
|
||||
advanced only that QA room through real engine actions, preserving card/force
|
||||
custody and seat controllers. A seven-event burst displayed the Emperor's
|
||||
**Revival** with four earlier completed actions, then drained. The chronicle
|
||||
@@ -48,10 +59,11 @@ left it empty. Refresh retained the exact saved game row. At a 390-pixel viewpor
|
||||
the notice container was 343 pixels within a 375-pixel document without horizontal
|
||||
overflow; transient mobile text was not captured. The viewport was reset afterward.
|
||||
|
||||
The provider reports background tabs as visible, so an actual background-page
|
||||
That provider reported background tabs as visible, so an actual background-page
|
||||
transition was not exercised. The cursor tests and handler review cover that
|
||||
branch; the automated component test does not mount timers. Existing screenshot
|
||||
capture failures leave full visual acceptance open.
|
||||
branch. That earlier timed-notice evidence does not verify the persistent
|
||||
control; current browser acceptance belongs to the new checkpoint report.
|
||||
Existing screenshot capture failures leave full visual acceptance open.
|
||||
|
||||
This extends functional feedback; complete animation design, every successful
|
||||
power tag and full visual/device acceptance remain unfinished. It does not
|
||||
|
||||
@@ -6,6 +6,16 @@ Expansion starts and full rules/publication acceptance remain gated.**
|
||||
|
||||
## Current checkpoint and work
|
||||
|
||||
The [readable-notice fix](READABLE_NOTICES.md) replaces the flashing recovery
|
||||
screen during ordinary room creation/join with concise progress. Actual recovery
|
||||
instructions stay until resolved, and completed-action text waits for a local
|
||||
Continue control. It does not add confirmation steps to game rules or AI turns.
|
||||
|
||||
Administrator access/directory checkpoint `c2d392e` passed types, lint, 5,196
|
||||
offline tests, 52 HTTP tests and build, plus focused authenticated/browser checks.
|
||||
Its production acceptance is being combined with this readability follow-up to
|
||||
avoid two deployments; saved games and full administration gates remain intact.
|
||||
|
||||
The user added a complete [administration panel](ADMIN_PANEL.md) to the goal on
|
||||
22 September: secure admin access, room creation/removal and lifecycle controls,
|
||||
participant support, backup/restore, operational views and audited actions.
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
# Dune implementation status
|
||||
|
||||
## 22 September 2026 — Readable room entry and completed-action text
|
||||
|
||||
Normal create/join now shows concise pending text while the first request runs;
|
||||
the existing full recovery panel is reserved for saved or uncertain requests and
|
||||
remains until explicitly resolved. Automatic-action notices retain text behind a
|
||||
local Continue control without gating rules, server actions or AI pacing. See
|
||||
[readable notices](READABLE_NOTICES.md) and [action feedback](ACTION_FEEDBACK.md).
|
||||
Focused regressions, delayed/lost-response browser QA and required checkpoint
|
||||
checks accompany the change. Deployed evidence remains separate and required.
|
||||
|
||||
## 22 September 2026 — Administrator access and room directory prototype
|
||||
|
||||
The first [admin panel](ADMIN_PANEL.md#access-and-directory-prototype) slice adds
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
# Readable progress, recovery and action notices
|
||||
|
||||
The user reported that a popup after room creation disappeared before it could
|
||||
be read or acted on. The first create/join request was rendering the full saved
|
||||
request recovery panel while awaiting its initial response. Successful creation
|
||||
then removed it immediately, making actionable recovery instructions appear to
|
||||
flash on screen even when nothing had gone wrong.
|
||||
|
||||
First submissions now show only **Creating your room…** or **Joining the room…**
|
||||
and a short progress message. Successful responses still open the confirmed
|
||||
table. A lost/uncertain response, saved request after refresh, or storage problem
|
||||
shows the existing persistent recovery panel. Its exact retry, deliberate
|
||||
abandonment and saved-kit recovery controls remain available until the player
|
||||
resolves the request. The private retry proof is still saved before submission;
|
||||
there is no automatic retry or new seat operation.
|
||||
|
||||
Completed-action notices also retain their text until **Continue**, instead of
|
||||
vanishing after 1.5 seconds. This is a local display control: the server has
|
||||
already completed the action and human/AI play continues normally. New events
|
||||
cannot replace the text being read. The optional toggle, bounded summaries,
|
||||
private-information filtering and silent refresh baseline remain; see
|
||||
[completed-action feedback](ACTION_FEEDBACK.md).
|
||||
|
||||
The notice audit found no other timer removing substantive text in app/component
|
||||
flows. Errors and recovery prompts have explicit controls; component inspectors
|
||||
have close buttons. Network progress, polling deadlines and permission-expiry
|
||||
countdowns keep their existing behavior.
|
||||
|
||||
## Verification
|
||||
|
||||
Browser QA uses dedicated rooms and a temporary local transport that delays the
|
||||
first response and can lose one successful create response. This verifies actual
|
||||
rendered progress, durable recovery instructions, and explicit same-request retry
|
||||
without introducing production timing changes. Existing room-entry regressions
|
||||
cover retry identity, storage failure, ambiguous responses and no duplicate
|
||||
creates; notice regressions cover retention, continuation, summaries and mute.
|
||||
|
||||
Record browser, source-bound checks and deployed acceptance separately. Test
|
||||
normal create/join and notice controls on the deployed revision; a local delayed
|
||||
transport test does not establish production behavior. Preserve existing games.
|
||||
Reference in new issue
Block a user