[BUG] Windows 0.0.10: stop shortcut pastes the transcript twice - paste-verification retry fires on a UI Automation false negative
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 45/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Domain
- desktop
Research direction
The payload names no source files. Start by searching the code for the log strings 'Paste verification found the inserted text missing' and 'Correction capture skipped', then read the Windows text-insertion and verification path that calls them. Done means a partial UI Automation read no longer triggers the second Ctrl+V, with a test or a reproducible check on the Windows build. Confirm the approach with a maintainer first, since the issue offers two options.
Written by the indexing model from the issue text.
Description
Describe the bug
On Windows 0.0.10, the transcript is pasted twice into the target window on every dictation. The stop shortcut works fine — the duplicate comes from the post-paste verification step, which reports a false negative and re-sends Ctrl+V once, even though the first paste already landed.
Reproduction steps
- Windows 0.0.10, default text insertion mode (clipboard paste /
inserted). - Focus a text field in Orca or Windows Terminal.
- Dictate and stop with the primary shortcut.
- The text appears twice.
Log evidence
From %APPDATA%\com.altic.fluidvoice.windows\fluidvoice.log:
23:56:11.401 [INFO] Preparing text insertion: chars=22, mode=inserted, target=0x90ac6
23:56:11.403 [INFO] Sent keyboard input: label=Ctrl+V, events=4
23:56:11.655 [INFO] Correction capture skipped: app=Orca, surface=TextPattern, reason=inserted text not present in the control we can read (chars=14)
23:56:11.655 [WARN] Paste verification found the inserted text missing; retrying Ctrl+V once: surface=TextPattern
23:56:11.656 [INFO] Sent keyboard input: label=Ctrl+V, events=4
23:56:11.908 [WARN] Paste retry still not visible in the focused control: surface=TextPattern
23:56:11.909 [WARN] Paste could not be confirmed; keeping the transcript on the clipboard instead of restoring the previous contents
The tell is reason=inserted text not present in the control we can read (chars=14) for a 22-char insert: the UI Automation read only sees 14 chars, i.e. it is reading a partial surface, so the "missing text" conclusion is a false negative — the paste had already succeeded. In Windows Terminal the same false negative appears with chars=3538 (the full buffer, but the match fails).
In one session, 5 of 5 external insertions retried (apps: Orca, Windows Terminal). Insertions where verification passed did not duplicate.
Expected behavior
A verification read that is known to be partial (control exposes fewer chars than were inserted, or the surface can't be fully read) should not be treated as "paste failed". Suggest either:
- Skipping the retry when the readable text is shorter than the inserted text (positive evidence of a partial read), or
- Making the retry opt-out / disabling verification when the surface read is unreliable.
The retry is the user-visible bug: it duplicates text the user then has to delete.
Workaround
"text_insertion_mode": "clipboard_free" in settings.json — inserts via Unicode input and never enters the paste/verify path. After switching, the log shows Sent Unicode text input: units=24, chunks=1 with zero retry lines.
Environment
- FluidVoice Windows 0.0.10, Windows 11 x64
- ASR:
parakeet.cpp/c-api, CPU + CUDA (RTX 4070 SUPER) - Affected apps seen: Orca, Windows Terminal
- Single monitor (3072x1728), standard DPI
Log excerpts are from my own machine; only window handles are included.
- Dominant language
- Swift
- Stars
- 11.9k
- Forks
- 863
- Avg merge
- 1d 14h
- Merged PRs (30d)
- 28
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from altic-dev/FluidVoice
-
[BUG] File transcription skips audio chunks shorter than one secondPossibly taken @sabbah13 claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
altic-dev/FluidVoice#1161 ·
Maintainers usually reply within 1 day
-
feat: add Nix flake support for one-command installationPossibly taken @levonk claimed this today. Open
Difficulty 4/5 3-5 days Newbie friendliness 35/100
altic-dev/FluidVoice#1159 ·
Maintainers usually reply within 1 day
-
Difficulty 3/5 1-2 days Newbie friendliness 62/100
altic-dev/FluidVoice#1156 ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 50/100
altic-dev/FluidVoice#1155 ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 22/100
altic-dev/FluidVoice#1154 ·
Maintainers usually reply within 1 day
All issues in altic-dev/FluidVoice
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Maintainers usually reply within 1 day
-
swift.md: `Date(myString, strategy: .iso8601)` example omits `try` — the initializer is throwingOpen
Difficulty 1/5 Under an hour Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
githubnext/desktop-tools#25 ·
Maintainers usually reply within 1 day
-
bug core p3
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
RunanywhereAI/runanywhere-sdks#1083 ·
Maintainers usually reply within 5 days
-
bug/fix needs: triage
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
capawesome-team/capacitor-firebase#1054 ·
Maintainers usually reply within 1 day