docs: file #358 — Ctrl+M mute chord never fires from the dispatcher
Deferred by user direction. The mute mechanism (2cf94dbc) is fine; the
chord never fires: 101 [input] actions logged in the session, zero for
AcdreamToggleAudioMute. Hypotheses ranked in the issue — merged-binding
absence (the suspicious stable '152 bindings' count), dispatcher modifier
matching, retained-UI Ctrl-chord consumption.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
2cf94dbcd2
commit
d2b4f0d66f
1 changed files with 38 additions and 0 deletions
|
|
@ -37,6 +37,44 @@ null-guard with `CanExecuteLiveMovement` (the exact lifecycle set the throw
|
||||||
helper accepts); cursor restore still runs unconditionally, and
|
helper accepts); cursor restore still runs unconditionally, and
|
||||||
published-controller behaviour is unchanged.
|
published-controller behaviour is unchanged.
|
||||||
|
|
||||||
|
## #358 — Ctrl+M mute keybind never fires from the dispatcher
|
||||||
|
|
||||||
|
**Status:** OPEN — filed 2026-08-08, deferred by user direction ("we can carry
|
||||||
|
that on for later"). The mute mechanism itself is implemented and untested
|
||||||
|
only for want of a working trigger.
|
||||||
|
|
||||||
|
**Symptom:** pressing Ctrl+M in a live session does nothing. The downstream
|
||||||
|
chain is NOT the problem — evidence from the session log:
|
||||||
|
|
||||||
|
- `[input]` action logging was live (101 fired actions: movement, selection,
|
||||||
|
UseSelected) and recorded **zero** events for `AcdreamToggleAudioMute` —
|
||||||
|
the chord never fired from `InputDispatcher`, so the
|
||||||
|
`GameplayInputCommandController` switch case and the engine's `Muted`
|
||||||
|
property (verified paths, commit `2cf94dbc`) were never reached.
|
||||||
|
- `KeyBindings.LoadOrDefault`'s merge-over-defaults was read and looks
|
||||||
|
correct (an action with defaults but absent from the saved file picks up
|
||||||
|
the default binding), so a stale `keybinds.json` SHOULD have gained the
|
||||||
|
new binding. Unverified whether it actually did: the client logged
|
||||||
|
"loaded 152 bindings" both before AND after the binding was added, which
|
||||||
|
is suspicious — either the pre-change default count was 151 (then 152 is
|
||||||
|
right) or the merge did not add it (then the count should have grown).
|
||||||
|
Nobody has printed the default count or dumped the merged set yet.
|
||||||
|
|
||||||
|
**Hypotheses, in order:** (1) the merged set genuinely lacks the binding
|
||||||
|
(count question above — cheapest to check first: log `RetailDefaults().Count`
|
||||||
|
or grep the saved json after a save); (2) the dispatcher's modifier matching
|
||||||
|
does not fire a Ctrl+M chord — e.g. exact-vs-subset modifier semantics, or
|
||||||
|
the bare `M` binding (`SelectionNextFellow`, no modifiers) shadowing it; note
|
||||||
|
the log shows no `SelectionNextFellow` firing on the press either, which
|
||||||
|
leans against simple shadowing and toward the chord matching nothing at all;
|
||||||
|
(3) the retained UI consuming Ctrl-chords before the dispatcher.
|
||||||
|
|
||||||
|
**The mechanism behind the key** (already landed, `2cf94dbc`): engine
|
||||||
|
`Muted` sets the AL listener gain 0/1 — unused since A2 moved mixing to the
|
||||||
|
CPU, so it silences already-playing voices instantly without touching the
|
||||||
|
retail mixing math or persisted volumes. Once the trigger works, no further
|
||||||
|
audio-side work is needed.
|
||||||
|
|
||||||
## #357 — Login stalls: reveal reaches ready=True but the player is never placed; UI + sky render, world never opens
|
## #357 — Login stalls: reveal reaches ready=True but the player is never placed; UI + sky render, world never opens
|
||||||
|
|
||||||
**Status:** CLOSED 2026-08-08 — root-caused and fixed same session (see the
|
**Status:** CLOSED 2026-08-08 — root-caused and fixed same session (see the
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue