Skip to content

iOS audit (2/3): haptics on outcomes, directional steps, VoiceOver announcements - #31

Merged
Arluigi merged 9 commits into
mainfrom
ios-audit/feel
Sep 28, 2026
Merged

Arluigi merged 9 commits into
mainfrom
ios-audit/feel

Conversation

@Arluigi

@Arluigi Arluigi commented Sep 28, 2026

Copy link
Copy Markdown
Owner

Second of three PRs from the 2026-09-28 Apple-design audit (plan: docs/superpowers/plans/2026-09-28-ios-design-audit.md). Client-only.

  • Haptics: HapticManager is replaced by .sensoryFeedback, fired from the patient's own actions only:
    • selection when a routine step is ticked, a check-in option is picked, or Compare flips or picks a pair;
    • success when a routine is recorded, a note or check-in or urgent report is sent, or a photo is saved (played by the presenting screen so it survives the sheet dismissing);
    • error on failures.
    • The haptic on the profile avatar (navigation) is gone, and switching slots or refreshing no longer buzzes.
  • Routine steps: each step is one native Toggle with a Letterpress check style, so it has one VoiceOver element with the toggle trait and a press state across the whole row. Button release eases with .snappy.
  • Onboarding and check-in: steps slide in the direction you go and fall back to a fade under Reduce Motion. Each question starts at the top. VoiceOver focus moves to the new step title.
  • Announcements: errors and outcomes are announced to VoiceOver (transition-only, so reopening a screen doesn't replay "sent" or the weekly limit).
  • Reminders:
    • "Not saved yet." when there are unsaved changes, and "Nothing to save." when there aren't.
    • Rows stay disabled until this account's saved settings load, so defaults can't overwrite them.
    • Time pickers animate in.
  • Calendar: keeps the previous month dimmed (and hidden from VoiceOver) while the next loads, instead of collapsing. Formatters are cached, and UIScreen.main is gone.
  • Today and root screens:
    • Today gets pull-to-refresh and a greeting that tracks the time of day.
    • Avatars scale with text size.
    • Photo tiles have combined labels ("Photo, 15 Sep, Shared").
    • A specific routine error comes with an "Open plan" button.
    • Loading and account-error screens use Letterpress styling.
    • Eyebrow tracking scales.

Verification: 264/264 unit tests on the iPhone 17 / iOS 27 simulator; the last fix was re-checked with ReminderTests. A spec and quality review found three Important issues (haptics on slot switch, "Check-in sent" announced on open, early reminder edits saving defaults), all fixed and re-reviewed. Not checked on a device: the direction reversal between steps and the avatar cap at AX5.

🤖 Generated with Claude Code

Arluigi and others added 9 commits September 28, 2026 18:14
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Each step row is one Toggle with a Letterpress check style: the whole row
taps, VoiceOver reads the title once as a switch, and the row dims while
pressed. Letterpress buttons now ease their release with a short spring.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Routine, Compare and photo-save haptics now come from taps or a completed
save on the view that stays on screen, not from state that changes under
the patient. Check-in and the Notes limit speak only on transitions made
here. Reminders open on the repository's preferences and Save waits for
the first load. Focus is keyed per page, the stale calendar month is
hidden from VoiceOver, and the check toggle's representation is an
explicit switch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings September 28, 2026 23:41

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@Arluigi
Arluigi merged commit 62d0cc5 into main Sep 28, 2026
8 of 10 checks passed
@Arluigi
Arluigi deleted the ios-audit/feel branch September 28, 2026 23:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants