Commit Graph

71 Commits

Author SHA1 Message Date
Jesse D. McDonald 8b06a83361 use 11 KiB .mp3 for audio rather than 188 KiB .wav 2020-05-10 11:07:18 -05:00
Jesse D. McDonald a1a9eea758 fix for not notifying on next move after switching game 2020-05-09 13:05:32 -05:00
Jesse D. McDonald 8621724c40 add notifications for games which are not currently visible 2020-05-09 12:54:49 -05:00
Jesse D. McDonald a523c81f88 fix for dragging from phantom square broken (again) 2020-05-09 12:53:45 -05:00
Jesse D. McDonald 21214dd5df factor the code for the status message out of renderBoard() 2020-05-09 11:30:30 -05:00
Jesse D. McDonald 6f6600c6f4 remember the notify and reverse flags for each game separately 2020-05-09 11:29:25 -05:00
Jesse D. McDonald c2dbd6267c add getGameId() and $ (jQuery) to the Admin object 2020-05-09 10:30:46 -05:00
Jesse D. McDonald 5873a97d93 remove piece IDs and unused <img> elements; animate click moves 2020-05-08 22:15:11 -05:00
Jesse D. McDonald b1caa69920 move (de)serialization into the Game class & add rule versioning 2020-05-08 20:40:48 -05:00
Jesse D. McDonald 66b1bb05f6 add easier console access to the pacosako.js module 2020-05-02 18:11:21 -05:00
Jesse D. McDonald 3995968928 redirect to the new URL when loaded from the old URL 2020-05-01 04:09:35 -05:00
Jesse D. McDonald b3ebe91f9c monitor service worker and prompt to update to new version 2020-04-30 19:17:03 -05:00
Jesse D. McDonald f68ec55d60 fix for game ages not updating in selection box 2020-04-30 12:39:55 -05:00
Jesse D. McDonald 838699994a include more detail in the status messages 2020-04-30 04:27:30 -05:00
Jesse D. McDonald 6d4923755e explain why the player is in check using chess notation 2020-04-30 02:46:21 -05:00
Jesse D. McDonald 6e552cfa4e fix missing import of jquery-ui-touch-punch 2020-04-30 00:07:50 -05:00
Jesse D. McDonald 88f2e61928 replace drop-down list with new modal game selection dialog 2020-04-29 23:54:59 -05:00
Jesse D. McDonald 6c4cb52579 minor cleanup in refreshSelectOptions 2020-04-29 02:17:56 -05:00
Jesse D. McDonald d9b6210841 bring back live name updates while typing 2020-04-29 02:00:43 -05:00
Jesse D. McDonald bf301ad79a merge consecutive updates into a single request 2020-04-29 00:27:10 -05:00
Jesse D. McDonald bac6305cb7 submit related updates in series with proper modified times 2020-04-28 23:15:04 -05:00
Jesse D. McDonald 2bfcc822a3 fix for not actually forcing reload when update fails 2020-04-28 14:57:06 -05:00
Jesse D. McDonald 3184831ebb show notice for long-running update requests 2020-04-28 01:00:42 -05:00
Jesse D. McDonald a598e287df convert client over to the new REST API 2020-04-27 20:49:31 -05:00
Jesse D. McDonald 156704f0f3 use a bold font for the move numbers in the history list 2020-04-25 02:12:53 -05:00
Jesse D. McDonald 6c17ea3bf7 put the current player's pieces in front to make dragging easier 2020-04-25 00:14:42 -05:00
Jesse D. McDonald f6fa4ca32d keep earlier moves when unable to replay full game state 2020-04-24 23:36:02 -05:00
Jesse D. McDonald 204d7acddc add the ability to detect checkmate without taking the king 2020-04-24 23:16:21 -05:00
Jesse D. McDonald db5f56735b prevent selection of pieces with no legal moves 2020-04-24 22:08:05 -05:00
Jesse D. McDonald 2171bb00ee block chain moves which are known dead ends 2020-04-24 22:07:16 -05:00
Jesse D. McDonald 612a39e891 fix for inability to drag from the phantom square 2020-04-24 21:36:20 -05:00
Jesse D. McDonald 7e01b0aad0 fix some interactions between click-to-select and drag 2020-04-23 11:48:03 -05:00
Jesse D. McDonald 4e72bd4258 fix for warning when serviceWorker is present without getNotifications 2020-04-17 17:42:23 -05:00
Jesse D. McDonald ada365b76f workaround for Safari, version 2; tested in Midori 2020-04-17 17:41:25 -05:00
Jesse D. McDonald baaff7a8c3 add a workaround for a Safari bug that breaks the board sizing 2020-04-17 16:02:57 -05:00
Jesse D. McDonald f3e2d2c7a4 add a 'badge' icon with link to current page with game ID 2020-04-16 21:30:38 -05:00
Jesse D. McDonald d6ee83a36f add a per-game Jitsi Meet link for voice/video chat 2020-04-16 01:28:46 -05:00
Jesse D. McDonald cc083e4d52 add missing pieces so Chrome sees an installable PWA 2020-04-11 18:12:19 -05:00
Jesse D. McDonald 36d9a8654d remove cb-in-check class when placing pieces 2020-04-05 20:48:36 -05:00
Jesse D. McDonald a7df98a990 fix for prev_turn has no effect when mid-chain 2020-04-05 17:39:47 -05:00
Jesse D. McDonald cba11ec0c8 highlight king when in check 2020-04-05 17:31:42 -05:00
Jesse D. McDonald accbc316ff add an optional in-page notification sound 2020-04-05 17:24:22 -05:00
Jesse D. McDonald fcb14d489c add ability to detect obvious check (chains of 6 moves or less) 2020-04-05 04:42:10 -05:00
Jesse D. McDonald 1a7728e53d fix some quirks with the game select menu 2020-04-04 06:03:13 -05:00
Jesse D. McDonald 7ebea1d1fc restructure data to limit indirect links; breaking change
I found that the game list was wiped out (again) and I suspect that the
issue was that some client pushed an update to the game list before
receiving the current data for the top-level object. That would have
caused it to create new objects for the game and metadata lists
containing only the single newly-created game and store links to them in
the 'games' and 'meta' fields of the top-level object. This data would
not be merged because the new objects have no connection to the original
objects which should have been linked from those fields. The top-level
object would be merged, but only to the extent of updating the links.

To fix this, I moved the 'meta' object to the top level with a fixed
identifier (UUID + '/meta'). This identifier _is_ the object's identity
("soul") so even if a client initializes it with an empty object the new
fields should be merged when syncing resumes. I removed the 'games'
object altogether, since the meta object keeps track of which game IDs
are available. Individual games are assigned "souls" based on their game
IDs (UUID + ('/game/' or '/meta/') + game ID). The resulting structure
looks like:

    'UUID/meta': {
      '12345abcde': <link to 'UUID/meta/12345abcde'>,
      '3a2b5c7e1f': <link to 'UUID/meta/3a2b5c7e1f'>,
      ...
    },
    'UUID/meta/12345abcde': { ... darkName, lightName, moves, etc. ... },
    'UUID/game/12345abcde': { 'board': 'JSON' },
    'UUID/meta/3a2b5c7e1f': { ... darkName, lightName, moves, etc. ... },
    'UUID/game/3a2b5c7e1f': { 'board': 'JSON' },
    ...

Besides being more resilient, this structure should also be more
performant since there are fewer links to traverse to access the game
data. So far in my admittedly limited testing I haven't seen any of the
syncronization issues that plagued the older version.
2020-04-04 05:24:59 -05:00
Jesse D. McDonald 5f9ce09181 fix for syntax error (extension) function statement inside 'if' 2020-04-03 13:37:58 -05:00
Jesse D. McDonald fe711991f5 store initial state as soon as a new game is created 2020-04-02 18:10:08 -05:00
Jesse D. McDonald e1722cf589 fix remaining hard-coded paths & extend cache lifetimes with content hashes 2020-04-02 05:25:49 -05:00
Jesse D. McDonald 2e68c3b7b1 replace submodules with proper NPM dependencies & webpack 2020-04-02 02:51:41 -05:00
Jesse D. McDonald ce7a69a10a filter unwanted fields from received JSON board string 2020-03-30 00:06:19 -05:00