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 |