Jesse D. McDonald
66b1bb05f6
add easier console access to the pacosako.js module
2020-05-02 18:11:21 -05:00
Jesse D. McDonald
d36b12ddfa
put the default API path under the current directory
2020-05-02 18:10:35 -05:00
Jesse D. McDonald
0fc3787432
support running as a standalone server for development
2020-05-02 16:08:54 -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
c2f8762d9f
update for new AWS cloud server
2020-05-01 04:07:22 -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
455e486075
always use polling API for games to avoid 404s when game doesn't exist yet
2020-04-29 00:31:36 -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
63d02e8ad4
remove the client-side link between game data and metadata
2020-04-28 23:12:50 -05:00
Jesse D. McDonald
82248ccbaf
add interfaces to retrieve cached data without a new request
2020-04-28 23:12:10 -05:00
Jesse D. McDonald
3f173d70a2
add an interface to monitor the states of the polling connections
2020-04-28 19:26:24 -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
a8ab0b9a72
fix incorrect function called on retry
2020-04-28 00:58:38 -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
fc73c872ed
fix for broken cycle detection in isInCheck function
2020-04-18 16:05:50 -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
7c04b9ba09
performance improvements for determination of check
2020-04-05 17:25:06 -05:00
Jesse D. McDonald
accbc316ff
add an optional in-page notification sound
2020-04-05 17:24:22 -05:00
Jesse D. McDonald
e28ea59095
block castling out of check
2020-04-05 05:24:26 -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
b228f1f626
switch scanPath and legalMoves to return generators instead of arrays
2020-04-04 03:10:42 -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