acdream/src/AcDream.App/Input
Erik 2cf94dbcd2 feat(audio): Ctrl+M instant mute + inn-chatter investigation closed as server content
Two items from listening-gate round 2.

Mute: AcdreamToggleAudioMute (default Ctrl+M; bare M is selection) flips
OpenAlAudioEngine.Muted, implemented as the AL LISTENER gain - unused
since A2 moved all mixing to the CPU, so it is a free master switch that
silences already-playing voices instantly and restores them exactly,
without touching the retail mixing math, the -50 dB allocation cutoff, or
any persisted volume setting. Rebindable like every other action; console
line confirms each flip.

Inn chatter: the user hears talk-and-laughter ambience in retail inns and
not in acdream. Three installed-dat scans (pinned as conformance tests in
EnvCellSoundEmitterInventoryTests) prove the mechanism is NOT client
data: no interior static in the town landblock carries an ambient-slot
sound table, no Setup among all 5,935 in the portal dat references one,
and yet 23 sound tables carrying ONLY Ambient1..8 slots exist - pure
soundscape banks with nothing client-side pointing at them. They are
wire-bound: the server attaches one to an emitter object via
CreateObject's sound-table field and fires the slots over 0xF750 - ACE
implements exactly this (EmoteType.Sound heartbeat emotes ->
GameMessageSound broadcast). Our 0xF750 receiver (slice A3) is live and
now instrumented (ACDREAM_PROBE_SOUND_WIRE=1, via the new
AudioDiagnostics owner per Code Structure Rule 5, with per-event drop
reasons in AudioHookSink.PlayServerSound). A probed session against the
local ACE received ZERO 0xF750 events across a town walkabout: the
silence is server world-content (no emitters configured/firing), not a
client drop. The first scan's assertion originally encoded the
emitter-object hypothesis; the data refuted it, and the test now pins the
negative so the conclusion cannot silently rot.

Full Release suite green (the one failure during development was the
hypothesis-pinning assertion, corrected to pin the finding).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-09 14:09:24 +02:00
..
CameraPointerInputController.cs refactor(app): compose session and player startup 2026-07-22 18:28:32 +02:00
DispatcherCameraInputSource.cs refactor(input): own pointer and callback lifetime 2026-07-22 11:59:33 +02:00
DispatcherMovementInputSource.cs fix(physics): movement-parity fixes - adjusted catch-up cap, autorun retail semantics, AP-30 retired 2026-07-30 15:04:17 +02:00
GameplayInputActionRouter.cs feat(runtime): define borrowed views commands and ordered events 2026-07-25 19:08:42 +02:00
GameplayInputCommandController.cs feat(audio): Ctrl+M instant mute + inn-chatter investigation closed as server content 2026-08-09 14:09:24 +02:00
GameplayInputFrameController.cs refactor(runtime): own combat and magic intent 2026-07-26 11:56:40 +02:00
InputCaptureSources.cs feat(render): Campaign V slice V11 commit 1 - delete ImGui, Studio, and the DevTools frontend 2026-07-28 23:56:04 +02:00
LocalPlayerAnimationController.cs refactor(app): key live projections by runtime identity 2026-07-25 21:50:58 +02:00
LocalPlayerFrameRuntime.cs feat(headless): complete deterministic bot command parity 2026-07-27 08:23:36 +02:00
LocalPlayerProjectionController.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
LocalPlayerRuntimeState.cs feat(headless): hydrate isolated collision worlds 2026-07-27 09:25:58 +02:00
MouseLookController.cs fix(input): focus loss no longer faults on an unpublished movement controller (#356) 2026-08-09 12:02:38 +02:00
MovementTruthDiagnosticController.cs refactor(runtime): close simulation ownership 2026-07-26 15:53:31 +02:00
PlayerModeAutoEntry.cs feat(runtime): C3c - production placement cutover: both hosts on the residence conductors (routes 1+8) 2026-08-02 18:10:33 +02:00
PlayerModeController.cs fix(interaction): restore distant use after runtime cutover 2026-08-03 09:36:53 +02:00
QuiescentInputContext.cs refactor(app): compose settings and developer tools 2026-07-22 16:11:34 +02:00
RetailLocalPlayerFrameController.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
RetainedUiGameplayBinding.cs refactor(input): own gameplay action routing 2026-07-22 12:43:05 +02:00
SilkKeyboardSource.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
SilkMouseSource.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00