Release 1
Player Intelligence, Timezones & Rust+ Reliability
Player Intelligence just got a lot smarter: BattleMetrics now works with the free public API, every provider gets its own searchable debug history, and Steam IDs can be entered or edited by hand when a provider doesn't supply one. Alongside that, every date and time in the dashboard now follows your own timezone, wipe history is finally reachable from the team members table, and the Rust+ bot's control socket now reports its connection state instead of staying silent.
Released 2026-07-06
28 highlighted commits
This release overhauls Player Intelligence into a unified multi-provider debugging hub (BattleMetrics, RustStats.IO, Steam API), adds full user timezone support across the dashboard, introduces period-based wipe/disband tracking for Rust+ teams, and improves control socket reliability with connection/disconnection notifications.
Player Intelligence & Multi-Provider Debugging
Reorganized RustStats.IO into a full Player Intelligence hub covering BattleMetrics, RustStats.IO, and the Steam API, with public-API support and cross-provider debug history.
- - Renamed the RustStats.IO superadmin page to Player Intelligence and reorganized it as a tabbed, multi-provider debugging hub.
- - Enabled BattleMetrics integration to work with the free public API, no API key required, while still supporting a configured key.
- - Added a unified debug history across BattleMetrics, RustStats.IO, and Steam API, filterable by provider and capped at the last 100 entries each.
- - Added a dedicated BattleMetrics debug history tracking the last 100 player lookups with full API response details, and fixed the sessions/servers endpoints returning 400/405 errors.
- - Added Steam ID display, manual entry, and editing in the Player Intelligence popup, with Steam API validation and automatic reporting of invalid IDs.
- - Added a Steam ID input popup when BattleMetrics can't resolve one, so player intelligence can still be pulled from Steam once supplied.
- - Player data is now retained permanently for historical tracking, with reduced monitoring frequency for historical players and automatic stop-monitoring on Rust/EAC ban detection.
- - Switched to the database-stored Steam API key instead of an environment variable, and fixed a unique constraint race on concurrent BattleMetrics snapshot upserts.
Team Intelligence & Wipe Tracking
Period-based team membership tracking with automatic wipe/disband detection, now reachable from the dashboard.
- - Implemented period-based player intelligence tracking with automatic wipe and team disband detection via the new RustPlusTeamMembershipPeriod model.
- - Added a wipe history view button to the team members table so past wipe periods are actually reachable in the UI, closing a gap where the data existed but had no entry point.
User Timezone Support
Every date and time surface in the dashboard now respects the signed-in user's own timezone instead of UTC or server time.
- - Added a searchable timezone select covering all 418 IANA timezones, stored per-user for consistent date/time display.
- - Adapted all date/time displays across the application, including the Cockpit, to render in the user's configured timezone.
- - Removed leftover UTC labels from the Cockpit now that times are localized, and fixed formatRelativeTime/createDateFormatter signatures to match.
Rust+ Bot Reliability
Better visibility into control socket lifecycle and fixes for pre-existing TypeScript and runtime issues in the Rust+ bot and live page.
- - Added control socket connection/disconnection notification events so the web dashboard's connection state is broadcast to other systems, matching existing worker connection events.
- - Resolved pre-existing TypeScript errors in the Rust+ live page and fixed two independent bugs uncovered during that cleanup.