feat(clipboard): review and copy combined text - #143
Merged
Merged
Conversation
johnny4young
commented
Sep 17, 2026
johnny4young
left a comment
Owner
Author
There was a problem hiding this comment.
Reviewed head 23701d17059fdb7c89ef98bcc8a5d6a994a59669: three actionable findings are attached inline (one P1 privacy issue and two P2 clipboard/cancellation issues).
Validation:
- Reviewed the changed composition service, copy operation, macOS sheet/selection integration, MCP reuse, store bootstrap and UI-test harness changes.
- Local focused Swift Testing run: 24 tests across 6 suites passed (
CombinedText,StoreBootstrap,ClipPreviewLoader). An additional review-only parameterized regression test failed for both intrinsically masked kinds as described inline. It was added only in a temporary source snapshot, not to the branch. - A synthetic native SwiftUI lifecycle probe reproduced a write after sheet dismissal; a synchronous-cancellation control prevented it. This was not a full Gancho UI run and did not access the system clipboard.
- The preview native-copy finding is based on the source path and Apple's documented Text selection behavior, not a new keyboard UI test.
- Inspected existing exact-head CI/UI logs: 1,119 package tests passed; hosted macOS UI reported 57 tests / 4 skips / 0 failures, and iOS 11 tests / 1 skip / 0 failures. Those passes do not cover the findings above. No full local app build or full local UI suite was rerun for this review.
No product changes, commits, pushes, or thread resolutions were made. GitHub currently reports merge conflicts against main; integration with the latest main is not validated by these older exact-head runs.
…d-only preview Three review findings on combined text: - `CombinedTextService.load` protected only detector-flagged rows and `.secret`, so a bare JWT or card number — stored non-sensitive on purpose, masked by every preview — came out in clear in the review list and preview. Both metadata checks now use `ClipSafePresentation.requiresMasking`, the same policy previews apply. - Cancel only dismissed; the in-flight copy task was cancelled later in `onDisappear`, leaving a window where a resumed store read wrote to the clipboard with no sheet left. Cancel (and Escape) now cancels the task synchronously before dismissing; the lifecycle hook stays as the fallback for private mode and window close. - The preview's text selection gave ⌘C and the context menu a second write path around revalidation and the self-write marker. The preview is read-only; the Copy button is the only way out. Covered by the source-validation test (jwt and creditCard parts read as protected), the batch revalidation cases (a kind that turns masked mid-batch), and the native flow, which now sends ⌘C over the open review and expects nothing to change.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Review and copy multiple text-backed clips as one plain-text result, preserving visible selection order and leaving PasteStack as sequential paste.
Changes
Testing
BCC3148B-45AB-4474-89D9-18AA13E2AD65.pngfromcombined-text-copy-feedback-full-r3.xcresult: ordered text, separator and Copy controls are visible without any autocomplete overlay.23701d17059fdb7c89ef98bcc8a5d6a994a59669.Risks and boundaries