A busy few weeks. Here is everything that shipped in May 2026.
Online multiplayer now actually works
The original invite-a-friend mode used PeerJS for peer-to-peer connections. In practice, WebRTC negotiation fails silently through most home routers and mobile networks, so players would sit on a "Connecting…" screen forever.
The whole online layer has been rewritten to route everything through the WebSocket server — the same server that already handled random matchmaking. You create a room, get a 6-character code, share the link, and your friend joins. No timeouts, no NAT problems, no P2P negotiation.
Starting player now alternates
Previously X always went first, which gives a small statistical advantage. Now the starting player flips every new game across all three modes. In online play the server swaps symbols automatically on each rematch, so neither side gets more first moves than the other over a session.
Logo and favicon
The site has a proper identity now. A small tic-tac-toe grid with red X marks and blue O marks appears as both a fixed corner logo on every screen and as the browser tab favicon. The SVG scales cleanly at any size.
Smaller fixes
- Removed the Heroku CLI package that had crept into production dependencies and was causing deployment failures on Linux.
- Added
robots.txtandsitemap.xmlfor search engine indexing. - Added a "How to play" section and FAQ on the home screen.
- Google AdSense integrated — ad slots placed below gameplay areas without interfering with the board.
Play now