summaryrefslogtreecommitdiff
path: root/server.js
AgeCommit message (Collapse)Author
2023-12-05Don't show completely empty games in replacement list.Tor Andersson
2023-11-30Flag 1-player games as private when started.Tor Andersson
2023-11-30Log IP access.Tor Andersson
2023-11-30Hide public games from blacklisted users.Tor Andersson
2023-11-30Allow first player choosing rematch to select player role assignment.Tor Andersson
Pick one of swap, keep, or random. In case of mid-air collision, player who chose first gets to decide.
2023-10-21Add color themes.Tor Andersson
2023-10-07Shuffle or shift player roles for rematches.Tor Andersson
For asymmetric games, shift the roles one step so everyone gets a new role. For symmetric games, shuffle the color assignments so the player order is mixed up.
2023-10-05Revert "Add match making."Tor Andersson
This reverts commit b5a31813aa284b8b64bfd2660ea3a048275cee89.
2023-10-05Add match making.Tor Andersson
2023-10-05Add game "setups" for automated match making and tournaments.Tor Andersson
2023-10-05Change some URLs to be more consistent.Tor Andersson
2023-10-05Avoid "natural" joins for future proofing schema changes.Tor Andersson
2023-09-20Add pace property to games.Tor Andersson
Currently unenforced and only visual effect in game listings.- Future time control and user penalty features may make use of it.
2023-09-20Move mtime and active into games table.Tor Andersson
Avoid joining with game_state for all the game list views.
2023-09-20Batch game state related database updates into transactions.Tor Andersson
Only update game 'mtime' when the active player changes.
2023-09-18Tweak title globals.Tor Andersson
2023-09-18Optimize game options parsing and formatting.Tor Andersson
Sort player names in game boxes by role order.
2023-09-18Don't show "ready to start" games on public game list.Tor Andersson
2023-09-18Enforce limits on how many games you can create and join.Tor Andersson
Also limit joining more games if you have too many games waiting. Generous default limits: 7 open, 29 active, and 3 waiting.
2023-09-15Fix crash when updating unread chats if anonymous observers are present.Tor Andersson
2023-09-15Improve sync error handling.Tor Andersson
1) Show warning during one second then resume game. 2) Don't update cookie during simultaneous turns. When playing SoT live, discarding cards at the same time leads to many harmless in-flight action collision errors, which don't really matter. If we stop updating the cookie during simultaneous turns, we can avoid this.
2023-09-13Calculate Elo ratings.Tor Andersson
Primarily for use with future matchmaking system to provide better games for everyone. Show top 5 players of each game on the game pages.
2023-09-13Set player_count in database for faster and easier logic.Tor Andersson
Track ready to start and unjoined games in "active" header.
2023-09-13Don't show private open games on user page.Tor Andersson
2023-09-13Add mail verification.Tor Andersson
2023-09-13Don't return unused replay_id from put_replay.Tor Andersson
2023-09-12Notification system improvements.Tor Andersson
Enable webhook notification support with .env WEBHOOKS=1 Send notifications when invited to a game. Use notification "too soon" logic for webhooks as well. Try sending webhooks 3 times before giving up. Check if player is on the join page instead of the funky "offline" check when sending "your game is ready" notification. Only show mail/webhook notification settings if they are enabled.
2023-08-12Use synchronization cookie to prevent action de-sync errors.Tor Andersson
2023-08-11Remove backup dance.Tor Andersson
Use VACUUM INTO 'backup.db' instead.
2023-08-10Fix rematch button.Tor Andersson
2023-07-13Handle websocket errors.Tor Andersson
2023-07-13Add "xtime" column for games to record finish date when state is missing.Tor Andersson
2023-07-13Use sequential per-game chat ids.Tor Andersson
2023-07-13Use status constants.Tor Andersson
2023-07-01Add "snapshot" replay view during play.Tor Andersson
Snapshots store game state without undo and only log length. Combined with the final game state's log we can recreate the view from any snapshot quickly. Move replay code into separate script file, loaded only when used. Prefix system "setup", "resign", and "restore" actions with a period.
2023-06-25Parse strings as GMT for "human_date" formatting.Tor Andersson
2023-06-16Update user last seen when connecting to websocket.Tor Andersson
2023-06-05Remove stale stuff.Tor Andersson
2023-05-23Improve replay id handling.Tor Andersson
Use a without rowid table and create the replay_id dynamically. This saves a lot of database space and performance as it removes the need for a separate index.
2023-05-08Format 1-player option.Tor Andersson
2023-05-05Trigger backup from main database process.Tor Andersson
Sqlite backups from the same database connection are much more efficient! Externally triggered backups restart every time the database changes during a backup, or need to lock the database exclusively for a long time. We periodically look for a "backup.request" file, and if it exists will write a backup. We write to "backup.tmp" first, and when finished rename the file to "backup.db". A crontab job can touch the "backup.request" file and then wait for the "backup.db" file to appear.
2023-04-28Parse game options before passing to "roles" callback.Tor Andersson
2023-04-28Rename game "description" to "notice".Tor Andersson
2023-04-28Don't crash if event streams are still listening when deleting a game.Tor Andersson
2023-04-18Rename "game_over" to "game_finished" in server.Tor Andersson
2023-04-18Fix ESLint issues.Tor Andersson
2023-04-18Some cleanups.Tor Andersson
Clean up stats page. Remove user list page. Remove duplicate remove contact page. Fix silly bug. oops!
2023-04-18Make date and time handling usable with both julianday and datetime.Tor Andersson
Use datetime instead of julianday when not performance sensitive. Keep julianday for logins.
2023-04-18Remove chat log pages.Tor Andersson
The unread chat badge in the game lists should be enough.
2023-04-18Generate JSON for replay view in SQL.Tor Andersson
Also optimize the format by not JSON encoding some data twice.