docs: OP8 merged — ledger CODE-COMPLETE, file #373 (ConflictingMaps)
Merge1c5cd969lands OP8 on the campaign tip after057d8cd7, so the #372 viewport fix covers OP8's six ListBoxes (the re-review's merge precondition). Post-merge full Release suite: 13,155 / 4 skips / 0 failures. #373 captures the deferred DAT ActionMap.ConflictingMaps consultation the OP8 round-2 conflict-universe fix scoped out. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
1c5cd969b4
commit
1a57f96efe
2 changed files with 33 additions and 1 deletions
|
|
@ -24,6 +24,38 @@ What does NOT go here:
|
|||
- Every session: scan OPEN issues at start; promote/close anything we touched during the session before ending.
|
||||
- Promoting to a Phase: mark as `DONE (promoted to Phase X)` + commit SHA where the Phase entry landed.
|
||||
|
||||
## #373 — Configure Keyboard: DAT `ActionMap.ConflictingMaps` not consulted — the combat cluster raises false conflict prompts
|
||||
|
||||
**Status:** OPEN — filed 2026-08-11 at Campaign OP slice OP8's re-review
|
||||
round 2 (R1's scope boundary).
|
||||
|
||||
The DAT ActionMap (DID `0x26000000`) carries a `ConflictingMaps` table
|
||||
retail's `UIOption_ActionKeyMap` consults when deciding whether two rows
|
||||
that share a chord ACTUALLY conflict: contexts the table marks as
|
||||
non-conflicting may legitimately share a key. acdream's
|
||||
`KeyboardConfigController.FindConflicts`
|
||||
(`src/AcDream.App/UI/Layout/KeyboardConfigController.cs`) ignores the
|
||||
table entirely — it treats ANY two live rows sharing a chord as a
|
||||
conflict and opens the N-way overwrite confirm dialog. The visible
|
||||
symptom is the **combat cluster**: Insert/Delete/End/PageUp/PageDown are
|
||||
retail-authored onto multiple rows across contexts the ConflictingMaps
|
||||
table permits to coexist, so rebinding one of those keys (or binding a
|
||||
new action to one) prompts "overwrite N bindings?" where retail prompts
|
||||
for fewer or none. Accepting the prompt then strips retail-default
|
||||
bindings that should have survived.
|
||||
|
||||
The OP8 round-2 fix already excluded store-only rows (`MappedAction is
|
||||
null`) from the conflict universe — those cannot collide because they
|
||||
never reach the InputDispatcher — but retail-mapped cross-context
|
||||
sharing needs the real table. **Fix:** parse `ConflictingMaps` in
|
||||
`RetailActionMap` (the reader already round-trips the field —
|
||||
`RetailActionMapReaderTests` constructs it), and make `FindConflicts`
|
||||
consult it: two rows sharing a chord conflict only if their contexts'
|
||||
ConflictingMaps entries say so. Conformance-test against the combat
|
||||
cluster's authored defaults (five keys, multi-row each, zero prompts on
|
||||
a no-op rebind). The gate script's §OP8 warns the user off treating the
|
||||
false prompts as new breakage until this lands.
|
||||
|
||||
## #372 — Options panel: Character/Chat/Config tabs render BLANK on screen and most Gameplay buttons do nothing (connected-gate failure)
|
||||
|
||||
**Status:** BLANK-TABS ROOT-CAUSED + FIXED (`c3ed32fb` probe, fix this
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue