uttrflow / uttrflow/uttrflow-swift
Into a remote desktop or virtual machine window, ⌘V is forwarded to the other machine and the dictation still says Inserted
- Dominant language
- Swift
- Stars
- 4
- Forks
- 17
- Avg merge
- 4h 27m
- Merged PRs (30d)
- 286
Description
## What happens
For any frontmost app except Uttrflow, the paste strategy volunteers (`PasteboardTextInsertionEngine.canInsert`, `Sources/UttrflowInput/PasteboardTextInsertionEngine.swift:28`). It writes the words to **this Mac's** pasteboard and posts ⌘V (`:42-44`).
A remote desktop client or a virtual machine window does not paste locally. It forwards the key press to the other machine, which pastes **its own** clipboard. Clipboard sharing, where it is on at all, is asynchronous, so the remote clipboard may or may not have the dictation by the time the forwarded ⌘V arrives. The likely outcomes are that the previous remote clipboard is pasted, that nothing is pasted, or that the text is pasted as intended.
On this side:
- Those windows publish no focused text field, so the Accessibility write is skipped.
- `PasteConfirmation.waitFor` returns `.notReported` immediately (`Sources/UttrflowInput/PasteConfirmation.swift:49`).
- `.notReported` maps to `InsertionArrival.notReported` (`PasteboardTextInsertionEngine.swift:58-59`), which draws the plain "Inserted" tick. By design, "Not reported draws the plain tick, because treating 'unknown' as 'doubtful' would put a warning on nearly every dictation" (`Docs/insertion.md`).
So the one case where the words are most likely *not* where the user thinks gets the same confident tick as a native text field. Nothing identifies these windows. `DestinationRules` has no row for them, and there is no insertion-side app table at all.
## Why it matters
People who work in a remote session all day dictate into it. If the tick lies, they send a message or a command holding their old remote clipboard.
## Needs a decision and a test
`needs-info`, because the right behaviour depends on what these clients actually do. `help wanted`, because it needs them installed:
1. For each remote desktop client and VM app you have, with clipboard sharing **on** and then **off**: copy `OLD` inside the remote machine, then dictate "new words" into a remote text field.
2. Report what appeared remotely each time, and what the floating button said.
## Acceptance criteria
Once the above is known:
- Destinations that forward key presses to another machine are recognised by an app-kind row, not by special cases in the engine.
- For them, the dictation either waits for clipboard sharing and says "Pasted into the remote session — check it", or skips the paste and says "Copied — paste it in the remote window".
- The chosen behaviour has a test through the `AccessibilityFocus`/`InsertionDestination` seam, and `Docs/insertion.md` gains a section for it.
Contributor guide
Research direction
Start with Sources/UttrflowInput/PasteboardTextInsertionEngine.swift, PasteConfirmation.swift, and the AccessibilityFocus/InsertionDestination seam. Reproduce remote desktop and VM behavior with clipboard sharing enabled and disabled, then use the results to choose the destination behavior and add the seam test. Update Docs/insertion.md with the chosen behavior and its limitations.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- macos, swift
- Domain
- accessibility, desktop-dev
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100