← BACK TO LUMINAL
CHANGELOG
v1.0.8 — Apr 5, 2026
- Drift physics — slip ceiling with soft enforcement, speed-gated drift limits, direction-aware ceiling, reversal damping, and arc-based yaw/follow coupling for natural drift feel
- Camera system — modular 3-node rig with state machine, collision avoidance, axis damping, lazy drift camera that stays behind the nose
- AI difficulty levels — Easy/Medium/Hard presets affecting perception, reaction delay, attack gating, and personality ranges; difficulty selector on Loadout screen
- Dual-deck music player — crossfading between tracks with pre-buffering, smooth transitions on skip/prev, and error recovery
- User profiles — profile page with stats display, edit modal, social links (Discord/Steam/Twitch/YouTube), gamepad navigation, and mobile responsive layout
- Match history — cloud replay upload/download with gzip compression, match history tab with playback, local replay for own matches
- Lobby close timer — 5-minute post-match countdown with auto-leave for multiplayer lobbies
- Bug reporter — now active in all environments with session-level rate limiting, dedup, URL sanitization, and error truncation
- App Check — reCAPTCHA Enterprise integration for Firebase with debug token support for local dev
- Admin claim caching — admin flag auto-refreshed from ID token on auth state changes
- Structured logging — structured net.* log calls across netcode, lockstep, transport, and online match modules; structured logger for Cloud Functions and relay
- Cloud Functions — expanded with structured logging, App Check readiness, and new callable endpoints
- Relay auth — App Check token verification (monitor mode), structured auth logging
- Error handling cleanup — replaced empty catch blocks with swallow/warnDev helpers across matchmaking, transport, and presence
- E2E browser tests — online emulator test suite with auth, match flow, series, disconnect, regression, and smoke scenarios; Firebase security rules tests
- Accessibility — focus styles and reduced-motion preferences
- CI/CD — GitHub Actions workflows for CI and preview deploys
- Gameplay tuning — speed rebalance, fumes grace buffer, FOV kick on slipstream, proximity range/multiplier buffs from config
- Sputter SFX — synthesized engine choke on boost fumes expiry
- UI polish — loading screen styling, social panel improvements, chat in lobby, online player count badge, friends count in social trigger, mobile settings drill-down
- Standalone pages — changelog, roadmap, and credits extracted to standalone HTML pages
v1.0.7 — Apr 4, 2026
- Map system — map selector in character select with background transitions, lobby map voting with animated wheel tiebreaker and procedural sounds
- Stats Hub — mode tabs, series pills, stat cards with rank badges, leaderboard drilldown with graveyard stats
- Settings redesign — full-page sidebar layout with keyboard and gamepad navigation, inline keybinds
- Auth overlay redesign — progressive sign-in, 12 new SVG icons, forgot-password flow, controller navigation
- Arena floor reflections with quality presets and admin tuning controls
- Privacy policy & terms of service with signup consent
- E2E testing framework — bot drivers, headless client, scenario runner, relay harness
- Unified design tokens & button styling across all screens
v1.0.6 — Apr 3, 2026
- Dedicated match server — live match packets now route through a dedicated relay server with token auth, rate limiting, and reconnect support; automatic fallback if unavailable. Fully compatible with existing lockstep netcode — adaptive input delay, rollback prediction, desync recovery, and hash verification all work seamlessly over the new transport.
- Atmosphere system — layered volumetric atmosphere with fog haze, floor mist, and hero beam volume shaders with reactive bloom tuning
- New arena — GLB arena model with circular boundary and dynamic radius; Milky Way panoramic skybox
- AI circular arena fix — wall detection now uses circular boundary math and dynamic radius instead of hardcoded rectangular limits
- Transport desync fix — player index mapping now uses deterministic sort order, fixing input-swap divergence between clients
- Trail and replay stability fixes
- UI polish — rainbow-order color selects, reduced stand emissives, button text accent tuning
v1.0.5 — Mar 31, 2026
- Arena visual overhaul — arena palette shifted from purple/violet to teal/cyan/orange, floor reflectivity increased, barrier walls taller with solid backings
- Arena glow rework — orange baseboard strips, top edge strips, corner pillar accents, and wall lights recolored to warm orange
- Stadium floor — circular platform at barrier height with square cutout for the arena
- Player colors rebalanced — darker, more saturated tones; 2 new colors added (green, pink); emissive intensities tuned per hue
- Demo camera intro — smooth ease-out rise from floor level when entering main menu
- Unified overlay headers — all screens now use consistent header bar with persistent back button that moves between screens
- Audio-reactive palette cycling — arena color cycling continues even when music is not playing
- Rave spotlight sweep — stadium spotlights now sweep directionally with rest angles instead of static pointing
- Camera distance slider max increased from 35 to 44
- START button demoted from hero to small secondary size in lobby action bar
v1.0.4 — Mar 31, 2026
- Netcode health signals — match health classified as healthy / degraded / unstable based on rollbacks, desyncs, recoveries, late inputs, and stalls
- Death-after-rollback fix — deaths caused by rollback resimulation are no longer silently lost
- Peer death fallback — if lockstep sim doesn't confirm a peer death within 500ms, it promotes as fallback so the round still ends
- DelayAdvisor escalation — severe late-input rates (>50%) now raise input delay by +2 or +3 instead of just +1
- Result ghost pre-warm — expensive GLTF clone moved from killcam to countdown "3", eliminating death-transition FPS drops
- Desync diagnostics — trail mid-samples and quantize-interval context logged on hash mismatch
- Integrity buffering — early remote roundEnd claims are stored and rechecked when local result is determined
- Fallback activation counter — state-stream timeout fallbacks are now counted and surfaced in round stats
v1.0.3 — Mar 31, 2026
- Lockstep truth model — deterministic sim is sole authority for deaths and round results in lockstep mode
- Disabled state-stream fallbacks — onRemoteDead, opponent roundEnd trust, and roundEnd timeout bypassed in lockstep
- onAllRoundEnd integrity check — logs warnings when peer claims disagree with local deterministic result
v1.0.2 — Mar 30, 2026
- Netcode fixes — hash race condition, match cleanup ownership, listener dedup, vote determinism
- N-player killcam — camera targets actual dead opponent, not always the first remote player
- N-player replay — metadata stores all opponent names and correct winner name
- N-player trail VFX — proximity glow now renders for all remote humans, not just first
- N-player chat — match chat tab shows all opponent names
v1.0.1 — Mar 30, 2026
- N-player lockstep — game loop generalized from 1v1 to support N human players
- AI desync fix — PRNG calls consumed unconditionally to keep determinism across clients
- Music player — scrubber moved between track name and controls, resized to match volume sliders
- Playlist dropdown — YOUR PLAYLIST always visible, persistent active selection synced with music page
- Social party — kick/add-slot actions wired in social tab mirror; party dropdown hidden outside menu
- Lobby previews — model centering, camera framing, and showroom rendering fixes
- Mobile polish — character select, social, streak, loading, and touch breakpoint refinements
- Roadmap — restructured phases, added Alpha Release milestone, completed items shown struck through
v1.0.0 — Mar 30, 2026
- Social system — friends list, party management, and notifications
- Vehicle select screen — showroom-style picker with stat bars, flavor text, and color chooser
- Lockstep netcode — adaptive input delay derived from live RTT and desync recovery
- Mid-game lobby join and JOIN GAME notifications
- CSS architecture —
--topbar-offset custom property across all HUD elements
v0.9.9 — Mar 29, 2026
- Server-authoritative scores — both clients reconcile via Firebase before showing results
- Killcam orbits until server confirms round result; dying player is authoritative on winner
- Lobby AI fully integrated — collisions, killcam, spectating, and score tracking
- AI deaths trigger explosion SFX; pregame popup and series HUD include AI names and colors
- Spectating follows surviving AIs after death, transitions to result when 1 remains
v0.9.8 — Mar 29, 2026
- Streak overlay no longer persists on home screen after exiting mid-killcam
- Match selector updates replay, favorite icon, and playback when cycling rounds
- Series scoreboard hidden on return to menu; next-round button visible for both players
- Score double-increment prevented;
_endSpectating skips local updates in online mode
- Touch indicator always visible on desktop; lazy init on first touch for touchscreen laptops
v0.9.7 — Mar 29, 2026
- Staggered menu entrance animation; replay on return from gameplay
- Mobile portrait polish — larger title, wider buttons, fluid-width overrides, scroll-through overlays
- Return-to-lobby fix — ready state and autostart timer cleared on rejoin
- Loading screen dismiss race fix; larger click prompt and status text
v0.9.5 — Mar 28, 2026
- Stats screen, DM chat, social dropdown with party management
- WASD/gamepad quickstart navigation; CSS-native cursor with hover glow
- Slingshot drift decel handling; car colorization and underglow
- Leaderboard medal icons; pinch-to-zoom camera on mobile
v0.9.4 — Mar 28, 2026
- Fixed Firebase permission errors causing online desync and broken friends list
- Separate drift-brake (Space) vs regular brake (S) — active braking mid-drift
- Full input prediction for rollback netcode; simulation performance optimizations
- New Tron Motorcycle model (DreamLoft3D) with rider and material-aware colorization
- Friends UI overhaul — online status, inline invite/remove, smart invite auto-creates lobby
- Firefox dropdown compatibility fixes
- Visual polish: emissive boost for dark colors, doubled ground FX, faster overlay animations
v0.9.3 — Mar 27, 2026
- Mobile touch controls — zone steering, slide to accelerate/brake, dual-tap boost
- Mobile UI overhaul — full-viewport menus, condensed top bar, bottom-sheet chat
- Fixed multiple lobby race conditions and listener stacking bugs
- Netcode framework Phase 1–2 — state machine, death arbiter, match factory
v0.9.2 — Mar 27, 2026
- Vapor text loading screen effect; PWA install hint
- Top bar polish — unified click targets, tighter spacing, reduced glow
- SFX volume default lowered to 75%
v0.9.1 — Mar 27, 2026
- PWA title bar integration (Window Controls Overlay)
- Custom SVG cursors with Luminal theme
- Notification overhaul — countdown spinner, swipe-to-dismiss, shorter duration
- Settings sync to server for logged-in users
- Slingshot drift meter regen increased ~15%
v0.9.0 — Mar 27, 2026
- Slingshot Mobile Controls
- Vehicle-aware touch system — car mode changes two-finger behavior to support drift + counter-steer
- Drift on mobile: touch a side + slide down to initiate drift, second finger on opposite side to counter-steer
- W-boost during drift: slide second finger up for accelerate while brake held
- Boost-out: slide drift finger back up — brake releases, instant exit when aligned
- Amber drift glow + DRIFT label overlay feedback when drifting
- Mobile Polish
- Increased font sizes for menu buttons, bottom bar, and loading screen on mobile
- Loading title no longer wraps on narrow screens (nowrap + overflow visible)
- Bottom bar: larger text, better spacing, icon cleanup in mobile drawer
v0.8.9 — Mar 27, 2026
- Mobile
- Touch controls rewritten — two-zone 50/50 layout with vertical slide gestures for throttle, brake, and boost
- Mobile drawer — bottom bar, announcements, and chat stack into a single scrollable container
- Top bar condensed for mobile — icon-only mute/prev/pause/skip/fullscreen, non-essential controls hidden
- Radar hidden during gameplay on mobile (toggle in settings), shown on pause
- Chat disabled on mobile to save screen space
- Loading screen text sizing tweaks for small screens
- AI
- Vehicle-aware AI — separate tuning constants for Bike vs Slingshot (turn speed, base/boost/dash/drift speeds)
- AI now uses brake input — drift commit/cooldown/exit timers for Slingshot driving
- UI
- Changelog & Roadmap converted from draggable popovers to full overlay-screen panels with back-button navigation
- Mouse wheel now scrolls chat naturally when hovered instead of zooming camera
- Infrastructure
- Firebase rules & indexes updated
- Favicon assets moved to public/
- New tests: lockstep manager, seeded random, online match class, lobby
v0.8.8 — Mar 27, 2026
- Party & Lobby Fixes
- Offline kick countdown now ticks down correctly (was stuck at 30s and never firing)
- Auto-kick at 0s now executes reliably when a player stays offline
- Party HUD minimum width increased — LEAVE button no longer collides with long names
- AI selection preserved when changing vehicle — no longer drops selection after Firebase sync
- Clicking the same AI name no longer deselects it; only switching to a different name changes selection
- Mobile
- Announcements hidden on mobile
- Bottom bar hidden on mobile
v0.8.7 — Mar 27, 2026
- Mobile
- PWA install button — mobile users can now install Luminal as an app (service worker, manifest, native install prompt)
- Complete mobile breakpoint overhaul — 9 responsive tiers from tablet (1024px) down to small phone (360px), landscape, PWA standalone, and retina
- Native mobile feel: safe-area insets for notch/island, fluid clamp() typography, :active press feedback, larger touch targets, app-native border-radius
- Smooth orientation change animation with fade overlay and scale-in reveal
- Lobby & Party
- Return Party to Lobby — host can pull all players back to lobby from pause menu or between rounds
- Party HUD: check marks pinned right, kick/leave buttons to the left on hover, visible on all rows
- Clicking yourself in party HUD deselects AI and syncs color picker back to your color
- Chat
- Chat always hidden at match start (local and online), always restored on menu return
- Joining a party forces chat visible (overrides manual close)
- Removed countdown messages (3, 2, 1, GO) from match chat
- Fixed party chat tab not filling resized chat window
- Slingshot Tuning
- Dash drain reduced 10% (60 → 54) — longer boost windows
- Drift meter regen increased 10% (15 → 16.5) — more rewarding drifts
- Per-vehicle dash drain now configurable (bike unchanged at 60)
v0.8.6 — Mar 26, 2026
- Security & Anti-Cheat
- Server-side rule hardening across all real-time systems
- State validation and bounds enforcement on all networked fields
- Client-side integrity checks with sequence-based ordering
- Transactional writes for matchmaking, lobbies, and leaderboards
- Matchmaking
- Fixed race conditions in queue matching
- Faster match lookups with indexed queries
- Improved queue presence cleanup
- Netcode
- Adaptive RTT estimation with EMA-smoothed jitter tracking
- Dynamic grace windows and interpolation delay tuned to connection quality
- Sequence-based packet ordering with per-round resets
- Lockstep
- Trail overflow protection for long matches
- Smoother input prediction decay
- Extended desync detection window
- Improved round transition stability
- Car/Slingshot in Lockstep
- Drift physics fully ported to deterministic simulation
- Lockstep now supports all vehicle combinations
- Drift state included in cross-client hash verification
- 9 new determinism tests across vehicle matchups
v0.8.5 — Mar 26, 2026
- Lobby redesigned with Smash Bros-style vehicle select — large tiles with 3D model previews, player name indicators, and host crown badges
- New party dock panel showing host, guest, AI bots, and empty slots with inline AI editing and add/remove controls
- Lobby layout restructured into flex row with vehicle grid, color picker, collapsible match settings, and docked party panel
v0.8.4 — Mar 26, 2026
- Full sound system overhaul — 4 new procedural Web Audio sounds: screen transition swoosh, notification chime, victory arpeggio, and defeat tone wired across all UI flows
v0.8.3 — Mar 26, 2026
- Fixed replays always rendering bikes regardless of selected vehicle
- Fixed online match-start desync where one player could begin ~2 seconds early due to stale server-clock offset
- Fixed ghost focus border on first vehicle tile in lobby
- Fixed lobby button navigation order to match visual layout
v0.8.2 — Mar 26, 2026
- New vehicle model: Cyberpunk Ghetto DeLorean replaces the classic DeLorean
- Vehicle glow now dynamically recolors to match player color selection
- Fixed trail and exhaust glow to emit from the rear of the new model
v0.8.1 — Mar 26, 2026
- New vehicle: Slingshot (DeLorean) with Rocket League-style drift physics — brake + turn to powerslide, drifting builds meter and gains speed
- Vehicle selector in quickstart match options and lobby player cards
- New controls: Shift = boost (meter burst), Space = brake/drift, W = accelerate
- Server-clock synchronized countdown starts for tighter online match sync
- Replays now store and render vehicle type — old replays default to bike
- Launched luminal.live — custom domain
- Draw grace window reduced to 100ms for fairer simultaneous death detection
- Updated credits with full tech stack and DeLorean model attribution
v0.8.0 — Mar 26, 2026
- All-new persistent Lobby system supporting 2-4 players with host migration, real-time color sync, and AI bot fill for empty slots
- Draggable Party HUD overlay added with ready toggles, host controls, and a dedicated top-bar visibility toggle
- Overhauled social system featuring a unified notification center, right-click context menus, and smart push invites
- Added "Early Adopter" gold star icons and animated username gradients to chat, leaderboards, and lobbies for legacy players
- Unified match end screen featuring series replay browsing to save and favorite specific rounds from an online set
- Chat now strictly auto-hides during active gameplay, and browser autofill/spellcheck has been fully disabled on inputs
- Complete keyboard and gamepad navigation parity across all UI screens, including horizontal selectors and B-button mapping
- Massive CSS architecture rewrite, splitting a monolithic stylesheet into 30 modular files using native nesting and BEM naming
- Built a comprehensive E2E DOM testing infrastructure from scratch, achieving 413 passing tests across all UI flows
v0.7.1 — Mar 25, 2026
- Fix replay camera zooming to map center on old replays
- Add forgiving defaults for old replay format compatibility
v0.7.0 — Mar 25, 2026
- Full TypeScript migration — all 45 source files converted to strict TypeScript with shared type definitions and full annotations
- 119 automated tests across 8 test suites (utils, contentFilter, spatialGrid, replay, graphics, ai, onlineMatch, replayStore)
- ESLint with typescript-eslint for static analysis, internal
any usage reduced from 197 to 19
- Online forfeit system — Escape no longer quits online matches; new pause overlay with Resume, Settings, and Forfeit buttons
- Online round protection — Escape between rounds no longer returns to homescreen
- Pregame info screen repositioned below match scoreboard
- Fixed replay camera zoom bug — death zoom FOV no longer persists between background replays, added null guards for old replay data compatibility
- Bike model preloading — home menu waits for GLTF model before starting demo
- Fixed errant border on Line Ride Assist toggle in settings
- Back button styling — increased icon padding and stroke thickness
- Firebase cache headers — no-cache for index.html, immutable for hashed assets, 30-day cache for models and music
- Changelog now stays open until explicitly closed
v0.6.0 — Mar 25, 2026
- Full codebase refactor — CSS design system (tokens, components, screens, animations), 12 UI modules extracted from main.js, game subsystem decomposition
- Online latency reduced ~30ms — 20Hz netcode (was 15Hz), 50ms interpolation buffer (was 80ms)
- Fixed false draws in online matches — only local player collisions checked, opponent death comes via netcode
- Fixed matchmaking race condition — failed createMatch now detects if opponent already matched you
- Fixed queue presence ordering — presence written before queue doc to prevent stale pruning
- Match callbacks registered before entering queue to prevent missed instant matches
- Playlist drag reorder no longer garbles play order — shuffle indices remapped instead of re-randomized
- Now-playing cyan highlight syncs across all track change sources (skip, auto-advance, click)
- Streak HUD repositioned below radar, follows radar drag, hidden during death screen
- FPS tooltip updates live while hovering, removed hint message
- Removed planet assets from arena skybox
- Anonymous users can access matchmaking without login redirect
v0.5.1 — Mar 25, 2026
- Neon palette overhaul — all 9 colors optimized for vibrant futuristic theme with better hue distribution
- WCAG luminance/contrast scoring for AI color selection — opponents are always visually distinct
- Anonymous users can now play casual matchmaking without signing in
- Fixed online match "waiting" hang — missing Firebase RTDB rules for loaded path
- Online match accept button animation — pulses cyan with "ACCEPTED" text on click
- Freecam mouse axes fixed (were inverted), ESC exits freecam back to overhead
- "PRESS ESC TO EXIT FREE CAM" toast on entering freecam mode
- Loading screen styled to match main menu — scanlines, vignette, gradient
- Fixed page load flash — body background matches loading screen color
- Loading screen uses real asset checks instead of arbitrary timeouts
- Fixed menu swap scanline flash — combined contentSlideIn + bgDrift animations
- Online opponent disconnect now handled during waitingOnline state
- signalLoaded retry on failure, listener setup before write to prevent race conditions
v0.5.0 — Mar 25, 2026
- ANNIHILATED the 0 FPS death lag — hunted down a brutal Three.js shader recompilation bug where hiding the player group nuked every light from the scene graph, forcing the GPU to recompile every single MeshStandardMaterial shader in the entire arena on the death frame. Deaths are now buttery smooth, zero stutter, zero mercy
- SpotLight headlight beam now properly managed — was created but never returned from bike builder, making it impossible to zero on death. Dragged it out of the shadows and gave it a proper killswitch
- Trail vibration segments no longer haunt you from beyond the grave — glowing wall segments that were vibrating near the player now properly reset when the bike dies, instead of frozen mid-jiggle for eternity
- destroy() now zeros all light intensities before ripping objects from the scene — prevents shader recompilation cascade during cleanup transitions
- Playlist selector overhaul — replaced the DEFAULT TRACKS / YOUR PLAYLIST tab bar with a clean arrow-style selector matching the settings UI pattern
- New PLAYLIST section header in the music overlay — sits below the volume slider, styled to match NOW PLAYING
- Speed rebalance — W-boost reduced from 60 to 55, dash increased from 93.5 to 98.5
- Dash VFX cranked up — bigger particles, wider electric arcs, higher opacity, longer burst timers
- W-boost sparks removed — ground FX now only activates during dash
- Camera zoom rebalanced — boost pulls 6.5% FOV (was 4.2%), dash pulls 12% (was 9.2%), transition speed boosted to 5.0
- Killcam smoothed out — frame-rate independent lerp replaces raw constants, direct blend orbit replaces jittery chase-lerp
- FPS counter in top bar — updates every 500ms, Orbitron font, lives left of the settings button
- Trail spawn point moved forward — now aligned with back of bike wheel frame instead of bike center
- Settings focus fix — collapsed section items no longer steal keyboard/gamepad focus highlight
v0.4.9 — Mar 25, 2026
- New bike model — Tron BlackGuard Bike by SpringSociety replaces procedural geometry
- Integrated rider — model includes full character, removing 280+ lines of procedural rider code
- Dynamic color tinting — emissive light strips on bike recolor to match player color
- Trail repositioned — now spawns from the back of the bike instead of center
- Bike light moved behind rider for better visual balance
- Lean reduced 15% for the new model proportions
- Credits screen — new About link in bottom bar opens credits overlay
- GLTFLoader added — bikes loaded from .glb models, preloaded during loading screen
- Spatial hash grid — O(1) trail collision and proximity queries replace O(n) linear scans
- InstancedMesh trail walls — thousands of draw calls reduced to ~4 per trail
- Partial GPU buffer uploads — only changed instance data sent to GPU, not the full buffer
- Glow lines merged — single pre-allocated BufferGeometry per trail instead of per-segment
- AI computation staggered — each AI updates every 3rd frame with cached results
- AI angle offsets reduced from 21 to 13, trap directions from 16 to 8
- Pre-allocated death particles — explosion system created at spawn, eliminating death-frame lag
- Merged proximity queries — wall repulsion, speed boost, VFX, and recharge share one grid lookup
v0.4.8 — Mar 23, 2026
- Real asset loading — progress bar tracks fonts and audio instead of faking it
- Loading status text — shows LOADING FONTS → LOADING AUDIO → BUILDING WORLD → READY
- Font preload — Google Fonts moved from @import to link tag for faster load
- First track preloaded — road runner uses rel=preload instead of prefetch
- Top bar font normalization — all text 11px, all icons 14px, consistent letter-spacing
- Music controls — zero-gap clickable regions, no dead space between buttons
- Scrolling track name — max 125px, long names marquee-scroll left to right
- Settings icon in top bar — dedicated cog between notifications and fullscreen
- Memory/ping moved to settings overlay — positioned top-right, out of the top bar
- Notifications bell dropdown — empty state with NO NOTIFICATIONS
- Navigation dedup — pressing the same screen button twice no longer stacks history
- Default volume raised to 30%
v0.4.7 — Mar 23, 2026
- Homepage keyboard/controller toggle — segmented KEYBOARD | CONTROLLER switch, auto-detects input
- Keybinds controller tab — Xbox-layout button icons for gameplay, menu, and replay sections
- Top bar reorganized — perf stats moved left, settings cog in perf section, notifications bell dropdown
- Top bar hover fix — hover highlight covers full vertical slice, not just icon
- Now Showing icon fix — film icon no longer renders as solid cyan block
- AI overhaul — smarter steering, trail-cutting, space denial, ambush maneuvers, escape logic
- AI demo 30s cap — menu demos reset instead of going in circles
- Shared drawing — mouse trails synced between all players via Firebase, fade over 8s
- Local trail color — matches selected bike color instead of hardcoded gradient
- New colors — Blue (#4488ff) and Orange (#ff8800) added to color picker
- Changelog popover closes on outside click
- Pause button desync fix — inner SVG clicks no longer break state
- Section label opacity bumped from 0.4 to 0.7, settings carets bolded
v0.4.6 — Mar 23, 2026
- Repeat/shuffle toggle fix — active state now applies correctly when clicking SVG icons
- Keybind keys restyled — purple theme with glow box-shadow on hover
- Top bar icons enlarged +2px, fullscreen gap widened, more spacing between controls
- Full-height click targets — top bar buttons activate from anywhere in their vertical column
- Quick start row toggles widened (+4px padding each side)
- Home screen buttons normalized to consistent width
- Playlist drag reorder — reduced magnetic snap with dead zone hysteresis
- Track name display no longer wrapped in quotes
- Announcement panel repositioned below volume slider
v0.4.5 — Mar 23, 2026
- Lucide icon pack — 36 inline SVG icons replace all Unicode/emoji icons across the entire UI
- Top bar normalization — consistent 11px font size and unified button opacity (0.45 base)
- SVG hover glow — filter:drop-shadow replaces text-shadow for crisp icon effects
- Replay keybinds — all replay controls added to keybinds tab (8 rebindable + 4 readonly)
- Menu font weight boost — headers and labels bolded for readability
- Zoom range increased ~75% for in-game camera and replay
- Changelog is now draggable — only X button closes it
- Dropdown padding and user submenu margin fixes
v0.4.4 — Mar 23, 2026
- Replay overhaul — full keyboard shortcuts (Space, Q/E, arrows, H, J/L, number keys)
- Reverse playback — -1x and -2x speeds with proper trail rebuilding
- Speed presets reordered — [-2x, -1x, 0.25x, 0.5x, 1x, 2x, 4x] linear progression
- Death markers on timeline — colored dots at elimination points
- Smooth camera transitions — 0.4s interpolation when switching camera modes
- Auto-pause at death — playback pauses on elimination with status text
- Gamepad replay controls — LB/RB cycle camera, LT/RT adjust speed, X play/pause, Y toggle UI
- D-pad skips time during replay instead of changing songs
- H key / Select / Y button hides all replay UI for clean viewing
- Free cam: left-click drag, slower turning, 20% faster movement, 15% more momentum
- Free cam: WASD disabled for menu nav, controller stick inverted to match expected direction
v0.4.3 — Mar 23, 2026
- Music overlay redesigned — chat-style tab bar replaces toggle for Default Tracks / Your Playlist
- Shuffle is now a toggle — when on, next track is random; current track keeps playing
- YouTube URL auto-detects on paste — no button needed, just paste a link
- Speaker icons replace checkmarks for track enable/disable (matches top bar audio)
- Drag-to-reorder handles on all playlist items with smooth animation
- Custom playlist tracks now have mute toggle and remove button
- Music overlay now has all playback controls: prev, play/pause, next, repeat, shuffle, mute
- Default track order: Road Runner, Start The Engine, Rainbow Dance lead-in; rest randomized
- Rommii link uses magenta color pulse instead of bounce
- Audio error recovery — resume instead of skip when track already playing
- Drag grab offset fix — item stays pinned to cursor position
- Settings section carets doubled in size
- Settings toggle fix — proper box-sizing and flex-shrink
v0.4.2 — Mar 23, 2026
- Navigation stack — unified menu system with dynamic back buttons, open any screen from anywhere
- Removed 9 hardcoded back buttons, replaced with stack-driven dynamic injection
- Centralized screen hooks for enter/exit logic (radar preview, keybind listeners, data loading)
- ESC and gamepad back now use single navigateBack() instead of per-screen handlers
- Announcement panel more transparent and subtle
- Skip button glyphs no longer overlap (letter-spacing fix)
v0.4.1 — Mar 23, 2026
- Expanded default playlist — 9 tracks including 4 new Rommii songs
- Default tracks list in Music submenu — disable/enable individual songs with checkmark toggle
- Disabled tracks are skipped during playback with dimmed strikethrough appearance
- Static playlist lead-in: Road Runner, Rainbow Dance, Start The Engine, Valor play first
- Shuffle button in top bar audio controls
- Announcement panel on home screen — top-left, changelog-styled, auto-hides on game start
- Rommii credit announcement with glowing animated link
- Replay exit button repositioned with equal padding from top bar
v0.4.0 — Mar 22, 2026
- Line Ride Assist — course correction gently aligns you with nearby trails for boost gathering
- New Gameplay settings section with Line Ride Assist toggle
- Distant galaxies added to skybox with procedural spiral arms and music-reactive glow
- Star twinkle effect across the sky
- Brighter spectator camera lights
- Discord invite link added to loading screen and bottom bar
- Galaxies now glow through arena walls correctly
v0.3.9 — Mar 22, 2026
- Music overlay title restyled to match stats/leaderboard (larger, bold, scanline effect)
- Music EQ anchored to bottom of panel like home screen
- Your Playlist section now full width
- Improved AI wall avoidance with speed-scaled multi-distance lookahead
v0.3.8 — Mar 22, 2026
- Killcam slow-motion — 0.5s slow-mo before orbiting the crash site
- Death-frame lag fix: deferred particle creation, pre-warmed materials, pre-created flash lights
- Music panel restyled — larger labels, better spacing, chat-style thin scrollbar on playlist
- Audio-reactive equalizer added to music overlay
- Volume slider grows on grab with sparkle particle effects
- Smoother settings collapse/expand with cubic-bezier easing and rotating caret
- All settings groups collapsed by default
- Audio controls glow cyan on hover
- Countdown number centering fix ("1" no longer off-center)
- Top bar dropdowns no longer clipped
- Removed username dropdown caret and settings gear from top bar
- Settings section headers reduced 25%, carets match arrow selectors
- Keyboard/gamepad nav skips hidden match options when panel is closed
- Overlays no longer overlap bottom bar
- "ENEMY" → "OPPONENT" in controls hint
v0.3.6 — Mar 22, 2026
- All overlay menus scroll and never overlap the top bar
- Top bar frosted glass with blur, radial gradients, and scanlines
- Settings gear icon in top bar (left of username)
- Changelog tab sized to content instead of full-width
- Removed Match History button from Stats (already on home screen)
- Main menu nudged upward 15px
v0.3.5 — Mar 22, 2026
- Graphics quality settings — 4 presets (Low/Med/High/Ultra) with GPU auto-detect
- Per-setting overrides: bloom, render scale, arena detail, rave lights, audio react, trail glow, player VFX, lighting
- Quality preset as segmented toggle [LOW|MED|HIGH|ULTRA]
- Control toggles restyled — frosted glass, cyan glow, menu-button depth
- Tooltips on all graphics and camera settings
- Collapsible settings sections with animated expand/collapse
- Settings panel vertically centered, scrollable, 15% wider
- New SERVER settings section with Auto Submit
- Changelog restyled to match chat panel — tab header, scrollable body, draggable
- Color allocation optimized — reusable THREE.Color instances in palette functions
v0.3.3 — Mar 22, 2026
- Replay scrub preserves play/pause state
- Loop button for replay playback
- Freecam starts positioned near first visible character
- Compass resize handle flipped to bottom-left
- Timer bar moved to top as drag handle for compass
- Radar UI refactored to match chat panel style
v0.3.2 — Mar 22, 2026
- Google Analytics integrated
- Volume and playlist dropdowns open downward with configurable direction
- Top bar UI scaled up ~20%, pushed closer to screen edges
- Mute button always shows speaker icon
- Compass drag-to-resize synced with settings slider
- Killcam spin slowed 20%, extended 0.5s
- Playlist mode swap updates music overlay
- First custom track auto-plays on add
- Replay controls widened, all buttons on single row
v0.3.0 — Mar 22, 2026
- Music files included in build (fixed missing audio after deploy)
- Audio error recovery no longer rapid-cycles through all tracks
- Audio controls moved left of track name in top bar
- Menus disabled during game transition — no more multi-start on spam click
v0.2.9 — Mar 22, 2026
- Fixed audio not playing on click to start
- Fixed countdown beep missing on "3"
- Volume slider dropdown on top bar mute button
- Removed playlist settings from settings overlay (now in Music)
v0.2.8 — Mar 22, 2026
- Frosted glass blur on all menu backgrounds
- Normalized menu system — only one screen visible at a time
- Smooth fade/slide transitions between menus
- Previous track button + playlist dropdown in top bar audio
- Unified dropdown styling across all menus (20% larger rows)
- Background auto-switches to replays if player has any
- Fixed time played formatting (days support, centered)
- Fixed changelog popover opening off-screen
v0.2.7 — Mar 22, 2026
- Resizable chat with drag handle, viewport clamping, size persists
- Right-click CHAT toggle resets position
- Invite button disabled with Coming Soon tooltip
- Fixed gameplay blur — stripped CSS filter/backdrop-filter from loading transition
- MediaSession API — keyboard media keys control music player
- Track metadata shown in browser/OS media controls
- Lowered EQ sensitivity for YouTube simulation and real audio
v0.2.6 — Mar 22, 2026
- Cinematic focus-in polish — loading text fades instantly, canvas unblurs over 2s with saturation sweep
- Fixed chat drag — switched from pointer capture to window mouse events
- Gentler momentum — lower friction, softer bounce, velocity cap
- Fixed min-width on perf stats to prevent top bar layout shift
- Player icon replaces username in time played section
v0.2.5 — Mar 22, 2026
- Cinematic focus-in — blurred 3D scene behind loading screen, smooth unblur on click to start
- Fixed user dropdown — hover bridge eliminates gap, inner wrapper for styling
- SVG trophy icon for leaderboard buttons (monochrome, matches UI)
- Player icon and globe icon in time played section
- Real-time seconds ticker on global time played
- Tooltips skip empty data-tip attributes
- Chat drag follows cursor in real time, reduced momentum 15%
v0.2.4 — Mar 22, 2026
- Top bar breathing room — wider padding, increased separators
- Username hover submenu — Friends and Sign Out on hover
- Polished chat drag with momentum, bounce physics, and edge snap
- Auto-scaling overlay panels for small viewports
- Memory and ping tooltips with detailed stats (heap, avg/min/max ping)
- Global time can never regress — monotonic transaction guard
- Fixed null classList errors, tooltip errors, ping using CDN HEAD
v0.2.3 — Mar 22, 2026
- Titan Panel top bar — full-width gradient bar with all items omnipresent
- Memory usage and Firebase ping in top bar
- Physics-based draggable chat with momentum and edge bounce
- Smart tooltip positioning and YT EQ boost
- Quickstart options panel shrunk — smaller arrows, labels, color dots
- Leaderboard column widths and paging refinements
v0.2.2 — Mar 22, 2026
- Omnipresent draggable chat with tab bar, close button, unread count
- Leaderboard — paging, wider columns, trophy icon, removed RANKED tab
- Smooth camera transition from menu to game start
- Audio & visual controls moved to top bar
- Friends moved to top bar (visible when logged in)
- Smart tooltips — auto-flip below when near top edge
- Boosted YouTube EQ simulation for visible equalizer animation
- Compass shows in-game position during settings
- Favicon added
v0.2.1 — Mar 22, 2026
- Omnipresent chat with tab bar and X close button
- Chat visible on all screens, not just main menu
- CHAT toggle and badge always in top bar
- Custom styled tooltips — Orbitron font, glow effect, smart positioning
- Replaced all native title popups with JS-powered floating tooltips
v0.2.0 — Mar 22, 2026
- Custom YouTube playlists with playlist import
- Music overlay on homepage
- Chat toggle in top bar with unread badge, persisted show/hide
- Loading screen version matches bottom bar glow style
- Replay panel: removed bottom EXIT, added SPEED/CAM labels
- Leaderboard query fix with client-side fallback
- Bottom bar audio overflow fix
v0.1.9 — Mar 22, 2026
- Server-synced time played — Firestore delta-based global counter
- Friends button moved below Character
- Online stats synced from Firestore leaderboard data
- Replay fav star uses purple secondary color
- Compass lowered 20px from top bar
v0.1.8 — Mar 22, 2026
- Bottom bar grid layout — center section always dead center, sides push outward
- Top and bottom bar visual parity — matching margins, separators, spacing
- Universal UI click sound on all interactive elements
- Replay panel raised 20px with backdrop, more padding and breathing room
- Keyboard controls moved below time section
v0.1.7 — Mar 22, 2026
- Friends system — add by username, accept/deny requests, real-time notifications
- Boost meter hidden on game over screen, resets to full before countdown
- Auto-submit no longer flashes button when enabled
- Replay fav star flush-attached like Quick Start
v0.1.6 — Mar 22, 2026
- Fixed game over screen not showing (broken #now-playing/#credit refs)
- Top bar (auth, online count, fullscreen) always visible
- Settings toggles redesigned as segmented OFF | ON controls
- Compass moved below top bar, max size doubled to 440px
v0.1.5 — Mar 22, 2026
- Submit to Leaderboard button on every post-game screen
- Auto Submit toggle in Settings for automatic leaderboard submission
- Global rank shown after submission (RANK #X)
- Centralized bottom bar (audio, visual, credit in one row)
- Fullscreen button inline with top-right auth bar
- Duplicate submission protection (client + server)
- Matchmaking promoted to full menu button
v0.1.4 — Mar 22, 2026
- Removed play icon from Quick Start
- Wider menu buttons
v0.1.3 — Mar 22, 2026
- Merged matchmaking & invite into Quick Start row
- Removed arrow icons from Main Menu buttons
v0.1.2 — Mar 22, 2026
- Deploy script with auto version bump, changelog & chat announcement
- Sound & visual icons replace NOW PLAYING / NOW SHOWING text
- Clickable now-showing row to cycle background modes
- Fullscreen toggle button (hover top-right corner)
- System chat messages for release announcements
- Match options panel flush-attached to quickstart button
v0.1.1 — Mar 22, 2026
- Leaderboard with wins, win rate, streak, fastest, and time metrics
- Per-settings filters (series length & opponent count)
- Post-match auto-submission to global leaderboard
- Click your entries to replay the match
v0.1.0 — Mar 22, 2026
- Private lobbies: invite friends via shareable link for direct matches
- NOW SHOWING toggle: switch menu background between AI matches & saved replays
- Glowing sweep animation on version number
v0.0.8 — Mar 21, 2026
- Live total time played counter on home screen (persists across sessions)
v0.0.7 — Mar 21, 2026
- Cinematic slow-mo death zoom on background replay with shatter effect
- Vignette & bloom surge during slow-mo for dramatic impact
- Consistent button widths & heights across all menu sections
v0.0.6 — Mar 21, 2026
- Code hygiene refactor: shared utility module for deduplication
- Fixed netcode using hardcoded dt instead of actual frame delta
- Fixed audio gain ignoring user volume setting on init
- Arena audio reactivity now uses real frame delta
v0.0.5 — Mar 21, 2026
- Background replay on victory screen with cycling camera views
- Music controls on pause & victory screens
- Controller support for settings menu & match options
- Quick start options dropdown with gear icon toggle
- Asset preloading on initial load
- B button / back closes dropdowns
v0.0.4 — Mar 21, 2026
- Fixed netcode death sync across multiple rounds
- Fixed matchmaking ghost queue entries
- Wireless controller detection & non-standard input support
- Camera zoom defaults increased, max range extended