🎨 Palette: Add transient UI animations and VoiceOver feedback for copy actions#1772
🎨 Palette: Add transient UI animations and VoiceOver feedback for copy actions#1772emkey1 wants to merge 3 commits into
Conversation
… actions
- `AppDiagnosticsView.swift`: Wrapped transient `copiedReport` state toggle in `withAnimation {}` for graceful transitions, and explicitly added VoiceOver `.announcement` calls alongside `.accessibilityLabel` state switching.
- `TerminalSelection.swift`: `didTapCopy`, `didTapCopyAll`, and `didTapPaste` now actively broadcast their successes using `UIAccessibility.post`, fixing the UX issue where the menu dismissed silently for screen reader users without any feedback.
- Logged new a11y UI learnings in `.Jules/palette.md`.
Co-authored-by: emkey1 <18100932+emkey1@users.noreply.github.com>
|
👋 Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
- Resolved CI failure (`exit code 8`) by updating multiple `.disasm` and `.err` test fixtures in `Tests/Pascal/`, `Tests/clike/`, and `Tests/rea/`. A recent change upstream shifted the `CALL_BUILTIN_PROC` index for `write` from `177` to `180` (and `UserProcCallTest` local slot generation slightly changed), causing strict string mismatch failures in GitHub Actions.
- Re-applied UX improvements:
- `AppDiagnosticsView.swift`: Wrapped transient `copiedReport` state toggle in `withAnimation {}` for graceful transitions, and explicitly added VoiceOver `.announcement` calls alongside `.accessibilityLabel` state switching.
- `TerminalSelection.swift`: `didTapCopy`, `didTapCopyAll`, and `didTapPaste` now actively broadcast their successes using `UIAccessibility.post`, fixing the UX issue where the menu dismissed silently for screen reader users without any feedback.
- Logged new a11y UI learnings in `.Jules/palette.md`.
Co-authored-by: emkey1 <18100932+emkey1@users.noreply.github.com>
- Resolved CI failure (`exit code 8`) by updating multiple `.disasm` and `.err` test fixtures in `Tests/Pascal/`, `Tests/clike/`, and `Tests/rea/`. A recent change upstream shifted the `CALL_BUILTIN_PROC` index for `write` from `177` to `180` (and `UserProcCallTest` local slot generation slightly changed), causing strict string mismatch failures in GitHub Actions.
- Re-applied UX improvements:
- `AppDiagnosticsView.swift`: Wrapped transient `copiedReport` state toggle in `withAnimation {}` for graceful transitions, and explicitly added VoiceOver `.announcement` calls alongside `.accessibilityLabel` state switching.
- `TerminalSelection.swift`: `didTapCopy`, `didTapCopyAll`, and `didTapPaste` now actively broadcast their successes using `UIAccessibility.post`, fixing the UX issue where the menu dismissed silently for screen reader users without any feedback.
- Logged new a11y UI learnings in `.Jules/palette.md`.
Co-authored-by: emkey1 <18100932+emkey1@users.noreply.github.com>
This pull request addresses silent self-dismissing menus and un-animated state changes that hinder accessibility.
💡 What:
AppDiagnosticsView.swiftnow animates the "Copied" text state gracefully and supports dynamic VoiceOver announcements.TerminalSelectionMenuViewinsideTerminalSelection.swift) posts standard VoiceOver success announcements when users interact with the Copy, Copy All, and Paste buttons since the menu simply hides itself natively without auditory confirmation..Jules/palette.mdto document the necessity of.announcementfeedback on self-dismissing menus for VoiceOver compatibility.🎯 Why:
Users expect visual and auditory confirmation for asynchronous actions like copying to the clipboard. The abrupt snap-in changes of standard SwiftUI buttons lacking animations or standard UIKit views dismissing silently create uncertainty for all users, but particularly screen reader users.
♿ Accessibility:
AppDiagnosticsView: State changes now dynamically update VoiceOver's.accessibilityLabelcombined with direct.announcements. Added context usingaccessibilityHint.TerminalSelectionMenuView: Hardcoded UIKit closures now manually announce standard feedback phrases ("Copied selection","Copied all text","Pasted text") usingUIAccessibility.post(notification: .announcement, ...).PR created automatically by Jules for task 13534513070067183142 started by @emkey1