RLDASH

v1.22.0
DashboardPlayer StatsGame HistoryAnalyticsChangelog
DashboardPlayer StatsGame HistoryAnalyticsChangelog
NaroditskyAimpact
PartySoloAll
RankedCasualAll
1v12v23v3All
T

Changelog

v1.22.02026-04-27Latest

New

  • -handle boxcars Struct envelope for camera settings extraction

Fixed

  • -team-size filter falls back to playlist text when playlist_id is NULL
v1.21.02026-04-26

New

  • -support ?t= timestamp deep-links in replay viewer

Fixed

  • -apply gameWhere filters to positioning sort in dense game list
  • -drop NEXT*PUBLIC* bearer auth fiction from public data routes
  • -filter boostUsage and averageSpeed by hasFrameData in player comparison
  • -harden upload route against memory DoS and silent overwrite
  • -skip frame-failed rows for ball-dependent stats in correlation matrix
  • -skip semantic-release success-comment block to avoid crashes
  • -use UTC for missing-Date fallback in extract_player_stats
  • -validate Steam JSON values and use psql -v in playtime sync

Improved

  • -aggregate getCarBodyStats in Postgres
  • -stop 30s polling tick from re-rendering all live-game consumers
v1.20.02026-04-25

New

  • -extract mechanical stats, camera settings, and goal locations
  • -viewer reads per-player camera settings from DB

Fixed

  • -drop biasing ORDER BY + LIMIT from goal-times query
  • -normalize goal coords to UU and default ball_cam_fraction when no transitions
v1.19.32026-04-23

Fixed

  • -rebuild subtr-actor from source to restore kickoff extraction
v1.19.22026-04-23

Fixed

  • -prevent inflated session gaps for games missing duration data
  • -remove redundant player_stats join in getGoalTimes
  • -surface upload API write failures + add storage health endpoint
  • -uploader treats 4xx as terminal, quarantines rejected files
v1.19.12026-04-16

Fixed

  • -restore sessions card height in analytics grid layout
v1.19.02026-04-16

New

  • -add expandable details and height-matched layout to insights card
  • -add goal timing distribution chart to analytics

Fixed

  • -add bearer token auth to replay download endpoint
  • -quarantine replays that fail DB writes instead of retrying forever
  • -suppress Recharts zero-dimension console warnings
  • -update last_idx after inflection replacement in deduplication
v1.18.22026-04-05

Fixed

  • -prevent LiveGameProvider key change from reverting filtered container data
v1.18.12026-04-04

Fixed

  • -sync server data prop changes into container local state
v1.18.02026-04-03

New

  • -show 405 games on win/loss grid in solo view

Fixed

  • -replay viewer playback fixes, ball drift, and hotkey legend
  • -resolve game history table hydration mismatch
v1.17.12026-03-31

Fixed

  • -pass ranked/teamSize/tournament filters through GamesDialog chain
  • -pass ranked/teamSize/tournament filters to live-polling endpoints
v1.17.02026-03-31

New

  • -add bearer token auth to live polling endpoints
  • -add in-browser 3D replay viewer
  • -add replay button to game history table
  • -camera nav controls, position sharing, and default view
  • -car and ball trails with configurable duration
  • -dynamic boost pad visibility and simplify field markings
  • -goal explosion animation and centered scoreboard
  • -header metadata and boost visuals for replay viewer
  • -per-car-body 3D shapes using hitbox preset geometry
  • -player POV camera mode and kickoff countdown overlay
  • -rounded arena corners and smooth frame interpolation
  • -trail fade effect, unique player colors, event markers, and UI improvements
  • -unified header, compact playback bar, player pill buttons

Fixed

  • -add horizontal taper (taperX) so car shapes are visible from above
  • -adjust default camera view to 0,67,57>0,2,8
  • -compact playback controls with icon-only toggles
  • -continuous render loop and game info header
  • -correct center line orientation and upgrade boost pad visuals
  • -correct replay coordinate axis mapping
  • -deduplicate analytics queries when multiple primary players share a game
  • -deduplicate PAGE_SIZE constant between server action and client
  • -emit initial state on playback engine subscribe
  • -fix camera ghosting and add WASD navigation
  • -format map name in replay viewer header
  • -freeze cars during post-goal reset with celebration window
  • -hide name label and boost bar for followed player
  • -keep strongest inflection point during deduplication
  • -move replay link from deleted game-scoreboard to GameCard
  • -offset replay timestamps to remove pre-game lobby time
  • -parse startTime from JSON in live game provider
  • -pass startTime through in mergeWinLossRecords for live-detected games
  • -polish camera nav controls and add pan/orbit support
  • -remove cam settings panel and swap player button actions
  • -remove dark base plate under big boost pads
  • -remove inaccurate save event extraction
  • -replace sys.exit(1) with early return for missing game stats
  • -resolve demo event player names from platform IDs
  • -restore live game auto-refresh
  • -sort inflections by game index before deduplication
  • -surface live-polling errors when API key is misconfigured
  • -swap car box dimensions to match axis mapping
  • -team-colored center circle halves and kickoff spot
  • -use distinct game count for per-game stat averages in dashboard
  • -use FilterContext for player changes in player-stats container
  • -use selected player for rating baseline instead of hardcoded first player
  • -use startTime for session gap detection instead of playedAt
v1.16.02026-03-29

New

  • -add date range picker with calendar popup and quick presets
  • -add last game hover card with scoreboard preview
  • -dashboard UI polish — tournament filter, grid cap, date picker fix
  • -extract game duration from replays and display in UI
  • -format map names to user-friendly display names
  • -make duration column sortable in game history table
  • -SPA-style filter interactions — no page reload on filter change

Fixed

  • -add global error boundary at src/app/error.tsx
  • -add hasFrameData filter for 6 ball-dependent stats in getPlayerStats
  • -add periodic scan and crash recovery to replay uploader
  • -convert all timestamp columns to timestamptz for correct timezone handling
  • -detect UTC vs local timezone in replay Date header
  • -game history table bugs — positioning sort, stat ranges, column fixes
  • -keep current scoreboard visible while cycling games
  • -move player search box to trailing edge of filter bar
  • -parameterize SQL query in scripts/ept to prevent injection
  • -prevent filter bar from overlapping nav tabs
  • -reduce best/worst games table clipping with shorter dates and tighter spacing
  • -remove incorrect has_frame_data filter from demos_given baseline
  • -resolve player alias to group name before live-game API calls
  • -return 503 from validateBearerToken when env var is unset
  • -rollback transaction on write_kickoff_events failure
  • -standardize timestamp format across dashboard
  • -suppress Recharts v3 ResponsiveContainer dimension warnings
  • -use composite key for CSV game grouping to prevent timestamp collisions
v1.15.12026-03-22

Fixed

  • -correct replay header version constant in upload validation
v1.15.02026-03-21

Fixed

  • -handle replays missing PlayerStats header (RL format change)
  • -replace inline dialog in WinLossGrid with shared GamesDialog
v1.14.02026-03-20

New

  • -add ranked/casual and team size filters

Fixed

  • -add distinct gameId to getDashboardStreakData query
  • -add eviction and size cap to baselineCache
  • -restore sticky header by removing overflow-x-hidden from layout
  • -scope recommendations DELETE to current game_mode
  • -use gamesPlayed instead of statRows for live endpoint per-game averages
  • -validate player and playlist query parameters against allowlists
  • -validate replay file magic bytes on upload, not just extension
v1.13.12026-03-18

Fixed

  • -handle multi-PR references in changelog generator
  • -mobile-optimize kickoff analysis and playtime heatmap
v1.13.02026-03-18

New

  • -add ball trajectory visualization and polish kickoff UI
  • -add day-games dialog to daily records table
  • -add extended kickoff event columns
  • -add kickoff analysis with field visualization and spawn heatmaps
  • -add possession funnel, streaks, and spawn callouts
  • -add technique radar, speed trend, boost histogram, and kickoff type visualizations
  • -extract extended kickoff event data
  • -kickoff rating improvements
  • -polish kickoff UI layout and add new visualizations
  • -surface boost, speed, goal splits, and first-touch effectiveness

Fixed

  • -accurate demo extraction using DemolishExtended events
  • -add HTTP security headers to next.config.ts
  • -add RedBaron alias and subtr-actor import compatibility
  • -correct 1v1 team assignments when parser puts both players on same team
  • -correct kickoff parser bugs
  • -correct kickoff query denominators and dedup logic
  • -derive playlist from team sizes when unknown or numeric
  • -improve ball direction heatmap tooltip and sector rendering
  • -improve games dialog UX — unified component, no flash, day navigation
  • -polish dashboard UI and improve data accuracy
  • -sanitize error objects before logging to prevent credential exposure
  • -use polling observer for WSL filesystem monitoring
  • -use unfiltered baseline for all rating calculations
v1.12.02026-03-13

New

  • -add overtime tracking with indicators for all game result displays
  • -mobile-optimize dashboard with dedicated mobile components

Fixed

  • -resolve playlist to game_mode for player stats archetype queries
v1.11.02026-03-12

New

  • -add Steam playtime integration with dashboard display
  • -improve analytics page data density and dark mode scrollbars
  • -improve archetype labeling with new rules and smart dedup
  • -increase insight recommendation cap from 10 to 14 per player
  • -redesign dashboard mid-section for data density
  • -redesign game scoreboard popup with unified table and ratings
  • -replace recent games table with scoreboard feed and inline insights
  • -show full session history with day-of-week and height-matched layout

Fixed

  • -add weekday to date headers in recent games and scoreboard popup
  • -correct rrrocket frame stat bugs for boost, positioning, and clears
  • -increase Form chart top margin to prevent peak label clipping
  • -make dashboard header sticky on scroll
  • -move dark scrollbar styles outside @layer base for higher specificity
  • -move filter reset setState calls from render body to useEffect
  • -persist player selection across tab navigation
  • -refresh all Server Components when new game detected
  • -remove broken demo stats from display and analytics engine
  • -remove demo stats from personal records and add frame-data filtering
  • -resolve duplicate React key in stat impact panel
  • -simplify scrollbar styles to always-visible subtle approach
  • -stretch grid cards to eliminate bottom gaps across dashboard
  • -use game_mode instead of playlist for analytics query filters
  • -use inequality check for live game detection instead of greater-than
  • -use TIMEZONE constant in getStreakRecords instead of hardcoded America/Chicago
v1.10.02026-03-11

New

  • -add performance forecasting model and trendline overlays
  • -add recommendation engine and insights card
  • -analytics engine foundation — Python service, DB tables, CLI
  • -integrate analytics engine into watcher and Docker
  • -integrate subtr-actor as primary replay parser
  • -play style archetype detection and visualization
  • -stat impact threshold analysis and Insights panel

Fixed

  • -correlation heatmap layout when stat impact panel is empty
  • -eliminate page transition flicker across all navigation types
v1.9.12026-03-11

Fixed

  • -add header-only fallback and corrupt replay detection to watcher
v1.9.02026-03-10

New

  • -enhance streak records with new types, dates, and interactive scoreboards

Fixed

  • -include demolishes in recent-games scoreboard dialog
  • -use full alias array in insights analytics queries

Improved

  • -parallelize sequential database queries in hot paths
v1.8.02026-03-10

New

  • -add in-app changelog page

Fixed

  • -correct timezone handling for date display and filter boundaries
v1.7.22026-03-10

Fixed

  • -filter ball-dependent stats to games with frame data
  • -use class-based ball detection instead of heuristic subtraction
v1.7.12026-03-10

Fixed

  • -add error and loading boundaries for insights route
  • -add optional Bearer token auth to live API endpoints
  • -bind app port to localhost only in docker-compose
  • -mark Baron as primary player in CSV import script
  • -prepend new win/loss records instead of appending
  • -return empty list instead of Unknown fallback on parse failure
  • -use authoritative won field instead of goal sums in scoreboard
  • -use Intl.DateTimeFormat for timezone conversion in contextual win rates
  • -use per-player win/loss for scoreboard rating calculation
v1.7.02026-03-09

New

  • -add live game detection with hot-loading

Fixed

  • -add Shokunin GXT car body mapping (product ID 10901)
v1.6.02026-03-09

New

  • -add dense game history with full-stat table
  • -add win/loss deep dive analytics
v1.5.02026-03-09

New

  • -add boost & positioning deep dive visualizations
  • -refine donut charts, boost economy, and color consistency
v1.4.02026-03-09

New

  • -add records & milestones dashboard tab
  • -add stat distributions and correlations analytics tab
  • -refine player stats layout and add 3D play style chart

Fixed

  • -add streak tooltips and adjust demolition milestone thresholds
v1.3.02026-03-08

New

  • -add performance rating system
  • -add rolling averages, sparklines, and form indicators
  • -add session analytics dashboard tab

Fixed

  • -add missing React key to session table fragment
v1.2.02026-03-07

New

  • -interactive scoreboard navigation across dashboard
v1.1.12026-03-07

Fixed

  • -backfill frame-analysis stats for historical replays
  • -implement detection logic for demos_taken, demos_given, flicks, dribbles
v1.1.02026-03-07

New

  • -add car body tracking from replay loadout data
v1.0.02026-03-07

New

  • -add car body tracking from replay loadout data
  • -add game scoreboard dialog
  • -move momentum chart to dashboard as compact sparkline

Fixed

  • -add cooldown to center and clear detection to prevent per-frame overcounting
  • -remove shadowed datetime import causing UnboundLocalError
  • -resolve Baron replay sync gap
  • -save previous frame ball velocity before updating current
  • -update Dockerfile for Prisma v7 compatibility
  • -use replay header scores for win determination instead of player goal sums
v0.5.02026-03-05

New

  • -add player search bar and fix non-group player filtering
  • -add player selector to filter bar and migrate UI to new view modes
  • -migrate query logic to PLAYER_GROUPS with party/solo/all filtering
  • -replace PRIMARY_PLAYERS with PLAYER_GROUPS and update view modes

Fixed

  • -"Best Streak" now only considers win streaks
  • -deterministic score string with primary player's team first
  • -filter to primary players in "all" view for win/loss grid, daily records, and calendar
  • -handle quoted CSV fields containing commas in import parser
  • -merge calendar heatmap cutoff with user date filter
  • -replace meaningless save percentage with shooting accuracy
  • -set 'to' date filter to end-of-day to include games on selected date
  • -use stat row count as denominator for per-game stats in "all" view
  • -wait for Postgres healthcheck before starting app and watcher
v0.4.02026-03-04

New

  • -add replay upload pipeline (PC to VPS)
  • -add Windows startup installer for replay uploader

Fixed

  • -add thread lock to replay uploader state mutations
  • -build rrrocket from source for ARM64 compatibility
  • -count distinct games for win/loss in 'All Games' view
  • -handle OneDrive Documents path and API key quoting
  • -install rrrocket from git (not published on crates.io)
  • -remove QEMU workaround for rrrocket on ARM64
  • -run replay uploader silently with no terminal window
  • -update dashboard loading skeleton to match actual page layout
  • -use timing-safe comparison for API key authentication
v0.3.02026-03-02

New

  • -migrate replay watcher and fix timezone display
v0.2.02026-03-02

New

  • -add goals/shot, boost, and speed metrics to player comparison
  • -auto-fit dashboard panel layout with 3-column grid
  • -dashboard UI improvements — timezone fix, color scheme, dense layout

Fixed

  • -replace Radix tooltips with native title on dense grids
v0.1.02026-03-01

New

  • -add CSV import script for Google Sheets replay data
  • -add dashboard visual features with win/loss grid, calendar heatmap, and daily records
  • -add enhanced dashboard stats with 12 stat cards and player comparison
  • -add filter types, query builder, and unit tests
  • -add production readiness features with loading states, error boundaries, and responsive design
  • -add shared rl-network for cross-container DB access
  • -display version in dashboard header
  • -implement Game History tab with paginated game list, detail panel, and score chart
  • -implement Player Stats tab with comprehensive stats, charts, and game analysis
  • -implement Trends tab with performance trends, correlation analysis, and player progression
  • -run initial Prisma migration and seed
  • -scaffold rldash with Next.js 16, Prisma, shadcn/ui
  • -wire dashboard to real data with interactive filter bar

Fixed

  • -add CHOWN capability to PostgreSQL container
  • -add Prisma migration step to Docker entrypoint
  • -add public directory for Docker build
  • -force dynamic rendering for dashboard layout