Vigil
← All news

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.jsxFaultSection:

  • 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, Healer style list for 2–3, N jobs summary 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 attended checkbox in the fault section header. When ON, every count divides by fights (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_nameability {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.abilities from 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_NAMES in Encounters.jsx / FieldStats.jsx / Home.jsx. The legacy DSR encounter id is 1076 (current FFLogs DSR encounter); kept 1065 as "DSR (alt)".