.. _20230329_2_2_0_release:

Release Notes (v2.2.0)
======================

`March 29, 2023`

The v2.2.0 release of `HyperShell` includes major new features,
a few quality of life improvements, and a fix for SSH-mode.

-----

Features
--------

|

Full task recovery on client eviction
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

In previous versions, when a client was evicted because of too many missed
heartbeats, any tasks that had been pulled from the server would be lost.
Updates to the task data only arrived upon completion of all the tasks;
we are not informed of which client took a particular task until it is
finished.

We've implemented a new communication channel that clients use to `immediately`
"confirm" with all the task IDs from a bundle pulled from the server. The server
can then update the database with which exact client has the tasks. So in the
event of an eviction any tasks not returned can be reverted, which allows for
them to be re-scheduled and taken by a different client.

This new functionality does impact performance at the most extreme end of
task throughput, but under typical scenarios this would not be noticed. A new
command-line switch, ``--no-confirm`` has been added however to completely disable
this behavior when not using a database.

|

Update tasks after submission
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

For long-running persistent-style deployments it might be desirable to modify a
task `after` it has already been submitted. We've added a new subcommand for this.
See ``hs task update --help``.

|

Rich formatting of usage and help statements
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

If the current shell is interactive (TTY mode), usage and help statements have
rich formatting (colors, bold/italics, etc) for easier reading. Just as how logs
will automatically disable colors/formatting if being redirected, formatting of
usage and help statements is disabled if not TTY-mode.

|

-----

Fixes
-----

|

Issue `#12 <https://github.com/hypershell/hypershell/issues/12>`_
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The ``--ssh`` mode for the `cluster` workflow allows for you to specify
a hostname list inline with the command. In the initial implementation it
allowed for range expansion with a conventional square-bracket notation;
e.g., ``some-[00-04,08].local``. However, the comma-seperated syntax did
not apply to groups outside the square-brackets.

Now we support arbitrarily many name groups with commas outside the brackets.
For example, ``some-[00-04,08].local,other-[02,05].local`` will expand correctly.

|

Issue `#15 <https://github.com/hypershell/hypershell/issues/15>`_
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

A breaking
`change <https://github.com/sqlalchemy/sqlalchemy/commit/1a24813bab99376ccd1c726dd7b69db3635a2d2b>`_
in our `SQLAlchemy` dependency affected the use of UUIDs in the project.
