Current goal:
- design flow chart
- generate random snapshotfile
- read snapshot file
- in dev mode, read from snapshot on startup on the server
- build testing websocket client app
- broadcast updates
- fix snapshot size bug
- what should size be? (4bytes sequence num) math.ceil((boardcount _ 9) / 8) _ 2 = 1,195,748 bytes
- is server or client setting wrong size? server
- store moves with sequence number
- 🐞 after a long time x's start to overwrite Os, no clue why.
- SOLVED: when loading the snapshot we were loading the Os in to the X bitset, thus flushing the buffer to disk wrote them back into the X's byte range. It was intermittent because if we didnt have a snapshot we'd never call loadSnapshot.
- fetch delta
- 🐞 fetching delta not working fast enough on page refresh
- SOLVED: just needed to trigger a rerender
- show "disconnected" message and button to reconnect (refetch latest snapshot and resync)
- set team cookie
- make move from the client
- check win
- don't let user click on boards that are won
- don't let user click or submit for entire sections that are won
- recursively check win & update state on the server
- test this
- define level specific updates for protocol
- level selector
- make levels show proper state
- make non max level board not trigger a move
- check for stalemate
- clear boards recursively on stalemate
- validate on server that users can only make moves on the highest level (6)
- empty cells in won boards should be greyed out
- cell tint color (i level < max_level) should be determined by number of number of wins in that section in higher levels
- jump to correct board grid when clicking on higher level cell & highlight correct board
- rerender screen when a board resets
- stalemates cause scroll to update
- team indicator
- 🐞 clients aren't recieving messages that were sent just before connecting
- test if this has been fixed
- 🐞 higher level grids aren't aligned
- need to assign boardIds based on the alignment
- 🐞 memory on client continues to grow...
- looks like it was cause by memory leak in react dev tools????
- reverse levels & make playable level the default
- only show tint on level 1 for users own team
- make level picker mobile friendly
- board search
POLISH 🇵🇱
- pick more playful font
- resize & center level 0 & 1 boards
- dim all unplayable boards
For launch
- write a "how to play" info icon
- track player stats (cells played, wins triggered)
- snapshot + syncing loading state
- rate limitter
- make live canvas of game state