Use icons, not wishlist entry names, to link to the wishlist
Marco Ricci

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