⚔ Utopia Intel

Kingdom Ops Dashboard Jan 2 – Jan 24 · YR8 · 19 Provinces
All Provinces — Performance Summary
#ProvinceTotalOffensive BuffsSuccessFail Offensive SR ★Overall SRGainDamage

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.main padding 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-2col containers (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 vaultsRV etc.), cleans Discord province name noise, skips unmapped ops.
  • NewmergeRecords(csvRecs, discordRecs) de-duplication function — fingerprints each record as province|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 parseCSV output, 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.
  • FixswitchTab null-guarded on both DOM queries, fixing a TypeError: 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.
  • FixSOD damage numbers suppressed — intel ops show in gain/damage columns. Province totals also corrected.
  • FixProvince navigation fixed — data-p attributes + addEventListener replaced inline onclick string injection, eliminating the SyntaxError: missing ) after argument list crash.
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%.