Sensory & Focus · 01 A different sense of time.
VisibleHour is built for people whose internal sense of time isn't always reliable — time blindness, often described in the ADHD, autism, and executive-function communities, but not exclusive to them. The whole product is one quiet answer to a quiet question: how much time has passed?
Accessibility for VisibleHour is load-bearing, not a checkbox. The dial is meant to communicate visually without requiring reading. Sessions can be started and stopped without sight via VoiceOver. Sufficient contrast is the default register, not an opt-in mode. Below is a complete, honest list of what's supported and what we still owe.
i.VoiceOver
The dial reads as a single coherent statement of state — "VisibleHour dial. Day, three hours twelve minutes remaining." When a session is active: "Active session, twenty-three minutes fourteen seconds remaining." Pomodoro phase, break time, and end-of-day are all spoken in the same dial value.
Session chips read by duration and pattern: "Fifteen minute session," "Twenty-five minute Pomodoro with five minute break," and so on. Settings rows announce both label and current value: "Awareness interval: every sixty minutes," "Theme: dark."
Verified on iPhone, Apple Watch, and Apple Vision Pro.
ii.Voice Control
Standard SwiftUI controls throughout. "Show numbers" overlays every interactive element. "Tap fifteen," "Tap settings," "Tap stop" all work. The picker controls — awareness interval, theme, day-window times — respond to numbered overlays.
Verified on iPhone.
iii.Switch Control
Standard two-level scan: outer groups first, then drill into individual chips and time controls. Each session chip and each time picker is its own focusable element after entering the group. Settings rows split into label + control as separate stops.
Verified on iPhone.
iv.Sufficient Contrast
VisibleHour ships dark by default. The dial's amber arcs measure 5.8:1 to 8.4:1 against the deep warm-brown canvas — well above WCAG 2.1's 3:1 graphical UI threshold. Body text reads at 16:1 (passes WCAG AAA).
A user-selectable warm light register is offered for those who prefer the paper-on-desk feel — Settings → Theme → Light. The light register's dial arcs measure 2.0:1 to 2.8:1 against cream, an aesthetic choice consistent with the design family. The default-on-launch is the high-contrast register.
v.Reduced Motion
Honored. Zoom-to-session-face transitions and event-name reveals become instant rather than animated. The dial itself doesn't animate — it's frame-rendered, so its state-change behavior is identical with Reduced Motion on or off.
vi.Differentiate Without Color
The dial's morning, day, evening, and session arcs are distinguishable without color via concentric position and angular extent — each arc occupies a different time window and a different ring. The session pie is distinguishable from outer arcs by shape (filled wedge vs. stroke). Verified by viewing the app under iOS Color Filters set to Grayscale.
vii.Captions for Sound Alerts
The custom plunk awareness sound is paired with a written notification body that reads cleanly without surrounding context — "Notice the time.", "That's the time.", "Break." The body text is the caption.
viii.What we don't yet support
Honesty matters more than a clean checklist. As of v1.0:
Larger Text (Dynamic Type). The radial dial uses fixed font sizes for hour markers, chip labels, and the session timer numerics. At iOS's largest accessibility text size (AX5), these stay locked. The radial composition can't gracefully accommodate AX5 sizing without becoming a different design — so this is bundled with our v1.1 polish release, which adds an in-app linear-bar toggle (radial ↔ linear). The linear layout is naturally text-scale-friendly. We'd rather ship the right answer in v1.1 than a half-answer now.
ix.How to enable accessibility features
VoiceOver. iPhone / iPad: Settings → Accessibility → VoiceOver. Apple Watch: Settings → Accessibility → VoiceOver. Apple Vision Pro: Settings → Accessibility → VoiceOver. Or set the Accessibility Shortcut once and triple-press the side button (iPhone) or Digital Crown (Watch) to toggle.
Voice Control. iPhone: Settings → Accessibility → Voice Control.
Switch Control. iPhone: Settings → Accessibility → Switch Control. Configure your switches before enabling.
Reduced Motion. Settings → Accessibility → Motion → Reduce Motion.
Color Filters / Grayscale. Settings → Accessibility → Display & Text Size → Color Filters → Grayscale.
Dark theme inside VisibleHour. Settings → Theme → Dark (already the default).
x.Feedback
Accessibility issues, gaps, or "the dial doesn't read right with my screen reader" reports go to [email protected]. We read every email. If something doesn't work for you — that's a bug, not a feature flag, and we'll fix it.
Made quietly by sthreelabs.