Demo GIF with real UI, Breeze-Dark screenshots, and correct default hotkey label#52
Merged
Conversation
Add a deterministic demo GIF generator (scripts/_make_demo_gif.py) that grabs the real PyQt6 main window offscreen — with the real Breeze-Dark theme applied like at app startup — in its true states (ready, recording, transcribing, done) and composites it next to a plain target text field that receives the transcript. The real tray icons mirror the workflow states; no invented controls are drawn. The displayed hotkey matches the actual default configuration: hold left Alt (transcription_hotkey: KEY_LEFTALT, hotkey_mode: hold). Embed the generated demo-en.gif / demo-de.gif at the top of both READMEs and cover the pure helpers with unit tests.
The standard Blitztext workflow is triggered by the configurable recording key (transcription_hotkey, default KEY_LEFTALT in hold mode) — there is no Meta+H mapping in the hotkey service. The tray menu and WORKFLOW_META nevertheless displayed a hardcoded Meta+H. Derive the tray menu label from the actual configuration via a new hotkey_display_name() helper (covers all VALID_HOTKEY_KEYS), fix the hotkey table in both READMEs, and adjust the workflow metadata.
The screenshot generator never called theme.apply_theme(), so all committed README screenshots and banners showed the unthemed light Qt look instead of the actual Breeze-Dark glass appearance the app applies at startup. Apply the theme like the real app start does and regenerate every screenshot and banner (the tray menu now also shows the corrected Alt hotkey label).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Three related improvements to how the product presents itself in the README — plus one real UI bug they uncovered:
1. Animated workflow demo GIF (
5094e5e)scripts/_make_demo_gif.py: grabs the real PyQt6 main window offscreen (same approach as_make_screenshots.py) in its true states — ready, recording (timer counting), transcribing (spinner), done — and composites it next to a plain target text field that receives the transcript via a typewriter animation. The real tray icons mirror the workflow states. No invented controls.demo-en.gif(412 KiB) /demo-de.gif(460 KiB); embedded at the top of both READMEs.tests/test_make_demo_gif.py), following thetest_make_screenshots.pyconventions.2. Correct default hotkey label (
1691a11)transcription_hotkey, defaultKEY_LEFTALTinholdmode) — there is no Meta+H mapping in_HOTKEY_MAP. The tray menu,WORKFLOW_META, and the README hotkey table nevertheless claimedMeta+H.hotkey_display_name()helper (explicit names for allVALID_HOTKEY_KEYS, safe fallback otherwise) and refreshes on settings save. README tables (EN/DE) fixed accordingly.3. Screenshots with the real Breeze-Dark theme (
b67729c)scripts/_make_screenshots.pynever calledtheme.apply_theme(), so every committed README screenshot and banner showed the unthemed light Qt look instead of the actual product appearance. The generator now applies the theme exactly like the real app start does; all screenshots and banners are regenerated.Test plan
pytest tests/— 440 passed, 70 skippedWHISPER_GUI_TESTS=1 QT_QPA_PLATFORM=offscreen pytest tests/— 510 passed