.. :changelog:

History
-------

.. Follow: https://keepachangelog.com/en/1.0.0/
..
.. Guiding Principles
.. ------------------
.. Changelogs are for humans, not machines.
.. There should be an entry for every single version.
.. The same types of changes should be grouped.
.. Versions and sections should be linkable.
.. The latest version comes first.
.. The release date of each version is displayed.
.. Mention whether you follow Semantic Versioning.
..
.. Types of changes
.. ----------------
.. Added for new features.
.. Changed for changes in existing functionality.
.. Deprecated for soon-to-be removed features.
.. Removed for now removed features.
.. Fixed for any bug fixes.
.. Security in case of vulnerabilities.

21.9.0 (2021-09-07)
~~~~~~~~~~~~~~~~~~~

Added
^^^^^

- Increased test coverage to address bugs (below) being fixed.

Changed
^^^^^^^

- Fixed bugs in `Makefile` and `tox.ini` file.
- Fixed bug setting undefined variables.
- Switched from `numpy` to Python `secrets` module for random bytes.
- Increased key size from 16 to 32 bits for `consul_key`, `token_hex` and `token_urlsafe`.

21.8.0 (2021-08-12)
~~~~~~~~~~~~~~~~~~~

Changed
^^^^^^^

- Fixed bug in setup.py+setup.cfg

21.7.0 (2021-07-30)
~~~~~~~~~~~~~~~~~~~

Added
^^^^^

- Secrets descriptions for demoing HypriotOS Flash mods Medium article

Changed
^^^^^^^

- Improve `secrets set --from-options`
- General code quality, documentation, and testing enhancements

21.6.0 (2021-06-23)
~~~~~~~~~~~~~~~~~~~

Added
^^^^^

- Ability to set and generate secrets from defaults options
- Ability to create an alias for an existing environment
- Allow retroactive mirroring of new secrets

Changed
^^^^^^^

- Switched from `pbr` to `setuptools_scm` for version numbering
- Switched to more secure random number generation

21.2.0 (20201-02-23)
~~~~~~~~~~~~~~~~~~~~

Added
^^^^^

- Improve GitHub Actions workflows
- Overall documentation and code enhancements
- Improve handling of wildcards in options list

Changed
^^^^^^^

- Fix bugs with handling empty lists, cloning environments, BATS tests
- Increase password complexity a bit more
- Fix ReadTheDocs

20.11.0 (2020-11-17)
~~~~~~~~~~~~~~~~~~~~

Added
^^^^^

- Add `secrets create` and `secrets delete` commands

Changed
^^^^^^^

- Normalize all logger and exception output text
- Refactoring code for better modulatiry
- Normalize `group create` and `group delete` code
- Normalize `secrets show` and `secrets describe` code
- Fix bug that left variables missing after cloning
- Add Python 3.9 to testing matrix
- Switch from .yml to .json format for secrets
- Expand IP address support in `utils` subcommand

20.8.1 (2020-08-11)
~~~~~~~~~~~~~~~~~~~

Changed
^^^^^^^

- Fixes to v20.8.0

20.8.0 (2020-08-11)
~~~~~~~~~~~~~~~~~~~

Added
^^^^^

- Add GitHub workflow to publish to test.pypi.org
- Add `secrets backup` and `secrets restore` logic
- Open web browser to documentation for help

Changed
^^^^^^^

- Go back to date-based version numbering
- General CI/CD workflow updates
- Improve directory handling in `environments path`

20.2.15
~~~~~~~

Added
^^^^^

- Added Python 3.8 support to test matrix

Changed
^^^^^^^

- Fix bug in `environments default`
- Put elapsed time (and BELL) on stdout
- Fix bug in `environments tree`
- Allow setting vars using diff names+environment

19.12.0 (2019-12-16)
~~~~~~~~~~~~~~~~~~~~

Added
^^^^^

- Add and document new `boolean` data type
- Add `groups delete` command


Changed
^^^^^^^

- Improve default environment handling
- Improve tox+BATS testing
- Address security issue per "Your xkcd passwords are pwned" article
- General code quality and test improvements
- Add protection from over-writing existing env vars
- Add `Options` attribute

19.11.1 (2019-11-29)
~~~~~~~~~~~~~~~~~~~~

Changed
^^^^^^^

- Enhancements to better support Windows 10
- Allow cloning group descriptions from environment
- Fix tty/no-tty handling with `environments delete`
- Expose terraform command on `-v`
- Validate variable exists in environment
- Fix broken `environments tree` code

19.10.1 (2019-10-20)
~~~~~~~~~~~~~~~~~~~~

Changed
^^^^^^^

- Move BATS unit tests into tox testing
- Avoid attempting interactive things when no tty
- Improve file and directory permissions logic

19.10.0 (2019-10-14)
~~~~~~~~~~~~~~~~~~~~

Added
^^^^^

- Working SSH key and configuration management
- Use `bullet` for interactive list selection
- Elapsed timer feature
- Parsing of terraform output to extract SSH public keys
- `umask` control for better new file permission settings
- Support configuring terraform `tfstate` backend
- Allow setting secrets by copying from another environment

Changed
^^^^^^^

- Numerous bug fixes
- Refine testing
- Option to only show undefined variables
- Sort environments when listing

19.9.0 (2019-09-05)
~~~~~~~~~~~~~~~~~~~

Added
^^^^^

- Add `environments delete` subcommand
- Allow cloning environment from an existing one

Changed
^^^^^^^

19.8.3 (2019-08-28)
~~~~~~~~~~~~~~~~~~~

Changed
^^^^^^^

- Dynamically get version number
- General testing enhancements
- General code quality enhancements
- Ensure more secure file permissions

19.8.2 (2019-08-23)
~~~~~~~~~~~~~~~~~~~

Changed
^^^^^^^

- General code quality enhancements

19.8.0 (2019-08-22)
~~~~~~~~~~~~~~~~~~~

Added
^^^^^

- IP address determination
- Allow cloning new group in an empty environment
- Make `python -m psec` work
- JSON output method
- Environment aliasing feature

Changed
^^^^^^^

- General code quality and testing enhancements
- Be more explicit about default environment
- Tighten permissions on cloned environments/groups
- Add insecure permissions checking

19.5.1 (2019-05-08)
~~~~~~~~~~~~~~~~~~~

Changed
^^^^^^^

Add `HISTORY.rst` file

19.4.5 (2019-05-08)
~~~~~~~~~~~~~~~~~~~

Added
^^^^^

- Add command `ssh config` to manage SSH configuration snippet
  for use by `update-dotdee` to generate ~/.ssh/config file
- Add command `ssh known-hosts add` and `ssh known-hosts remove`
  to manage system known_hosts file(s)

Changed
^^^^^^^

- Generalized exception to fix --version bug
- Clean up temporary docs/psec_help.txt file

19.4.4 (2019-04-21)
~~~~~~~~~~~~~~~~~~~

Changed
^^^^^^^

- Fix Bats dependencies/tests
- Fix broken documentation (wt?)
- Fix messed up release tagging

19.4.0 (2019-04-19)
~~~~~~~~~~~~~~~~~~~

Added
^^^^^

- Python 3.7 coverage for Travis CI

Changed
^^^^^^^

- Complete --help output (epilog text) in all commands
- Install a script 'psec' to complement console_script entry point
- Clarify arguments in --help output

Deprecated
^^^^^^^^^^

- The 'python_secrets' command is now just 'psec'

19.3.1 (2019-04-06)
~~~~~~~~~~~~~~~~~~~

Added
^^^^^

- Add ``environments rename`` command
- Add ``utils set-aws-credentials`` command to mirror AWS CLI credentials
- Use ``autoprogram_cliff`` for self-documentation
- Add ``cliff.sphinxext`` for documentation

Changed
^^^^^^^

- Refactored ``SecretsEnvironment()`` so ``autoprogram_cliff`` works

18.11.0 (2018-11-09)
~~~~~~~~~~~~~~~~~~~~

Added
^^^^^

- Add "--type" option to "secrets describe"
- Improve visibility into default environment
- Add screencasts to documenation
- Add RST checks to ensure PyPi documentation works
- Add feedback about minimum Python version
- Add ``--json`` output to ``environments path``
- Add reference to proof-of-concept using goSecure fork

Changed
^^^^^^^

- The "secrets describe" command now describes variables and types
- Allow ``secrets set`` to set any type (not just ``string``)


18.9.0 (2018-09-27)
~~~~~~~~~~~~~~~~~~~

Added
^^^^^

- Switched to calendar version numbering
- Finish GPG encrypted email delivery of secrets
- ``groups create`` command
- Improve error handling consistency when no environment exists


0.16.0 (2018-09-12)
~~~~~~~~~~~~~~~~~~~

Added
^^^^^

- Use attribute maps instead of lookup loops
- Add Prompt attribute in descriptions for better UX when setting variables
- Note new undefined variables when adding groups or ``environments create --clone-from``
- When exporting vars, also export PYTHON_SECRETS_ENVIRONMENT w/environment name
- Add reference to Python Security coding information
- ``environments tree`` command
- ``environments path`` command with features supporting Ansible Lookup Plugin
- ``secrets get`` command
- ``groups path`` command
- ``environments default`` command

0.14.0 (2018-08-30)
~~~~~~~~~~~~~~~~~~~

Added
^^^^^

- Option to export secrets as environment variables (with optional prefix)
- Can now set secrets (any specified or all undefined) via command line
- ``utils myip`` command returns routable IP address (with CIDR option)
- ``run`` command allows running commands with exported environment variables

Changed
^^^^^^^

- Renamed ``template`` comamnd to ``utils tfoutput``

Removed
^^^^^^^

- Dropped support for Python 3.4, 3.5, since ``secrets`` module only in Python >= 3.6


0.10.0 (2018-08-23)
~~~~~~~~~~~~~~~~~~~

Added
^^^^^

- New ``string`` type for manually set secrets
- ``secrets path`` command provides path to secrets ``.yml`` file
- ``template`` command (Jinja templating)
- Default environment to basename of cwd
- Clone environment from skeleton directory in repo

0.9.1 (2018-08-19)
~~~~~~~~~~~~~~~~~~

Added
^^^^^

- ``secrets describe`` command
- ``environments create`` command
- ``environments list`` command
- Expand secrets types and generation methods
- Add initial feature for sending secrets via email using Google OAuth2 SMTP

Removed
^^^^^^^

- Drop Python 2.7 support (at least for now...)

Security
^^^^^^^^

- Add ``six`` for securing ``input`` call

0.8.0 (2018-05-11)
~~~~~~~~~~~~~~~~~~

(TBD)

0.4.0 (2018-05-01)
~~~~~~~~~~~~~~~~~~

(TBD)

0.3.6 (2018-04-29)
~~~~~~~~~~~~~~~~~~

(TBD)

0.3.0 (2018-04-27)
~~~~~~~~~~~~~~~~~~

* First release on PyPI.
