uttrflow / uttrflow/uttrflow-swift

A revealed secret in the clipboard panel cannot be hidden again without closing the panel

Open Beginner friendly
#587 0 comments 0 reactions 0 assignees View on GitHub
area:clipboard enhancement good first issue P2
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.