]> git.cworth.org Git - lmno-todo/blob - TODO
nogit-sync commit
[lmno-todo] / TODO
1 Ordered list (repeating some of the below)
2 -----------------------------------------
3
4 1. Fix empathy bug with rejoining (Andrew as Zombie)
5
6 2. Finish implementing Empires
7
8 Empathy
9 =======
10
11 Allow players to see what their current name is (currently
12 disappearining among the list which is sorted by overall score) and to
13 change their name if desired.
14
15 Fix bug Andrew saw where he went into a Zombie mode: He left the game,
16 and came back. When he was back his word scores were shown, but his
17 name was left off the round scores, stayed gray in the overall scores,
18 and the overall score was never increased.
19
20 Bisect and fix some test-suite regressions introduced recently.
21
22 Features (likely) requiring only client changes
23 -----------------------------------------------
24 * Make new categories appear at the top of the list
25
26   Note: We may not want this for sake of keeping the UI stable---this
27   is already a bit of a problem with the "Start Game" button which is
28   now appearing at the top of the list of categories. What I mean by
29   "stability" of the UI is that we don't want a user to be reaching
30   out to tap a vote button for a category and then have the category
31   vote button shift to a different location before they reach it.
32
33 * Make the "vote_against" button move a prompt down to the bottom of
34   the list and gray it out. This could be a better approach than
35   making the category entirely disappear.
36
37 * Un-gray-out a prompt when a player votes for it
38
39 * Make scores available at screens other than the category-selection screen
40
41 Add a TWINNER achievement
42
43 Add support for item counts as words, such as "three little words"
44
45 Allow clients to see previous round scores by swiping left
46
47 Figure out why Nancy's computer doesn't work at all
48
49 Auto-focus first text field
50
51 Style focus highlight for TAB-based navigation
52
53 Empires
54 =======
55
56 Convert HTML/JavaScript client to React
57
58 Add UI for combining/splitting empires, (modeled after the judging
59 interface in Empathy).
60
61 Add a chat interface for sending messages to the current empire (with
62 no history beyond a single message per sender)
63
64 Fix bug that allows people to re-reveal characters after game has started.
65
66 Flempires (flutter-based client)
67 --------------------------------
68
69 Experiment with minimal flutter build environment (only lib/ in git)
70
71 Bring client up to latest Empires API approach
72
73   [X] Pre-allocate a game ID in the server for flempires to use (QRST)
74
75   [ ] Change flempires from using https://families.cworth.org/api to
76       instead use https://lmno.games/empires/QRST
77
78   [ ] Add UI to ask user for a game ID, (obviating the QRST ID)
79
80   [ ] Add UI to generate a new game ID, (allow flempires to work on its own)
81       Example:
82                 curl -X POST https://lmno.games/new/empires
83                 Returns: "WLJG" (or some other game ID)
84
85   [ ] Implement player registration by POSTing to /register (without cookie)
86       Example:
87                 curl -X POST \
88                      -H 'Content-Type: application/json' \
89                      -d '{"name": "Carl", "character": "Elvis"}' \
90                      https://lmno.games/empires/QRST/register
91                 Returns: 1 (or some other player ID)
92
93   [ ] Implement registration with /profile and then /register
94
95       Note: This approach requires obtaining a cookie from the
96       /profile request and then providing that cookie on the
97       subsequent /register request. The -c and -b command-line options
98       of curl can be used to demonstrate this:
99
100       Example:
101                 curl -c cookie-file \
102                      -X PUT \
103                      -H 'Content-Type: application/json' \
104                      -d '{"nickname": "Cookie"}' \
105                      https://lmno.games/profile
106                 curl -b cookie-file \
107                      -X POST \
108                      -H 'Content-Type: application/json' \
109                      -d '{"character": "Cookie Monster"}'
110                      https://lmno.games/empires/QRST/register
111                 Returns: 2 (or some other player ID)
112
113   [ ] Listen to the /events stream for the game
114
115       This will require an asynchronous mechanism that is continually
116       listening for events to come in. Events will be of the form
117       "event: <event_type>" followed by the data of the event "data:
118       <json_data_for_event>" followed by a blank line. There will also
119       be periodic keep-alive non-events sent which are just a line
120       with only a ":".
121
122       This mechanism is called "Server-sent events" so you may find
123       code that supports the parsing of this. Or you may not. It
124       doesn't seem like this mechanism ever became all that popular
125       (before websockets came along and became popular).
126
127       Example:
128
129                 curl https://lmno.games/empires/QRST/events
130                 Returns:
131
132                    event: game-info
133                    data: {"id":"QRST","url":"http://lmno.games/QRST"}
134
135                    event: player-info
136                    data: {"id":5,"active":true,"name":"Cookie","team":""}
137
138                    event: player-enter
139                    data: {"id":2,"active":true,"name":"Web","team":""}
140
141                    event: game-state
142                    data: {"team_to_play":{"name":""}}
143
144                    event: players
145                    data: [{"id":1,"name":"Carl"},{"id":2,"name":"Cookie"}]
146
147                    event: game-phase
148                    data: {"old_phase":"none","new_phase":"join"}
149
150 Scribe
151 ======
152
153 Fix server to reject illegal moves (not following the previous-move
154 constraint)
155
156 Extend test suite to cover legal and illegal scribe moves
157
158 Constrain glyph diagrams to not overflow page width
159
160 For a very wide display, put glyph diagrams on the side of the game
161 board instead of below.
162
163 Detect glyphs and highlight background of squares belonging to glyphs
164
165 Detect winner of mini-grid and overlay sumbol of player on mini-grid
166
167 Declare overall winner (both in "majority" and "superglyph" mode)