chiark / gitweb /
CHANGELOG: Document changes in 0.7.0
[otter.git] / CHANGELOG.md
1 Version 0.7.0 - 2021-06-08
2 ==========================
3
4 New features
5 ------------
6
7  * Game spec files can now be processed with Tera for templating.
8
9  * ssh-based access for `otter` cli, including appropriately-
10    restricted access via authorized_keys in the server role account,
11    and a mechanism for self-service public key management.
12
13  * `otter` cli can now read a preferences file
14    (`~/.config/otter/prefs.toml` by default) to allow pre-configuring
15    commonly-required command line options like `--game` and `--ssh`.
16    See `otter --help` for documentation.
17
18  * Mao and Penultima slightly updated (and, those game specs now
19    use the new templating feature).
20
21 Bugfixes
22 --------
23
24  * UI: When multiple pieces are selected and are to be raised (whether
25    by explicit request, or because of drag distance), their relative
26    ordering is preserved.  So dragging a group of pieces no longer
27    scrambles their z order.
28
29  * UI: When the SSE connection auto-reconnects, do not declare it an
30    error and suggest to the user that reloading might help.  Instead,
31    simply hope that it is going to be OK (since it generally is).  If
32    the SSE connection declares failure (state 2), report a scarier
33    message.
34
35  * Docs: Fixes to some documentation errors (including a fix
36    contributed by Simon Tatham).
37
38  * CLI etc.: Improve a number of error messages; in particular,
39    replace several "debug prints" of error messages with proper
40    formatting, and print a better program kname.
41
42  * CLI: Much better handling of stdout write errors.
43
44 Installation and deployment changes
45 -----------------------------------
46
47  * The `otter` command line utility is now in its own Rust package
48    `otter-cli`.
49
50  * Better logging by server of events on command connections.
51
52 Internal and development changes
53 --------------------------------
54
55  * make-release now polls crates.io's github view to work around
56    cargo/crates.io bug https://github.com/rust-lang/cargo/issues/9507
57    and has a release checklist in it.
58
59  * Some internal renamings for clarity, especially regarding
60    Authorisation proof tokens.
61
62  * Reworked the types involved in management command channels, to
63    use a different stacking of read/write adapters.  In particular,
64    a new `childio` facility for handling conversations with a child
65    process (in support of using `ssh` as a command conn transport).
66
67  * `otter` cli no longer uses println!.  Instead we have a special
68    wrapper for stdout which handles the errors and buffering for us.
69
70  * `otter` cli subcommand dispatch made nicer and the program's code
71    broken out into multiple files.
72
73  * Internal apitest case code restructured somewhat.
74
75
76 Version 0.6.0 - 2021-05-23
77 ==========================
78
79 New features
80 ------------
81
82  * Support uploading bundles of game materials, so games can be played
83    that are not playable with Otter's provided piece libraries.
84
85  * New `vatikan.game.toml`, suitable for many variants of
86    Manipulation Rummy.
87
88  * New `private.table.toml` and `same-scope.table.toml` for
89    less-public games.
90
91 Command line usage changes, etc.
92 --------------------------------
93
94  * otter(1) now takes the game name using a `--game` (`-g`) global
95    option rather than a per-subcommand positional argument.
96
97  * Library listing, piece identification, and so on, changed,
98    including changes to `otter library-add` and `otter library-list`.
99    Specifically, per-game libraries mean that `library-list` now
100    needs the `--game` option.
101
102  * otter(1) and otterlib(!) now honour `OTTER_CLI_LOG`
103    (in Rust env_logger format).
104
105  * otter(1) no longer acts on change_directory server config
106    setting (but still resolves paths in config relative to that dir).
107
108  * Much better reporting of errors, especially from otter(1).
109    Previously even straightforward errors would result in a controlled
110    `panic`; now a prettier message is printed.
111
112  * Default table size is now 300,200 (like `penultima` and `mao`; was
113    400,200).
114
115   * otter(1) can be used to issue adhoc management commands supplied
116     on the command line in JSON or RON format.
117
118 Bugfixes
119 --------
120
121  * Fix a serious bug with acl handling which might allow players who
122    can access a game more access than intended.
123
124  * Occult ilks are properly sorted out during piece load and game
125    save/load.  Previously a game with occulted pieces might not be
126    reloadable.
127
128  * Test suite might previously fail with EBADF due to off-by-one error
129    in fd cleanup routiine.
130
131 Documentation
132 -------------
133
134  * Document uploadable bundle format.
135
136  * Document game and piece spec format.
137
138  * Document shape library catalogue format (previously this was done
139    with rustdoc annotations on Rust structs used with serde, which
140    produced incomplete and very hard to understand information).
141  
142  * De-emphasize docs for for amending the builtin shape libraries;
143    suggest making bundles instead.
144
145  * Examples, of game specs, shape libs, buncdles.
146
147 Installation and deployment changes
148 -----------------------------------
149
150  * usvg is now built shipped by the otter build system.
151
152  * server-config.toml can specify the path to `usvg`, `libexec`,
153    etc.
154
155 Compatibility notes
156 -------------------
157
158  * The otter(1) command line interface has changed and many common
159    operations need to be specified differently.
160
161  * The management API protocol has completely changed.  Old otter(1)
162    clients will not work.
163
164  * Savefiles from older versions of Otter are not loadable.
165
166 Internal and development changes
167 --------------------------------
168
169  * Change CLI to server management wire protocol to binary-framed
170    MessagePack (was newline-framed JSON).
171
172  * Update dependencies.
173
174  * Build system and test suite improvements and fixes.
175
176  * Move game spec parsing from client to server.
177
178  * Better error messages, especially from otter(1)
179
180  * Tests have better error reporting and output capturing.
181
182  * Various substantial refactorings to tests.
183
184  * Test the supplied game specs.
185
186  * Test game save/load.
187
188  * Use the sphinx feature sphinx.ext.autosectionlabel for xrefs.
189
190  * Server management channel now has an idle timout.  Should not be
191    relevant with the supplied otter(1) client.
192
193  * Much internal refactoring, new macros etc., to support the other
194    work.
195
196  * Reset game (game spec parsing and implemnetation) is now
197    done in the server rather than the client.
198  
199  * Improvements and bugfixes to `make-release` and `update-version`
200    scripts.  Fix anomalous (but working) `Cargo.toml` version
201    dependency syntax.
202
203 Version 0.5.1 - 2021-04-19
204 ==========================
205
206 This was the first public release.
207
208 [comment]: # Local variables:
209 [comment]: # mode: text
210 [comment]: # End: