uttrflow / uttrflow/uttrflow-swift
A picture paste that fails closes the panel and tells the user nothing
- Dominant language
- Swift
- Stars
- 4
- Forks
- 17
- Avg merge
- 3h 32m
- Merged PRs (30d)
- 277
Description
## What happens
`insertImage(_:)` (`Sources/Uttrflow/AppDelegate.swift:1028-1046`) runs after the panel has already closed (`:842-844`). Both of its failures only write to the log:
- The picture file has gone between drawing the panel and pressing Return: `Self.log.error("picture missing at paste: …")`, then `return`. Nothing is written to the clipboard.
- `CGEventKeystrokeSender().sendPaste()` throws, for example when Accessibility was revoked after the panel opened, or when Secure Event Input is on: `Self.log.error("picture paste refused: …")`. The picture is on the clipboard, but the user is not told to press ⌘V.
The text path's equivalent is covered: the text insertion coordinator's last strategy leaves the text on the clipboard, and copy-only mode is announced before Return (`toggleQuickPanel`, `:776-779`). Pictures have neither.
## Why it matters
The user picks a screenshot, the panel vanishes, and nothing appears where they were typing. They cannot tell whether to press ⌘V, whether the picture was lost, or whether to try again. VoiceOver users get no signal at all.
## Acceptance criteria
- If the file is missing at paste time, the user is told, either by keeping the panel open with the existing "That picture is no longer on this Mac" notice or through the menu-bar feedback dictation failures use.
- If `sendPaste` refuses, the user is told the picture is on the clipboard and to press ⌘V, matching the copy-only wording in `PanelInsertionObstacle.notice`.
- The decision about which surface speaks after the panel is gone is written in `Docs/app-quick-panel.md`.
Contributor guide
Research direction
Start in Sources/Uttrflow/AppDelegate.swift at toggleQuickPanel (:776-779) and insertImage(_:) (:842-844, :1028-1046), then read PanelInsertionObstacle.notice and Docs/app-quick-panel.md. Trace the existing text copy-only feedback and decide which surface should speak after the panel closes. Done means both picture failure paths give the user actionable feedback and the chosen surface is documented.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- macos, swift
- Domain
- accessibility, desktop, documentation
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 72/100