1 Version 0.7.3 - 2021-07-25
2 ==========================
7 * `cargo` publication in `make-release` uses better pre-clean
8 approach. (Removes some junk from caago packages.)
10 Version 0.7.2 - 2021-07-25
11 ==========================
16 * Complete overhaul of Z coordinate (stacking order) handling, including
17 reworked Z lowering algorithm (`b` key function). Changes and
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").
35 * Substantial overhaul of error handling for problems detected when
36 processing client API requests:
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.
48 * Do not re-raise things during drag if the user explicitly lowered
49 them with `b` (since the user grasped them).
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.)
59 * New general `t` keystroke to bring a piece to the top of the
62 * Player hands now show the count of contained pieces.
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.
73 Other user-facing changes
74 -------------------------
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.
80 Internal and development/test changes
81 -------------------------------------
83 New tests (and new checks in existing tests):
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.
96 Testing, supporting changes:
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.
105 Internal and protocol improvements:
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.
117 Internal docs improvements:
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.
125 Build system and dependencies:
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.
134 Version 0.7.1 - 2021-06-09
135 ==========================
140 * `make shapelib` builds, and reports a URL for, the actual
141 documentation for shape library layout and spec syntax, not to an
144 Installation and deployment changes
145 -----------------------------------
147 * Better documentation of how to install just the command line
148 game management client (eg for use via ssh).
150 * Update Rocket dependency in Cargo.lock to one which builds with
153 * Update usvg dependency in Cargo.toml to a version with revised
154 less-insane command line parsing, and adjust all calls to it.
156 * Updated other dependencies.
158 * Work around a cargo bug which breaks the docs build:
159 https://github.com/rust-lang/cargo/issues/9564
161 Installation and deployment changes
162 -----------------------------------
164 * Improvements to release checklist and release script. Notably,
165 add a checklist item for checking the build on recent Nightly.
168 Version 0.7.0 - 2021-06-08
169 ==========================
174 * Game spec files can now be processed with Tera for templating.
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.
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.
185 * Mao and Penultima slightly updated (and, those game specs now
186 use the new templating feature).
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.
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
202 * Docs: Fixes to some documentation errors (including a fix
203 contributed by Simon Tatham).
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.
209 * CLI: Much better handling of stdout write errors.
211 Installation and deployment changes
212 -----------------------------------
214 * The `otter` command line utility is now in its own Rust package
217 * Better logging by server of events on command connections.
219 Internal and development changes
220 --------------------------------
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.
226 * Some internal renamings for clarity, especially regarding
227 Authorisation proof tokens.
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).
234 * `otter` cli no longer uses println!. Instead we have a special
235 wrapper for stdout which handles the errors and buffering for us.
237 * `otter` cli subcommand dispatch made nicer and the program's code
238 broken out into multiple files.
240 * Internal apitest case code restructured somewhat.
243 Version 0.6.0 - 2021-05-23
244 ==========================
249 * Support uploading bundles of game materials, so games can be played
250 that are not playable with Otter's provided piece libraries.
252 * New `vatikan.game.toml`, suitable for many variants of
255 * New `private.table.toml` and `same-scope.table.toml` for
258 Command line usage changes, etc.
259 --------------------------------
261 * otter(1) now takes the game name using a `--game` (`-g`) global
262 option rather than a per-subcommand positional argument.
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.
269 * otter(1) and otterlib(!) now honour `OTTER_CLI_LOG`
270 (in Rust env_logger format).
272 * otter(1) no longer acts on change_directory server config
273 setting (but still resolves paths in config relative to that dir).
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.
279 * Default table size is now 300,200 (like `penultima` and `mao`; was
282 * otter(1) can be used to issue adhoc management commands supplied
283 on the command line in JSON or RON format.
288 * Fix a serious bug with acl handling which might allow players who
289 can access a game more access than intended.
291 * Occult ilks are properly sorted out during piece load and game
292 save/load. Previously a game with occulted pieces might not be
295 * Test suite might previously fail with EBADF due to off-by-one error
296 in fd cleanup routiine.
301 * Document uploadable bundle format.
303 n * Document game and piece spec format.
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).
309 * De-emphasize docs for for amending the builtin shape libraries;
310 suggest making bundles instead.
312 * Examples, of game specs, shape libs, buncdles.
314 Installation and deployment changes
315 -----------------------------------
317 * usvg is now built shipped by the otter build system.
319 * server-config.toml can specify the path to `usvg`, `libexec`,
325 * The otter(1) command line interface has changed and many common
326 operations need to be specified differently.
328 * The management API protocol has completely changed. Old otter(1)
329 clients will not work.
331 * Savefiles from older versions of Otter are not loadable.
333 Internal and development changes
334 --------------------------------
336 * Change CLI to server management wire protocol to binary-framed
337 MessagePack (was newline-framed JSON).
339 * Update dependencies.
341 * Build system and test suite improvements and fixes.
343 * Move game spec parsing from client to server.
345 * Better error messages, especially from otter(1)
347 * Tests have better error reporting and output capturing.
349 * Various substantial refactorings to tests.
351 * Test the supplied game specs.
353 * Test game save/load.
355 * Use the sphinx feature sphinx.ext.autosectionlabel for xrefs.
357 * Server management channel now has an idle timout. Should not be
358 relevant with the supplied otter(1) client.
360 * Much internal refactoring, new macros etc., to support the other
363 * Reset game (game spec parsing and implemnetation) is now
364 done in the server rather than the client.
366 * Improvements and bugfixes to `make-release` and `update-version`
367 scripts. Fix anomalous (but working) `Cargo.toml` version
370 Version 0.5.1 - 2021-04-19
371 ==========================
373 This was the first public release.
375 [comment]: # Local variables:
376 [comment]: # mode: text