1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
|
# Manual screenshot manifest. Paths in `doc` are relative to the Manual repo;
# paths in `sources` and `global_sources` are relative to the GpgFrontend repo.
# Frame sizes are logical pixels and are scaled by the capture DPR (2).
#
# Phase 1 entries first, then Phase 2 batches. Nothing has been applied yet.
defaults:
platform: windows11
locale: en_US
theme: light
size: 1280x960
fonts: ["Noto Sans", "Noto Sans CJK SC"]
clock: "2026-01-15T10:00:00Z"
timeout_ms: 30000
frame: {radius: 8, shadow: 12, padding: 24}
diff: {tolerance: 16, threshold: 0.001}
preview_platforms: [linux-xvfb]
global_sources:
- src/screenshot/
- resource/screenshot/
- scripts/screenshot/
entries:
- id: main-window
doc: src/content/docs/guides/understand-interface.mdx
ref: img-1 # the window tour at the top of the page
scenario: main-window
size: 1280x960
sources:
- src/ui/main_window/
- src/ui/widgets/
- src/core/utils/GpgUtils.cpp
- id: key-generate-dialog
doc: src/content/docs/guides/generate-key.md
ref: img-1 # "Step 1: Open the Generate Key Dialog"
scenario: key-generate-dialog
size: auto # natural dialog size
sources:
- src/ui/dialog/key_generate/
- src/core/model/GpgKeyGenerateInfo.cpp
- id: text-decrypt-verify-result
doc: src/content/docs/guides/text-operations.md
ref: img-1 # page header image; img-3/img-5 are animated GIFs
scenario: text-decrypt-verify-result
size: 1280x960
sources:
- src/ui/main_window/
- src/ui/widgets/
highlight: InfoBoardWidget
- id: main-window-menu-popup
doc: src/content/docs/guides/key-server-operations.md
ref: img-1 # "click Keys in the menu bar, then Import Key"
scenario: main-window-menu-popup
size: 1280x960
sources:
- src/ui/main_window/
highlight: {name: importKeyFromKeyServer, style: arrow}
# Phase 2, batch 1: Key Details, owner trust and revocation.
- id: key-details-overview
doc: src/content/docs/guides/view-keypair-info.md
ref: img-1 # the Key Details window
scenario: key-details-keypair
size: auto
sources: [src/ui/dialog/keypair_details/]
- id: key-details-owner
doc: src/content/docs/guides/view-keypair-info.md
ref: img-2 # "Owner"
scenario: key-details-keypair
size: auto
crop: ownerBox
sources: [src/ui/dialog/keypair_details/]
- id: key-details-primary-key
doc: src/content/docs/guides/view-keypair-info.md
ref: img-3 # "Primary Key"
scenario: key-details-keypair
size: auto
crop: primaryKeyBox
sources: [src/ui/dialog/keypair_details/]
- id: key-details-algorithm-detail
doc: src/content/docs/guides/view-keypair-info.md
ref: img-4 # "Algorithm Detail"
scenario: key-details-keypair
size: auto
crop: primaryKeyBox
highlight: algorithmDetail
sources: [src/ui/dialog/keypair_details/]
- id: key-details-fingerprint
doc: src/content/docs/guides/view-keypair-info.md
ref: img-5 # "Fingerprint"
scenario: key-details-keypair
size: auto
crop: fingerprintBox
sources: [src/ui/dialog/keypair_details/]
- id: key-details-uids
doc: src/content/docs/guides/view-keypair-info.md
ref: img-6 # "UID Info"
scenario: key-details-uids
size: auto
sources: [src/ui/dialog/keypair_details/]
- id: key-details-uid-signatures
doc: src/content/docs/guides/view-keypair-info.md
ref: img-7 # "Signatures on a UID"
scenario: key-details-uids
size: auto
crop: uidSignatureBox
sources: [src/ui/dialog/keypair_details/]
- id: key-details-keychain
doc: src/content/docs/guides/view-keypair-info.md
ref: img-8 # "Subkey Info"
scenario: key-details-keychain
size: auto
sources: [src/ui/dialog/keypair_details/]
- id: key-details-operations-public
doc: src/content/docs/guides/view-keypair-info.md
ref: img-9 # "On a Public Key"
scenario: key-details-operations-public
size: auto
sources: [src/ui/dialog/keypair_details/]
- id: key-details-operations-private
doc: src/content/docs/guides/view-keypair-info.md
ref: img-10 # "On a Private Key"
scenario: key-details-operations
size: auto
sources: [src/ui/dialog/keypair_details/]
- id: owner-trust-column
doc: src/content/docs/guides/openpgp-trust-manage.md
ref: img-1 # "Owner Trust": the Trust column in KeyPair Management
scenario: key-management-window
size: 1200x760
highlight: trustColumn
sources: [src/ui/main_window/, src/core/model/GpgKeyTableModel.cpp]
- id: owner-trust-context-menu
doc: src/content/docs/guides/openpgp-trust-manage.md
ref: img-2 # "How to set Owner Trust"
scenario: key-context-menu
highlight: {name: setOwnerTrustLevel, style: arrow}
sources: [src/ui/main_window/]
- id: uid-signatures-highlighted
doc: src/content/docs/guides/openpgp-trust-manage.md
ref: img-3 # "Signing UIDs"
scenario: key-details-uids
size: auto
highlight: uidSignatureBox
sources: [src/ui/dialog/keypair_details/]
- id: revoke-certificate-button
doc: src/content/docs/advanced/key-revocation.mdx
ref: img-1 # "Generating a Key Revocation Certificate"
scenario: key-details-operations
size: auto
highlight: revokeCertificateButton
sources: [src/ui/dialog/keypair_details/]
- id: revocation-options
doc: src/content/docs/advanced/key-revocation.mdx
ref: img-2 # the reason code and text
scenario: revocation-options-dialog
size: auto
sources: [src/ui/dialog/RevocationOptionsDialog.cpp, src/ui/function/GenerateRevocationCert.cpp]
- id: revoked-key-details
doc: src/content/docs/advanced/key-revocation.mdx
ref: img-3 # a revoked key in Key Details
scenario: key-details-revoked
size: auto
sources: [src/ui/dialog/keypair_details/, src/ui/main_window/]
# Phase 2, batch 2: key management, categories, groups, import and export.
- id: key-management
doc: src/content/docs/guides/key-management.mdx
ref: img-1 # the KeyPair Management window
scenario: key-management-window
size: 1200x760
sources: [src/ui/main_window/, src/ui/widgets/]
- id: key-categories
doc: src/content/docs/guides/key-categories.mdx
ref: img-1 # "Where to Find Them"
scenario: key-management-window
size: 1200x760
highlight: KeyCategoryList
sources: [src/ui/main_window/, src/ui/widgets/]
- id: import-key-toolbar
doc: src/content/docs/guides/import-export-key-pair.md
ref: img-1 # Import on the main toolbar
scenario: main-window
highlight: importKeyButton
sources: [src/ui/main_window/, src/ui/widgets/]
- id: import-key-key-management
doc: src/content/docs/guides/import-export-key-pair.md
ref: img-2 # Import Key in KeyPair Management
scenario: key-management-window
size: 1200x760
highlight: importKeyButton
sources: [src/ui/main_window/, src/ui/widgets/]
- id: export-public-key
doc: src/content/docs/guides/import-export-key-pair.md
ref: img-3 # "Save to a File"
scenario: key-details-operations
size: auto
highlight: exportPublicKeyButton
sources: [src/ui/dialog/keypair_details/]
- id: export-checked-keys
doc: src/content/docs/guides/import-export-key-pair.md
ref: img-4 # "Export Several at Once"
scenario: key-management-checked
size: 1200x760
highlight: [checkColumn, exportKeyButton]
sources: [src/ui/main_window/, src/ui/widgets/]
- id: export-private-key
doc: src/content/docs/guides/import-export-key-pair.md
ref: img-5 # "Export a Private Key"
scenario: key-details-operations
size: auto
highlight: exportPrivateKeyButton
sources: [src/ui/dialog/keypair_details/]
- id: key-group-checked-keys
doc: src/content/docs/guides/key-group.md
ref: img-1 # tick the keys, then the new-group button
scenario: main-window-checked-keys
highlight: [checkColumn, keyGroupButton]
sources: [src/ui/main_window/, src/ui/widgets/]
- id: key-group-create
doc: src/content/docs/guides/key-group.md
ref: img-2 # the New Key Group dialog
scenario: key-group-create-dialog
size: auto
sources: [src/ui/dialog/KeyGroupCreationDialog.cpp, src/ui/widgets/KeyList.cpp]
- id: key-group-manage
doc: src/content/docs/guides/key-group.md
ref: img-3 # "Edit a group"
scenario: key-group-manage-dialog
size: auto
sources: [src/ui/dialog/KeyGroupManageDialog.cpp]
# Phase 2, batch 3: main window operations, files and symmetric encryption.
# The former animations are stills of the moment that matters; encrypting
# is shown before the click, since its output differs on every run.
- id: index-main-window
doc: src/content/docs/index.mdx
ref: img-1 # "See GpgFrontend in Action"
scenario: text-decrypt-verify-result
sources: [src/ui/main_window/, src/ui/widgets/]
- id: text-encrypt
doc: src/content/docs/guides/text-operations.md
ref: img-2 # "Encrypt Text"
scenario: text-encrypt-ready
highlight: [checkColumn, encryptButton]
sources: [src/ui/main_window/, src/ui/widgets/]
- id: text-decrypt
doc: src/content/docs/guides/text-operations.md
ref: img-3 # "Decrypt Text"
scenario: text-decrypt-result
highlight: InfoBoardWidget
sources: [src/ui/main_window/, src/ui/widgets/]
- id: text-sign
doc: src/content/docs/guides/text-operations.md
ref: img-4 # "Sign Text"
scenario: text-sign-result
highlight: InfoBoardWidget
sources: [src/ui/main_window/, src/ui/widgets/]
- id: text-verify
doc: src/content/docs/guides/text-operations.md
ref: img-5 # "Verify a Signature"
scenario: text-verify-result
highlight: InfoBoardWidget
sources: [src/ui/main_window/, src/ui/widgets/]
- id: settings-sym-encrypt
doc: src/content/docs/guides/symmetric-encrypt-decrypt.mdx
ref: img-1 # Appearance > Toolbar > Sym. Encrypt
scenario: settings-sym-encrypt
size: 900x660
highlight: symmetricEncrCheckBox
sources: [src/ui/dialog/settings/]
- id: sym-encrypt-button
doc: src/content/docs/guides/symmetric-encrypt-decrypt.mdx
ref: img-2 # the Encrypt button, which holds Sym. Encrypt
scenario: sym-encrypt-button
highlight: symEncryptButton
sources: [src/ui/main_window/]
- id: file-panel-open
doc: src/content/docs/guides/file-operations.md
ref: img-1 # a file picked in the File Panel
scenario: file-panel
highlight: [openButton, fileTree]
sources: [src/ui/main_window/, src/ui/widgets/]
- id: file-panel-workspace-menu
doc: src/content/docs/guides/file-operations.md
ref: img-2 # Workspace > New File Panel
scenario: workspace-menu
highlight: newFilePanel
sources: [src/ui/main_window/]
- id: file-encrypt
doc: src/content/docs/guides/file-operations.md
ref: img-3 # encrypting a file
scenario: file-panel
highlight: [checkColumn, encryptButton]
sources: [src/ui/main_window/, src/ui/widgets/]
- id: file-decrypt-verify
doc: src/content/docs/guides/file-operations.md
ref: img-4 # decrypting and verifying a file
scenario: file-decrypt-verify-result
highlight: InfoBoardWidget
sources: [src/ui/main_window/, src/ui/widgets/]
- id: file-batch-mode-button
doc: src/content/docs/guides/file-operations.md
ref: img-5 # the batch mode button
scenario: file-batch
crop: fileToolRow
highlight: batchModeButton
sources: [src/ui/widgets/]
- id: file-batch-mode
doc: src/content/docs/guides/file-operations.md
ref: img-6 # several files at once
scenario: file-batch
highlight: [fileTree, encryptButton]
sources: [src/ui/main_window/, src/ui/widgets/]
- id: settings-binary-mode
doc: src/content/docs/guides/file-operations.md
ref: img-7 # Settings > General > Use Binary Mode
scenario: settings-binary-mode
size: 900x660
highlight: asciiModeCheckBox
sources: [src/ui/dialog/settings/]
- id: file-options-ascii-armor
doc: src/content/docs/guides/file-operations.md
ref: img-8 # options menu > Use ASCII Armor
scenario: file-options-menu
crop: optionsArea
highlight: useAsciiArmor
sources: [src/ui/widgets/]
- id: sym-encrypt-menu
doc: src/content/docs/guides/symmetric-encrypt-decrypt.mdx
ref: img-3 # running it: the encrypt button's Sym. Encrypt entry
scenario: sym-encrypt-menu
highlight: symEncrypt
sources: [src/ui/main_window/]
# Phase 2, batch 4: subkeys, key packages, the key server and build info.
# The key server is render.py's local mock (hkpmock.py), reached through a
# proxy as http://keys.example.org; nothing leaves the machine.
- id: subkey-new-subkey
doc: src/content/docs/guides/generate-use-subkey.md
ref: img-1 # Keychain tab > New Subkey
scenario: key-details-keychain
size: auto
highlight: newSubkeyButton
sources: [src/ui/dialog/keypair_details/]
- id: subkey-generate
doc: src/content/docs/guides/generate-use-subkey.md
ref: img-2 # the Generate New Subkey window
scenario: subkey-generate-dialog
size: auto
sources: [src/ui/dialog/key_generate/]
- id: subkey-export
doc: src/content/docs/guides/generate-use-subkey.md
ref: img-3 # "Export a Subkey"
scenario: keychain-subkey
size: auto
highlight: exportSubkeyButton
sources: [src/ui/dialog/keypair_details/]
- id: subkey-switch-database
doc: src/content/docs/guides/generate-use-subkey.md
ref: img-4 # "Switch Key Database"
scenario: key-database-menu
highlight: keyDatabaseWork
sources: [src/ui/widgets/]
- id: subkey-import-file
doc: src/content/docs/guides/generate-use-subkey.md
ref: img-5 # "Import the Subkey"
scenario: import-menu
highlight: importFromFile
sources: [src/ui/main_window/]
- id: subkey-imported
doc: src/content/docs/guides/generate-use-subkey.md
ref: img-6 # "Verify Imported Subkey"
scenario: work-keychain-subkey
size: auto
sources: [src/ui/dialog/keypair_details/]
- id: subkey-hash-symbol
doc: src/content/docs/guides/generate-use-subkey.md
ref: img-7 # "Meaning of '#' Symbol"
scenario: work-key-list
highlight: aliceType
sources: [src/ui/widgets/, src/core/model/GpgKeyTableModel.cpp]
- id: subkey-primary-not-exists
doc: src/content/docs/guides/generate-use-subkey.md
ref: img-8 # "Primary Key Not Exists"
scenario: work-keypair
size: auto
highlight: primaryKeyExistence
sources: [src/ui/dialog/keypair_details/]
- id: subkey-encrypt
doc: src/content/docs/guides/generate-use-subkey.md
ref: img-9 # "Use Subkey to Encrypt"
scenario: work-encrypt-ready
highlight: encryptButton
sources: [src/ui/main_window/]
- id: key-package-export-menu
doc: src/content/docs/advanced/key-package.mdx
ref: img-1 # Export Key > Export As Key Package
scenario: key-package-export-menu
size: 1200x760
highlight: exportKeyPackage
sources: [src/ui/main_window/]
- id: key-package-export-dialog
doc: src/content/docs/advanced/key-package.mdx
ref: img-2 # the Export As Key Package dialog
scenario: key-package-export-dialog
size: auto
sources: [src/ui/dialog/import_export/ExportKeyPackageDialog.cpp]
- id: key-package-import-menu
doc: src/content/docs/advanced/key-package.mdx
ref: img-3 # Import Key > Key Package
scenario: key-package-import-menu
size: 1200x760
highlight: importKeyPackage
sources: [src/ui/main_window/]
- id: key-server-search
doc: src/content/docs/guides/key-server-operations.md
ref: img-2 # search results
scenario: key-server-search
size: 820x600
highlight: [searchEdit, searchResults]
sources: [src/ui/main_window/]
- id: key-server-import
doc: src/content/docs/guides/key-server-operations.md
ref: img-3 # "After You Import"
scenario: key-server-import
size: auto
sources: [src/ui/dialog/import_export/KeyImportDetailDialog.cpp]
- id: key-server-operations
doc: src/content/docs/guides/key-server-operations.md
ref: img-4 # "Work With One Key"
scenario: key-server-operations
size: auto
highlight: publishKey
sources: [src/ui/dialog/keypair_details/]
- id: build-information
doc: src/content/docs/appendix/code-binary-verify.md
ref: img-4 # About > Build Information; changes with every build
scenario: about-build-info
size: auto
sources: [src/ui/dialog/help/]
# Phase 3: pages updated for v2.2.3, using scenarios that already exist.
- id: operations-bar
doc: src/content/docs/guides/understand-interface.mdx
ref: img-4 # "Operations Bar"
scenario: main-window
crop: cryptToolBar
sources: [src/ui/main_window/]
- id: encrypt-button-list
doc: src/content/docs/guides/understand-interface.mdx
ref: img-5 # "Buttons With More Than One Action"
scenario: sym-encrypt-menu
sources: [src/ui/main_window/]
- id: status-panel-report
doc: src/content/docs/guides/understand-interface.mdx
ref: img-6 # "Reading the Report"
scenario: text-decrypt-verify-result
crop: InfoBoardWidget
sources:
- src/ui/widgets/
- src/ui/function/InfoBoardReport.cpp
- src/ui/function/InfoBoardCardConverter.cpp
- id: settings-key-databases
doc: src/content/docs/advanced/key-database.mdx
ref: img-1 # "Open the Key Database Settings"
scenario: settings-key-databases
size: 900x660
sources: [src/ui/dialog/settings/, ui/KeyDatabasesSettings.ui]
- id: key-database-switch-menu
doc: src/content/docs/advanced/key-database.mdx
ref: img-2 # "Switch Between Key Databases in the Main Window"
scenario: key-database-menu
highlight: [switchContextButton, keyDatabaseWork]
sources: [src/ui/widgets/KeyList.cpp, src/ui/function/KeyDatabaseDisplayNames.cpp]
- id: key-categories-toolbox
doc: src/content/docs/guides/key-categories.mdx
ref: img-2 # the category strip in the Key ToolBox
scenario: main-window-key-groups
highlight: KeyCategoryList
sources: [src/ui/main_window/, src/ui/widgets/]
- id: key-group-in-toolbox
doc: src/content/docs/guides/key-group.md
ref: img-4 # the new group listed in the Key ToolBox
scenario: main-window-key-groups
highlight: key_group
sources: [src/ui/main_window/, src/ui/widgets/]
# Made by hand: windows the screenshot mode cannot render.
- id: windows-signature
doc: src/content/docs/appendix/code-binary-verify.md
ref: img-1
status: manual-only
- id: macos-notarization
doc: src/content/docs/appendix/code-binary-verify.md
ref: img-2
status: manual-only
- id: linux-signature
doc: src/content/docs/appendix/code-binary-verify.md
ref: img-3
status: manual-only
- id: drag-to-applications
doc: src/content/docs/overview/getting-started.mdx
ref: img-1
status: manual-only
|