chiark / gitweb /
changelog: document further make-release changes
[otter.git] / CHANGELOG.md
index 9cc5df965f9f31bfb621f07bf4f3c3f2861a8fdf..3c790486983e97b9ab23881c7d7259038acabaa5 100644 (file)
@@ -1,4 +1,258 @@
-Version 0.7.2 - UNRELEASED
+Version 1.2.1 - 2022-06-26
+==========================
+
+Bugfixes
+--------
+
+ * Fix "flickering drag select" effect in Chromium, by preventing
+   propagation of mouse events which Otter's JS has handled itself.
+
+ * Do not allow "r for rotate" to trump "r for roll" when dice and
+   rotateable pieces are both selected.  Instead, suppress that keybinding
+   in that case.
+
+ * Fix documetation of
+    - Date of Version 1.2.0 in this changelog
+    - Format version status and release dates
+
+ * Developer release script and checklist improvements.
+
+
+Version 1.2.0 - 2022-06-24
+==========================
+
+General changes to game and UI
+------------------------------
+
+ * Counting pickup decks, hands, etc., now include un-occulatable
+   pieces in their count, not only occultable ones.  This means
+   counting piles can now be used to count unoccultable pieces.
+
+ * Fiddle with CSS to try to get mouse cursor to update more promptly.
+   (This is still not perfect, probably due to browser misbehaviour.)
+
+ * otter(1): When printing game access URL, say in message that it's private
+
+ * Change monospace font to DejaVu Sans.  Reportedly the previous font
+   was not always available, causing the chess clock to perhaps misrender.
+
+ * Add piece descriptions to more messages.
+
+ * UI improvements relating to selecting, wresting, and dragging:
+   - Mouse cursor shows differently when in wresting mode.
+   - Allow backspace to delete typed special count.
+   - Leave wresting mode when the user presses space.
+   - Allow rectangle select drag to start on pinned pieces. hands, etc.
+
+Otter CLI
+---------
+
+ * Provide set-access subcommand.  Previously the game ACL could only
+   be adjusted by resetting the whole game, or abstruse alter-game-* runes.
+
+ * fix typo in usage message part concerning `otter reset`.
+
+Game client UI fixes
+--------------------
+
+ * Split a banknote (currency) when the user makes a counted click,
+   even if they are currently holding the note itself.
+   (previously this would simply unselect it).
+
+ * When pieces are newly inserted (inclidng on game reset), properly
+   record their description (for use in messages) and bbox.
+   Previously, the description would show as "undefined" until page reload.
+
+ * When pieces are deleted (including on game reset), properly remove
+   the client's idea of any active occultations they might have had.
+   Previously, "ghost" occultations would remain, causing dotted-line
+   grasp highlighting in places where the hands etc. were.
+
+ * When a player changes their nick, update this in the clients, so
+   that the new nick appears in the info pane and in the various affordances.
+
+ * Fix minor bugs in mouse click handling corner cases.
+
+Documentation
+-------------
+
+ * Correct the description of the shapelib group parameter `desc_template`.
+   (Previously this wrongly said the parameter was `desc`.)
+
+Demo (testing) game changes
+---------------------------
+
+ * Increase table size.
+ * Add a pickup deck.
+ * Fix a misindent in the spec file.
+
+Internal and testing chnages
+-----------------------------
+
+ * Server/client protocol change: Rename AddPlayer to SetPlayer.
+ * apitest: Suppress some hyper log messages by default.
+ * Add two debug console.log's to the JS code.
+ * Refactorings and internal comment updates.
+
+
+Version 1.1.0 - 2022-05-26
+==========================
+
+Bundle format
+-------------
+
+Introduced bundle format versions, and bundle format version `2`.
+Bundle format version `1` is still supported.  There are significant
+changes and improvements in version `2`, available by writing
+`format=2`.  See "Bundle compatibility" in the documentation.
+
+ * Handling of piece size and angle specification overhauled.
+ * New and better template substitution syntax.
+ * Fixed piece angle specification in game specs.
+
+Breaking change to otterlib CLI program
+---------------------------------------
+
+ * otterlib (the library preview utility, not normally needed for bundle
+   development) now needs to know the nwtemplates directory (so it can
+   properly process etc. magic library items).
+
+New features
+------------
+
+ * Dice, via the `Die` piece type.
+ * Currency (money, and similar things), via the `Currency` piece type.
+ * Shape libraries can provide canned "magic" items
+   (which are then based on the library's own image(s).
+ * `stack_pos` parameter for `PickupDeck` pieces, specifying where the
+   "neat pickup deck" should appear, so it doesn't have to central.
+ * otter CLI client: Allow uploading a directory directly as a
+   bundle zipfile (helpful for bundle development).
+ * Include piece description in some log messages.
+
+Fixes and improvements
+----------------------
+
+ * Do not randomly panic when trying to print truncated debug output
+   for non-ASCII piece HTML.
+ * Set default fonts for SVG processing: in bundle SVGs, at all (so
+   that text is not elided); in builtin libraries, more widely
+   (without effect on the existing pieces).
+ * Notice errors during JS startup, and display them.
+ * Correct sense of pin/unpin log message.
+ * Shape library previews: fix (and improve) the HTML (from otterlib).
+ * Fix a tiny rendering error in arrowheads.
+ * Test suite: `childio`: work around a Linux kernel race bug: you can
+   sometimes reap a child and then write to its pipe without EPIPE.
+ * Build system: run miri with +nightly, so that tests work when stable
+   Rust is the default.  Document that these tests require nightly.
+ * Correct an error message about JSON serialisation.
+ * Remove some direct stderr debug prints from production code.
+ * Log message colourisation on a tty now leaves the logs more readable.
+ * Some improvements to bundle/shapelib loading error messages.
+
+Docs
+----
+
+ * Dcouemnt the semver stability promises.
+ * Publish the docs to an Otter-version-specific directory, so that
+   old docs versions are retained.
+ * Fix some formatting errors and typos.
+ * Correct some leftover todos.
+ * Clarify extra field syntax in shape library catalogue `files` entries.
+
+Protocol and model enhancements
+-------------------------------
+
+ * `multigrab`: pieces that can capture the number of pieces the user
+   says to grab, and instead handle the whole multigrab operation.
+ * `fastsplit`: pieces that can be split and merged during play
+   without having to rewrite the aux save file (containing SVG images).
+ * Non-mixing OccultIlk, for pieces which always remain distinguishable.
+ * Special rendering instructions, for pieces whose display involves
+   bespoke code in the TypeScript.
+ * OpOutcomeThunk system to allow piece implementations to be reinvoked
+   with an ability to make much wider mutable borrows.
+
+Build system, internal changes, etc.
+------------------------------
+
+ * Update to Rust 2021.
+ * Break out an additional `otter-support` crate (to try to
+   improve incremental build times).
+ * Use `ambassador` macro crate to help delegate trait impls.
+ * When formatting the Rust docs, pass `--document-private-items`.
+   (The Rust doc tree is for Otter developers.)
+ * Rationalised and sanitised the item import (`use`) practices.
+ * Refactoring in the test suite to support new tests.
+ * Fake time facility for testing.
+ * Concrete protocol: more Quiet PieceUpdateOps.
+ * Work around inkscape extension fail-to-save bug (seen in recolour).
+ * Reorganised and shuffled about `Outline` types.
+ * Avoid saving various things to savefiles that aren't needed
+   (mostly `None`s).
+ * Add some internal documentation about `ModifyingPieces`.
+ * Code motion to better organise shapelib.rs and utils.rs
+ * Centralised some UI properties in ui.rs.
+ * Made some type names more consistent (eg `GOccults`, `Catalogue`).
+ * Renamed some PacketFrame types etc. from MgmtChannel.
+ * Other minor improvements.
+
+
+Version 1.0.0 - 2022-04-02
+==========================
+
+Significant changes
+-------------------
+
+ * Compile on stable Rust.
+ * Uses actix-web rather than Rocket (should be similar in overall
+   functionality but there may well be behavioural changes).
+ * Always listen on localhost:8000 by default regardless of `debug` config.
+   But, support explicit configuration of listening addresses.
+ * Do not sometimes leak (in game log) piece identity of face-down cards.
+
+Minor improvements
+------------------
+
+ * Add short crate-level docs with reference to website etc.
+ * Fix inconsequential misacceptance of some odd-length hex byte strings.
+ * Fix some almost-incosequential short write bugs (might manifest as races).
+ * Typo fix in one error message.
+
+Build system
+------------
+
+ * Turn on integer overflow checks for release builds.
+ * Don't override environment's SPHINXBUILD or NAILING_CARGO.
+ * Update dependency versions.
+ * Skip some unnecessaary miri runs of certain tests.
+ * Support for controlling the Rust version via RUST_VERSION.
+ * `make deploy` MUSL build is in release mode by default.
+ * Document that build now requires 6G rather than 10G.
+
+Internal improvements
+---------------------
+
+ * Drop wee-alloc as allocator from WASM.
+ * Many internal code style improvements prompted by rust-clippy.
+ * Remove some unused internal bits and bobs.
+ * Require layout parameter in session URL loads.
+ * Miscellanous Other cleanups.
+
+
+Version 0.7.3 - 2021-07-25
+==========================
+
+Build system bugfixes
+---------------------
+
+ * `cargo` publication in `make-release` uses better pre-clean
+   approach.  (Removes some junk from caago packages.)
+
+drop our own directory from cargo.nail
+
+Version 0.7.2 - 2021-07-25
 ==========================
 
 Bugfixes
@@ -15,9 +269,13 @@ Bugfixes
     - Occulters (hands and decks) more uniformly try to be low down.
     - e.g. user will no longer accidentally put card under their hand (!!)
     - Do not derange relative ordering of multiple lowered pieces.
-    - Fix a Rust panic in Z coordinate handling which might occur in some
-      attempts to lower pieces.
+    - Fix a logic errors and panics in Z coordinate handling which
+      might prevent some attmepts to lower (or, mayby, raise) pieces.
     - When the user asks to raise but nothing can be raised, log a message.
+    - Automatically lower occulting pieces when they are enabled, and
+      pieces which are being pinned (insofar as reasonable); this
+      significantly reduces the probability of mysterious trouble
+      lowering a piece ("would disturb a piece held by another player").
 
  * Substantial overhaul of error handling for problems detected when
    processing client API requests:
@@ -30,7 +288,7 @@ Bugfixes
       `PROTOCOL.md`, and implementation of the new scheme.
     - Principled client decisions about what to show the user - which
       things are errors, which things are to be rported as conflicts, and
-       generally what to put in the user-facing message log.
+      generally what to put in the user-facing message log.
 
  * Do not re-raise things during drag if the user explicitly lowered
    them with `b` (since the user grasped them).
@@ -38,7 +296,7 @@ Bugfixes
  * Fix JS exception if user selected multiple pieces which used the same key
    for different purposes.  (Even transiently, for example by selecting
    multiple hand repositories and claiming them all - you'd briefly have `C`
-   for claim for some, and `C` for unclaim for others.)
+   for claim for some, and `C` for unclaim for others, triggering the bug.)
 
 New features
 ------------
@@ -92,11 +350,13 @@ Testing, supporting changes:
 Internal and protocol improvements:
 
  * New "loose" update (api op) concept to support new regrab feature.
+ * Fix a wdriver synch race which could lead to spurious tests failures.
  * Improve defensive programming in the zcoord module.
  * Abolish the incoherent `OnlineError` error type and replace it
    with `Inapplicable` and `Fatal`.
  * Abolish old incoherent and ununused `conflict_expected` in client JS.
  * Improved debug output in various places (when enabled or in tests).
+ * Cleaned up a few flabby idioms in some tests.
  * Promote some debugging support to otter-base.
 
 Internal docs improvements: