Files
Dune/docs/READABLE_NOTICES.md
T
Quintine 999edb67e6 Keep room confirmations visible until acknowledged
Show confirmed create/join guidance until local Continue without polling or ordinary game actions clearing unread text. Default shared toasts to no timeout with visible Dismiss controls.

Validation: 23 focused entry/action/seat tests, types/lint/build, and original local room creation with 43-second retention through polls and a circle change, explicit dismissal and no replay. No console errors. QA room preserved. Deployed acceptance remains open. Runtime fingerprint d57fa6a34bb1738017c2690ca5ad9f04b0b99458078a60c7ddd51e2c29483301; documentation overlay a8baa23802ac1c79321d67913c27512a199699839c1932947dfa3af95434cc37.
2026-10-18 10:27:41 +11:00

71 lines
4.3 KiB
Markdown

# 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 open the confirmed
table with a **Room created** or **Room joined** confirmation above it. The
confirmation shows the room code and invitation/seat-protection guidance, and
stays until **Continue**. Polling, reconnecting and ordinary game actions do not
dismiss it. Continue acknowledges only local text, without submitting a game
action. Leaving, reloading or claiming a different seat clears the local notice.
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 follow-up audit also covers instructions replaced by a quick server response,
even without a dismissal timer. Initial administrator creation, room/lobby controls,
removal, closure and archive requests now show only progress while awaiting their
first response. The same applies to AI permissions and handover creation,
cancellation and acceptance. Saved requests restored after refresh and uncertain
results retain their recovery controls; explicitly retrying leaves those controls
visible and disabled until the response. Private retry proofs are still saved
before dispatch, independently of whether recovery instructions are visible.
Successful seat recovery and handover show a confirmation above the table with
**Continue**, including the previous owner's/session's revoked access. It remains
while the player reads or plays; background polling and new actions do not clear
it. Continue dismisses only the message. Leaving or reloading the page clears this
local confirmation, without changing the recovered seat.
Errors and recovery prompts have explicit controls; component inspectors have
close buttons. The shared toast provider also defaults to no automatic timeout;
its standard notice list provides a visible **Dismiss** button. Network
progress, polling deadlines and permission-expiry
countdowns keep their existing behavior.
## Verification
18 October follow-up: local QA room NAZLA8P4 kept its unread confirmation for
43 seconds through background polling and a normal player-circle change.
Continue removed only the notice; the same room stayed open and subsequent
polls did not restore the notice. The screenshot and browser record are kept
outside Git. No console errors; focused23/23 existing entry/notice/seat tests,
types/lint and production build pass. The dedicated QA room is preserved.
This is local evidence; deployed verification remains open.
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.