diff --git a/TODO.md b/TODO.md index 239e0b4..278e9e3 100644 --- a/TODO.md +++ b/TODO.md @@ -14,6 +14,23 @@ REWORK_PLAN.md. format for new entries. - Related: BUG-7 (reorder no undo). +## Architecture: 1-list turn order model (DONE) +- Single source: turnOrderIds === participants.map(id). No re-sort after + startEncounter. nextTurn skips inactive (predicate), inactive stay in slot. +- Drag (reorder) overrides initiative — cross-init allowed, DM choice. +- startEncounter sorts ALL participants by init once, then frozen. +- addParticipant splices by init pos. remove/toggle/reorder sync list. +- Display renders participants[] directly (no sortParticipantsByInitiative). +- BUG-6 (reorder divergence) fixed structurally. BUG-5 (rotation) held + (500 rounds CLEAN). + +### FEAT-3: initiative first-class entry (add + edit) +- Current: only initMod at char-build. No initiative field at add-participant + or edit. 3-step to set after other steps. +- Need: initiative field at add-char, add-monster, AND edit participant. +- Separate design + RED. Own work item. +- Related: tie-break = drag order (current, works). Expose clearly. + ### FEAT-1: Dead participants stay in turn order — DONE - Fixed: `applyHpChange` no longer flips `isActive` or touches `turnOrderIds` on death/revive. Dead stay in rotation, `nextTurn` visits them, PCs get @@ -92,7 +109,10 @@ REWORK_PLAN.md. `nextActiveAfter`. Both nextTurn + computeTurnOrderAfterRemoval delegate. - 500-round replay: 0 skips, 0 double-acts. -### BUG-6: reorderParticipants doesn't update turnOrderIds +### BUG-6: reorderParticipants doesn't update turnOrderIds — FIXED +- Fixed structurally by 1-list model (commit 5d3a060). turnOrderIds = + participants.map(id) always. reorder cross-init allowed (DM override). + Display === rotation by construction. - Test: `shared/tests/turn.reorder.test.js` 'reorder updates turnOrderIds' (RED). - `reorderParticipants(enc, draggedId, targetId)` swaps two same-initiative participants in `participants[]` array but leaves `turnOrderIds` unchanged. @@ -134,8 +154,8 @@ REWORK_PLAN.md. ## Pipeline (bugs only --- milestones live in REWORK_PLAN.md) - [ ] BUG-4: fix setDoc→updateDoc for all 5 activeDisplay sites -- [x] BUG-5: fixed (commit 494327f) -- [ ] BUG-6: reorderParticipants update turnOrderIds +- [x] BUG-5: fixed (1-list model, 500 rounds clean) +- [x] BUG-6: fixed structurally (1-list model) - [ ] BUG-8: ws adapter reconnect - [ ] BUG-10: deact+reactivate double-act - [ ] BUG-11: FE Combat.scenario crash