# Changelog for `derivepassphrase`
[![Keeping a changelog][CHANGELOG_BADGE]][KEEP_A_CHANGELOG]
[![Using Semantic Versioning][SEMVER_BADGE]][SEMANTIC_VERSIONING]
[CHANGELOG_BADGE]: Keep_a_changelog-E05735.svg
[SEMVER_BADGE]: SemVer-3F4551.svg
[KEEP_A_CHANGELOG]: https://keepachangelog.com/en/1.1.0/ 'Keeping a changelog'
[SEMANTIC_VERSIONING]: https://semver.org/ 'Using Semantic Versioning'
[REFERENCE]: reference/index.md
## 0.2.0 (2024-09-12)
### Added
- Support configuration data export from `vault` in v0.2, v0.3 and
storeroom formats.
This feature requires the `cryptography` Python module, but is available
even if `vault` is not installed. ([#1])
[#1]: https://github.com/the-13th-letter/derivepassphrase/1
### Fixed
- Deploy versioned documentation with [mike][]. Set up a "latest" tag and
the "0.x" version of the documentation with the contents so
far.
[mike]: https://pypi.org/project/mike
### Changed
- Changed `sequin` and `ssh_agent_client` to be submodules of
`derivepassphrase`. Further moved `derivepassphrase.Vault` and
`derivepassphrase.AmbiguousByteRepresentation` into a new submodule
`vault`, and renamed submodule `ssh_agent_client` to `ssh_agent`. ([#3])
- Changed internal error handling and error messages, to better work in
the context of a command-line tool. ([#4])
- Combine and consolidate `derivepassphrase.types` and
`derivepassphrase.ssh_agent.types` into a new submodule
`derivepassphrase._types`. Despite the name, the module is public.
([#7])
- Warn the user when entering (directly, or via configuration
editing/importing) a passphrase that is not in the configured Unicode
normalization form. (But don't otherwise reject any textual master
passphrases.) ([#9])
- Move all existing functionality into a subcommand, in anticipation of
other passphrase derivation schemes, with different settings.
Automatically forward calls without a subcommand to the "vault"
subcommand.
Also store the settings in a file specific to the respective subsystem,
instead of globally. Automatically fall back to, and migrate, the old
global settings file if no subsystem-specific configuration was found.
([#10])
- Make `derivepassphrase_export` a subcommand: `derivepassphrase export`.
([#11])
[#3]: https://github.com/the-13th-letter/derivepassphrase/3
[#4]: https://github.com/the-13th-letter/derivepassphrase/4
[#7]: https://github.com/the-13th-letter/derivepassphrase/7
[#9]: https://github.com/the-13th-letter/derivepassphrase/9
[#10]: https://github.com/the-13th-letter/derivepassphrase/10
[#11]: https://github.com/the-13th-letter/derivepassphrase/11
### Deprecated
- Using the implied subcommand or the implied global configuration file is
deprecated, and will be removed in v1.0.
## 0.1.3 (2024-07-28)
### Fixed
- Do not crash upon selecting a key on the command-line if there already
is a key stored in the configuration. ([#5])
- Create the configuration directory upon saving, if it does not yet
exist. ([#6])
- Isolate the tests properly and consistently from the user's
configuration, so that user configuration problems do not cause
unrelated test failures. ([#8])
- Add an alternate MkDocs configuration for building the documentation in
offline mode.
- Fix typing issues according to `mypy`'s strict mode.
[#5]: https://github.com/the-13th-letter/derivepassphrase/5
[#6]: https://github.com/the-13th-letter/derivepassphrase/6
[#8]: https://github.com/the-13th-letter/derivepassphrase/8
## 0.1.2 (2024-07-22)
### Fixed
- Include and exclude the correct files in the `sdist` and `wheel`
distributions. (Previously, `sdist` contained VCS artifacts, and
`wheel` was missing some paths.)
- Lint and reformat all code using [ruff](https://pypi.org/package/ruff/).
- Mention
[`mkdocstrings-python`](https://pypi.org/package/mkdocstrings-python/)
in the documentation's page footer.
- Remove JavaScript and external font loading from documentation website,
so that the site works even in restricted browser settings.
- Set up a changelog, using
[towncrier](https://pypi.org/package/towncrier).
## 0.1.1 (2024-07-14)
### Fixed
- Restore the `__version__` attribute in all top-level packages.
- Declare compatibility with Python 3.10 in project metadata, and include
necessary version-specific dependencies.
- Publish the documentation online, and link to it in the repository
metadata and the Python package metadata.
## 0.1.0 (2024-07-14)
### Added
- Initial release.