Release 0.3 (not yet released)

* The new special variable TEXT.EDITING:*CLIENT* will allow clients to
  customize the behavior of certain operations such as those of the expression
  module.

* Major incompatible change: The behavior of the expression module can now be
  customized by defining methods on certain generic functions and binding
  TEXT.EDITING:*CLIENT* to an object chosen by the respective client to which
  the methods are specialized.

  As a consequence, the generic functions that formerly made up the protocol of
  the expression module are now ordinary functions which access the current
  value of TEXT.EDITING:*CLIENT* and call new generic functions with that value
  and all other arguments. The new generic functions have names in the new
  TEXT.EDITING.EXPRESSION.IMPLEMENTATION package.

* Minor incompatible change: The new function
  TEXT.EDITING.EXPRESSION:MAP-CHILDREN is now the primary mechanism for
  obtaining the children of an expression node.

  The existing function TEXT.EDITING.EXPRESSION:CHILDREN remains but is now
  implemented in terms of TEXT.EDITING.EXPRESSION:MAP-CHILDREN by default.

* Minor incompatible change: The only unit for which all operations continue to
  signal an TEXT.EDITOR-BUFFER:BEGINNING-OF-BUFFER-ERROR or
  TEXT.EDITOR-BUFFER:END-OF-BUFFER-ERROR when the cursor is located at the
  beginning or end of the buffer respectively is TEXT.EDITING:ITEM.

  For the unit TEXT.EDITING:LINE, the TEXT.EDITING:MOVE operation still signals
  the above errors in the given circumstances.

  For the TEXT.EDITING:SURROUND-WITH-DELIMITER-PAIR operation, errors are still
  signaled if a value greater than 1 is supplied for the count keyword
  parameter and a buffer boundary is encountered before the specified number of
  unit instances could be surrounded.

  All other units no longer exhibit any special behavior and instead process an
  empty sequence of items at the respective buffer boundary.

* Minor incompatible change: Operations involving the units
  TEXT.EDITING:SENTENCE and TEXT.EDITING:PARAGRAPH no longer signal
  TEXT.EDITOR-BUFFER:END-OF-BUFFER-ERROR and
  TEXT.EDITOR-BUFFER:BEGINNING-OF-BUFFER-ERROR at the buffer boundary.

* The new indentation module provides operations and infrastructure for
  indenting lines, regions, and other units according to indentation rules that
  can be customized by clients. Like the expression module, the new indentation
  module is split into an interface part and an implementation part, the latter
  of which contains generic functions that can be customized by clients. The
  TEXT.EDITING:*CLIENT* special variable connects the two parts of the module.

Release 0.2 (2026-07-27)

* This library now uses the text.editor-buffer library instead of the Cluffer
  library as its implementation of line-oriented buffers. The new library has
  slightly improved protocols and much improved performance compared to
  Cluffer. The protocol improvements make the new library mostly but not fully
  compatible with Cluffer.

  Clients of this library can benefit from improved buffer and line creation
  functions which text.editor-buffer provides.

* Incremental and non-incremental search operations no longer corrupt the list
  of sites of a buffer.

* The TEXT.EDITING.SEARCH:SEARCH function no longer leaks temporary cursors.

* The TEXT.EDITING.SEARCH:SEARCH function now signals an
  TEXT.EDITING.SEARCH:EMPTY-QUERY-ERROR error when called with an empty query.

* The TEXT.EDITING.SEARCH:SEARCH function now accepts a case-mode keyword
  parameter.

* The unit TEXT.EDITING:WORD has been split into three units:
  TEXT.EDITING:SEMI-WORD, TEXT.EDITING:WORD and TEXT.EDITING:WORD-BOUNDARY of
  which the TEXT.EDITING:SEMI-WORD unit is closest to the previous semantics.

* The new unit TEXT.EDITING:REGION-OR-LINE is a specialization of the
  TEXT.EDITING:REGION-OR unit that falls back to the current line if there is
  no current region.

  This new unit is expected to be useful for indentation operations in which a
  single action or keybinding is often responsible for indenting either the
  current region or the current line.

Release 0.1 (2026-02-02)

* Initial release with basic modification operations, incremental search and
  multiple cursors.

