feat(ui): complete retail item drop branches

Give retained buttons a reusable item-drop seam, wire the toolbar backpack target, and port retail stack-merge legality, capacity clamping, wire dispatch, destination selection, and immediate shortcut rekey notice. Record the live ACE merge gate and keep split quantity under AP-101.

Co-Authored-By: Codex <codex@openai.com>
This commit is contained in:
Erik 2026-07-11 09:46:32 +02:00
parent 3281e0acb4
commit dc1649c493
19 changed files with 479 additions and 28 deletions

View file

@ -471,7 +471,7 @@ same slot after a clean reconnect.
### 4.3 Port every drag/drop branch
- [ ] Add a pure `ShortcutDropPlanner` keyed by source kind: toolbar reorder,
- [x] Add a pure `ShortcutDropPlanner` keyed by source kind: toolbar reorder,
inventory fresh add, occupied target, inventory-button target,
off-bar removal, and full-stack merge replacement.
- [x] For an inventory-to-occupied-slot drop, place the displaced shortcut at
@ -479,7 +479,7 @@ same slot after a clean reconnect.
- [x] Validate the complete mutation before changing state, apply it atomically, and
emit exact Remove/Add wire ordering. Use pending/confirm/rollback only where the
protocol actually exposes rejection; never leave a partially mutated bar.
- [ ] On full-stack merge, rekey every matching object shortcut and preserve the
- [x] On full-stack merge, rekey the matching object shortcut and preserve the
non-object fields of its raw `ShortCutData` entry.
**Wave 4.3 partial implementation (2026-07-11):** drag-over feedback is now an
@ -499,9 +499,18 @@ records, exact wire order, and raw full-stack rekeying have conformance fixtures
`ToolbarController` applies the validated local transaction atomically, then emits
its ordered Remove/Add events. AP-102 is retired; 4,646 tests pass. The live
inventory-to-occupied displacement plus toolbar-reorder gate passed 2026-07-11.
Inventory-button placement and
the upstream full-stack-merge notice owner remain part of the unchecked umbrella
items above rather than being implied complete by this slice.
Wave 4.3c completes the umbrella: retained buttons can own item-drop callbacks;
the toolbar inventory button uses retail's fresh-item gate and exact green-arrow
overlay, while aliases stay neutral. Inventory now tries the pure named-retail
stack-merge legality/amount planner before ordinary insertion, sends `0x0054`,
broadcasts `FullMergingItem` immediately from the attempt owner, rekeys the toolbar
with existing-destination removal, and selects the target. The notice is not a
server confirmation despite its name. AP-101 still covers the absent shared split
entry/slider; until it lands, merge requests use the whole source stack before the
retail destination-capacity clamp. Release build is warning-free and 4,660 tests
pass. The compatible-stack live gate passed 2026-07-11; it exposed the expected
Wave 4.4/AP-101 gap that the selected strip still displays one instead of the
stack count and has no split slider. The inventory-button live gate remains pending.
### 4.4 Finish toolbar controls