uttrflow / uttrflow/uttrflow-swift
A revealed secret in the clipboard panel cannot be hidden again without closing the panel
- Dominant language
- Swift
- Stars
- 4
- Forks
- 17
- Avg merge
- 3h 32m
- Merged PRs (30d)
- 277
Description
## What happens
A masked clip's ⋯ menu offers Reveal (`Sources/UttrflowUX/PanelPresentation.swift:433-435`). Reveal inserts the clip into `revealed` (`Sources/UttrflowUX/PanelKeyboard.swift:215-219`). After that the row is no longer masked, so the menu offers nothing: there is no Hide action, no key, and nothing removes the id from `revealed` except closing the panel (the set is rebuilt on open, `AppDelegate.swift:767-770`).
## Why it matters
Someone reveals a password to check it, and then someone walks up, or they are sharing their screen. The only way to cover it again is to dismiss the panel and lose their place. The home page promises that these clips "stay hidden until you ask". Hiding them again should be as quick as asking.
## Acceptance criteria
- A revealed secret's row offers **Hide** in the place Reveal was, through a new `PanelKey.conceal(Clip.ID)` / `PanelIntent.conceal` that removes the id from `revealed`.
- VoiceOver's row actions include it (they come from the same `actions` list).
- Tests in `Tests/UttrflowUXTests`: reveal then conceal masks the row again; the actions for a revealed secret contain Hide and not Reveal; the actions for an ordinary clip contain neither.
## Where to start
- `Sources/UttrflowUX/PanelPresentation.swift:13-64` (intents) and `:425-471` (actions)
- `Sources/UttrflowUX/PanelKeyboard.swift:24-25`, `:111`, `:214-219`
- Tests to extend: the panel keyboard and presenter tests in `Tests/UttrflowUXTests` (search for `revealing`)
- Before pushing, run `make verify` (export `DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer` first). It is the same command CI runs, and it enforces the 95% coverage floor per module.
- Read [CONTRIBUTING.md](https://github.com/uttrflow/uttrflow-swift/blob/main/CONTRIBUTING.md) first, and say on this issue that you are taking it.
**Size:** S, about 2 hours.
Contributor guide
Research direction
Read CONTRIBUTING.md first, then inspect intents and row actions in Sources/UttrflowUX/PanelPresentation.swift and reveal handling in Sources/UttrflowUX/PanelKeyboard.swift. Extend the panel keyboard and presenter tests in Tests/UttrflowUXTests, searching for revealing, so concealment masks the row and actions show Hide only for revealed secrets. Run make verify with DEVELOPER_DIR set before pushing.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- swift
- Domain
- accessibility, desktop
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 90/100