Files
ttrpg-initiative-tracker/TODO.md
T
david raistrick 30712f0e1e chore: strengthen lint coverage and update project housekeeping
- Recursively lint all production JS/JSX under src/ and shared/
- Exclude tests, mocks, and node_modules from static guard
- Update TODO status
- Exclude TODO.md from Docker build context
2026-07-14 22:38:44 -04:00

3.7 KiB

TODO

Backlog of bugs + long-term items. Milestones live in REWORK_PLAN.md.

Open

x fullscreen and dont lock on main app dm view and the no-game-player view ...and doesnt actually prevent lock on android

x also better vert tab layout - labelt friendly

x needs AC for players dude

x and quick entry hp

x hp do not carry from encounter to ecnounter!!! ^feature to add back to campaign character after encounter? maybe campaign toggle in charc section (choosing each end is DM overload will be missed forgotten done wront)

x refresh/reload/code update causes UI to update to top unselected cambpaign have to drill all the way back down to active encounter....every time. siemtmes?

x encounters cards need clear "in progress"...

x I wonder...if a charcter-list-character should have a isNPC option vailble to them - for longer lived npcs.....

x hp wont go over max and no temp hp support

monsters per campaign and npcs

or/and ....copy from encoubnter?

npm install warnings cleanup pass

lots of updates

TEST GAP: current branch changes need focused coverage

  • Storage where() contract: firebase + server adapters should honor [where('encounterPath','==',x), orderBy('ts','desc'), limit(n)].
  • Server SQL query test: where + orderBy + limit should return latest logs for one encounter only.
  • Undo/redo stack order: undo A3 then A2, redo must replay A2 first, then A3.
  • Combat controls should not subscribe to logs while mounted; undo/redo should query logs only on click.
  • Unified CLI smoke: node scripts/combat.js verify <fixture.json> returns CLEAN on known-good log.
  • Unified CLI replay smoke: node scripts/combat.js replay ... --out tmp/x.json writes JSON array and auto-verifies.
  • Ctrl-C replay behavior: SIGINT during replay should end encounter, clear active display, write partial log, run verify.
  • SQLite schema/index test: idx_docs_parent_ts and idx_docs_parent_encounter_ts exist for server DB.

confirm warnings treated as error = fail in all tests, build pipeline, linters, everything. again.

BUG: addParticipants (batch add) does not slot by initiative

  • shared/turn.js addParticipants appends [...existing, ...new], no slotIndexForInit.
  • Violates INIT doc: "Add = insert into slot by initiative."
  • Single addParticipant slots correct. Batch (add-all-chars) appends.
  • Pre-start batch add = wrong order. Post-start worse.

BUG: nextTurn throws on solo combatant

  • nextActiveAfter loop for step=1; step<n skips when n=1 → {nextId:null}.
  • nextTurn throws "Could not determine next participant."
  • Solo active combat cannot pass turn.

BUG: reorderParticipants cross-pointer drag = silent no-op

  • Cross-pointer drag returns encounter unchanged, no log, no toast.
  • DM drags across current turn → nothing happens, no feedback.

BUG: addParticipant undo missing currentTurnParticipantId when started

  • undo saves participants + conditional turnOrderIds, no currentTurnParticipantId.
  • Pointer can misalign on undo if added near pointer region.

BUG: computeTurnOrderAfterRemoval isActive uses find() not boolean

  • isActive = id => updatedParticipants.find(p => p.id === id && p.isActive)
  • Returns participant obj (truthy) not boolean. Works by accident, fragile.

FEAT: clarify "Is NPC" in add-participant

  • Ambiguous label. May expand work based on what NPC means here (ally? monster? display-only? skip in turn order?). Clarify intent before UX changes.

quality of life fix: 2. UI says "Campaign Characters", field is players --- naming mismatch (separate concern, flag for later)

FEAT - parallel campaigns

FEAT - multi user

FEAT - clarify what end encounter does and what initiatives reset means

Done (history)