Vigil
← All news

v1.8.0 — consumer Home as per-encounter prog dashboard

Per the v1.7.1 dev/user split, non-dev users land on Home with a generic 5-stat grid (or onboarding for first-timers) — none of the wipe / fault / mit / DPS signal surfaces unless…

Why

Per the v1.7.1 dev/user split, non-dev users land on Home with a generic 5-stat grid (or onboarding for first-timers) — none of the wipe / fault / mit / DPS signal surfaces unless they drill into a specific pull via Reports. The consumer goal stated by the user this session: keep inputting reports → graph progress → see what gimmick is killing us the most → see who's contributing to wipes, with manual prog points kept prominent for ACT-down days. v1.8.0 rebuilds the consumer Home around that goal. Ships 1 of 3 in a planned sequence (mit-audit aggregate and job-filterable DPS comparison follow in v1.9.0 and v1.10.0).

Added — consumer Home, per-encounter

  • New non-dev Home layout (web/src/Home.jsx) — for users with at least one watched-and-ingested report, Home is now a per-encounter prog dashboard with three sections:
    • Encounter picker in the header: dropdown when multiple encounters watched (auto-defaults to the most recently watched); pill chip when only one. Total pulls / kills / wipes / kill rate strip below.
    • "Where we are"ProgPoints panel with a copy hint that calls out manual entry for ACT-down days (post-patch period before the ACT plugin updates).
    • "What's killing us" — top-N wipe mechanics, sorted by death count, watchlist-scoped (new endpoint param below). Phase + mechanic type pill (raidwide / tankbuster / aoe_party / enrage). Non-attributable cascade-of-cascade death count surfaced as a footnote so M-FAULT context is clear.
    • "Who's contributing to wipes" — per-player root / cascade / wipes / score from fault_aggregate. If no fault data yet, shows a single "Analyse all N wipes" button that bulk-computes fault scores for every watched wipe of the active encounter.
  • Onboarding flow unchanged for users with zero watched reports — same welcome + 2 numbered cards from v1.7.1.
  • Dev Home unchanged — all-ingested snapshot retained for me (full reports/pulls/kills/wipes/kill-rate grid).

Added — backend scope filter + new endpoints

  • cartography_for_encounter(static_id=...) param (analysis/cartography.py) — restricts the aggregate to fights from reports in that static's watchlist. Default (unset) keeps the legacy field-wide view for T-208 Compare. The watchlist filter uses a SELECT subquery on watched_reports.code so cross-static rows are invisible (same multi-static isolation model as v1.6.0).
  • GET /api/encounters/{id}/cartography?watched_only=true — wires the param to the API. Default false (legacy behaviour).
  • GET /api/me/encounters — auto-detects the active encounter for the current static. Returns {active, encounters: [{encounter_id, pulls, kills, wipes, latest_end_time}]} sorted by latest_end_time desc, tiebroken by pull count. Drives the Home encounter picker.
  • POST /api/encounters/{id}/fault-scores/compute-all — bulk-computes T-302 fault scores for every watched wipe of an encounter (skips kills; idempotent per the per-fight replace in compute_fault_scores_for_fight). Replaces the per-pull "compute" workflow on PullDetail for the consumer use case where you want the whole encounter analysed at once.

Tests

  • 3 new in tests/test_cartography.py: scoped vs. unscoped behaviour proves cross-static isolation; empty-watchlist static returns empty results (not all-fights).
  • 4 new in tests/test_my_encounters.py: empty-watchlist returns null active; single-encounter picks itself as active; multi-encounter active = most recently watched (proven by recency beating pull count); foreign-static reports don't leak.
  • 408 tests passing (401 → 408, +7). No regression.

Operator notes

  • No new env vars. No schema migration (uses existing watched_reports / fights / fault_scores tables).
  • Server restart picks up the new endpoints; React bundle picks up automatically (StaticFiles reads from disk per request).
  • Non-dev users who already had watched data now see the new Home on next refresh.