# Changelog
All notable changes to this project will be documented in this file.

The format is loosely based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

## [5.5.3]
- Fix bug whereby \n doesn't get outputted for piped stdout by default, breaking unix tool compatibility
- Add huckle documentation update for the -n option to avoid default trailing linefeed in stdout (e.g. for binary stream handling)

## [5.5.2]
- Fix bug with portalocker attempting to acquire a lock on the users's home

## [5.5.1]
- Fix failure for huckle env when the HUCKLE_HOME is updated and the home doesn't yet exist
- Update tests to avoid impacting a default local installation of huckle

## [5.5.0]
- Add support for multi-root aggregate installation

## [5.4.0]
- Add support for different home folder (i.e. HUCKLE_HOME environment variable)
- Update huckle help with HUCKLE_HOME and fix .huckle typos

## [5.3.0]
- Update to latest version of requests and certifi
- Update to support more separators in dependency version output

## [5.2.1]
- Fix missing \n correcton in terminal when receiving and processing stderr from problem detail
- Fix trailing \n test assumption

## [5.2.0]
- Add -n override flag to remote shell aesthetic \n in stdout and stderr when using huckle in shell
- Fix inconsistent \n output on stdout and stderr througout

## [5.1.3]
- Fix README to include information about keyring credentials support

## [5.1.2]
- Fix credential profile creation logic with initial default when the file has no sections

## [5.1.1]
- Fix to remove outstanding str returns with certain huckle commands, leading to differentiated handling in cli callers
- Fix huckle's logging output to yield a more consistent exception trace
- Remove now unused hcli_to_text and pretty_json

## [5.1.0]
- Add ability to get and update hcli configuration (git style; e.g. huckle cli config jsonf url.pinning pin)
- Add process bound write locking and lock cleanup on folders and files with portalocker
- Add credential manager keyring support (still supporting huckle plaintext credentials file)
- Add huckle cli credential <cli> commands to help manage credential setting (keyring wrapper)
- Fix to only attempt authentication, as appropriate, for finalexecution calls (not while traversing HCLI semantics)

## [5.0.2]
- Fix config parsing error catch that would cause huckle help to be invoked
- Fix singleton constraint in credentials manager to aleviate credentials caching issue when huckle is used as a library
- Fix to output better stderr output and exit code when routing to huckle help

## [5.0.1]
- Fix and update huckle help documentation
- Fix warning output in log when ssl.verify is set to skip (security risk)

## [5.0.0]
- Add common huckle logging output per configuration
- Add output to stderr rather than stdout for expected HCLI spec received RFC9457 problem detail
- Add better sys exit failure code if we're yielding an error (e.g. stderr)
- Update to the latest version of certifi (2024.8.30)
- Update installation logic when navigating from a root that isn't an HCLI document
- Update to better align with the *nix philosophy of silence on success
- Update documentation to reflect changes

## [4.3.0]
- Add Basic HTTP Authentication credentials support (hcli config and credentials file)
- Add HCLI Core API Key (HCOAK) Bearer Authentication credentials (hcli config and credentials file)
- Add profile support for Basic HTTP Authentication credentials (one unique username/password per section/profile name)
- Add profile support for HCOAK Bearer Authentication credentials (one unique keyid/apikey per section/profile name)
- Update huckle help file to roff format best practice
- Update HCLI navigation error message

## [4.2.1]
- Update missing proper pyproject package configuration to dismiss build warnings
- Update universal dist flag since Python 2.7 is not supported
- Update to gunicorn 23.0.0 in circleci tests

## [4.2.0]
- Remove python 3.7 support.

## [4.1.1]
- Update README with future support for HTTP API Problem Details per spec to help with STDERR [RFC9457].

## [4.1.0]
- Update to move location of cached man pages to avoid permission issues when multiple users on the same computer try to use help.

## [4.0.1]
- Update to to use read_file instead of readfp which is now deprecated in python 3.12

## [4.0.0]
- Update to beta and full data packaging in pyproject.toml

## [3.5.2]
- Update to reintroduce version and dependencies so they are available to huckle

## [3.5.1]
- Update to pyproject.toml in prepration for pip deprecation of setup.py

## [3.5.0]
- Support str and bytes on stdin (convert to io.BytesIO)
- Support calling hclis directly like on the command line instead of requiring the full 'huckle cli run' call with python library.

## [3.4.2]
- Fix logger name

## [3.4.1]
- Fix CHANGELOG typo

## [3.4.0]
- Support simplified python huckle import as library (i.e. from huckle import cli, stdin)

## [3.3.4]
- Remove README.rst extra badge underscore

## [3.3.3]
- Remove python 3.12 circleci test because of compatibility issue for now.
- Fix string concatenation bug on HTTP 4xx error.

## [3.3.2]
- Add python 3.12 circleci test
- Switch to ConfigParser from SafeConfigParser since it's no longer aliased in python 3.12

## [3.3.1]
- Add check to make sure the first command is "huckle" in cli library call.

## [3.3.0]
- Add stdin context manager redirection to support inputstream processing via cli in a python library use context.

## [3.2.0]
- Add support for invoking huckle command lines in python code (e.g. from huckle.huckle import cli).

## [3.1.2]
- Move badges out of README title.

## [3.1.1]
- Reorder badges in README and add label.
- Update README information regarding url pinning support.

## [3.1.0]
- Add URL pinning for successfully visited final HCLI execution to speedup interaction and lessen network calls.
- Add logger for debugging

## [3.0.2]
- Fix a bug where a conflict occurs when a parameter for an execution traversal happens to match a command exactly

## [3.0.1]
- Fix a bug where the shell arguments in a command line would split in the middle of quoted strings

## [3.0.0]
- Update to use huckle env like minikube docker-env to help export unassuming environment configuration
- Update documentation to mache huckle env change
- Update circleci orb configuration per deprecation comments and add python 3.11 support

## [2.6.2]
- Update to use latest version of requests, configparser and certifi.
- Update to use a more recent version of python orbs in circleci
- Remove support for python 3.5 and 3.6.

## [2.6.1]
- Update to make use of wheel distribution to get rid of pip setup.py error
- Update config.py to include coverage for python 3.10 testing

## [2.6.0]
- Update to make use of gunicorn 20.1.0 in circle ci tests
- Update config.py to include coverage for python 3.9 testing
- Update CHANGELOG with missing entries

## [2.5.8]
- Update requests dependency to latest version and remove requests toolbox which isn't used.

## [2.5.7]
- Update README with reference to hcli_core for huckle testing.

## [2.5.6]
- Fix package bug preventing huckle --version from working properly

## [2.5.5]
- Update config.yml to remove python 2.7 and 3.4

## [2.5.4]
- Add support for HTTPS and certifi package CA authority trust.
- Update test to run on local hcli service rather than against hcli.io

## [2.4.4]
- Fix to make use .bashrc for proper non-login terminal support under bash

## [2.4.3]
- Give help precedence over parameter navigation so that help can be easily available at all times

## [2.4.2]
- Give precedence to parameter navigation if present so that we can avoid double quoting param on the command line

## [2.3.2]
- Fix SIGPIPE signal that causes huckle to crash prematurely
- Update install instructions to remove Python's pip installation
- Update to handle removal of an already removed cli
- Update README links to hcli.io to http from https
- Fix bug that prevents post when there's no input stream to send to the server

## [2.3.1]
- Fix python 2 vs python 3 urllib quote defect

## [2.3.0]
- Add support for passing quoted HCLI parameters
- Update to requests 2.21.0
- Add very large stdin streaming support
- Fix man page output to properly break on carriage return character from hcli-document json
- Removed EXAMPLES section sequence constraint on COMMANDS and OPTIONS output
- Add support for python 3.7 xenial
- Add auto discovery of cli link relations on attempted CLI installation from a root resource that isn't an hcli-document

## [2.2.0]
- Switched to huckle cli ls from huckle cli list for brevity
- Switched to huckle cli config <cliname> from huckle cli config list <cliname> for brevity
- Added more examples in the huckle man page
- Cleaned up the README
- Added a note on disgraceful handling of cli invocation to the README (when an HCLI service is down)

## [2.1.0]
- Added a CHANGELOG
- Allow for listing of installed CLIs
- Allow for the removal of installed CLIs
- Updated the huckle documentation to reflect the new features
- Removed docker build remainders in NOTES.txt and setup.py
- Added additional warning context on exception
- Allow for listing of CLI configuration

## [2.0.0]
- Aggregated install and run commands under "cli" in preparation for additional cli commands; updated the documentation to match.
- Cleaned up around the huckle specific help prompt logic which was incorrectly referencing a cli's help prompt.
- Fixed 2 empty parameters edge cases
