.. _20230413_2_3_0_release:

Release Notes (v2.3.0)
======================

`April 13, 2023`

The v2.3.0 release includes a number of fixes and improvements.
A number of bugs have been fixed and we added better default output formatting
of task info from searches.

-----

Features
--------

|

New default output format for task metadata
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Task info and search results now default to a more human-centric
compressed formatting, instead of a full-table render that is typically
not readable within 80-120 characters. For searches, YAML, JSON, CSV, and
rich TABLE formatting are still available.

The default output of ``task info`` and ``task search`` are now the same.

|

Additional logging messages
^^^^^^^^^^^^^^^^^^^^^^^^^^^

The trace-level messages have always included regular messages from routines
that are in a wait cycle (e.g., waiting on task bundle to return). We have
now added additional trace-level messages. Notably, task executors will emit
trace-level messages every two seconds while waiting on a process to complete
with the current elapsed time for that process.

|

New logging attributes
^^^^^^^^^^^^^^^^^^^^^^

Users have always been able to customize their configured ``logging.format``
beyond the pre-defined ``logging.style`` sets.

This content of messages is limited to the pre-defined attributes available
on each record, though there are many. We have added new attributes in this
release to allow for the same level of detail in less horizontal space.

- ``hostname_short`` is essentially the first part of the hostname.
- ``relative_name`` is the module ``name`` but relative.
- ``elapsed`` is the elapsed seconds (float).
- ``elapsed_ms`` is the elapsed milliseconds (integer).
- ``elapsed_hms`` is the elapsed time in ``dd-hh:mm:ss.sss`` format.

|

-----

Fixes
-----

|

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

In a few places, specifically within the ``task`` subcommands, normal error
modes would not be handled correctly because of the way global exception handling
definitions were implemented. The code has been restructured in a way to ensure
these sorts of things print a nice message instead of a nasty traceback.

|

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

We don't yet have robust enough testing of all the different sorts of
scenarios that might arise when using the application. We parse users'
``~/.ssh/config`` when issuing connections and file transfers. But did
not pass on gracefully when this file is not present.
