Marco Ricci commited on 2025-06-17 22:27:50
              Zeige 3 geänderte Dateien mit 44 Einfügungen und 25 Löschungen.
            
The entry names are very verbose, and cannot be shortened to a number. So use a generic symbol instead: a bug for bugs, a giftbox for wishes. Also add a legend, and slightly adjust the vertical positioning of these icons.
| ... | ... | 
                      @@ -36,6 +36,13 @@  | 
                  
| 36 | 36 | 
                        or <b>minor</b>, these are accompanied by corresponding entries  | 
                    
| 37 | 37 | 
                        of the respective types above.  | 
                    
| 38 | 38 | 
                         | 
                    
| 39 | 
                        +!!! abstract inline end "Legend: symbols"  | 
                    |
| 40 | 
                        +  | 
                    |
| 41 | 
                        + <ul style="list-style-type: none;">  | 
                    |
| 42 | 
                        + <li>:material-bug: --- a related bug entry from the wishlist page  | 
                    |
| 43 | 
                        + <li>:material-gift: --- a related wishlist entry from the wishlist page  | 
                    |
| 44 | 
                        + </ul>  | 
                    |
| 45 | 
                        +  | 
                    |
| 39 | 46 | 
                        <aside markdown><small>  | 
                    
| 40 | 47 | 
                        (All entries are from the perspective of a user of the program or the API.  | 
                    
| 41 | 48 | 
                        As an exception, entries partaining to developers of `derivepassphrase` are  | 
                    
| ... | ... | 
                      @@ -61,7 +68,7 @@ specifically marked as such.)  | 
                  
| 61 | 68 | 
                        requested or rejected reliably across different terminal programs, we  | 
                    
| 62 | 69 | 
                        will rather emit only uncolored, unstyled, lowest-common-denominator  | 
                    
| 63 | 70 | 
                        device-independent output.  | 
                    
| 64 | 
                        - ([`conventional-configurable-text-styling`][WISH_CONVENTIONAL_CONFIGURABLE_TEXT_STYLING])  | 
                    |
| 71 | 
                        + →[:material-gift:][WISH_CONVENTIONAL_CONFIGURABLE_TEXT_STYLING]  | 
                    |
| 65 | 72 | 
                         | 
                    
| 66 | 73 | 
                         ### Added  {#added-in-v0.5}
                       | 
                    
| 67 | 74 | 
                         | 
                    
| ... | ... | 
                      @@ -95,14 +102,14 @@ specifically marked as such.)  | 
                  
| 95 | 102 | 
                        - For [`derivepassphrase vault`][CLI_VAULT], support printing the service  | 
                    
| 96 | 103 | 
                        notes before the passphrase, as an alternative, instead of always  | 
                    
| 97 | 104 | 
                        printing them *after* the passphrase.  | 
                    
| 98 | 
                        - ([`print-service-notes-above`][WISH_PRINT_SERVICE_NOTES_ABOVE])  | 
                    |
| 105 | 
                        + →[:material-gift:][WISH_PRINT_SERVICE_NOTES_ABOVE]  | 
                    |
| 99 | 106 | 
                         | 
                    
| 100 | 107 | 
                        - In the `--version` option of [`derivepassphrase`][CLI] and each  | 
                    
| 101 | 108 | 
                        subcommand, additionally report build and environment information, such  | 
                    
| 102 | 109 | 
                        as supported subcommands, derivation schemes, foreign configuration  | 
                    
| 103 | 110 | 
                        formats and active [PEP 508 extras](https://peps.python.org/pep-0508/).  | 
                    
| 104 | 111 | 
                        (Each subcommand only reports the items relevant to that subcommand.)  | 
                    
| 105 | 
                        - ([`report-build-flags-and-features`][WISH_REPORT_BUILD_FLAGS_AND_FEATURES])  | 
                    |
| 112 | 
                        + →[:material-gift:][WISH_REPORT_BUILD_FLAGS_AND_FEATURES]  | 
                    |
| 106 | 113 | 
                         | 
                    
| 107 | 114 | 
                        - For developers: Rewrite the tests concerning [`derivepassphrase  | 
                    
| 108 | 115 | 
                        vault`][CLI_VAULT] and `--notes` usage into [hypothesis][]-based tests  | 
                    
| ... | ... | 
                      @@ -194,7 +201,7 @@ specifically marked as such.)  | 
                  
| 194 | 201 | 
                        better built-in query functionality for the effective configuration is  | 
                    
| 195 | 202 | 
                        available, because users should not be rewarded for meddling around in  | 
                    
| 196 | 203 | 
                        data files.  | 
                    
| 197 | 
                        - ([`pretty-print-json`][WISH_PRETTY_PRINT_JSON])  | 
                    |
| 204 | 
                        + →[:material-gift:][WISH_PRETTY_PRINT_JSON]  | 
                    |
| 198 | 205 | 
                         | 
                    
| 199 | 206 | 
                         ### Fixed  {#fixed-in-v0.5}
                       | 
                    
| 200 | 207 | 
                         | 
                    
| ... | ... | 
                      @@ -206,16 +213,16 @@ specifically marked as such.)  | 
                  
| 206 | 213 | 
                        - For [`derivepassphrase vault`][CLI_VAULT], when exporting a vault  | 
                    
| 207 | 214 | 
                        configuration, export a pretty-printed configuration, to ease debugging  | 
                    
| 208 | 215 | 
                        and introspection.  | 
                    
| 209 | 
                        - ([`pretty-print-json`][WISH_PRETTY_PRINT_JSON])  | 
                    |
| 216 | 
                        + →[:material-gift:][WISH_PRETTY_PRINT_JSON]  | 
                    |
| 210 | 217 | 
                         | 
                    
| 211 | 218 | 
                        - For [`derivepassphrase vault`][CLI_VAULT], also print the service notes  | 
                    
| 212 | 219 | 
                        (if any) when deriving a service passphrase, just like <i>vault</i>(1)  | 
                    
| 213 | 220 | 
                        does.  | 
                    
| 214 | 
                        - ([`print-service-notes`][BUG_PRINT_SERVICE_NOTES])  | 
                    |
| 221 | 
                        + →[:material-bug:][BUG_PRINT_SERVICE_NOTES]  | 
                    |
| 215 | 222 | 
                         | 
                    
| 216 | 223 | 
                        - Lock our internals and their configuration against concurrent  | 
                    
| 217 | 224 | 
                        modifications.  | 
                    
| 218 | 
                        - ([`concurrency-audit`][BUG_CONCURRENCY_AUDIT])  | 
                    |
| 225 | 
                        + →[:material-bug:][BUG_CONCURRENCY_AUDIT]  | 
                    |
| 219 | 226 | 
                         | 
                    
| 220 | 227 | 
                        - Test against PyPy 3.11.  | 
                    
| 221 | 228 | 
                         | 
                    
| ... | ... | 
                      @@ -245,7 +252,7 @@ specifically marked as such.)  | 
                  
| 245 | 252 | 
                        the locking system as a whole, when given functioning locking  | 
                    
| 246 | 253 | 
                        primitives, correctly serializes access to the facilities it is supposed  | 
                    
| 247 | 254 | 
                        to guard.  | 
                    
| 248 | 
                        - ([`concurrency-testing-in-test-suite`][BUG_CONCURRENCY_TESTING_IN_TEST_SUITE])  | 
                    |
| 255 | 
                        + →[:material-bug:][BUG_CONCURRENCY_TESTING_IN_TEST_SUITE]  | 
                    |
| 249 | 256 | 
                         | 
                    
| 250 | 257 | 
                         ## 0.4.0 (2025-01-07)  {#v0.4.0}
                       | 
                    
| 251 | 258 | 
                         | 
                    
| ... | ... | 
                      @@ -372,13 +379,13 @@ specifically marked as such.)  | 
                  
| 372 | 379 | 
                        - Add SSH agent spawning support to the test suite.  | 
                    
| 373 | 380 | 
                        Use this support to test the agent functionality on all known major SSH  | 
                    
| 374 | 381 | 
                        agent implementations automatically.  | 
                    
| 375 | 
                        - ([`test-suite-isolated-ssh-agent`][WISH_TEST_SUITE_ISOLATED_SSH_AGENT])  | 
                    |
| 382 | 
                        + →[:material-gift:][WISH_TEST_SUITE_ISOLATED_SSH_AGENT]  | 
                    |
| 376 | 383 | 
                        - Add [hypothesis][]-based tests to the test suite.  | 
                    
| 377 | 384 | 
                        - Update README to add explanations for virtual environments and package  | 
                    
| 378 | 385 | 
                        extras.  | 
                    
| 379 | 386 | 
                        - Update README to demonstrate configuration storing and SSH agent use.  | 
                    
| 380 | 387 | 
                        Include comments on Windows support for SSH agents.  | 
                    
| 381 | 
                        - ([`windows-ssh-agent-support`][BUG_WINDOWS_SSH_AGENT_SUPPORT])  | 
                    |
| 388 | 
                        + →[:material-bug:][BUG_WINDOWS_SSH_AGENT_SUPPORT]  | 
                    |
| 382 | 389 | 
                        - Use cross-references in the documentation of function signatures.  | 
                    
| 383 | 390 | 
                        - Add proper support for Buffer types in the SSH agent client.  | 
                    
| 384 | 391 | 
                        Any Python object supporting the buffer protocol can be used as input to  | 
                    
| ... | ... | 
                      @@ -414,8 +421,8 @@ specifically marked as such.)  | 
                  
| 414 | 421 | 
                        the SSH agent because Python does not support UNIX domain sockets on  | 
                    
| 415 | 422 | 
                        this system.  | 
                    
| 416 | 423 | 
                        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 | 
                        + →[:material-bug:][BUG_FAIL_GRACEFULLY_WITHOUT_AF_UNIX]  | 
                    |
| 425 | 
                        + [:material-bug:][BUG_WINDOWS_SSH_AGENT_SUPPORT]  | 
                    |
| 419 | 426 | 
                         | 
                    
| 420 | 427 | 
                        This adds another failure case to the `SSHAgentClient` constructor, and  | 
                    
| 421 | 428 | 
                        therefore constitutes a **breaking API change**.  | 
                    
| ... | ... | 
                      @@ -430,7 +437,7 @@ specifically marked as such.)  | 
                  
| 430 | 437 | 
                        accept falsy values everywhere `vault` does, with a warning.  | 
                    
| 431 | 438 | 
                        Depending on the setting, they are equivalent to zero, the empty string,  | 
                    
| 432 | 439 | 
                        or "not set".  | 
                    
| 433 | 
                        - ([`falsy-vault-config-values`][BUG_FALSY_VAULT_CONFIG_VALUES])  | 
                    |
| 440 | 
                        + →[:material-bug:][BUG_FALSY_VAULT_CONFIG_VALUES]  | 
                    |
| 434 | 441 | 
                         | 
                    
| 435 | 442 | 
                        This is a command-line only change, and only affects importing.  | 
                    
| 436 | 443 | 
                        The API provides a new function to normalize falsy settings, but still  | 
                    
| ... | ... | 
                      @@ -446,7 +453,7 @@ specifically marked as such.)  | 
                  
| 446 | 453 | 
                        The import procedure is thus more akin to a section-wise import of  | 
                    
| 447 | 454 | 
                        the configurations, instead of a "full" import, and the resulting  | 
                    
| 448 | 455 | 
                        configuration generally is a merge of both inputs.  | 
                    
| 449 | 
                        - ([`amend-vault-config`][BUG_AMEND_VAULT_CONFIG])  | 
                    |
| 456 | 
                        + →[:material-bug:][BUG_AMEND_VAULT_CONFIG]  | 
                    |
| 450 | 457 | 
                         | 
                    
| 451 | 458 | 
                        - The following operations or configuration settings now raise  | 
                    
| 452 | 459 | 
                        warnings:  | 
                    
| ... | ... | 
                      @@ -474,7 +481,7 @@ specifically marked as such.)  | 
                  
| 474 | 481 | 
                         | 
                    
| 475 | 482 | 
                        This feature requires the `cryptography` Python module, but is available  | 
                    
| 476 | 483 | 
                        even if `vault` is not installed.  | 
                    
| 477 | 
                        - ([`export-vault-formats`][WISH_EXPORT_VAULT_FORMATS])  | 
                    |
| 484 | 
                        + →[:material-gift:][WISH_EXPORT_VAULT_FORMATS]  | 
                    |
| 478 | 485 | 
                         | 
                    
| 479 | 486 | 
                         ### Fixed  {#fixed-in-v0.2.0}
                       | 
                    
| 480 | 487 | 
                         | 
                    
| ... | ... | 
                      @@ -489,20 +496,20 @@ specifically marked as such.)  | 
                  
| 489 | 496 | 
                        Further moved `derivepassphrase.Vault` and  | 
                    
| 490 | 497 | 
                        `derivepassphrase.AmbiguousByteRepresentation` into a new submodule  | 
                    
| 491 | 498 | 
                        `vault`, and renamed submodule `ssh_agent_client` to `ssh_agent`.  | 
                    
| 492 | 
                        - ([`single-toplevel-module`][BUG_SINGLE_TOPLEVEL_MODULE])  | 
                    |
| 499 | 
                        + →[:material-bug:][BUG_SINGLE_TOPLEVEL_MODULE]  | 
                    |
| 493 | 500 | 
                        - Changed internal error handling and error messages, to better work in  | 
                    
| 494 | 501 | 
                        the context of a command-line tool.  | 
                    
| 495 | 
                        - ([`better-error-messages`][BUG_BETTER_ERROR_MESSAGES])  | 
                    |
| 502 | 
                        + →[:material-bug:][BUG_BETTER_ERROR_MESSAGES]  | 
                    |
| 496 | 503 | 
                        - Combine and consolidate `derivepassphrase.types` and  | 
                    
| 497 | 504 | 
                        `derivepassphrase.ssh_agent.types` into a new submodule  | 
                    
| 498 | 505 | 
                        `derivepassphrase._types`.  | 
                    
| 499 | 506 | 
                        Despite the name, the module is public.  | 
                    
| 500 | 
                        - ([`no-stdlib-module-names`][BUG_NO_STDLIB_MODULE_NAMES])  | 
                    |
| 507 | 
                        + →[:material-bug:][BUG_NO_STDLIB_MODULE_NAMES]  | 
                    |
| 501 | 508 | 
                        - Warn the user when entering (directly, or via configuration  | 
                    
| 502 | 509 | 
                        editing/importing) a passphrase that is not in the configured Unicode  | 
                    
| 503 | 510 | 
                        normalization form.  | 
                    
| 504 | 511 | 
                        (But don't otherwise reject any textual master passphrases.)  | 
                    
| 505 | 
                        - ([`allow-all-unicode-passphrases`][BUG_ALLOW_ALL_UNICODE_PASSPHRASES])  | 
                    |
| 512 | 
                        + →[:material-bug:][BUG_ALLOW_ALL_UNICODE_PASSPHRASES]  | 
                    |
| 506 | 513 | 
                        - Move all existing functionality into a subcommand, in anticipation of  | 
                    
| 507 | 514 | 
                        other passphrase derivation schemes, with different settings.  | 
                    
| 508 | 515 | 
                        Automatically forward calls without a subcommand to the "vault"  | 
                    
| ... | ... | 
                      @@ -512,12 +519,12 @@ specifically marked as such.)  | 
                  
| 512 | 519 | 
                        instead of globally.  | 
                    
| 513 | 520 | 
                        Automatically fall back to, and migrate, the old global settings file if  | 
                    
| 514 | 521 | 
                        no subsystem-specific configuration was found.  | 
                    
| 515 | 
                        - ([`other-derivation-schemes`][WISH_OTHER_DERIVATION_SCHEMES],  | 
                    |
| 516 | 
                        - [`scheme-specific-cli-and-config`][WISH_SCHEME_SPECIFIC_CLI_AND_CONFIG])  | 
                    |
| 522 | 
                        + →[:material-gift:][WISH_OTHER_DERIVATION_SCHEMES]  | 
                    |
| 523 | 
                        + [:material-gift:][WISH_SCHEME_SPECIFIC_CLI_AND_CONFIG]  | 
                    |
| 517 | 524 | 
                         | 
                    
| 518 | 525 | 
                        - Make `derivepassphrase_export` a subcommand: [`derivepassphrase  | 
                    
| 519 | 526 | 
                        export`][CLI_EXPORT].  | 
                    
| 520 | 
                        - ([`exporter-script-as-subcommand`][WISH_EXPORTER_SCRIPT_AS_SUBCOMMAND])  | 
                    |
| 527 | 
                        + →[:material-gift:][WISH_EXPORTER_SCRIPT_AS_SUBCOMMAND]  | 
                    |
| 521 | 528 | 
                         | 
                    
| 522 | 529 | 
                         ### Deprecated  {#deprecated-in-v0.2.0}
                       | 
                    
| 523 | 530 | 
                         | 
                    
| ... | ... | 
                      @@ -531,14 +538,14 @@ specifically marked as such.)  | 
                  
| 531 | 538 | 
                         | 
                    
| 532 | 539 | 
                        - Do not crash upon selecting a key on the command-line if there already  | 
                    
| 533 | 540 | 
                        is a key stored in the configuration.  | 
                    
| 534 | 
                        - ([`one-time-key-override-fails`][BUG_ONE_TIME_KEY_OVERRIDE_FAILS])  | 
                    |
| 541 | 
                        + →[:material-bug:][BUG_ONE_TIME_KEY_OVERRIDE_FAILS]  | 
                    |
| 535 | 542 | 
                        - Create the configuration directory upon saving, if it does not yet  | 
                    
| 536 | 543 | 
                        exist.  | 
                    
| 537 | 
                        - ([`configuration-directory-must-exist`][BUG_CONFIGURATION_DIRECTORY_MUST_EXIST])  | 
                    |
| 544 | 
                        + →[:material-bug:][BUG_CONFIGURATION_DIRECTORY_MUST_EXIST]  | 
                    |
| 538 | 545 | 
                        - Isolate the tests properly and consistently from the user's  | 
                    
| 539 | 546 | 
                        configuration, so that user configuration problems do not cause  | 
                    
| 540 | 547 | 
                        unrelated test failures.  | 
                    
| 541 | 
                        - ([`test-filesystem-isolation`][BUG_TEST_FILESYSTEM_ISOLATION])  | 
                    |
| 548 | 
                        + →[:material-bug:][BUG_TEST_FILESYSTEM_ISOLATION]  | 
                    |
| 542 | 549 | 
                        - Add an alternate MkDocs configuration for building the documentation in  | 
                    
| 543 | 550 | 
                        offline mode.  | 
                    
| 544 | 551 | 
                        - Fix typing issues according to `mypy`'s strict mode.  | 
                    
| ... | ... | 
                      @@ -32,3 +32,12 @@ a.fixed {
                     | 
                  
| 32 | 32 | 
                        font-style: normal;  | 
                    
| 33 | 33 | 
                        text-decoration: line-through;  | 
                    
| 34 | 34 | 
                        }  | 
                    
| 35 | 
                        +  | 
                    |
| 36 | 
                        +.md-typeset div.admonition.abstract .emojione,  | 
                    |
| 37 | 
                        +.md-typeset div.admonition.abstract .gemoji,  | 
                    |
| 38 | 
                        +.md-typeset div.admonition.abstract .twemoji,  | 
                    |
| 39 | 
                        +.md-typeset a[href^="wishlist/"] .emojione,  | 
                    |
| 40 | 
                        +.md-typeset a[href^="wishlist/"] .gemoji,  | 
                    |
| 41 | 
                        +.md-typeset a[href^="wishlist/"] .twemoji {
                       | 
                    |
| 42 | 
                        + vertical-align: middle;  | 
                    |
| 43 | 
                        +}  | 
                    
| ... | ... | 
                      @@ -143,6 +143,9 @@ markdown_extensions:  | 
                  
| 143 | 143 | 
                        permalink: true  | 
                    
| 144 | 144 | 
                        - pymdownx.caret  | 
                    
| 145 | 145 | 
                        - pymdownx.details  | 
                    
| 146 | 
                        + - pymdownx.emoji:  | 
                    |
| 147 | 
                        + emoji_index: !!python/name:material.extensions.emoji.twemoji  | 
                    |
| 148 | 
                        + emoji_generator: !!python/name:material.extensions.emoji.to_svg  | 
                    |
| 146 | 149 | 
                        - pymdownx.snippets:  | 
                    
| 147 | 150 | 
                        base_path:  | 
                    
| 148 | 151 | 
                        - 'docs'  | 
                    
| 149 | 152 |