Ordered list (repeating some of the below) ----------------------------------------- 1. Fix empathy bug with rejoining (Andrew as Zombie) 2. Finish implementing Empires Empathy ======= Allow players to see what their current name is (currently disappearining among the list which is sorted by overall score) and to change their name if desired. Fix bug Andrew saw where he went into a Zombie mode: He left the game, and came back. When he was back his word scores were shown, but his name was left off the round scores, stayed gray in the overall scores, and the overall score was never increased. Bisect and fix some test-suite regressions introduced recently. Features (likely) requiring only client changes ----------------------------------------------- * Make new categories appear at the top of the list Note: We may not want this for sake of keeping the UI stable---this is already a bit of a problem with the "Start Game" button which is now appearing at the top of the list of categories. What I mean by "stability" of the UI is that we don't want a user to be reaching out to tap a vote button for a category and then have the category vote button shift to a different location before they reach it. * Make the "vote_against" button move a prompt down to the bottom of the list and gray it out. This could be a better approach than making the category entirely disappear. * Un-gray-out a prompt when a player votes for it * Make scores available at screens other than the category-selection screen Add a TWINNER achievement Add support for item counts as words, such as "three little words" Allow clients to see previous round scores by swiping left Figure out why Nancy's computer doesn't work at all Auto-focus first text field Style focus highlight for TAB-based navigation Empires ======= Convert HTML/JavaScript client to React Add UI for combining/splitting empires, (modeled after the judging interface in Empathy). Add a chat interface for sending messages to the current empire (with no history beyond a single message per sender) Fix bug that allows people to re-reveal characters after game has started. Flempires (flutter-based client) -------------------------------- Bring client up to latest Empires API approach [🗸] Pre-allocate a game ID in the server for flempires to use (QRST) [ ] Change flempires from using https://families.cworth.org/api to instead use https://lmno.games/empires/QRST [ ] Add UI to ask user for a game ID, (obviating the QRST ID) [ ] Add UI to generate a new game ID, (allow flempires to work on its own) Example: curl -X POST https://lmno.games/new/empires Returns: "WLJG" (or some other game ID) [ ] Implement player registration by POSTing to /register (without cookie) Example: curl -X POST \ -H 'Content-Type: application/json' \ -d '{"name": "Carl", "character": "Elvis"}' \ https://lmno.games/empires/QRST/register Returns: 1 (or some other player ID) [ ] Implement registration with /profile and then /register Note: This approach requires obtaining a cookie from the /profile request and then providing that cookie on the subsequent /register request. The -c and -b command-line options of curl can be used to demonstrate this: Example: curl -c cookie-file \ -X PUT \ -H 'Content-Type: application/json' \ -d '{"nickname": "Cookie"}' \ https://lmno.games/profile curl -b cookie-file \ -X POST \ -H 'Content-Type: application/json' \ -d '{"character": "Cookie Monster"}' https://lmno.games/empires/QRST/register Returns: 2 (Or some other player ID value) [ ] Listen to the /events stream for the game This will require an asynchronous mechanism that is continually listening for events to come in. Events will be of the form "event: " followed by the data of the event "data: " followed by a blank line. There will also be periodic keep-alive non-events sent which are just a line with only a ":". This mechanism is called "Server-sent events" so you may find code that supports the parsing of this. Or you may not. It doesn't seem like this mechanism ever became all that popular (before websockets came along and became popular). Example: curl https://lmno.games/empires/QRST/events Returns: event: game-info data: {"id":"QRST","url":"http://lmno.games/QRST"} event: player-info data: {"id":5,"active":true,"name":"Cookie","team":""} event: player-enter data: {"id":2,"active":true,"name":"Web","team":""} event: game-state data: {"team_to_play":{"name":""}} event: players data: [{"id":1,"name":"Carl"},{"id":2,"name":"Cookie"}] event: game-phase data: {"old_phase":"none","new_phase":"join"} Scribe ====== Fix server to reject illegal moves (not following the previous-move constraint) Extend test suite to cover legal and illegal scribe moves Constrain glyph diagrams to not overflow page width For a very wide display, put glyph diagrams on the side of the game board instead of below. Detect glyphs and highlight background of squares belonging to glyphs Detect winner of mini-grid and overlay sumbol of player on mini-grid Declare overall winner (both in "majority" and "superglyph" mode)