fix(turn): log reorder + deathSave (BUG-7)
reorderParticipants returned log:null → handler skipped logAction → drag
invisible in combat log, no undo payload. Now returns
log:{ message, undo:{ participants, turnOrderIds, currentTurnParticipantId }}.
App.js handleDrop calls logAction on logged reorders.
Found second gap: deathSave also returned null log (both branches).
Fixed — message + undo (participants snapshot).
Added logging contract test (turn.logging.test.js):
- all mutating ops logged (start/next/pause/add/remove/toggle/hp/deathsave/
condition/reorder/end)
- no-ops return null log (same-id, cross-init, cross-pointer blocks)
- undo payloads valid + restore prior state
- documents addParticipants + updateParticipant gaps (null log, intentional)
235 tests green.
This commit is contained in:
+7
-1
@@ -1084,8 +1084,14 @@ function ParticipantManager({ encounter, encounterPath, campaignCharacters }) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
const { patch } = reorderParticipants(encounter, draggedItemId, targetId);
|
||||
const { patch, log } = reorderParticipants(encounter, draggedItemId, targetId);
|
||||
await storage.updateDoc(encounterPath, patch);
|
||||
if (log) {
|
||||
logAction(log.message, { encounterName: encounter.name }, {
|
||||
encounterPath,
|
||||
updates: log.undo,
|
||||
});
|
||||
}
|
||||
} catch (err) {
|
||||
// drag invalid (id not found) — ignore
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user