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

15 changes
Featurece6b9dc

Improving the main pages lobby layout (implements #55, addresses #53)

Feature5699720

Emphasizing more on the players rather then the session id in the public lobby list

Fixe6f4efc

Properly generating meta tags for private sessions

Fix89091a2

Keep private lobbies private and only show them once ingame

Fix567020a

Properly cutting off public match history at 500 and not 100

Fix6fd7a03

Keep date time format the same between ssr and hydration and then use local formatting

Fix4c4b192

Re-match sometimes failing

Fix1e6c2b6

Do not fetch account preferences when logged out

Fix7f94558

Several minor front end build errors

Maintenancea504f26

Moved the ?join=<sessionId> handing to the server

Maintenance9070854

Updated the sitemap.xml

Maintenance27f05d6

Applied tailwind shorthand suggestions

Maintenance5113449

Do inject page metadata directly in the routes instead of patching the HTML via regex

Maintenancef78737e

Using the same query logic for the API and the SSR

Maintenance6b6b77c

Disabled query retries on failures

2026-03-26

Thursday, 26 March 2026

16 changes
Featurec8a38f7

Instantly removing empty lobbies if a client had been connected previously

Feature8b23562

Only emitting partial lobby updates to greatly decrease bandwidth usage

Feature66b484b

Adding a rules page to explain the games rules

Featuref72024b

While in-game do regular connection testing and add an indicator on an unstable connection

Feature1f0c5bb

Instantly connect to the server and do not wait for the first render

Feature4c2ec45

Adding 'playing live' and most recent 10 games to the profile screen

Featureaff580e

Added a zen mode to hide ELO and ELO adjustments in game (implements #46)

Featured2f1766

Allowing for shift + left click to draw on the game board (implements #45)

Fix508b4f0

Range of aspect rations on landing page causes lobby card spill (fixed #51)

Fixeb0d2a1

Invalid re-hydration issues and improper SSR query data values

Fix4a1e9b3

Properly showing max ELO per bucket in ELO rating graph rather then match end ELO results

Fixac0b7af

Hide ELO adjustments for spectators in the ingame HUD

Fix45b4ee8

Tile piece symbols not shown in sandbox (fixes #42)

Fix8df2555

Sharp spike/cutoff to current ELO for the ELO chart in the profile page

Maintenance8f7870c

Do not allow username overrides

Maintenance5a9d384

Do not highlight admin controls when visiting the admin stats page

2026-03-25

Wednesday, 25 March 2026

5 changes
Featureb30ee9f

Adding support for bots in sandbox mode

Fixcic132461

Reverting COPY --partents change as the GitHub docker version seems outdated

Fixdce2440

New users ELO not starting at 1000

Maintenanceb9ce1e0

Adding a README.MD for the seal bot engine

Maintenance1f3f8d3

Write a database migration to fix the ELO for new users

2026-03-24

Tuesday, 24 March 2026

30 changes
Featured4905e9

Displaying the ELO on ranked games

Feature0a3dbe6

Displaying the ELO gain / loss for ranked games

Featurec82e573

Link the player profiles in the game hud player list

Featuree16d14d

Allowing spectators to join finished sessions as well as long a player is still connected

Featureabcd73c

Adding a player disconnected icon in the player list

Featuree809cfe

Displaying if the game is rated and the time control in the game info screen

Featurea04fa3a

Several small UI improvements making the UI more responsive

Feature5e02a08

Keeping the chatbox open accross re-matches

Feature6d3447c

Using tailwind 4.2 and fix automatic class generation

Feature9561b93

Only allow for local game lines within the board

Feature7eddd69

Linking the player profiles in the replay viewer

Feature4cf92af

Adding an ELO graph on the profile page

Feature54e8ca7

Allowing keyboard move navigation in the replay viewer

Featurec161bfb

Add a game start, win and loose sound

Fixd64e85c

General match history not showing properly when logged in

Fix87a1693

Elo changes not stored in game history

Fix40e27d1

Properly removing players on socket disconnect instead of marking them as disconnected

Fixdd14bc7

Name prefixing guests again

Fixbcffd98

Properly map chat messages on rematch

Fix82a80b5

Ranked matches not counting towards ELO

Maintenance1a35598

Improved network footprint for cell placements

Maintenance9bbbcdc

Improved network footprint for player / spectator joins and leaves

Maintenance107aac1

Proper session route handling and improved live game client handling (removed AI slop)

Maintenanced3cf44d

Improved network footprint for lobby updates

Maintenance0e13e34

Improved network footprint for chat messages

Maintenance50c3d84

Do not log the whole board state every time on game finish

Maintenance83e6f1d

Limiting the history API to 500 games

Maintenance8967c00

Updated the tests and made the lobby create backdrop work

Maintenancef25bd86

Calculate the ELO ranking adjustment at the beginning of the game and some code cleanup

Maintenance3db30c9

Cleaned up debug logging

2026-03-23

Monday, 23 March 2026

1 breaking
31 changes
Feature95f654a

Blocking joining own casual lobbies by default

Featureacfba0f

Adding memeber since and last seen to the profile page

Feature3027403

Highligh the winning cells in a position (implements #5)

Featurefed7c93

Adding chats to the game (implements #37)

Feature728f8dd

Allowing highlighing individual cells and enforce straight lines (#41)

Feature0905074

Fixed lobby screen resizing when matches change

Featuref6e80bb

Adding front end UI tests for some main components

Feature5059bf4

Improved script bundling to improve page load times

Featureb94a9be

Adding public player profiles

Featurebf2721f

Adding some more profile statistics

Featurea823568

Introducing proper migration management

Feature08c96bb

Adding an active game history and user count to the admin statistics

Featureef8493f

Adding HTML meta tags for sandbox URLs

Featurefa4d61d

Allowing finished game positions to be analyzed in the sandbox

Featurec5f8830

Adding position import and export for sandbox mode

Feature21530a8

Adding an 'undo move' button to sandbox mode

Featuredc2bba9

Adding a welcome modal to sandbox mode

Featured2d9e43

Add a sandbox mode for local play where you control both players

FeatureBreaking Changeefff214

Adjusted the turn and match based time control scopes

Fix47e3a1e

Prevent gameplay after a winning position in sandbox mode (fixes #43)

Fixuic6a7935

Overflowing buttons for mobile devices

Fix17dd06b

Sandbox incorrectly rejecting finished games

Fix2cd9e4b

Inproperly reading account preferences

Fixacd287e

Tile piece markers setting not being applied to the replay viewer (fixed #40)

Fixci2f21993

Properly fetching all commits to generate a proper changelog

Fix2752e68

Dockerfile builds

Maintenance5f8e3a9

Pulled out all utility functions and grouped them together

Maintenancef9c1357

Collected all API queries / updates at one point

Maintenanceserverb505148

Improved shutdown logic and removed obsolete terminal handler

Maintenance01c93e6

Improved backend session manager logic

Otherbc234a8

Adding pino-pretty to the docker container

2026-03-22

Sunday, 22 March 2026

37 changes
Featurec1d9ee6

Highlight breaking changes in changelog and sort changelog by kind

Featured0312bb

Enforcing conventional commits to aid changelog generation via husky

Feature44fc013

Added a server wide concurrent game cap to avoid server overload

Feature5ba5097

Automatically placing a hex at 0,0 on game start if enabled via account preferences

Feature556e4b0

Adding a little 'new features' hint within the main landing page screen

Featurefd6c1d2

Adding a changelog page

Feature409a856

Re-adding the 'leaderboard' button for mobile devices on the landing page

Feature56a2217

Adding support for tile pice markers (implements #10)

Featurea38e451

Adding account preferences

Feature413564b

Improved sign-in button for mobile devices

Featurefa50173

Do not re-fetch existing sessions and instead rely on the ws events

Featureb120224

Do not flicker 'disconnected' badge due to SSR on page visit

Feature413ac8a

Adding a robots.txt and sitemap.xml

Feature9c254b2

Do keep the sessions query accross hydration and only update by the web socket client

Featureade09e4

Pretty print in prod docker and use logs file to actually inspect log details

Featurea5c85b2

Implemented lcoal drawing (#36)

Feature54f44b2

Add SSR

Feature2fce252

Made the spectator finish screen more readable and indicate which player won and if a rematch is available (implements #32)

Feature7044c79

Properly show the game type in the review player

Featurea255c04

Made the match history mobile friendly

Featurea644ab0

Add total time played to the admin statistics site

Featuref0c9bb9

Cache queries

Feature7f7cb3c

Add a way for admins to terminate sessions

Featured6bc8f5

Adding an error screen on app errors

Featurea3513a9

Adding a version hash at the bottom of the site

Feature6d12c5c

Adding statistics on your own profile page

Feature020d9a1

Introducing an ELO system (#25)

Fixc6f42fb

Leaderboard names truncation on Firefox (fixes #39)

Fixf04d6c4

Exposing GITHUB_SHA to the build docker to be embedded into the app

Fix5916fb9

Text overflow in account profile page

Maintenance774d2a6

Hide change log notice for new users

Maintenance36be3a8

Assuming all users have preferences

Maintenance805ddd1

Removed the silly changelog read timestamp display in account preferences

Maintenance9205700

Visually hide not-yet implemented move conformation preference

Maintenancec89f886

Always use the top 10 leaderboard data event for self to keep consistency with the update interval

Maintenance7b5f3ad

Store user registration timestamp and last time he has been active

Maintenance18def8f

Switching the default lobby time control to match based instead of turn based

2026-03-21

Saturday, 21 March 2026

20 changes
Featurec3c1165

Using a more advanced UI layout with multiple pages

Featured12f238

Indicating wins/looses in own games overview

Feature32722b0

Implemented #30 (show the time control in the match review)

Featuree9d4aba

Implemented #31 (show own place on the leaderboard)

Feature2bad375

Implemented #27

Feature645b89b

Making the server the authoritive for highlighted cells while in game

Feature55bda41

Moved the finished game components into own files which also fixes the game canvas not being updated on resize

Featuref8997f6

Improved and speed up drawing logic

Feature4c9c014

Using cron to schedule server tasks and fix lobbies not getting removed if nobody ever joined the lobby

Feature7b82187

Client now waits with initiating a join until full initialization to avoid double joining

Featuredd21f9a

Enforcing the hex place radius on the server

Fix319bb8a

Misplaced admin back button

Fix795be69

Clients getting moved to spectators as they reconnect without the server noticing the disconnect first

Fixf122a57

Properly describing /session/:sessionId and /?join=:sessionId in URL previews

Fix439cf39

#28 (do not invalidate react queries when site goes in background)

Fixfc0e6e8

Typo in 'hexagonal'; oh well...

Maintenance20278ea

Do not load the leaderboard in the admin stats page

Maintenance412efcc

Logging socket connect/disconnect as debug

Maintenance28afb4c

Updated the README.MD

Maintenancebd40b1a

Adding a LICENSE

2026-03-20

Friday, 20 March 2026

54 changes
Feature8300b31

Reduce lobby information payload and broadcast the lobby info only every second

Featuread30a37

Force websocket connection and drop polling support

Featured23dbbf

Adding some more options in the admin area

Feature8eb242e

Implemented a simple leaderboard

Feature43c10f7

Adding an admin stats page

Featurea5c8920

Allowing for more zoomed-out board states

Featurefc0356e

Adding an UI hint to login to see own matches

Featured2edf6e

Implemented #22 (add an archive of own games)

Feature0a4e53c

Improved record history format

Featuref599cc4

Improved on reconnect handling and session management

Feature576ef42

Adding the react compiler to minimize re-renders

Feature991ac83

Substancially reworking the data flow between be and fe

Featuree255f2f

Using react-router for the front-end and improved URL layout

Feature2cf933d

Keep the session id the same on re-match, keeping the original invite link alive

Feature5083fb6

Showing private games once they're playing

Feature4f0446a

Implemented #20 (add a 'surrender' button)

Featureb7cf29a

Showing time control in URL previews

Feature67b9fe4

Using zod for data verification

Feature238c0f0

Save player profile ids in the game history

Feature6695055

Showing player names in the lobby and the in game HUD

Featurece4177b

Adding accounts and links with Discord

Feature9d1bdb5

Adding an hrefon review game to allow the games to open in a new tab

Feature695c2db

Spectator auto following ra-matches

Feature8f118ef

Implemented #21 (indicate the session id ether in the URL or the HUD)

Featureea19661

Implemented #19 (in spectator mode, indicate the players turn color in the top HUD)

Featurec802a0c

Implemented #3 (allowing for different time controls)

Featurec2387ca

Adding lobby create options

Feature61d0bd4

Inserting proper metadata depending on the routes

Feature8d14bbc

Adding a proper style to the default browser scrollbar

Featurecf1ea1a

Adding different layers of server shutdown

Feature16ee21a

Switch player sides on accepted re-matches

Feature745120b

Implemented #9 (add audio / sound)

Featurefa59210

Also showing running games to spectate

Feature1fbecc0

Adding SEO tags

Featuree771a0a

Improved landing screen mobile visibility

Feature9df33c7

Implemented #16 and fixed #15. Make the archive page mobile friendly

Featureb439970

Making the HTTP server dir configureable

Feature010b38a

Adding a status command to the terminal

Feature68470cd

Implemented #4 (highlight most recent placed tiles)

Fix7c434aa

Properly clear the reconnect timeout after re-connect

Fix40f5e31

Properly applying logging levels

Fix5c1fdd5

Invalid shrinking on username overflow in ingame HUD

Fix1c2c84f

Backend single file build not working due to cjs Discord module

Fixc4e9930

Do not shrink the user avatar

Fix9983b64

#18 (in spectator mode, the most recently placed tiles are not highlighted)

Fix717dde0

Overflow on main page on multiple live games

Fix859ba13

Removed $ texts for players waiting

Fix56c03a8

Docker container serving an invalid directory

Fix0db2b3e

#14 (the waiting screen text incorrectly mentions 'five in a row'

Fixb7b8b55

#13 (games are not displayed properly when ended by disconnection)

Maintenancece74c93

Improve shutdown/restart wording

Maintenance76b03e9

Disable the edit user name button visually (temporary)

Maintenance3e9ae86

Changed the default game clock to turn based

Maintenancec177877

Graying out the time control

2026-03-19

Thursday, 19 March 2026

16 changes
Featurec0b490f

Implemented #8 (support for schedule server restarts)

Feature8b9b4bf

Saving server logs

Feature4969f6d

Adding a proper server shutdown

Feature64301fe

Implemented #11 (allow for site reloads / socket.io reconnects)

Feature4957e9e

Using 'pino' for backend logging

Featurebc88456

Properly structure the backend

Featuredd4983d

Using react-query for server queries

Feature0194205

Using Zustand for the front end state holding (vibe-coded)

Feature83213ed

Adding the GitHub link in the footer

Fix332a4a9

Explicitly use @inject everywhere as vite does not emit decorater metadata

Maintenance71c307f

Eqal handling of player join / player leave event handling

Maintenance6823bc5

Let the gateway map sockets to participants instead of re-using the socket id

Maintenance025d643

Building the devel branch as well

Maintenance42c7bb3

Adjusted some logging levels

Maintenanceaaa582e

Remove 'service' entry from logger

Maintenanceed76bd7

Moving the server config into its own class

2026-03-18

Wednesday, 18 March 2026

7 changes
Featured72db5e

Adding a game review button at the end of a match

Feature84bca1a

Adding a rematch system

Featuref20e0f2

Adding a history for past games

Feature10302a2

Adding a spectator mode for already started games

Fix146614d

Removed loosing screen clutter

Fixee59524

Updated to six in a row and not five

Maintenance93e74c0

Split up the game screen component a little bit

2026-03-17

Tuesday, 17 March 2026

30 changes
Feature1e8046c

Adding a GitHub workflow

Feature1069265

Adding a docker build

Feature92605c2

Adding metrics to the server

Featurec8bb18e

Improved mobile layout

Featured5e6683

Adding support for mobile devices

Featurecd74de0

Adding win condition so the game is actually playable (vibe-coded)

Feature7e5d8b4

Only show disconnected from server indicator (vibe-coded)

Feature6c21c0b

Reporting errors via toasts (vibe-coded)

Feature1e608f6

Overlaying win/loose screen (vibe-coded)

Featureeb861e4

Adding a turn timeout (vibe-coded)

Feature6420ce2

Improved game HUD (vibe-coded)

Featurec96e069

Starting with an initial one turn move

Featuredd7358b

Adding a turn system (vibe-coded)

Featurec6df133

Improved game HUD (vibe-coded)

Featurea77217d

Vibe-coded a hexagonial board

Feature0cace53

Improved visual styling for lobby & waiting screen

Feature2e4ab2c

Vibe-coded a 2d board state

Feature9199858

Vibe-coded a simple lobby system

Featuredb983c8

Vibe-coded the initial setup

Fix9131cad

Do not use the same player color

Fix22151bc

Proper move timeout

Fix7a3591b

Tiles place on mobile while resizing

Fixf8cd9b7

Reverting the move time

Fixbcabdde

Proper container naming

Fix7b6c1c8

Some minor fixes and general improvements

Fix6706c62

Performance issues when dragging the board (vibe-coded)

Maintenance340b1ec

Updated the README.MD

Maintenance266c17f

Making the mobile hud closeable

Maintenance81356e6

Some minor UI changes

Maintenance3fcdefc

Adding a copyright (vibe-coded)