fix(journal): the location readout is a FIELD, refresh at the click, and Abandon works
Three fixes from the first connected round. The location readout is authored EDITABLE (0x16), so it builds as a UiField — not the UiText its "00.0S, 00.0W" placeholder suggests. The controller resolved it as text, got null, and threw every write away in silence: Record reached the model and reached the FILE, and never reached the screen. That is exactly what was reported, and it is a whole class of bug, so the sweep that found it is now a test over every element all three controllers bind. The handlers mutated the model and left redrawing to the next frame's Tick. Retail's ListenToElementMessage @0x004968D0 ends every one of them in Update() instead — at the moment of the click. The deferred version happened to work in the client and made the behaviour untestable and a frame late; the notes-page tests I had not written until now fail against it. Abandon is wired. "Retail's abandon path is a contract-registry command we have not ported" was wrong — it is game action 0x0316 with a single contract id, and ACE replies with the 0x0315 delete QT3 already handles. Nothing is removed locally, so a refusal leaves the quest visibly intact rather than vanishing it optimistically and having it reappear on the next full table. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
0b27c5d0fe
commit
e35d9386e4
12 changed files with 556 additions and 16 deletions
|
|
@ -185,9 +185,11 @@ give, use, confirmations) is other features and stays out of Campaign QT.
|
|||
|
||||
- The connected user gate: accept a quest against live ACE, open the Journal
|
||||
panel, confirm the list, the progress column and a repeat countdown.
|
||||
- The Abandon button is deliberately unwired — retail's abandon path is a
|
||||
contract-registry command this campaign did not port. It is authored and
|
||||
visible; clicking it does nothing.
|
||||
- ~~The Abandon button is deliberately unwired~~ **WIRED 2026-08-21.** The
|
||||
claim that it had no wire message was wrong: it is game action `0x0316`
|
||||
carrying one contract id, and ACE answers with the `0x0315` delete QT3
|
||||
already handles. Nothing is removed locally, so a refused abandon leaves the
|
||||
quest visibly intact.
|
||||
- The Journal notes page and Page List tabs mount inert, by design.
|
||||
|
||||
## Definition of done
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
# Campaign QJ — the Journal and Page List tabs
|
||||
|
||||
**Status:** CODE-COMPLETE 2026-08-21. All five slices landed; the connected
|
||||
user gate is owed. Completes the panel Campaign QT mounted: QT
|
||||
**Status:** CODE-COMPLETE 2026-08-21. All five slices landed, plus the first
|
||||
connected round's three fixes (button property `0x0D`, the location readout's
|
||||
widget type, refresh-at-the-click). Abandon is now wired too — it turned out to
|
||||
have a real wire action after all. The connected re-gate is owed. Completes the panel Campaign QT mounted: QT
|
||||
shipped the Contracts tab and left the other two inert by design.
|
||||
|
||||
**Scope:** retail's `gmJournalUI` (element type `0x10000048`, page
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue