All Provinces — Performance Summary
| # | Province | Total | Offensive | Buffs | Success | Fail | Offensive SR ★ | Overall SR | Gain | Damage |
|---|
Click a province name in the Overview to view its detail.
Filter & Sort
⚔
No Attack Log Loaded
Import a Discord attack log (
:crossed_swords: lines) to see military hit data.📜
No Kingdom News Loaded
Import a Kingdom News file (tab-separated
Month D of YRN format) to see battle history.Import Intel Data
Paste any of the four supported formats below — the parser auto-detects which one it is.
① Ops CSV — Utopia Intel Site export (Date, Result, Province, Target, Op…)
② Discord Ops Log — lines with :comet: / :detective: emoji (spells & thief ops)
③ Discord Attack Log — lines with :crossed_swords: emoji (military hits)
④ Kingdom News — tab-separated lines starting with Month D of YRN
📂
Drop CSV file here
or
OR PASTE CSV TEXT
15 Revisions · YR8 Session
Rev 15Sortable Columns + Rating Column Removed
- NewColumn headers in the Kingdom Overview table are now clickable — click any column to sort ascending/descending. Active sort column shows ▲/▼ arrow indicator. Syncs with the existing Sort By dropdown.
- NewColumn headers in the Attack Log Province Summary table are also sortable — click Hits, Acres, Kills, Losses, K:L, Prisoners, Peasants, Spec Creds, or Avg Off to re-order.
- ImproveRating column removed from Kingdom Overview — rating badges remain visible in Province Detail and mobile card view.
Rev 14Supabase Share Integration
- NewSave & Share button appears in the header after any data is imported. Saves all loaded state (CSV records, Discord ops, attack log, news) to Supabase and generates an 8-char share ID.
- NewShare links use
?s=URL parameter — opening a share link fetches the saved state from Supabase and reconstructs the full dashboard automatically. - NewLabel field pre-filled from current data period. One-click copy-to-clipboard for the generated URL.
- ImproveHosting recommendation: GitHub Pages (free, private source repo) at
decidophobic.github.io.
Rev 13Mobile-First UI Overhaul (7 Changes)
- New① Bottom navigation bar — desktop tab bar replaced by a fixed 5-button nav on mobile (≤640px): Overview, Province, Attacks, Import, and a ⋯ More drawer for the remaining tabs. At ≤380px labels hide leaving icons only.
- Improve② Responsive padding & fonts —
.mainpadding drops from 32px to 12px on mobile, 80px bottom clearance for nav bar, header compresses, subtitle hides, KPI cards shrink to 110px minimum. - New③ Province table → cards on mobile — the 12-column desktop table is replaced by tappable stacked cards showing name, rating badge, SR bar, and summary line. Maintains same sort order.
- New④ Collapsible sections in Province Detail — each card section gets a ▾ chevron toggle. On mobile all sections except the first start collapsed.
- Improve⑤ 2-col grids → single column — all
grid-2colcontainers (Attack Log, News, Province Detail attack summary) stack vertically on mobile. Leaderboards also go 1-column. - Improve⑥ Ops Detail — cards go full-width on mobile (1 column). 4-stat Uses/Success/Failures/SR row stays 4-across.
- Fix⑦ Share modal — outer margin drops to 12px and padding tightens so the modal fits on a 390px screen. Share URL input shrinks to 11px monospace.
Rev 12Layout Fixes + Import Tab Structure
- FixImport tab was rendered as a stray orphaned block outside any view div — now correctly wrapped in
view-import, fixing visibility on all other tabs. - ImproveAttack Log, Kingdom News, and Ops Detail empty states replaced with styled redirect cards — prominently directing users to the Import Data tab instead of showing plain text.
- NewChangelog tab added to the dashboard (this tab), styled to match the dark fantasy theme with colour-coded revision tags.
Rev 11Discord Ops Log Parsing + De-duplication Merge
- NewFull Discord ops log parser — maps 50 full op names to abbreviation codes (
rob the vaults→RVetc.), cleans Discord province name noise, skips unmapped ops. - New
mergeRecords(csvRecs, discordRecs)de-duplication function — fingerprints each record asprovince|op|target|result, keeps all CSV rows (richer metadata: date, gain, damage), adds Discord extras beyond what CSV already covers. - NewBoth load orders handled: CSV-first then Discord, or Discord-first then CSV — either way triggers an automatic merge. Status message reports exact counts: 3,980 records (906 duplicates removed from 4,886 total).
- ImproveDiscord ops records now use the same flat record shape as
parseCSVoutput, so all existing tabs (Overview, Province Detail, Ops Detail, Leaderboards) work with Discord-sourced data. - DataValidated against real data: 1,336 CSV records (Jan 3–Feb 1 YR8) + 3,550 Discord ops (Mar 29–Apr 2 YR8) → 3,980 merged, 906 deduped.
Rev 10K:L Ratio Correction — Prisoners Count as Kills
- FixKills:Losses ratio now correctly uses (kills + prisoners) ÷ losses — prisoners are dead enemy soldiers and should count toward combat efficiency.
- ImproveFix applied in all three locations: Attack Log province table, Province Detail attack summary tile, and per-target breakdown table.
Rev 09Attack Summary in Province Detail
- NewProvince Detail now shows an Attack Summary section for provinces with Discord log data, between the ops breakdown and heatmap.
- New9-tile stat grid: Hits, Acres, Razes, Kills, Losses (troops only), K:L ratio, Prisoners, Peasants, Spec Creds.
- NewPer-target breakdown with acres, hits, kills and K:L ratio. Individual hit rows with full stat chips per attack.
Rev 08Attack Log Tab + Discord Log Parser
- NewAttack Log tab pre-loaded with Discord bot attack data — 8 KPIs, Province Summary table, Targets Hit breakdown, Individual Attacks log.
- NewProvince Summary adds Losses and K:L Ratio columns. Losses calculated from troop unit counts only.
- NewIndividual attacks show capture/raze/recapture badges with chips for kills, prisoners, peasants, spec creds, offense sent, gens, and PLAGUE tag.
- ImproveImport tab auto-detects
:crossed_swords:lines and routes Discord logs to the Attack Log. - FixHorses excluded from troop loss counts — they are mounts, not combat casualties.
Rev 07Op Name Corrections + Ops Detail Tab
- NewOps Detail tab — each of 57 ops/spells gets its own card with uses, successes, failures, SR bar, gain/damage, and per-province sub-table. Lazy-loads on first visit.
- NewFilterable by category, sortable by uses/SR/failures/damage/gain, with live text search.
- FixOp name corrections:
SOS= Spy on Science,MI= Mist,MS= Meteor Showers,ET= Expose Thieves.
Rev 06Kingdom News Tab + SR Bar Animations
- NewKingdom News tab with acres chart, attack summaries for both kingdoms, province breakdowns, highlights, and filterable event log.
- NewImport tab detects three formats: Ops CSV, Kingdom News, and Discord attack logs.
- NewSR bars animate from 0 on every render with a staggered cascade (28ms delay between bars).
- FixChart height bug fixed — canvas wrapped in a fixed-height container to prevent Chart.js infinite growth.
- Fix
switchTabnull-guarded on both DOM queries, fixing aTypeError: Cannot read properties of null (reading 'classList')crash.
Rev 05Font Size Pass + Offensive SR as Primary Metric
- ImproveGlobal font size increase across all elements (~30%) — body, headers, KPIs, tables, ops, leaderboards, news, and import tab.
- NewOffensive SR introduced as the primary metric — Intel Ops, Intel Spells, and Self Spells excluded from the calculation.
- ImproveRating badges and red-alert highlighting now based on Offensive SR. Both Offensive SR ★ and Overall SR shown throughout the dashboard.
- ImproveLeaderboard SR boards filter to ≥10 offensive ops and rank by Offensive SR.
Rev 04Categorised Ops Breakdown + Import Tab
- New⬆ Import Data tab with drag-and-drop upload, CSV paste area, and auto-detection of tab vs comma delimiter.
- ImproveProvince Detail ops split into 8 colour-coded categories with full op names, per-op SR bars, and an SR by Category summary panel.
- Fix
SODdamage numbers suppressed — intel ops show—in gain/damage columns. Province totals also corrected. - FixProvince navigation fixed —
data-pattributes +addEventListenerreplaced inlineonclickstring injection, eliminating theSyntaxError: missing ) after argument listcrash.
Rev 03Province Detail — Per-Op Breakdown
- NewProvince Detail shows a full per-op table — individual uses, successes, failures, SR bar, gain, and damage for each op (RV and RT tracked separately).
- NewDaily Activity Heatmap — 23 day cells colour-coded by SR quality and volume, with hover tooltips.
Rev 02Dashboard Foundation — 3-Tab Layout
- NewKingdom Overview — 8 KPIs, sortable province table with SR bars and rating badges.
- NewProvince Detail — clickable province names, stats panel, ops bar chart.
- NewLeaderboards — 6 ranked lists: Best/Worst SR, Most Damage, Most Gain, Most Offensive Ops, Most Failures.
- NewDark fantasy theme — Cinzel + Crimson Pro fonts, gold/red/green on near-black background.
Rev 01Data Analysis — CSV Interpretation
- DataInitial parse of
Utopia_Intel_Site_(8).csv— 1,239 rows, 8 columns. - DataEstablished game mechanics: failed ops kill thieves, failed spells kill wizards. Self-targeting = buffs, external = offensive.
- DataIdentified 57 unique op codes, 19 provinces, 20 enemy targets. Kingdom SR: 65.2%. Top performer: PunchOut 85.2%. Critical: Lotsa lots x2 34.7%.