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