git.schokokeks.org
Repositories
Help
Report an Issue
derivepassphrase.git
Code
Commits
Branches
Tags
Suche
Strukturansicht:
50490f6
Branches
Tags
documentation-tree
master
0.1.0
0.1.1
0.1.2
0.1.3
0.2.0
0.3.0
0.3.1
0.3.2
derivepassphrase.git
0.x
changelog
index.html
Deployed ffee25004de8 to 0.x with MkDocs 1.6.1 and mike 2.1.3
Marco Ricci
commited
50490f6
at 2024-10-21 15:11:06
index.html
Blame
History
Raw
<!doctype html> <html lang="en" class="no-js"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <meta name="description" content="An almost faithful Python reimplementation of James Coglan's vault."> <meta name="author" content="Marco Ricci"> <link rel="canonical" href="https://the13thletter.info/derivepassphrase/0.x/changelog/"> <link rel="prev" href="../reference/derivepassphrase.vault/"> <link rel="icon" href="../assets/images/favicon.png"> <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.39"> <title>Changelog - derivepassphrase</title> <link rel="stylesheet" href="../assets/stylesheets/main.8c3ca2c6.min.css"> <style>:root{--md-text-font:"Noto Sans";--md-code-font:"Noto Mono"}</style> <link rel="stylesheet" href="../assets/_mkdocstrings.css"> <link rel="stylesheet" href="../mkdocstrings_recommended_styles.css"> </head> <body dir="ltr"> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" for="__drawer"></label> <div data-md-component="skip"> <a href="#changelog-for-derivepassphrase" class="md-skip"> Skip to content </a> </div> <div data-md-component="announce"> </div> <div data-md-color-scheme="default" data-md-component="outdated" hidden> </div> <div class="md-container" data-md-component="container"> <nav class="md-tabs" aria-label="Tabs" data-md-component="tabs"> <div class="md-grid"> <ul class="md-tabs__list"> <li class="md-tabs__item"> <a href=".." class="md-tabs__link"> Overview </a> </li> <li class="md-tabs__item"> <a href="../tutorials/basic-setup-passphrase/" class="md-tabs__link"> Tutorials & Examples </a> </li> <li class="md-tabs__item"> <a href="../reference/" class="md-tabs__link"> Reference </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href="./" class="md-tabs__link"> Changelog </a> </li> </ul> </div> </nav> <main class="md-main" data-md-component="main"> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > <div class="md-sidebar__scrollwrap"> <div class="md-sidebar__inner"> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0"> <label class="md-nav__title" for="__drawer"> <a href=".." title="derivepassphrase" class="md-nav__button md-logo" aria-label="derivepassphrase" data-md-component="logo"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> derivepassphrase </label> <div class="md-nav__source"> <a href="https://github.com/the-13th-letter/derivepassphrase" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg> </div> <div class="md-source__repository"> the-13th-letter/derivepassphrase </div> </a> </div> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href=".." class="md-nav__link"> <span class="md-ellipsis"> Overview </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" > <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0"> <span class="md-ellipsis"> Tutorials & Examples </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_2"> <span class="md-nav__icon md-icon"></span> Tutorials & Examples </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../tutorials/basic-setup-passphrase/" class="md-nav__link"> <span class="md-ellipsis"> Tutorial: setting up derivepassphrase vault for three accounts, with a master passphrase </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" > <div class="md-nav__link md-nav__container"> <a href="../reference/" class="md-nav__link "> <span class="md-ellipsis"> Reference </span> </a> <label class="md-nav__link " for="__nav_3" id="__nav_3_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_3"> <span class="md-nav__icon md-icon"></span> Reference </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../reference/derivepassphrase.1/" class="md-nav__link"> <span class="md-ellipsis"> Man page: derivepassphrase </span> </a> </li> <li class="md-nav__item"> <a href="../reference/derivepassphrase-vault.1/" class="md-nav__link"> <span class="md-ellipsis"> Man page: derivepassphrase-vault </span> </a> </li> <li class="md-nav__item"> <a href="../reference/derivepassphrase-export.1/" class="md-nav__link"> <span class="md-ellipsis"> Man page: derivepassphrase-export </span> </a> </li> <li class="md-nav__item"> <a href="../reference/derivepassphrase-export-vault.1/" class="md-nav__link"> <span class="md-ellipsis"> Man page: derivepassphrase-export-vault </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_6" > <label class="md-nav__link" for="__nav_3_6" id="__nav_3_6_label" tabindex="0"> <span class="md-ellipsis"> Module derivepassphrase </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_6_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_3_6"> <span class="md-nav__icon md-icon"></span> Module derivepassphrase </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../reference/derivepassphrase.cli/" class="md-nav__link"> <span class="md-ellipsis"> Submodule cli </span> </a> </li> <li class="md-nav__item"> <a href="../reference/derivepassphrase.exporter/" class="md-nav__link"> <span class="md-ellipsis"> Subpackage exporter </span> </a> </li> <li class="md-nav__item"> <a href="../reference/derivepassphrase.sequin/" class="md-nav__link"> <span class="md-ellipsis"> Submodule sequin </span> </a> </li> <li class="md-nav__item"> <a href="../reference/derivepassphrase.ssh_agent/" class="md-nav__link"> <span class="md-ellipsis"> Submodule ssh_agent </span> </a> </li> <li class="md-nav__item"> <a href="../reference/derivepassphrase._types/" class="md-nav__link"> <span class="md-ellipsis"> Submodule _types </span> </a> </li> <li class="md-nav__item"> <a href="../reference/derivepassphrase.vault/" class="md-nav__link"> <span class="md-ellipsis"> Submodule vault </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc"> <label class="md-nav__link md-nav__link--active" for="__toc"> <span class="md-ellipsis"> Changelog </span> <span class="md-nav__icon md-icon"></span> </label> <a href="./" class="md-nav__link md-nav__link--active"> <span class="md-ellipsis"> Changelog </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class="md-nav__title" for="__toc"> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> <li class="md-nav__item"> <a href="#031-2024-10-21" class="md-nav__link"> <span class="md-ellipsis"> 0.3.1 (2024-10-21) </span> </a> <nav class="md-nav" aria-label="0.3.1 (2024-10-21)"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#fixed" class="md-nav__link"> <span class="md-ellipsis"> Fixed </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#030-2024-10-15" class="md-nav__link"> <span class="md-ellipsis"> 0.3.0 (2024-10-15) </span> </a> <nav class="md-nav" aria-label="0.3.0 (2024-10-15)"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#added" class="md-nav__link"> <span class="md-ellipsis"> Added </span> </a> </li> <li class="md-nav__item"> <a href="#changed" class="md-nav__link"> <span class="md-ellipsis"> Changed </span> </a> </li> <li class="md-nav__item"> <a href="#fixed_1" class="md-nav__link"> <span class="md-ellipsis"> Fixed </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#020-2024-09-12" class="md-nav__link"> <span class="md-ellipsis"> 0.2.0 (2024-09-12) </span> </a> <nav class="md-nav" aria-label="0.2.0 (2024-09-12)"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#added_1" class="md-nav__link"> <span class="md-ellipsis"> Added </span> </a> </li> <li class="md-nav__item"> <a href="#fixed_2" class="md-nav__link"> <span class="md-ellipsis"> Fixed </span> </a> </li> <li class="md-nav__item"> <a href="#changed_1" class="md-nav__link"> <span class="md-ellipsis"> Changed </span> </a> </li> <li class="md-nav__item"> <a href="#deprecated" class="md-nav__link"> <span class="md-ellipsis"> Deprecated </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#013-2024-07-28" class="md-nav__link"> <span class="md-ellipsis"> 0.1.3 (2024-07-28) </span> </a> <nav class="md-nav" aria-label="0.1.3 (2024-07-28)"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#fixed_3" class="md-nav__link"> <span class="md-ellipsis"> Fixed </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#012-2024-07-22" class="md-nav__link"> <span class="md-ellipsis"> 0.1.2 (2024-07-22) </span> </a> <nav class="md-nav" aria-label="0.1.2 (2024-07-22)"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#fixed_4" class="md-nav__link"> <span class="md-ellipsis"> Fixed </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#011-2024-07-14" class="md-nav__link"> <span class="md-ellipsis"> 0.1.1 (2024-07-14) </span> </a> <nav class="md-nav" aria-label="0.1.1 (2024-07-14)"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#fixed_5" class="md-nav__link"> <span class="md-ellipsis"> Fixed </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#010-2024-07-14" class="md-nav__link"> <span class="md-ellipsis"> 0.1.0 (2024-07-14) </span> </a> <nav class="md-nav" aria-label="0.1.0 (2024-07-14)"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#added_2" class="md-nav__link"> <span class="md-ellipsis"> Added </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > <div class="md-sidebar__scrollwrap"> <div class="md-sidebar__inner"> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class="md-nav__title" for="__toc"> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> <li class="md-nav__item"> <a href="#031-2024-10-21" class="md-nav__link"> <span class="md-ellipsis"> 0.3.1 (2024-10-21) </span> </a> <nav class="md-nav" aria-label="0.3.1 (2024-10-21)"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#fixed" class="md-nav__link"> <span class="md-ellipsis"> Fixed </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#030-2024-10-15" class="md-nav__link"> <span class="md-ellipsis"> 0.3.0 (2024-10-15) </span> </a> <nav class="md-nav" aria-label="0.3.0 (2024-10-15)"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#added" class="md-nav__link"> <span class="md-ellipsis"> Added </span> </a> </li> <li class="md-nav__item"> <a href="#changed" class="md-nav__link"> <span class="md-ellipsis"> Changed </span> </a> </li> <li class="md-nav__item"> <a href="#fixed_1" class="md-nav__link"> <span class="md-ellipsis"> Fixed </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#020-2024-09-12" class="md-nav__link"> <span class="md-ellipsis"> 0.2.0 (2024-09-12) </span> </a> <nav class="md-nav" aria-label="0.2.0 (2024-09-12)"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#added_1" class="md-nav__link"> <span class="md-ellipsis"> Added </span> </a> </li> <li class="md-nav__item"> <a href="#fixed_2" class="md-nav__link"> <span class="md-ellipsis"> Fixed </span> </a> </li> <li class="md-nav__item"> <a href="#changed_1" class="md-nav__link"> <span class="md-ellipsis"> Changed </span> </a> </li> <li class="md-nav__item"> <a href="#deprecated" class="md-nav__link"> <span class="md-ellipsis"> Deprecated </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#013-2024-07-28" class="md-nav__link"> <span class="md-ellipsis"> 0.1.3 (2024-07-28) </span> </a> <nav class="md-nav" aria-label="0.1.3 (2024-07-28)"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#fixed_3" class="md-nav__link"> <span class="md-ellipsis"> Fixed </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#012-2024-07-22" class="md-nav__link"> <span class="md-ellipsis"> 0.1.2 (2024-07-22) </span> </a> <nav class="md-nav" aria-label="0.1.2 (2024-07-22)"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#fixed_4" class="md-nav__link"> <span class="md-ellipsis"> Fixed </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#011-2024-07-14" class="md-nav__link"> <span class="md-ellipsis"> 0.1.1 (2024-07-14) </span> </a> <nav class="md-nav" aria-label="0.1.1 (2024-07-14)"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#fixed_5" class="md-nav__link"> <span class="md-ellipsis"> Fixed </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#010-2024-07-14" class="md-nav__link"> <span class="md-ellipsis"> 0.1.0 (2024-07-14) </span> </a> <nav class="md-nav" aria-label="0.1.0 (2024-07-14)"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#added_2" class="md-nav__link"> <span class="md-ellipsis"> Added </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-content" data-md-component="content"> <article class="md-content__inner md-typeset"> <a href="https://github.com/the-13th-letter/derivepassphrase/raw/master/docs/changelog.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id="changelog-for-derivepassphrase">Changelog for <code>derivepassphrase</code><a class="headerlink" href="#changelog-for-derivepassphrase" title="Permanent link">¶</a></h1> <p><a href="https://keepachangelog.com/en/1.1.0/" title="Keeping a changelog"><img alt="Keeping a changelog" src="../Keep_a_changelog-E05735.svg" /></a> <a href="https://semver.org/" title="Using Semantic Versioning"><img alt="Using Semantic Versioning" src="../SemVer-3F4551.svg" /></a></p> <aside> <p><small> (All entries are from the perspective of a user, not a developer. The <q>public API</q>, as defined by Semantic Versioning, is outlined in the <a href="../reference/">Reference section</a>: the set of documented modules, classes, methods and functions, and the documented behavior, options and arguments of the command-line tools. As per the Semantic Versioning and the Keep a Changelog terminology, <q>Fixed</q> entries justify a <q>patch</q> release, <q>Added</q> and <q>Deprecated</q> entries a <q>minor</q> release, and <q>Changed</q> and <q>Removed</q> entries a <q>major</q> release. <q>Security</q> can justify any type of release; if <q>major</q> or <q>minor</q>, these are accompanied by corresponding entries of the respective types above. Again as per Semantic Versioning, at major version zero, the above justification is not yet binding, and <em>any</em> new release may effectively constitute a new <q>major</q> release.) </small></p> </aside> <!-- scriv changelog start --> <h2 id="031-2024-10-21">0.3.1 (2024-10-21)<a class="headerlink" href="#031-2024-10-21" title="Permanent link">¶</a></h2> <h3 id="fixed">Fixed<a class="headerlink" href="#fixed" title="Permanent link">¶</a></h3> <ul> <li>Improve the <a href="../tutorials/basic-setup-passphrase/">basic setup (passphrase)</a> tutorial. Also incorporate feedback.</li> <li>Fix PyPI classification: Python 3.9 is supported.</li> <li><em>Actually</em> remove the <code>derivepassphrase_export</code> program, which was turned into a subcommand in v0.2.0.</li> </ul> <h2 id="030-2024-10-15">0.3.0 (2024-10-15)<a class="headerlink" href="#030-2024-10-15" title="Permanent link">¶</a></h2> <h3 id="added">Added<a class="headerlink" href="#added" title="Permanent link">¶</a></h3> <ul> <li>Convert changelog management from towncrier to <a href="https://pypi.org/project/scriv">scriv</a>.</li> <li>Add SSH agent spawning support to the test suite. Use this support to test the agent functionality on all known major SSH agent implementations automatically. (<a href="https://github.com/the-13th-letter/derivepassphrase/issues/12">#12</a>)</li> <li>Add <a href="https://pypi.org/project/hypothesis/">hypothesis</a>-based tests to the test suite.</li> <li>Update README to add explanations for virtual environments and package extras.</li> <li>Update README to demonstrate configuration storing and SSH agent use. Include comments on Windows support for SSH agents.</li> <li>Use cross-references in the documentation of function signatures.</li> <li>Add proper support for Buffer types in the SSH agent client. Any Python object supporting the buffer protocol can be used as input to a function of the client, and any output from the client is returned as bytes objects. Because of the zero-copy semantics of the underlying data/memory block, this should stay relatively time- and space-efficient.</li> <li>Add <a href="https://pypi.org/project/hypothesis/">hypothesis</a>-based tests for serialization to and deserialization from the SSH agent wire format.</li> <li>Support Python 3.9 and 3.13.</li> </ul> <h3 id="changed">Changed<a class="headerlink" href="#changed" title="Permanent link">¶</a></h3> <ul> <li> <p>Change links to point to public project repositories, if possible. For legal reasons.</p> </li> <li> <p>Use the same filename/URL convention for API reference as the Python standard library does.</p> </li> <li> <p>Rewrite functionality for checking for valid vault(1) configurations: include an actual validation function which throws errors upon encountering format violations, and which allows specifying which types of extensions (unknown settings, <code>derivepassphrase</code>-only settings) to tolerate during validation.</p> <p>This is a <strong>breaking API change</strong> because the function return annotation changed, from <a class="autorefs autorefs-external" href="https://docs.python.org/3/library/typing.html#typing.TypeGuard"><code>typing.TypeGuard</code></a> to <a class="autorefs autorefs-external" href="https://typing-extensions.readthedocs.io/en/latest/index.html#typing_extensions.TypeIs"><code>typing_extensions.TypeIs</code></a>. These were the originally intended semantics, but when <code>derivepassphrase</code> was first designed, the Python type system did not support this kind of partial type narrowing.</p> </li> <li> <p>Fail earlier, and more gracefully/specifically, when we cannot talk to the SSH agent because Python does not support UNIX domain sockets on this system. In particular, this is the current situation on Windows.</p> <p>This adds another failure case to the <code>SSHAgentClient</code> constructor, and therefore constitutes a <strong>breaking API change</strong>.</p> </li> <li> <p>In <code>derivepassphrase vault</code>, accept <code>key</code> and <code>phrase</code> entries just like vault(1) does: <code>key</code> always overrides <code>phrase</code> in the configuration, no matter the level.</p> <p>This is a command-line only change.</p> </li> <li> <p>In <code>derivepassphrase vault</code>, when importing settings, accept falsy values everywhere <code>vault</code> does, with a warning. Depending on the setting, they are equivalent to zero, the empty string, or “not set”. (<a href="https://github.com/the-13th-letter/derivepassphrase/issues/17">#17</a>)</p> <p>This is a command-line only change, and only affects importing. The API provides a new function to normalize falsy settings, but still otherwise requires settings to be of the correct type. Storing a malformed configuration with such falsy values will still generate errors when <code>derivepassphrase vault</code> loads the settings from disk.</p> </li> <li> <p>In <code>derivepassphrase vault</code>, when importing configurations, correctly merge them with the existing one, same as vault(1): keep all named services and their settings (and the global settings if applicable) that are not mentioned in the imported configuration. The import procedure is thus more akin to a section-wise import of the configurations, instead of a “full” import, and the resulting configuration generally is a merge of both inputs. (<a href="https://github.com/the-13th-letter/derivepassphrase/issues/16">#16</a>)</p> </li> <li> <p>The following operations or configuration settings now raise warnings:</p> <ul> <li>in imported configurations: using falsy values of the wrong type</li> <li>in imported configurations: using falsy values with no practical effect</li> <li>setting a passphrase in the configuration if a key is already set</li> <li>using an empty service name on the command-line or in an imported configuration</li> </ul> </li> </ul> <h3 id="fixed_1">Fixed<a class="headerlink" href="#fixed_1" title="Permanent link">¶</a></h3> <ul> <li>Fixed the textual description of the return value for <a class="autorefs autorefs-internal" href="../reference/derivepassphrase.ssh_agent/#derivepassphrase.ssh_agent.SSHAgentClient.request"><code>SSHAgentClient.request</code></a>, which didn’t match the declared type annotation.</li> </ul> <h2 id="020-2024-09-12">0.2.0 (2024-09-12)<a class="headerlink" href="#020-2024-09-12" title="Permanent link">¶</a></h2> <h3 id="added_1">Added<a class="headerlink" href="#added_1" title="Permanent link">¶</a></h3> <ul> <li> <p>Support configuration data export from <code>vault</code> in v0.2, v0.3 and storeroom formats.</p> <p>This feature requires the <code>cryptography</code> Python module, but is available even if <code>vault</code> is not installed. (<a href="https://github.com/the-13th-letter/derivepassphrase/1">#1</a>)</p> </li> </ul> <h3 id="fixed_2">Fixed<a class="headerlink" href="#fixed_2" title="Permanent link">¶</a></h3> <ul> <li>Deploy versioned documentation with <a href="https://pypi.org/project/mike">mike</a>. Set up a “latest” tag and the “0.<var>x</var>” version of the documentation with the contents so far.</li> </ul> <h3 id="changed_1">Changed<a class="headerlink" href="#changed_1" title="Permanent link">¶</a></h3> <ul> <li>Changed <code>sequin</code> and <code>ssh_agent_client</code> to be submodules of <code>derivepassphrase</code>. Further moved <code>derivepassphrase.Vault</code> and <code>derivepassphrase.AmbiguousByteRepresentation</code> into a new submodule <code>vault</code>, and renamed submodule <code>ssh_agent_client</code> to <code>ssh_agent</code>. (<a href="https://github.com/the-13th-letter/derivepassphrase/3">#3</a>)</li> <li>Changed internal error handling and error messages, to better work in the context of a command-line tool. (<a href="https://github.com/the-13th-letter/derivepassphrase/4">#4</a>)</li> <li>Combine and consolidate <code>derivepassphrase.types</code> and <code>derivepassphrase.ssh_agent.types</code> into a new submodule <code>derivepassphrase._types</code>. Despite the name, the module is public. (<a href="https://github.com/the-13th-letter/derivepassphrase/7">#7</a>)</li> <li>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.) (<a href="https://github.com/the-13th-letter/derivepassphrase/9">#9</a>)</li> <li> <p>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.</p> <p>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. (<a href="https://github.com/the-13th-letter/derivepassphrase/10">#10</a>)</p> </li> <li> <p>Make <code>derivepassphrase_export</code> a subcommand: <code>derivepassphrase export</code>. (<a href="https://github.com/the-13th-letter/derivepassphrase/11">#11</a>)</p> </li> </ul> <h3 id="deprecated">Deprecated<a class="headerlink" href="#deprecated" title="Permanent link">¶</a></h3> <ul> <li>Using the implied subcommand or the implied global configuration file is deprecated, and will be removed in v1.0.</li> </ul> <h2 id="013-2024-07-28">0.1.3 (2024-07-28)<a class="headerlink" href="#013-2024-07-28" title="Permanent link">¶</a></h2> <h3 id="fixed_3">Fixed<a class="headerlink" href="#fixed_3" title="Permanent link">¶</a></h3> <ul> <li>Do not crash upon selecting a key on the command-line if there already is a key stored in the configuration. (<a href="https://github.com/the-13th-letter/derivepassphrase/5">#5</a>)</li> <li>Create the configuration directory upon saving, if it does not yet exist. (<a href="https://github.com/the-13th-letter/derivepassphrase/6">#6</a>)</li> <li>Isolate the tests properly and consistently from the user’s configuration, so that user configuration problems do not cause unrelated test failures. (<a href="https://github.com/the-13th-letter/derivepassphrase/8">#8</a>)</li> <li>Add an alternate MkDocs configuration for building the documentation in offline mode.</li> <li>Fix typing issues according to <code>mypy</code>’s strict mode.</li> </ul> <h2 id="012-2024-07-22">0.1.2 (2024-07-22)<a class="headerlink" href="#012-2024-07-22" title="Permanent link">¶</a></h2> <h3 id="fixed_4">Fixed<a class="headerlink" href="#fixed_4" title="Permanent link">¶</a></h3> <ul> <li>Include and exclude the correct files in the <code>sdist</code> and <code>wheel</code> distributions. (Previously, <code>sdist</code> contained VCS artifacts, and <code>wheel</code> was missing some paths.)</li> <li>Lint and reformat all code using <a href="https://pypi.org/package/ruff/">ruff</a>.</li> <li>Mention <a href="https://pypi.org/package/mkdocstrings-python/"><code>mkdocstrings-python</code></a> in the documentation’s page footer.</li> <li>Remove JavaScript and external font loading from documentation website, so that the site works even in restricted browser settings.</li> <li>Set up a changelog, using <a href="https://pypi.org/package/towncrier">towncrier</a>.</li> </ul> <h2 id="011-2024-07-14">0.1.1 (2024-07-14)<a class="headerlink" href="#011-2024-07-14" title="Permanent link">¶</a></h2> <h3 id="fixed_5">Fixed<a class="headerlink" href="#fixed_5" title="Permanent link">¶</a></h3> <ul> <li>Restore the <code>__version__</code> attribute in all top-level packages.</li> <li>Declare compatibility with Python 3.10 in project metadata, and include necessary version-specific dependencies.</li> <li>Publish the documentation online, and link to it in the repository metadata and the Python package metadata.</li> </ul> <h2 id="010-2024-07-14">0.1.0 (2024-07-14)<a class="headerlink" href="#010-2024-07-14" title="Permanent link">¶</a></h2> <h3 id="added_2">Added<a class="headerlink" href="#added_2" title="Permanent link">¶</a></h3> <ul> <li>Initial release.</li> </ul> </article> </div> </div> </main> <footer class="md-footer"> <nav class="md-footer__inner md-grid" aria-label="Footer" > <a href="../reference/derivepassphrase.vault/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Submodule vault"> <div class="md-footer__button md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </div> <div class="md-footer__title"> <span class="md-footer__direction"> Previous </span> <div class="md-ellipsis"> Submodule vault </div> </div> </a> </nav> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class="md-copyright"> <div class="md-copyright__highlight"> Copyright © 2024 Marco Ricci (the-13th-letter) </div> Made with <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> Material for MkDocs </a> and <a href="https://mkdocstrings.github.io/python/" target="_blank" rel="noopener"> mkdocstrings-python </a> </div> </div> </div> </footer> </div> <div class="md-dialog" data-md-component="dialog"> <div class="md-dialog__inner md-typeset"></div> </div> </body> </html>