Files
Dune/docs/TABLE_SOUNDS.md
Quintine a3bc0ac837 Show completed core actions and summarize notice bursts
Tag committed ordinary movement, shipping, revival, collection, battle,
native Guild transport and HMS relocation for the existing house notices
and optional sounds. Keep pending and canceled actions free of false
completion notices and preserve richer Smuggler and card-specific labels.

Bound feedback to three 1.5-second notices including the active notice.
Summarize older pending events with an exact count and retain individual
chronicle entries. Consume stale, duplicate, muted and hidden updates
without replay; clear visible and queued feedback when the page hides.
These changes add log metadata and cosmetic presentation only.

Validation: types, lint, 5137 offline tests and production build passed.
Independent review resolved one duplicate Smuggler notice. Nine engine
regressions and six queue/cursor/component tests cover the new behavior.
Two Basic/Advanced four-player games completed with 821 legal actions,
21 JSON restores and zero rejected actions; no AI tuning was done.

Browser QA 76CMLL8Z used genuine Basic setup and private real-action batches.
A seven-event burst displayed Revival plus four earlier actions, then
drained. Chronicle navigation and silent toggle/refresh were checked;
refresh kept the saved row identical. Phone notice bounds fit without
overflow. Transient phone text and actual background visibility were not
captured; screenshot and full visual acceptance remain open.
All 1,585 prior rooms, 3,353 seats and auxiliary records stayed unchanged.
One QA room and human seat were added; no reset, restart or automation.
2026-09-21 16:06:35 +10:00

50 lines
2.9 KiB
Markdown

# Optional table sounds
The connected sound prototype adds browser-local mute, volume and a test control
to the table header. It defaults to off at 35% volume. Settings are independent of
automatic visual notices and synchronize between tabs on the same origin. Storage
failure retains the preference in memory without interrupting play.
Two original sine-tone cues are synthesized with Web Audio: one for a new tagged
automatic action and two for a phase/status/turn transition. Audio uses only the
existing projected log sequences and public phase identity. It does not inspect
cards, plans, private resources, pending eligibility or other seats. It sends no
actions and changes neither rules, AI pacing nor persistent game state. No audio
download, external service or microphone permission is required.
Initial/restored snapshots establish a silent baseline. Later snapshots are
consumed even when muted, hidden or unable to play. A batch produces at most one
cue, phase changes take precedence, and a 700ms minimum interval drops rapid cues
without keeping a backlog. Log truncation and stale sequences do not replay
automatic events. Switching rooms establishes a fresh baseline.
Audio is unlocked only by a user gesture. A saved enabled preference needs a click
or key press after refresh before new cues can sound. Enable and Test sound offer
a sample. Volume zero is silent and disables Test sound. Mute, backgrounding and
unmount stop active tones; unmount closes the context. Failed/unsupported audio
remains cosmetic; a failed explicit preview reports that play can continue.
Audio is independent of reduced-motion settings.
## Evidence and limits
`tests/table-sound.test.tsx` checks initial/stale/duplicate snapshots, room changes,
silent consumption, coalescing, priority, bounded volume and voice duration,
gesture-only context creation, pending unlock cancellation, mute/disposal,
unavailable audio and accessible initial controls. Its fake audio context does
not prove physical speaker output or every browser's autoplay policy.
Browser verification covers the existing isolated saved seat, sound on/off,
keyboard volume, zero-volume test disabling, refresh persistence and same-origin
tab synchronization. The phone panel's bounds were checked at a 390px requested
viewport. Screenshot capture timed out, so this checkpoint does not claim visual
screenshot acceptance or audible output verification. No game action was needed
to change sound settings. Settings were returned to off and 35% afterward.
This is a functional prototype, not the final sound design. Successful powers
without an automatic notice tag remain outside these cues. Per-component audio,
broader device/browser acceptance and final sound mixing remain unfinished.
[Completed-action feedback](ACTION_FEEDBACK.md) extends the tagged events to
ordinary movement, shipping, revival, collection and battle results. The sound
system keeps its existing silent baseline, coalescing and independent controls.