Improving the main pages lobby layout (implements #55, addresses #53)
Project History
Changelog
Generated from 261 commits in git history on 27 Mar 2026, 13:08. 1 breaking change flagged.
2026-03-27
Friday, 27 March 2026
Emphasizing more on the players rather then the session id in the public lobby list
Properly generating meta tags for private sessions
Keep private lobbies private and only show them once ingame
Properly cutting off public match history at 500 and not 100
Keep date time format the same between ssr and hydration and then use local formatting
Re-match sometimes failing
Do not fetch account preferences when logged out
Several minor front end build errors
Moved the ?join=<sessionId> handing to the server
Updated the sitemap.xml
Applied tailwind shorthand suggestions
Do inject page metadata directly in the routes instead of patching the HTML via regex
Using the same query logic for the API and the SSR
Disabled query retries on failures
2026-03-26
Thursday, 26 March 2026
Instantly removing empty lobbies if a client had been connected previously
Only emitting partial lobby updates to greatly decrease bandwidth usage
Adding a rules page to explain the games rules
While in-game do regular connection testing and add an indicator on an unstable connection
Instantly connect to the server and do not wait for the first render
Adding 'playing live' and most recent 10 games to the profile screen
Added a zen mode to hide ELO and ELO adjustments in game (implements #46)
Allowing for shift + left click to draw on the game board (implements #45)
Range of aspect rations on landing page causes lobby card spill (fixed #51)
Invalid re-hydration issues and improper SSR query data values
Properly showing max ELO per bucket in ELO rating graph rather then match end ELO results
Hide ELO adjustments for spectators in the ingame HUD
Tile piece symbols not shown in sandbox (fixes #42)
Sharp spike/cutoff to current ELO for the ELO chart in the profile page
Do not allow username overrides
Do not highlight admin controls when visiting the admin stats page
2026-03-25
Wednesday, 25 March 2026
Adding support for bots in sandbox mode
Reverting COPY --partents change as the GitHub docker version seems outdated
New users ELO not starting at 1000
Adding a README.MD for the seal bot engine
Write a database migration to fix the ELO for new users
2026-03-24
Tuesday, 24 March 2026
Displaying the ELO on ranked games
Displaying the ELO gain / loss for ranked games
Link the player profiles in the game hud player list
Allowing spectators to join finished sessions as well as long a player is still connected
Adding a player disconnected icon in the player list
Displaying if the game is rated and the time control in the game info screen
Several small UI improvements making the UI more responsive
Keeping the chatbox open accross re-matches
Using tailwind 4.2 and fix automatic class generation
Only allow for local game lines within the board
Linking the player profiles in the replay viewer
Adding an ELO graph on the profile page
Allowing keyboard move navigation in the replay viewer
Add a game start, win and loose sound
General match history not showing properly when logged in
Elo changes not stored in game history
Properly removing players on socket disconnect instead of marking them as disconnected
Name prefixing guests again
Properly map chat messages on rematch
Ranked matches not counting towards ELO
Improved network footprint for cell placements
Improved network footprint for player / spectator joins and leaves
Proper session route handling and improved live game client handling (removed AI slop)
Improved network footprint for lobby updates
Improved network footprint for chat messages
Do not log the whole board state every time on game finish
Limiting the history API to 500 games
Updated the tests and made the lobby create backdrop work
Calculate the ELO ranking adjustment at the beginning of the game and some code cleanup
Cleaned up debug logging
2026-03-23
Monday, 23 March 2026
Blocking joining own casual lobbies by default
Adding memeber since and last seen to the profile page
Highligh the winning cells in a position (implements #5)
Adding chats to the game (implements #37)
Allowing highlighing individual cells and enforce straight lines (#41)
Fixed lobby screen resizing when matches change
Adding front end UI tests for some main components
Improved script bundling to improve page load times
Adding public player profiles
Adding some more profile statistics
Introducing proper migration management
Adding an active game history and user count to the admin statistics
Adding HTML meta tags for sandbox URLs
Allowing finished game positions to be analyzed in the sandbox
Adding position import and export for sandbox mode
Adding an 'undo move' button to sandbox mode
Adding a welcome modal to sandbox mode
Add a sandbox mode for local play where you control both players
Adjusted the turn and match based time control scopes
Prevent gameplay after a winning position in sandbox mode (fixes #43)
Overflowing buttons for mobile devices
Sandbox incorrectly rejecting finished games
Inproperly reading account preferences
Tile piece markers setting not being applied to the replay viewer (fixed #40)
Properly fetching all commits to generate a proper changelog
Dockerfile builds
Pulled out all utility functions and grouped them together
Collected all API queries / updates at one point
Improved shutdown logic and removed obsolete terminal handler
Improved backend session manager logic
Adding pino-pretty to the docker container
2026-03-22
Sunday, 22 March 2026
Highlight breaking changes in changelog and sort changelog by kind
Enforcing conventional commits to aid changelog generation via husky
Added a server wide concurrent game cap to avoid server overload
Automatically placing a hex at 0,0 on game start if enabled via account preferences
Adding a little 'new features' hint within the main landing page screen
Adding a changelog page
Re-adding the 'leaderboard' button for mobile devices on the landing page
Adding support for tile pice markers (implements #10)
Adding account preferences
Improved sign-in button for mobile devices
Do not re-fetch existing sessions and instead rely on the ws events
Do not flicker 'disconnected' badge due to SSR on page visit
Adding a robots.txt and sitemap.xml
Do keep the sessions query accross hydration and only update by the web socket client
Pretty print in prod docker and use logs file to actually inspect log details
Implemented lcoal drawing (#36)
Add SSR
Made the spectator finish screen more readable and indicate which player won and if a rematch is available (implements #32)
Properly show the game type in the review player
Made the match history mobile friendly
Add total time played to the admin statistics site
Cache queries
Add a way for admins to terminate sessions
Adding an error screen on app errors
Adding a version hash at the bottom of the site
Adding statistics on your own profile page
Introducing an ELO system (#25)
Leaderboard names truncation on Firefox (fixes #39)
Exposing GITHUB_SHA to the build docker to be embedded into the app
Text overflow in account profile page
Hide change log notice for new users
Assuming all users have preferences
Removed the silly changelog read timestamp display in account preferences
Visually hide not-yet implemented move conformation preference
Always use the top 10 leaderboard data event for self to keep consistency with the update interval
Store user registration timestamp and last time he has been active
Switching the default lobby time control to match based instead of turn based
2026-03-21
Saturday, 21 March 2026
Using a more advanced UI layout with multiple pages
Indicating wins/looses in own games overview
Implemented #30 (show the time control in the match review)
Implemented #31 (show own place on the leaderboard)
Implemented #27
Making the server the authoritive for highlighted cells while in game
Moved the finished game components into own files which also fixes the game canvas not being updated on resize
Improved and speed up drawing logic
Using cron to schedule server tasks and fix lobbies not getting removed if nobody ever joined the lobby
Client now waits with initiating a join until full initialization to avoid double joining
Enforcing the hex place radius on the server
Misplaced admin back button
Clients getting moved to spectators as they reconnect without the server noticing the disconnect first
Properly describing /session/:sessionId and /?join=:sessionId in URL previews
#28 (do not invalidate react queries when site goes in background)
Typo in 'hexagonal'; oh well...
Do not load the leaderboard in the admin stats page
Logging socket connect/disconnect as debug
Updated the README.MD
Adding a LICENSE
2026-03-20
Friday, 20 March 2026
Reduce lobby information payload and broadcast the lobby info only every second
Force websocket connection and drop polling support
Adding some more options in the admin area
Implemented a simple leaderboard
Adding an admin stats page
Allowing for more zoomed-out board states
Adding an UI hint to login to see own matches
Implemented #22 (add an archive of own games)
Improved record history format
Improved on reconnect handling and session management
Adding the react compiler to minimize re-renders
Substancially reworking the data flow between be and fe
Using react-router for the front-end and improved URL layout
Keep the session id the same on re-match, keeping the original invite link alive
Showing private games once they're playing
Implemented #20 (add a 'surrender' button)
Showing time control in URL previews
Using zod for data verification
Save player profile ids in the game history
Showing player names in the lobby and the in game HUD
Adding accounts and links with Discord
Adding an hrefon review game to allow the games to open in a new tab
Spectator auto following ra-matches
Implemented #21 (indicate the session id ether in the URL or the HUD)
Implemented #19 (in spectator mode, indicate the players turn color in the top HUD)
Implemented #3 (allowing for different time controls)
Adding lobby create options
Inserting proper metadata depending on the routes
Adding a proper style to the default browser scrollbar
Adding different layers of server shutdown
Switch player sides on accepted re-matches
Implemented #9 (add audio / sound)
Also showing running games to spectate
Adding SEO tags
Improved landing screen mobile visibility
Implemented #16 and fixed #15. Make the archive page mobile friendly
Making the HTTP server dir configureable
Adding a status command to the terminal
Implemented #4 (highlight most recent placed tiles)
Properly clear the reconnect timeout after re-connect
Properly applying logging levels
Invalid shrinking on username overflow in ingame HUD
Backend single file build not working due to cjs Discord module
Do not shrink the user avatar
#18 (in spectator mode, the most recently placed tiles are not highlighted)
Overflow on main page on multiple live games
Removed $ texts for players waiting
Docker container serving an invalid directory
#14 (the waiting screen text incorrectly mentions 'five in a row'
#13 (games are not displayed properly when ended by disconnection)
Improve shutdown/restart wording
Disable the edit user name button visually (temporary)
Changed the default game clock to turn based
Graying out the time control
2026-03-19
Thursday, 19 March 2026
Implemented #8 (support for schedule server restarts)
Saving server logs
Adding a proper server shutdown
Implemented #11 (allow for site reloads / socket.io reconnects)
Using 'pino' for backend logging
Properly structure the backend
Using react-query for server queries
Using Zustand for the front end state holding (vibe-coded)
Adding the GitHub link in the footer
Explicitly use @inject everywhere as vite does not emit decorater metadata
Eqal handling of player join / player leave event handling
Let the gateway map sockets to participants instead of re-using the socket id
Building the devel branch as well
Adjusted some logging levels
Remove 'service' entry from logger
Moving the server config into its own class
2026-03-18
Wednesday, 18 March 2026
Adding a game review button at the end of a match
Adding a rematch system
Adding a history for past games
Adding a spectator mode for already started games
Removed loosing screen clutter
Updated to six in a row and not five
Split up the game screen component a little bit
2026-03-17
Tuesday, 17 March 2026
Adding a GitHub workflow
Adding a docker build
Adding metrics to the server
Improved mobile layout
Adding support for mobile devices
Adding win condition so the game is actually playable (vibe-coded)
Only show disconnected from server indicator (vibe-coded)
Reporting errors via toasts (vibe-coded)
Overlaying win/loose screen (vibe-coded)
Adding a turn timeout (vibe-coded)
Improved game HUD (vibe-coded)
Starting with an initial one turn move
Adding a turn system (vibe-coded)
Improved game HUD (vibe-coded)
Vibe-coded a hexagonial board
Improved visual styling for lobby & waiting screen
Vibe-coded a 2d board state
Vibe-coded a simple lobby system
Vibe-coded the initial setup
Do not use the same player color
Proper move timeout
Tiles place on mobile while resizing
Reverting the move time
Proper container naming
Some minor fixes and general improvements
Performance issues when dragging the board (vibe-coded)
Updated the README.MD
Making the mobile hud closeable
Some minor UI changes
Adding a copyright (vibe-coded)