EncounterAndPartyRootView.swift:189 passes partyCount (the global activePartyPlayers.count, :66) into every row as playerCount, which EncounterLibraryRow uses to compute the difficulty/BP rating (EncounterLibraryRow.swift:22–32).
Consequences:
- Every row shows a rating against the current party — identical across rows.
- All rows recompute at once when the party changes, causing list-wide reflow.
- The subtitle appears/disappears depending on whether all adversaries resolve in the compendium (
EncounterLibraryRow.swift:25), so row heights vary with load timing.
The value is real and useful, but attributing it per-row implies a per-encounter number that does not exist.
Acceptance
- Either (a) label the rating explicitly as "vs current party," or (b) show a per-encounter metric (e.g. adversary count). Decide which here.
- Row height should not depend on compendium load timing.
Filed from architecture review.
EncounterAndPartyRootView.swift:189passespartyCount(the globalactivePartyPlayers.count,:66) into every row asplayerCount, whichEncounterLibraryRowuses to compute the difficulty/BP rating (EncounterLibraryRow.swift:22–32).Consequences:
EncounterLibraryRow.swift:25), so row heights vary with load timing.The value is real and useful, but attributing it per-row implies a per-encounter number that does not exist.
Acceptance
Filed from architecture review.