Period: October 13, 2025 Total Commits: 15
Hey — here’s what we’ve been working on today. The big things are a proper music system with volume controls, a bunch of mobile UI cleanups (Level Up flow, Bottom Bar, menus), and some server-side fixes so our monitor can actually accept events reliably. Nothing flashy, just making the game feel better and behave consistently.
What’s New
Music + Volume Controls
We added a full in-game music system with proper sequencing and fades. Lobby music plays in the lobby, gameplay uses a race playlist, and win/loss has a short SFX into a matching track. It fades out/in between tracks to avoid harsh cuts.
There’s also a new Settings modal with three sliders:
- Master volume (everything)
- Music volume
- SFX volume
The math is simple: master × category × individual track. Your settings save across sessions.
[screenshot: settings modal with volume controls at 20dd6b9]
Audio Unlock That Just Works
Browsers block autoplay. We now wait for the first tap/click/keypress and then start whatever was queued. No extra prompt, no dead silence if you refresh mid-match. It just catches up when you interact once.
Bottom Bar and Selection Readability
The Bottom Bar got bigger, clearer icons and better selection feedback. Minions show as circles, towers stay square, and the selected state uses a gold background that clips to the icon shape without hiding cost badges. We also show small unit thumbnails next to “Units Selected: x/3” so you can see your comp at a glance.
[screenshot: Bottom Bar with larger icons and clean selection highlight at 6d91706] [screenshot: unit selection status icons in the footer at 417a148]
Level Up Flow on Small Screens
Landscape mobile had some rough edges. We reworked the Level Up modal to be side-by-side: unit grid on the left, details on the right, both stretching to the same height. Text scales down, spacing is tighter, and scrolling is contained so it doesn’t spill off-screen. Visibility and tap targets are better now.
We also bumped the landscape mobile threshold to catch more devices, and we added a simple “please rotate” message on the main menu if you’re in portrait.
[screenshot: Level Up modal, landscape mobile side-by-side layout at 52dd4c9]
Clearer Stats and Castle Info
Unit and castle info is more explicit:
- Labels now show “Level X Tower/Minion”
- Player bonuses display as counts (“2 Player Increases +20%”) instead of hidden math
- Castle entries explain walking distance and pathing more clearly
- You’ll see proper singular/plural for destruction counts
This should reduce the “why is this number like that?” moments when you’re theorycrafting builds.
What Got Fixed
- Music on refresh: Audio wouldn’t start after a reload. Now it queues until you interact once.
- Mobile tap highlights: Removed lingering tap/hover states that made buttons look stuck.
- Level Up layout overflow: Stat rows clipping/overflowing on small landscape screens are fixed; text now ellipsizes and columns hold their shape.
- CSS specificity bugs: Bottom Bar styles were bleeding into the Level Up modal. We scoped and removed heavy-handed overrides.
- Selected-state clarity: Selection highlight no longer hides cost badges; it respects circular/square shapes.
- Main menu UX: Shows a clear rotate prompt in portrait, with a saner landscape layout on small screens.
- Build/link issues: Cleaned up some build errors and fixed the how-to-play link.
- Health checks: Standardized responses for monitoring.
Under the Hood
- Environment loading: Services that create Redis clients now load env vars first, so they point at the right place instead of defaulting to localhost. This unblocks event ingestion in production-like setups.
- Internal event auth: The monitor allows internal network traffic to post events to the right endpoints without tripping auth. That means less dropped telemetry from servers and bots.
- Process management: Cleaned up process manager behavior under root so services don’t get into weird states.
- Audio system details: The music manager supports single-track and playlists, does fade transitions (out, pause, in), and cleans up its listeners properly. Playlist playback speeds from 1x–4x are supported.
This batch is mainly about reliability and readability. If you’re playing on mobile or jumping between matches, you should feel the difference — less UI friction, sound that behaves, and clearer info when making quick decisions.
If you notice odd audio behavior or any layout still breaking on smaller landscape screens, send a screenshot and your device resolution. That helps a lot.