Context
Snapcap should work well with VoiceOver, Full Keyboard Access and Reduce Motion. Reading the code turns up a number of concrete gaps. Each one is small, which makes this a good way to learn the app.
Where to look
Sources/Snapcap/Windows/RecordingPanels.swift
HUDButton (pause/resume, stop, start over, discard) is icon-only, with .help tooltips but no .accessibilityLabel.
- The recording dot pulses with
repeatForever even when Reduce Motion is on.
CountdownView isn't announced, and "Click to start now" only works with a mouse.
Sources/Snapcap/Views/Components.swift
LevelMeter exposes no value.
- The corner-snap buttons in
CameraFrameDetails are icon-only (arrow.up.left.square and similar).
ShapePicker already does this right, with accessibilityLabel and the .isSelected trait. Use it as the pattern.
Sources/Snapcap/Views/CameraBubbleView.swift: in OverlayCanvas, the bubble can only be moved and resized with a mouse drag. Add accessibility actions (move to a corner, nudge, larger or smaller) and arrow-key nudging when focused.
Sources/Snapcap/Views/EditorView.swift
- The
TransportBar play/pause button is icon-only.
- The scrub slider should read as "1:23 of 4:56".
- The trim handles are drag-only; give them adjustable actions.
Sources/Snapcap/Views/QuickRecordView.swift: the gear button is icon-only.
Sources/Snapcap/App/StatusItemController.swift: while recording, the button title is "● 1:23" or "❚❚ 1:23". Give it a spoken label such as "Snapcap, recording, 1 minute 23 seconds" or "paused".
Sources/Snapcap/Windows/RegionSelector.swift: region selection is mouse-only, and the instructions are drawn as pixels. At least announce the instructions and the Esc key.
Proposal
Fix the items above, then audit the setup window, HUD, editor, Recordings, Settings, onboarding and popover with Accessibility Inspector (Xcode → Open Developer Tool → Accessibility Inspector → Audit).
Acceptance criteria
Context
Snapcap should work well with VoiceOver, Full Keyboard Access and Reduce Motion. Reading the code turns up a number of concrete gaps. Each one is small, which makes this a good way to learn the app.
Where to look
Sources/Snapcap/Windows/RecordingPanels.swiftHUDButton(pause/resume, stop, start over, discard) is icon-only, with.helptooltips but no.accessibilityLabel.repeatForevereven when Reduce Motion is on.CountdownViewisn't announced, and "Click to start now" only works with a mouse.Sources/Snapcap/Views/Components.swiftLevelMeterexposes no value.CameraFrameDetailsare icon-only (arrow.up.left.squareand similar).ShapePickeralready does this right, withaccessibilityLabeland the.isSelectedtrait. Use it as the pattern.Sources/Snapcap/Views/CameraBubbleView.swift: inOverlayCanvas, the bubble can only be moved and resized with a mouse drag. Add accessibility actions (move to a corner, nudge, larger or smaller) and arrow-key nudging when focused.Sources/Snapcap/Views/EditorView.swiftTransportBarplay/pause button is icon-only.Sources/Snapcap/Views/QuickRecordView.swift: the gear button is icon-only.Sources/Snapcap/App/StatusItemController.swift: while recording, the button title is "● 1:23" or "❚❚ 1:23". Give it a spoken label such as "Snapcap, recording, 1 minute 23 seconds" or "paused".Sources/Snapcap/Windows/RegionSelector.swift: region selection is mouse-only, and the instructions are drawn as pixels. At least announce the instructions and the Esc key.Proposal
Fix the items above, then audit the setup window, HUD, editor, Recordings, Settings, onboarding and popover with Accessibility Inspector (Xcode → Open Developer Tool → Accessibility Inspector → Audit).
Acceptance criteria
NSAccessibility.postwith.announcementRequested), and level meters report a value.accessibilityReduceMotion).