NaroditskyAimpact
PartySoloAll
RankedCasualAll
1v12v23v3All
TChangelog
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