chiark / gitweb /
CHANGELOG: Documentation of changes, formatting etc.
[otter.git] / CHANGELOG.md
1 Version 0.8.0 - UNRELEASED
2 ==========================
3
4 Bugfixes
5 --------
6
7  * Complete overhaul of Z coordinate (stacking order) handling, including
8    reworked Z lowering algorithm (`b` key function).  Changes and
9    consequences include:
10     - On page load, use player's view of the Z coordinate for sort order (Z
11       display order) of occulted pieces, not actual Z (!)  resulting in
12       incoherent client state and arbitrary behaviours eg:
13     - Now we no longer ever raise a piece when user asks to lower (!!)
14     - Occulters (hands and decks) more uniformly try to be low down.
15     - e.g. user will no longer accidentally put card under their hand (!!)
16     - Do not derange relative ordering of multiple lowered pieces.
17     - Fix a Rust panic in Z coordinate handling which might occur in some
18       attempts to lower pieces.
19     - When the user asks to raise but nothing can be raised, log a message.
20
21  * Substantial overhaul of error handling for problems detected when
22    processing client API requests:
23     - It should no longer be possible for the user to cause JS exceptions or
24       other lossage merely by asking to do things which it happens that the
25       server (unbeknownst to user or client script.ts) won't permit.  Report
26       these errors in the user-facing client log window, instead.
27     - New discussion of inapplicable-api-op etc. error handling in
28       `PROTOCOL.md`, and implementation of the new scheme.
29     - Principled client decisions about what to show the user - which
30       things are errors, which things are to be rported as conflicts, and
31        generally what to put in the user-facing message log.
32
33  * Do not re-raise things during drag if the user explicitly lowered
34    them with `l` (since the user grasped them).
35
36  * Fix JS exception if user selected multiple pieces which used the same key
37    for different purposes.  (Even transiently, for example by selecting
38    multiple hand repositories and claiming them all - you'd briefly have `C`
39    for claim for some, and `C` for unclaim for others.)
40
41 New features
42 ------------
43
44  * New general `t` keystroke to bring a piece to the top of the
45    stackin gorder.
46
47  * Player hands now show the count of contained pieces.
48
49  * New loosely synchronised approach to "regrab", to enable a player
50    to release a piece (eg, a card they have just drawn) and
51    immediately, asynchronously, regrab it, while the server is sending
52    an update (eg resulting from an occultation status change).  I.e.:
53      - You can now draw a card into your hand in Mao and immediately regrasp
54        it, planning to decide whether to play it - and you can do the regrasp
55        without waiting for the server to show you the card.  Your regrasp and
56        the server update run concurrently.
57
58 Other user-facing changes
59 -------------------------
60
61  * `vatikan` game spec: Make the two hand repositoriess at the bottom bigger.
62  * Deck card count uses a monospaced font.
63
64 Internal and development/test changes
65 --------------------------------
66
67  * Demo game: Add a label to the test hand.
68  * Dependencies on tera templating engine slightly rationalised.
69  * New jstest facility for running for-browser JS in a nodejs
70    environment with some cheesy mockups.  (New `otter-nodejs-tests`
71    crate; involves running `wasm-bindgen` twice.)
72  * Test Z lowering algorithm with new test facility.
73  * Maekfile: avoid rebuilding the otter cli over and over again,
74    by touching it when we rebuild it.
75  * Webdriver tests: pass window size arguments to firefox so we
76    get a window big enough for the provided game specs.  Involves
77    wrapper script for `firefox`.  Also Xvfb server screen size.
78  * Test handling of UI actions which server decides (unpredictably
79    from client POV) cannot be performed.
80  * Fix some bogus links in internal docs.
81  * Add some internal documentation for the zcoord module.
82  * Improve defensive programming in the zcoord module.
83  * Add more tests of the zcoord module.
84  * Tidy up some leftover comments etc.
85  * Webdriver tests: check that there were no JS exceptions.
86  * Improved debug output in various places (when enabled or in tests).
87  * Add in-browser testing of inapplicable-api-op error handling.
88  * Typo and formatting fixes in `PROTOCOL.md`.
89  * Abolish the incoherent `OnlineError` error type and replace it
90    with `Inapplicable` and `Fatal`.
91  * New "loose" update (api op) concept to support new regrab feature.
92  * Test new regrab feature, and adjust tests to cope with regrab
93    feature's somewhat different reporting of simultaneous-drag-attempts.
94  * Promote some debugging support to otter-base.
95  * Fixes to `cargo doc` build.
96  * Abolish old incoherent and ununused `conflict_expected` in client JS.
97  * Tests do a consistency check of the Z coordinates vs the in-SVG
98    subelement stacking order.
99
100 Version 0.7.1 - 2021-06-09
101 ==========================
102
103 Bugfixes
104 --------
105
106  * `make shapelib` builds, and reports a URL for, the actual
107    documentation for shape library layout and spec syntax, not to an
108    obsolete location.
109
110 Installation and deployment changes
111 -----------------------------------
112
113  * Better documentation of how to install just the command line
114    game management client (eg for use via ssh).
115
116  * Update Rocket dependency in Cargo.lock to one which builds with
117    recent Nightly Rust.
118
119  * Update usvg dependency in Cargo.toml to a version with revised
120    less-insane command line parsing, and adjust all calls to it.
121
122  * Updated other dependencies.
123
124  * Work around a cargo bug which breaks the docs build:
125     https://github.com/rust-lang/cargo/issues/9564
126
127 Installation and deployment changes
128 -----------------------------------
129
130  * Improvements to release checklist and release script.  Notably,
131    add a checklist item for checking the build on recent Nightly.
132
133
134 Version 0.7.0 - 2021-06-08
135 ==========================
136
137 New features
138 ------------
139
140  * Game spec files can now be processed with Tera for templating.
141
142  * ssh-based access for `otter` cli, including appropriately-
143    restricted access via authorized_keys in the server role account,
144    and a mechanism for self-service public key management.
145
146  * `otter` cli can now read a preferences file
147    (`~/.config/otter/prefs.toml` by default) to allow pre-configuring
148    commonly-required command line options like `--game` and `--ssh`.
149    See `otter --help` for documentation.
150
151  * Mao and Penultima slightly updated (and, those game specs now
152    use the new templating feature).
153
154 Bugfixes
155 --------
156
157  * UI: When multiple pieces are selected and are to be raised (whether
158    by explicit request, or because of drag distance), their relative
159    ordering is preserved.  So dragging a group of pieces no longer
160    scrambles their z order.
161
162  * UI: When the SSE connection auto-reconnects, do not declare it an
163    error and suggest to the user that reloading might help.  Instead,
164    simply hope that it is going to be OK (since it generally is).  If
165    the SSE connection declares failure (state 2), report a scarier
166    message.
167
168  * Docs: Fixes to some documentation errors (including a fix
169    contributed by Simon Tatham).
170
171  * CLI etc.: Improve a number of error messages; in particular,
172    replace several "debug prints" of error messages with proper
173    formatting, and print a better program kname.
174
175  * CLI: Much better handling of stdout write errors.
176
177 Installation and deployment changes
178 -----------------------------------
179
180  * The `otter` command line utility is now in its own Rust package
181    `otter-cli`.
182
183  * Better logging by server of events on command connections.
184
185 Internal and development changes
186 --------------------------------
187
188  * make-release now polls crates.io's github view to work around
189    cargo/crates.io bug https://github.com/rust-lang/cargo/issues/9507
190    and has a release checklist in it.
191
192  * Some internal renamings for clarity, especially regarding
193    Authorisation proof tokens.
194
195  * Reworked the types involved in management command channels, to
196    use a different stacking of read/write adapters.  In particular,
197    a new `childio` facility for handling conversations with a child
198    process (in support of using `ssh` as a command conn transport).
199
200  * `otter` cli no longer uses println!.  Instead we have a special
201    wrapper for stdout which handles the errors and buffering for us.
202
203  * `otter` cli subcommand dispatch made nicer and the program's code
204    broken out into multiple files.
205
206  * Internal apitest case code restructured somewhat.
207
208
209 Version 0.6.0 - 2021-05-23
210 ==========================
211
212 New features
213 ------------
214
215  * Support uploading bundles of game materials, so games can be played
216    that are not playable with Otter's provided piece libraries.
217
218  * New `vatikan.game.toml`, suitable for many variants of
219    Manipulation Rummy.
220
221  * New `private.table.toml` and `same-scope.table.toml` for
222    less-public games.
223
224 Command line usage changes, etc.
225 --------------------------------
226
227  * otter(1) now takes the game name using a `--game` (`-g`) global
228    option rather than a per-subcommand positional argument.
229
230  * Library listing, piece identification, and so on, changed,
231    including changes to `otter library-add` and `otter library-list`.
232    Specifically, per-game libraries mean that `library-list` now
233    needs the `--game` option.
234
235  * otter(1) and otterlib(!) now honour `OTTER_CLI_LOG`
236    (in Rust env_logger format).
237
238  * otter(1) no longer acts on change_directory server config
239    setting (but still resolves paths in config relative to that dir).
240
241  * Much better reporting of errors, especially from otter(1).
242    Previously even straightforward errors would result in a controlled
243    `panic`; now a prettier message is printed.
244
245  * Default table size is now 300,200 (like `penultima` and `mao`; was
246    400,200).
247
248   * otter(1) can be used to issue adhoc management commands supplied
249     on the command line in JSON or RON format.
250
251 Bugfixes
252 --------
253
254  * Fix a serious bug with acl handling which might allow players who
255    can access a game more access than intended.
256
257  * Occult ilks are properly sorted out during piece load and game
258    save/load.  Previously a game with occulted pieces might not be
259    reloadable.
260
261  * Test suite might previously fail with EBADF due to off-by-one error
262    in fd cleanup routiine.
263
264 Documentation
265 -------------
266
267  * Document uploadable bundle format.
268
269 n * Document game and piece spec format.
270
271  * Document shape library catalogue format (previously this was done
272    with rustdoc annotations on Rust structs used with serde, which
273    produced incomplete and very hard to understand information).
274  
275  * De-emphasize docs for for amending the builtin shape libraries;
276    suggest making bundles instead.
277
278  * Examples, of game specs, shape libs, buncdles.
279
280 Installation and deployment changes
281 -----------------------------------
282
283  * usvg is now built shipped by the otter build system.
284
285  * server-config.toml can specify the path to `usvg`, `libexec`,
286    etc.
287
288 Compatibility notes
289 -------------------
290
291  * The otter(1) command line interface has changed and many common
292    operations need to be specified differently.
293
294  * The management API protocol has completely changed.  Old otter(1)
295    clients will not work.
296
297  * Savefiles from older versions of Otter are not loadable.
298
299 Internal and development changes
300 --------------------------------
301
302  * Change CLI to server management wire protocol to binary-framed
303    MessagePack (was newline-framed JSON).
304
305  * Update dependencies.
306
307  * Build system and test suite improvements and fixes.
308
309  * Move game spec parsing from client to server.
310
311  * Better error messages, especially from otter(1)
312
313  * Tests have better error reporting and output capturing.
314
315  * Various substantial refactorings to tests.
316
317  * Test the supplied game specs.
318
319  * Test game save/load.
320
321  * Use the sphinx feature sphinx.ext.autosectionlabel for xrefs.
322
323  * Server management channel now has an idle timout.  Should not be
324    relevant with the supplied otter(1) client.
325
326  * Much internal refactoring, new macros etc., to support the other
327    work.
328
329  * Reset game (game spec parsing and implemnetation) is now
330    done in the server rather than the client.
331  
332  * Improvements and bugfixes to `make-release` and `update-version`
333    scripts.  Fix anomalous (but working) `Cargo.toml` version
334    dependency syntax.
335
336 Version 0.5.1 - 2021-04-19
337 ==========================
338
339 This was the first public release.
340
341 [comment]: # Local variables:
342 [comment]: # mode: text
343 [comment]: # End: