v1.14.3 — group fault rows by character name, per-job expansion, polish sweep
The same person across multiple watched reports got a different FFLogs `player_id` each time (per-report assignment), so the fault aggregate showed them as **multiple rows**. Also…
Why
The same person across multiple watched reports got a different FFLogs player_id each time (per-report assignment), so the fault aggregate showed them as multiple rows. Also: someone who plays multiple jobs deserves a per-job breakdown when you expand their row.
Added — fault table grouped by name, per-job expansion
web/src/Home.jsx — FaultSection:
- Rows are now grouped by character name rather than FFLogs
player_id. All cross-report ids for the same person collapse into one row. - New Job(s) column shows the single job if one,
Tank, Healerstyle list for 2–3,N jobssummary for 4+. Hover shows per-job stats. - Expansion grows a per-job breakdown table (when ≥2 jobs played) above the per-mechanic drill-down. Each job gets its own row: Roots / Mit fail / Cascades / Avoidable / DD / Wipes / Score.
- Confidence recomputed from summed kind counts (rather than averaging per-row ratios, which over-weights small-deaths-total rows).
Added — per-wipe normalization toggle
- New
per wipe attendedcheckbox in the fault section header. When ON, every count divides byfights(wipes attended). Score thresholds adjust (5/2 → 0.15/0.05). Re-sorts the table by per-wipe score so worst rate-offender bubbles up regardless of attendance.
Added — "What's killing us" group-by-mechanic toggle + cactbot names
- Cartography output now includes
cactbot_label(cactbot's human-readable strat name like "Sacred Sever", "Heavensflame"). - Display priority:
cactbot_label (base, "1" suffix stripped)→ability_name→ability {id}. - Group by mechanic name toggle merges rows with same base cactbot label so "Sacred Sever 1", "Sacred Sever 2", "Sacred Sever 3" become one row showing total deaths + a
(3 variants)tag. - Ability name backfill: pulled FFLogs
masterData.abilitiesfrom 9 DSR reports → 633 ability names added for boss abilities not in XIVAPI's player-tables.
Added — topMechanicsForPlayerSet + topOffendersForMechanicSet helpers
Aggregate breakdown rows across multiple FFLogs player_ids (for name-grouped views) and across multiple ability_ids (for cactbot-label-grouped mechanics).
Fixed — Rules of Hooks bug in WipeMechanicsSection
useMemo for the grouped rows was called AFTER an if (!data) return ... early return. On first render data was null and the hook never ran; once data loaded the hook count changed and React crashed the tree. Moved the useMemo above the early returns with null-safe input.
Changed — DSR ingest + UI labels
- Encounter id 1076 added to
ENCOUNTER_NAMESin Encounters.jsx / FieldStats.jsx / Home.jsx. The legacy DSR encounter id is 1076 (current FFLogs DSR encounter); kept 1065 as "DSR (alt)".