Marco Ricci commited on 2025-06-17 20:20:31
Zeige 1 geänderte Dateien mit 144 Einfügungen und 124 Löschungen.
Turn all mentions of a command or subcommand name, or of an API member, into a link to that command's manpage or API member's API documentation. Furthermore, if a changelog entry refers to a bug or wishlist item, link to the respective item as well. Finally, collect and deduplicate all Markdown references at the bottom of the page.
| ... | ... |
@@ -42,16 +42,15 @@ As an exception, entries partaining to developers of `derivepassphrase` are |
| 42 | 42 |
specifically marked as such.) |
| 43 | 43 |
</small></aside> |
| 44 | 44 |
|
| 45 |
- [REFERENCE]: reference/index.md |
|
| 46 |
- |
|
| 47 | 45 |
<!-- scriv changelog start --> |
| 48 | 46 |
|
| 49 | 47 |
## 0.5 (2025-06-14) {#v0.5}
|
| 50 | 48 |
|
| 51 | 49 |
### Removed {#removed-in-v0.5}
|
| 52 | 50 |
|
| 53 |
- - For `derivepassphrase`, remove support for (automatic) colored output or |
|
| 54 |
- output with embedded text styling. |
|
| 51 |
+ - For [`derivepassphrase`][CLI], remove [support for (automatic) colored |
|
| 52 |
+ output or output with embedded text styling, as introduced in |
|
| 53 |
+ v0.4.0](#added-in-v0.4.0-color-support). |
|
| 55 | 54 |
|
| 56 | 55 |
This is a stopgap measure. |
| 57 | 56 |
There exist pseudo-standards (the `NO_COLOR` and `FORCE_COLOR` |
| ... | ... |
@@ -62,6 +61,7 @@ specifically marked as such.) |
| 62 | 61 |
requested or rejected reliably across different terminal programs, we |
| 63 | 62 |
will rather emit only uncolored, unstyled, lowest-common-denominator |
| 64 | 63 |
device-independent output. |
| 64 |
+ ([`conventional-configurable-text-styling`][WISH_CONVENTIONAL_CONFIGURABLE_TEXT_STYLING]) |
|
| 65 | 65 |
|
| 66 | 66 |
### Added {#added-in-v0.5}
|
| 67 | 67 |
|
| ... | ... |
@@ -74,10 +74,10 @@ specifically marked as such.) |
| 74 | 74 |
in vault?][INTERCHANGABLE_PASSPHRASES] for details, including the |
| 75 | 75 |
practical security (non-)implications. |
| 76 | 76 |
|
| 77 |
- The `derivepassphrase vault` command-line interface does not address |
|
| 78 |
- this in any manner, mostly because the "non-standard" interchangable |
|
| 79 |
- variants of a given master password tend to be ugly to type in, and |
|
| 80 |
- because they do not have practical security implications. |
|
| 77 |
+ The [`derivepassphrase vault`][CLI_VAULT] command-line interface does |
|
| 78 |
+ not address this in any manner, mostly because the "non-standard" |
|
| 79 |
+ interchangable variants of a given master password tend to be ugly to |
|
| 80 |
+ type in, and because they do not have practical security implications. |
|
| 81 | 81 |
|
| 82 | 82 |
- For the [`Vault`][derivepassphrase.vault.Vault] API, accept arbitrary |
| 83 | 83 |
[Buffer][collections.abc.Buffer] objects as passphrases or service |
| ... | ... |
@@ -87,23 +87,26 @@ specifically marked as such.) |
| 87 | 87 |
character sets][derivepassphrase.vault.Vault.CHARSETS] as public |
| 88 | 88 |
attributes. |
| 89 | 89 |
|
| 90 |
- - For `derivepassphrase vault`, support selecting the [editor |
|
| 90 |
+ - For [`derivepassphrase vault`][CLI_VAULT], support selecting the [editor |
|
| 91 | 91 |
interface](#changed-in-v0.5-editor-interface) when editing notes via the |
| 92 | 92 |
`--modern-editor-interface` and `--vault-legacy-editor-interface` |
| 93 | 93 |
options. |
| 94 | 94 |
|
| 95 |
- - For `derivepassphrase vault`, support printing the service notes before |
|
| 96 |
- the passphrase, as an alternative, instead of always printing them |
|
| 97 |
- *after* the passphrase. |
|
| 95 |
+ - For [`derivepassphrase vault`][CLI_VAULT], support printing the service |
|
| 96 |
+ notes before the passphrase, as an alternative, instead of always |
|
| 97 |
+ printing them *after* the passphrase. |
|
| 98 |
+ ([`print-service-notes-above`][WISH_PRINT_SERVICE_NOTES_ABOVE]) |
|
| 98 | 99 |
|
| 99 |
- - In the `--version` option of `derivepassphrase` and each subcommand, |
|
| 100 |
- additionally report build and environment information, such as |
|
| 101 |
- supported subcommands, derivation schemes, foreign configuration formats |
|
| 102 |
- and active [PEP 508 extras][PEP_508]. |
|
| 100 |
+ - In the `--version` option of [`derivepassphrase`][CLI] and each |
|
| 101 |
+ subcommand, additionally report build and environment information, such |
|
| 102 |
+ as supported subcommands, derivation schemes, foreign configuration |
|
| 103 |
+ formats and active [PEP 508 extras](https://peps.python.org/pep-0508/). |
|
| 103 | 104 |
(Each subcommand only reports the items relevant to that subcommand.) |
| 105 |
+ ([`report-build-flags-and-features`][WISH_REPORT_BUILD_FLAGS_AND_FEATURES]) |
|
| 104 | 106 |
|
| 105 |
- - For developers: Rewrite the tests concerning `derivepassphrase vault` |
|
| 106 |
- and `--notes` usage into [hypothesis][]-based tests where feasible. |
|
| 107 |
+ - For developers: Rewrite the tests concerning [`derivepassphrase |
|
| 108 |
+ vault`][CLI_VAULT] and `--notes` usage into [hypothesis][]-based tests |
|
| 109 |
+ where feasible. |
|
| 107 | 110 |
|
| 108 | 111 |
- For developers: Add scripts to the source tree to ensure consistent code |
| 109 | 112 |
quality: automatic linting, formatting and type checking, and optional |
| ... | ... |
@@ -111,10 +114,6 @@ specifically marked as such.) |
| 111 | 114 |
The master quality control script doubles as a servicable (but |
| 112 | 115 |
heavyweight) "pre-commit" hook for git. |
| 113 | 116 |
|
| 114 |
-[INTERCHANGABLE_PASSPHRASES]: explanation/faq-vault-interchangable-passphrases.md |
|
| 115 |
-[PEP_508]: https://peps.python.org/pep-0508/ |
|
| 116 |
-[hypothesis]: https://pypi.org/project/hypothesis/ |
|
| 117 |
- |
|
| 118 | 117 |
### Changed {#changed-in-v0.5}
|
| 119 | 118 |
|
| 120 | 119 |
- Support a new, unified interface |
| ... | ... |
@@ -148,9 +147,9 @@ specifically marked as such.) |
| 148 | 147 |
This is a **breaking API change** due to the removal of most functions |
| 149 | 148 |
from the [`derivepassphrase.cli`][] module. |
| 150 | 149 |
|
| 151 |
- - For `derivepassphrase vault`, change the handling of the notes for |
|
| 152 |
- better compatibility with <i>vault</i>(1) and for better internal |
|
| 153 |
- consistency: |
|
| 150 |
+ - For [`derivepassphrase vault`][CLI_VAULT], change the handling of the |
|
| 151 |
+ notes for better compatibility with <i>vault</i>(1) and for better |
|
| 152 |
+ internal consistency: |
|
| 154 | 153 |
|
| 155 | 154 |
1. Correctly require the `--config` option in addition to the `--notes` |
| 156 | 155 |
option to request that the service notes be edited, for |
| ... | ... |
@@ -161,10 +160,11 @@ specifically marked as such.) |
| 161 | 160 |
|
| 162 | 161 |
3. Editing the notes successfully in any way, including no-op edits, |
| 163 | 162 |
will register the service name as a known service to |
| 164 |
- `derivepassphrase vault`, even if the settings are otherwise empty. |
|
| 163 |
+ [`derivepassphrase vault`][CLI_VAULT], even if the settings are |
|
| 164 |
+ otherwise empty. |
|
| 165 | 165 |
|
| 166 |
- - For `derivepassphrase vault`, by default, use an <a |
|
| 167 |
- id="changed-in-v0.5-editor-interface">editor interface</a> that matches |
|
| 166 |
+ - For [`derivepassphrase vault`][CLI_VAULT], by default, use an <b |
|
| 167 |
+ id="changed-in-v0.5-editor-interface">editor interface</b> that matches |
|
| 168 | 168 |
<i>vault</i>(1): the contents of the edited text file are used directly |
| 169 | 169 |
as the service notes, without interpretation. |
| 170 | 170 |
|
| ... | ... |
@@ -188,32 +188,34 @@ specifically marked as such.) |
| 188 | 188 |
scheme about sensitivity (or lack thereof) to its inputs and its input |
| 189 | 189 |
formats. |
| 190 | 190 |
|
| 191 |
- - For developers: For `derivepassphrase vault`, store our `vault.json` |
|
| 192 |
- data file in pretty-printed form. |
|
| 191 |
+ - For developers: For [`derivepassphrase vault`][CLI_VAULT], store our |
|
| 192 |
+ `vault.json` data file in pretty-printed form. |
|
| 193 | 193 |
This is a stopgap measure to ease debugging and introspection until |
| 194 | 194 |
better built-in query functionality for the effective configuration is |
| 195 | 195 |
available, because users should not be rewarded for meddling around in |
| 196 |
- data files. ([#20]) |
|
| 197 |
- |
|
| 198 |
-[#20]: https://github.com/the-13th-letter/derivepassphrase/issues/20 |
|
| 199 |
-[hypothesis]: https://pypi.org/project/hypothesis/ |
|
| 196 |
+ data files. |
|
| 197 |
+ ([`pretty-print-json`][WISH_PRETTY_PRINT_JSON]) |
|
| 200 | 198 |
|
| 201 | 199 |
### Fixed {#fixed-in-v0.5}
|
| 202 | 200 |
|
| 203 | 201 |
- Fix the misbehaving shell completion for `zsh` in the presence of colons |
| 204 | 202 |
in the completion item. |
| 205 | 203 |
This was due to an overzealous workaround for |
| 206 |
- [`pallets/click#2703`][CLICK_2703]. |
|
| 204 |
+ [`pallets/click#2703`](https://github.com/pallets/click/issues/2703). |
|
| 207 | 205 |
|
| 208 |
- - For `derivepassphrase vault`, when exporting a vault configuration, |
|
| 209 |
- export a pretty-printed configuration, to ease debugging and |
|
| 210 |
- introspection. ([#20]) |
|
| 206 |
+ - For [`derivepassphrase vault`][CLI_VAULT], when exporting a vault |
|
| 207 |
+ configuration, export a pretty-printed configuration, to ease debugging |
|
| 208 |
+ and introspection. |
|
| 209 |
+ ([`pretty-print-json`][WISH_PRETTY_PRINT_JSON]) |
|
| 211 | 210 |
|
| 212 |
- - For `derivepassphrase vault`, also print the service notes (if any) when |
|
| 213 |
- deriving a service passphrase, just like vault(1) does. |
|
| 211 |
+ - For [`derivepassphrase vault`][CLI_VAULT], also print the service notes |
|
| 212 |
+ (if any) when deriving a service passphrase, just like <i>vault</i>(1) |
|
| 213 |
+ does. |
|
| 214 |
+ ([`print-service-notes`][BUG_PRINT_SERVICE_NOTES]) |
|
| 214 | 215 |
|
| 215 | 216 |
- Lock our internals and their configuration against concurrent |
| 216 |
- modifications. ([#22]) |
|
| 217 |
+ modifications. |
|
| 218 |
+ ([`concurrency-audit`][BUG_CONCURRENCY_AUDIT]) |
|
| 217 | 219 |
|
| 218 | 220 |
- Test against PyPy 3.11. |
| 219 | 221 |
|
| ... | ... |
@@ -243,22 +245,16 @@ specifically marked as such.) |
| 243 | 245 |
the locking system as a whole, when given functioning locking |
| 244 | 246 |
primitives, correctly serializes access to the facilities it is supposed |
| 245 | 247 |
to guard. |
| 246 |
- |
|
| 247 |
-[^the-annoying-os]: Hat tip---and apologies---to |
|
| 248 |
- [Timothée Mazzucotelli (`@pawamoy`)](https://github.com/pawamoy/) for |
|
| 249 |
- the fitting terminology. |
|
| 250 |
- |
|
| 251 |
-[#22]: https://github.com/the-13th-letter/derivepassphrase/issues/22 |
|
| 252 |
-[#23]: https://github.com/the-13th-letter/derivepassphrase/issues/23 |
|
| 253 |
-[CLICK_2703]: https://github.com/pallets/click/issues/2703 |
|
| 248 |
+ ([`concurrency-testing-in-test-suite`][BUG_CONCURRENCY_TESTING_IN_TEST_SUITE]) |
|
| 254 | 249 |
|
| 255 | 250 |
## 0.4.0 (2025-01-07) {#v0.4.0}
|
| 256 | 251 |
|
| 257 | 252 |
### Added {#added-in-v0.4.0}
|
| 258 | 253 |
|
| 259 |
- - For `derivepassphrase vault` and `derivepassphrase export vault`, |
|
| 260 |
- support changing the amount of diagnostic output we emit via new |
|
| 261 |
- command-line options `--debug`, `-v`/`--verbose` and `-q`/`--quiet`. |
|
| 254 |
+ - For [`derivepassphrase vault`][CLI_VAULT] and [`derivepassphrase export |
|
| 255 |
+ vault`][CLI_EXPORT_VAULT], support changing the amount of diagnostic |
|
| 256 |
+ output we emit via new command-line options `--debug`, `-v`/`--verbose` |
|
| 257 |
+ and `-q`/`--quiet`. |
|
| 262 | 258 |
Internally, we use Python's standard [logging][] and [warnings][] |
| 263 | 259 |
systems. |
| 264 | 260 |
|
| ... | ... |
@@ -266,19 +262,20 @@ specifically marked as such.) |
| 266 | 262 |
which are service-specific. |
| 267 | 263 |
(The `vault.json` configuration file is now rebranded as a data file.) |
| 268 | 264 |
The configuration files are user-editable, the data files are |
| 269 |
- `derivepassphrase`-editable. |
|
| 265 |
+ [`derivepassphrase`][CLI]-editable. |
|
| 270 | 266 |
|
| 271 | 267 |
The configuration files are in TOML format, so installing |
| 272 | 268 |
`derivepassphrase` on Python 3.10 and older requires the |
| 273 | 269 |
[`tomli`][tomli] package. |
| 274 | 270 |
|
| 275 |
- - For `derivepassphrase vault --config`, support an `--unset` option which |
|
| 276 |
- unsets any given named setting prior to applying any other configuration |
|
| 277 |
- changes. |
|
| 271 |
+ - For [`derivepassphrase vault --config`][CLI_VAULT], support an `--unset` |
|
| 272 |
+ option which unsets any given named setting prior to applying any other |
|
| 273 |
+ configuration changes. |
|
| 278 | 274 |
|
| 279 |
- - For `derivepassphrase vault --export`, support exporting the current |
|
| 280 |
- configuration as a POSIX `sh` script, using the `--export-as=sh` option. |
|
| 281 |
- The default (and previous behavior) is `--export-as=json`. |
|
| 275 |
+ - For [`derivepassphrase vault --export`][CLI_VAULT], support exporting |
|
| 276 |
+ the current configuration as a POSIX `sh` script, using the |
|
| 277 |
+ `--export-as=sh` option. The default (and previous behavior) is |
|
| 278 |
+ `--export-as=json`. |
|
| 282 | 279 |
|
| 283 | 280 |
- Include basic support for localization: if the necessary translations |
| 284 | 281 |
are installed, then the diagnostics and help texts can be emitted in |
| ... | ... |
@@ -287,9 +284,9 @@ specifically marked as such.) |
| 287 | 284 |
|
| 288 | 285 |
(As of this version, no translations have actually been prepared yet.) |
| 289 | 286 |
|
| 290 |
- - For `derivepassphrase`, explicitly support shell completion, in |
|
| 291 |
- particular filename and service name completion in the `export vault` |
|
| 292 |
- and `vault` subcommands. |
|
| 287 |
+ - For [`derivepassphrase`][CLI], explicitly support shell completion, in |
|
| 288 |
+ particular filename and service name completion in the [`export |
|
| 289 |
+ vault`][CLI_EXPORT_VAULT] and [`vault`][CLI_VAULT] subcommands. |
|
| 293 | 290 |
|
| 294 | 291 |
However, because of restrictions regarding the exchange of data between |
| 295 | 292 |
`derivepassphrase` and the shell, `derivepassphrase` will not offer any |
| ... | ... |
@@ -297,11 +294,10 @@ specifically marked as such.) |
| 297 | 294 |
a warning will be issued when importing or configuring such a service. |
| 298 | 295 |
They may still otherwise be used normally. |
| 299 | 296 |
|
| 300 |
- - Support the semi-standard `NO_COLOR` and the `FORCE_COLOR` environment |
|
| 301 |
- variables to suppress or force color output from `derivepassphrase`. |
|
| 302 |
- (`FORCE_COLOR` overrides `NO_COLOR` if both are set.) |
|
| 303 |
- |
|
| 304 |
-[tomli]: https://pypi.org/project/tomli/ |
|
| 297 |
+ - <b id="added-in-v0.4.0-color-support">Support the semi-standard |
|
| 298 |
+ `NO_COLOR` and the `FORCE_COLOR` environment variables</b> to suppress |
|
| 299 |
+ or force color output from [`derivepassphrase`][CLI]. (`FORCE_COLOR` |
|
| 300 |
+ overrides `NO_COLOR` if both are set.) |
|
| 305 | 301 |
|
| 306 | 302 |
### Changed {#changed-in-v0.4.0}
|
| 307 | 303 |
|
| ... | ... |
@@ -376,12 +372,13 @@ specifically marked as such.) |
| 376 | 372 |
- Add SSH agent spawning support to the test suite. |
| 377 | 373 |
Use this support to test the agent functionality on all known major SSH |
| 378 | 374 |
agent implementations automatically. |
| 379 |
- ([#12]) |
|
| 375 |
+ ([`test-suite-isolated-ssh-agent`][WISH_TEST_SUITE_ISOLATED_SSH_AGENT]) |
|
| 380 | 376 |
- Add [hypothesis][]-based tests to the test suite. |
| 381 | 377 |
- Update README to add explanations for virtual environments and package |
| 382 | 378 |
extras. |
| 383 | 379 |
- Update README to demonstrate configuration storing and SSH agent use. |
| 384 | 380 |
Include comments on Windows support for SSH agents. |
| 381 |
+ ([`windows-ssh-agent-support`][BUG_WINDOWS_SSH_AGENT_SUPPORT]) |
|
| 385 | 382 |
- Use cross-references in the documentation of function signatures. |
| 386 | 383 |
- Add proper support for Buffer types in the SSH agent client. |
| 387 | 384 |
Any Python object supporting the buffer protocol can be used as input to |
| ... | ... |
@@ -393,10 +390,6 @@ specifically marked as such.) |
| 393 | 390 |
deserialization from the SSH agent wire format. |
| 394 | 391 |
- Support Python 3.9 and 3.13. |
| 395 | 392 |
|
| 396 |
-[#12]: https://github.com/the-13th-letter/derivepassphrase/issues/12 |
|
| 397 |
-[hypothesis]: https://pypi.org/project/hypothesis/ |
|
| 398 |
-[scriv]: https://pypi.org/project/scriv |
|
| 399 |
- |
|
| 400 | 393 |
### Changed {#changed-in-v0.3.0}
|
| 401 | 394 |
|
| 402 | 395 |
- Change links to point to public project repositories, if possible. |
| ... | ... |
@@ -405,11 +398,11 @@ specifically marked as such.) |
| 405 | 398 |
- Use the same filename/URL convention for API reference as the Python |
| 406 | 399 |
standard library does. |
| 407 | 400 |
|
| 408 |
- - Rewrite functionality for checking for valid vault(1) configurations: |
|
| 409 |
- include an actual validation function which throws errors upon |
|
| 410 |
- encountering format violations, and which allows specifying which types |
|
| 411 |
- of extensions (unknown settings, `derivepassphrase`-only settings) to |
|
| 412 |
- tolerate during validation. |
|
| 401 |
+ - Rewrite functionality for checking for valid <i>vault</i>(1) |
|
| 402 |
+ configurations: include an actual validation function which throws |
|
| 403 |
+ errors upon encountering format violations, and which allows specifying |
|
| 404 |
+ which types of extensions (unknown settings, `derivepassphrase`-only |
|
| 405 |
+ settings) to tolerate during validation. |
|
| 413 | 406 |
|
| 414 | 407 |
This is a **breaking API change** because the function return annotation |
| 415 | 408 |
changed, from [`typing.TypeGuard`][] to [`typing_extensions.TypeIs`][]. |
| ... | ... |
@@ -421,37 +414,39 @@ specifically marked as such.) |
| 421 | 414 |
the SSH agent because Python does not support UNIX domain sockets on |
| 422 | 415 |
this system. |
| 423 | 416 |
In particular, this is the current situation on Windows. |
| 417 |
+ ([`fail-gracefully-without-af-unix`][BUG_FAIL_GRACEFULLY_WITHOUT_AF_UNIX], |
|
| 418 |
+ [`windows-ssh-agent-support`][BUG_WINDOWS_SSH_AGENT_SUPPORT]) |
|
| 424 | 419 |
|
| 425 | 420 |
This adds another failure case to the `SSHAgentClient` constructor, and |
| 426 | 421 |
therefore constitutes a **breaking API change**. |
| 427 | 422 |
|
| 428 |
- - In `derivepassphrase vault`, accept `key` and `phrase` entries just like |
|
| 429 |
- vault(1) does: `key` always overrides `phrase` in the configuration, no |
|
| 430 |
- matter the level. |
|
| 423 |
+ - In [`derivepassphrase vault`][CLI_VAULT], accept `key` and `phrase` |
|
| 424 |
+ entries just like <i>vault</i>(1) does: `key` always overrides `phrase` |
|
| 425 |
+ in the configuration, no matter the level. |
|
| 431 | 426 |
|
| 432 | 427 |
This is a command-line only change. |
| 433 | 428 |
|
| 434 |
- - In `derivepassphrase vault`, when importing settings, accept falsy values |
|
| 435 |
- everywhere `vault` does, with a warning. |
|
| 429 |
+ - In [`derivepassphrase vault`][CLI_VAULT], when importing settings, |
|
| 430 |
+ accept falsy values everywhere `vault` does, with a warning. |
|
| 436 | 431 |
Depending on the setting, they are equivalent to zero, the empty string, |
| 437 | 432 |
or "not set". |
| 438 |
- ([#17]) |
|
| 433 |
+ ([`falsy-vault-config-values`][BUG_FALSY_VAULT_CONFIG_VALUES]) |
|
| 439 | 434 |
|
| 440 | 435 |
This is a command-line only change, and only affects importing. |
| 441 | 436 |
The API provides a new function to normalize falsy settings, but still |
| 442 | 437 |
otherwise requires settings to be of the correct type. |
| 443 | 438 |
Storing a malformed configuration with such falsy values will still |
| 444 |
- generate errors when `derivepassphrase vault` loads the settings from |
|
| 445 |
- disk. |
|
| 439 |
+ generate errors when [`derivepassphrase vault`][CLI_VAULT] loads the |
|
| 440 |
+ settings from disk. |
|
| 446 | 441 |
|
| 447 |
- - In `derivepassphrase vault`, when importing configurations, |
|
| 448 |
- correctly merge them with the existing one, same as vault(1): keep |
|
| 449 |
- all named services and their settings (and the global settings if |
|
| 442 |
+ - In [`derivepassphrase vault`][CLI_VAULT], when importing configurations, |
|
| 443 |
+ correctly merge them with the existing one, same as <i>vault</i>(1): |
|
| 444 |
+ keep all named services and their settings (and the global settings if |
|
| 450 | 445 |
applicable) that are not mentioned in the imported configuration. |
| 451 | 446 |
The import procedure is thus more akin to a section-wise import of |
| 452 | 447 |
the configurations, instead of a "full" import, and the resulting |
| 453 | 448 |
configuration generally is a merge of both inputs. |
| 454 |
- ([#16]) |
|
| 449 |
+ ([`amend-vault-config`][BUG_AMEND_VAULT_CONFIG]) |
|
| 455 | 450 |
|
| 456 | 451 |
- The following operations or configuration settings now raise |
| 457 | 452 |
warnings: |
| ... | ... |
@@ -464,9 +459,6 @@ specifically marked as such.) |
| 464 | 459 |
* using an empty service name on the command-line or in an |
| 465 | 460 |
imported configuration |
| 466 | 461 |
|
| 467 |
-[#16]: https://github.com/the-13th-letter/derivepassphrase/issues/16 |
|
| 468 |
-[#17]: https://github.com/the-13th-letter/derivepassphrase/issues/17 |
|
| 469 |
- |
|
| 470 | 462 |
### Fixed {#fixed-in-v0.3.0}
|
| 471 | 463 |
|
| 472 | 464 |
- Fixed the textual description of the return value for |
| ... | ... |
@@ -482,9 +474,7 @@ specifically marked as such.) |
| 482 | 474 |
|
| 483 | 475 |
This feature requires the `cryptography` Python module, but is available |
| 484 | 476 |
even if `vault` is not installed. |
| 485 |
- ([#1]) |
|
| 486 |
- |
|
| 487 |
-[#1]: https://github.com/the-13th-letter/derivepassphrase/1 |
|
| 477 |
+ ([`export-vault-formats`][WISH_EXPORT_VAULT_FORMATS]) |
|
| 488 | 478 |
|
| 489 | 479 |
### Fixed {#fixed-in-v0.2.0}
|
| 490 | 480 |
|
| ... | ... |
@@ -492,8 +482,6 @@ specifically marked as such.) |
| 492 | 482 |
Set up a "latest" tag and the "0.<var>x</var>" version of the |
| 493 | 483 |
documentation with the contents so far. |
| 494 | 484 |
|
| 495 |
-[mike]: https://pypi.org/project/mike |
|
| 496 |
- |
|
| 497 | 485 |
### Changed {#changed-in-v0.2.0}
|
| 498 | 486 |
|
| 499 | 487 |
- Changed `sequin` and `ssh_agent_client` to be submodules of |
| ... | ... |
@@ -501,20 +489,20 @@ specifically marked as such.) |
| 501 | 489 |
Further moved `derivepassphrase.Vault` and |
| 502 | 490 |
`derivepassphrase.AmbiguousByteRepresentation` into a new submodule |
| 503 | 491 |
`vault`, and renamed submodule `ssh_agent_client` to `ssh_agent`. |
| 504 |
- ([#3]) |
|
| 492 |
+ ([`single-toplevel-module`][BUG_SINGLE_TOPLEVEL_MODULE]) |
|
| 505 | 493 |
- Changed internal error handling and error messages, to better work in |
| 506 | 494 |
the context of a command-line tool. |
| 507 |
- ([#4]) |
|
| 495 |
+ ([`better-error-messages`][BUG_BETTER_ERROR_MESSAGES]) |
|
| 508 | 496 |
- Combine and consolidate `derivepassphrase.types` and |
| 509 | 497 |
`derivepassphrase.ssh_agent.types` into a new submodule |
| 510 | 498 |
`derivepassphrase._types`. |
| 511 | 499 |
Despite the name, the module is public. |
| 512 |
- ([#7]) |
|
| 500 |
+ ([`no-stdlib-module-names`][BUG_NO_STDLIB_MODULE_NAMES]) |
|
| 513 | 501 |
- Warn the user when entering (directly, or via configuration |
| 514 | 502 |
editing/importing) a passphrase that is not in the configured Unicode |
| 515 | 503 |
normalization form. |
| 516 | 504 |
(But don't otherwise reject any textual master passphrases.) |
| 517 |
- ([#9]) |
|
| 505 |
+ ([`allow-all-unicode-passphrases`][BUG_ALLOW_ALL_UNICODE_PASSPHRASES]) |
|
| 518 | 506 |
- Move all existing functionality into a subcommand, in anticipation of |
| 519 | 507 |
other passphrase derivation schemes, with different settings. |
| 520 | 508 |
Automatically forward calls without a subcommand to the "vault" |
| ... | ... |
@@ -524,17 +512,12 @@ specifically marked as such.) |
| 524 | 512 |
instead of globally. |
| 525 | 513 |
Automatically fall back to, and migrate, the old global settings file if |
| 526 | 514 |
no subsystem-specific configuration was found. |
| 527 |
- ([#10]) |
|
| 528 |
- |
|
| 529 |
- - Make `derivepassphrase_export` a subcommand: `derivepassphrase export`. |
|
| 530 |
- ([#11]) |
|
| 515 |
+ ([`other-derivation-schemes`][WISH_OTHER_DERIVATION_SCHEMES], |
|
| 516 |
+ [`scheme-specific-cli-and-config`][WISH_SCHEME_SPECIFIC_CLI_AND_CONFIG]) |
|
| 531 | 517 |
|
| 532 |
-[#3]: https://github.com/the-13th-letter/derivepassphrase/3 |
|
| 533 |
-[#4]: https://github.com/the-13th-letter/derivepassphrase/4 |
|
| 534 |
-[#7]: https://github.com/the-13th-letter/derivepassphrase/7 |
|
| 535 |
-[#9]: https://github.com/the-13th-letter/derivepassphrase/9 |
|
| 536 |
-[#10]: https://github.com/the-13th-letter/derivepassphrase/10 |
|
| 537 |
-[#11]: https://github.com/the-13th-letter/derivepassphrase/11 |
|
| 518 |
+ - Make `derivepassphrase_export` a subcommand: [`derivepassphrase |
|
| 519 |
+ export`][CLI_EXPORT]. |
|
| 520 |
+ ([`exporter-script-as-subcommand`][WISH_EXPORTER_SCRIPT_AS_SUBCOMMAND]) |
|
| 538 | 521 |
|
| 539 | 522 |
### Deprecated {#deprecated-in-v0.2.0}
|
| 540 | 523 |
|
| ... | ... |
@@ -548,22 +531,18 @@ specifically marked as such.) |
| 548 | 531 |
|
| 549 | 532 |
- Do not crash upon selecting a key on the command-line if there already |
| 550 | 533 |
is a key stored in the configuration. |
| 551 |
- ([#5]) |
|
| 534 |
+ ([`one-time-key-override-fails`][BUG_ONE_TIME_KEY_OVERRIDE_FAILS]) |
|
| 552 | 535 |
- Create the configuration directory upon saving, if it does not yet |
| 553 | 536 |
exist. |
| 554 |
- ([#6]) |
|
| 537 |
+ ([`configuration-directory-must-exist`][BUG_CONFIGURATION_DIRECTORY_MUST_EXIST]) |
|
| 555 | 538 |
- Isolate the tests properly and consistently from the user's |
| 556 | 539 |
configuration, so that user configuration problems do not cause |
| 557 | 540 |
unrelated test failures. |
| 558 |
- ([#8]) |
|
| 541 |
+ ([`test-filesystem-isolation`][BUG_TEST_FILESYSTEM_ISOLATION]) |
|
| 559 | 542 |
- Add an alternate MkDocs configuration for building the documentation in |
| 560 | 543 |
offline mode. |
| 561 | 544 |
- Fix typing issues according to `mypy`'s strict mode. |
| 562 | 545 |
|
| 563 |
-[#5]: https://github.com/the-13th-letter/derivepassphrase/5 |
|
| 564 |
-[#6]: https://github.com/the-13th-letter/derivepassphrase/6 |
|
| 565 |
-[#8]: https://github.com/the-13th-letter/derivepassphrase/8 |
|
| 566 |
- |
|
| 567 | 546 |
|
| 568 | 547 |
## 0.1.2 (2024-07-22) {#v0.1.2}
|
| 569 | 548 |
|
| ... | ... |
@@ -573,14 +552,12 @@ specifically marked as such.) |
| 573 | 552 |
distributions. |
| 574 | 553 |
(Previously, `sdist` contained VCS artifacts, and `wheel` was missing |
| 575 | 554 |
some paths.) |
| 576 |
- - Lint and reformat all code using [ruff](https://pypi.org/package/ruff/). |
|
| 577 |
- - Mention |
|
| 578 |
- [`mkdocstrings-python`](https://pypi.org/package/mkdocstrings-python/) |
|
| 579 |
- in the documentation's page footer. |
|
| 555 |
+ - Lint and reformat all code using [ruff][]. |
|
| 556 |
+ - Mention [`mkdocstrings-python`][mkdocstrings-python] in the |
|
| 557 |
+ documentation's page footer. |
|
| 580 | 558 |
- Remove JavaScript and external font loading from documentation website, |
| 581 | 559 |
so that the site works even in restricted browser settings. |
| 582 |
- - Set up a changelog, using |
|
| 583 |
- [towncrier](https://pypi.org/package/towncrier). |
|
| 560 |
+ - Set up a changelog, using [towncrier][]. |
|
| 584 | 561 |
|
| 585 | 562 |
|
| 586 | 563 |
## 0.1.1 (2024-07-14) {#v0.1.1}
|
| ... | ... |
@@ -599,3 +576,46 @@ specifically marked as such.) |
| 599 | 576 |
### Added {#added-in-v0.1.0}
|
| 600 | 577 |
|
| 601 | 578 |
- Initial release. |
| 579 |
+ |
|
| 580 |
+[^the-annoying-os]: Hat tip---and apologies---to |
|
| 581 |
+ [Timothée Mazzucotelli (`@pawamoy`)](https://github.com/pawamoy/) for |
|
| 582 |
+ the fitting terminology. |
|
| 583 |
+ |
|
| 584 |
+[hypothesis]: https://pypi.org/project/hypothesis/ |
|
| 585 |
+[mike]: https://pypi.org/project/mike/ |
|
| 586 |
+[mkdocstrings-python]: https://pypi.org/project/mkdocstrings-python/ |
|
| 587 |
+[ruff]: https://pypi.org/project/ruff/ |
|
| 588 |
+[scriv]: https://pypi.org/project/scriv/ |
|
| 589 |
+[tomli]: https://pypi.org/project/tomli/ |
|
| 590 |
+[towncrier]: https://pypi.org/project/towncrier/ |
|
| 591 |
+ |
|
| 592 |
+[CLI]: reference/derivepassphrase.1.md |
|
| 593 |
+[CLI_EXPORT]: reference/derivepassphrase-export.1.md |
|
| 594 |
+[CLI_EXPORT_VAULT]: reference/derivepassphrase-export-vault.1.md |
|
| 595 |
+[CLI_VAULT]: reference/derivepassphrase-vault.1.md |
|
| 596 |
+[INTERCHANGABLE_PASSPHRASES]: explanation/faq-vault-interchangable-passphrases.md |
|
| 597 |
+[REFERENCE]: reference/index.md |
|
| 598 |
+ |
|
| 599 |
+[BUG_ALLOW_ALL_UNICODE_PASSPHRASES]: wishlist/allow-all-unicode-passphrases.md "Bug entry: “Allow all Unicode text strings as master passphrases”" |
|
| 600 |
+[BUG_AMEND_VAULT_CONFIG]: wishlist/amend-vault-config.md "Bug entry: “derivepassphrase vault --import overwrites config instead of amending it”" |
|
| 601 |
+[BUG_BETTER_ERROR_MESSAGES]: wishlist/better-error-messages.md "Bug entry: “Improve common error messages in the command-line interface”" |
|
| 602 |
+[BUG_CONCURRENCY_AUDIT]: wishlist/concurrency-audit.md "Bug entry: “Audit derivepassphrase for concurrency/thread-safety issues”" |
|
| 603 |
+[BUG_CONCURRENCY_TESTING_IN_TEST_SUITE]: wishlist/concurrency-testing-in-test-suite.md "Bug entry: “Test for concurrency and assert thread-safety in derivepassphrase's test suite”" |
|
| 604 |
+[BUG_CONFIGURATION_DIRECTORY_MUST_EXIST]: wishlist/configuration-directory-must-exist.md "Bug entry: “derivepassphrase --config requires configuration directory to exist”" |
|
| 605 |
+[BUG_FAIL_GRACEFULLY_WITHOUT_AF_UNIX]: wishlist/fail-gracefully-without-af-unix.md "Bug entry: “Fail gracefully if support for UNIX domain sockets is unavailable”" |
|
| 606 |
+[BUG_FALSY_VAULT_CONFIG_VALUES]: wishlist/falsy-vault-config-values.md "Bug entry: “derivepassphrase vault differs from vault(1) behavior with falsy stored configuration values”" |
|
| 607 |
+[BUG_NO_STDLIB_MODULE_NAMES]: wishlist/no-stdlib-module-names.md "Bug entry: “Rename types submodules to _types”" |
|
| 608 |
+[BUG_ONE_TIME_KEY_OVERRIDE_FAILS]: wishlist/one-time-key-override-fails.md "Bug entry: “derivepassphrase -k fails when overriding the chosen key on the command-line”" |
|
| 609 |
+[BUG_PRINT_SERVICE_NOTES]: wishlist/print-service-notes.md "Bug entry: “derivepassphrase vault does not print service notes”" |
|
| 610 |
+[BUG_SINGLE_TOPLEVEL_MODULE]: wishlist/single-toplevel-module.md "Bug entry: “Move sequin and ssh_agent_client modules into derivepassphrase package”" |
|
| 611 |
+[BUG_TEST_FILESYSTEM_ISOLATION]: wishlist/test-filesystem-isolation.md "Bug entry: “Isolate tests properly from the filesystem”" |
|
| 612 |
+[BUG_WINDOWS_SSH_AGENT_SUPPORT]: wishlist/windows-ssh-agent-support.md "Bug entry: “Support PuTTY/Pageant (and maybe OpenSSH/ssh-agent) on Windows”" |
|
| 613 |
+[WISH_CONVENTIONAL_CONFIGURABLE_TEXT_STYLING]: wishlist/conventional-configurable-text-styling.md "Wish entry: “derivepassphrase vault should support conventional and configurable text styling”" |
|
| 614 |
+[WISH_EXPORTER_SCRIPT_AS_SUBCOMMAND]: wishlist/exporter-script-as-subcommand.md "Wish entry: “Make the exporter a subcommand of derivepassphrase”" |
|
| 615 |
+[WISH_EXPORT_VAULT_FORMATS]: wishlist/export-vault-formats.md "Wish entry: “Support data export from vault v0.2, vault v0.3, and storeroom storage formats”" |
|
| 616 |
+[WISH_OTHER_DERIVATION_SCHEMES]: wishlist/other-derivation-schemes.md "Wish entry: “Consider implementing passphrase schemes other than vault's”" |
|
| 617 |
+[WISH_PRETTY_PRINT_JSON]: wishlist/pretty-print-json.md "Wish entry: “derivepassphrase vault should store and export the vault configuration in pretty-printed JSON”" |
|
| 618 |
+[WISH_PRINT_SERVICE_NOTES_ABOVE]: wishlist/print-service-notes-above.md "Wish entry: “derivepassphrase vault should be able to print service notes above the passphrase”" |
|
| 619 |
+[WISH_REPORT_BUILD_FLAGS_AND_FEATURES]: wishlist/report-build-flags-and-features.md "Wish entry: “derivepassphrase should report its build flags and supported features”" |
|
| 620 |
+[WISH_SCHEME_SPECIFIC_CLI_AND_CONFIG]: wishlist/scheme-specific-cli-and-config.md "Wish entry: “Move vault-specific command-line interface into a separate CLI subcommand and matching configuration file”" |
|
| 621 |
+[WISH_TEST_SUITE_ISOLATED_SSH_AGENT]: wishlist/test-suite-isolated-ssh-agent.md "Wish entry: “Support and isolate OpenSSH's ssh-agent and PuTTY's pageant in the test suite”" |
|
| 602 | 622 |