Skip to content

fix(ios): dim pressed buttons under Reduce Motion and fix counts of one - #11

Draft
SamGu-NRX wants to merge 5 commits into
feat/minimal-product-20261007from
fix/ui-count-and-reduce-motion
Draft

SamGu-NRX wants to merge 5 commits into
feat/minimal-product-20261007from
fix/ui-count-and-reduce-motion

Conversation

@SamGu-NRX

Copy link
Copy Markdown
Owner

Stacked on #4. Base: feat/minimal-product-20261007.

What changed

Pressed buttons don't move under Reduce Motion

Every button style that shrinks on press scaled even with Reduce Motion on; the old code only removed the animation, so the button snapped smaller instead. The spotlight tutorial's style ignored Reduce Motion entirely and ran a spring.

All nine styles now go through one pressFeedback(isPressed:scale:opacity:animation:) modifier in FLButtonComponents.swift.

  • Normal motion: unchanged. Each style keeps its scale, opacity and animation.
  • Reduce Motion: nothing scales. A press dims the label to at most 70% opacity, using the existing 120 ms AppMotion.press curve. A style that already dims further keeps its own value, so the two never multiply.

Counts of one read correctly

Kitchen said "1 items on hand". The same problem was in item, ingredient, recipe, allergen and serving counts, and in the expiry and star-rating VoiceOver labels. They now use the inline item\(n == 1 ? "" : "s") form the codebase already uses in 15 places.

The onboarding review's counts aren't touched here; #9 rewrites that screen and fixes them there.

Verification

  • Full simulator suite: 148 of 148 passed on iPhone 17 (iOS 26.5) at 70fea34. The later commit 725e75f changes only strings and one doc comment, and the whole-app typecheck passes on it.
  • A read-only production-readiness review compared all nine styles before and after: normal-mode scale, opacity and animation match. It found no blocking issues; its plural findings are fixed in 725e75f.
  • Not checked on a device: how a press feels with Reduce Motion on (picker row, tab bar, spotlight button), and the VoiceOver labels read aloud.

Checklist

  • The scope is focused; related changes belong together
  • I explained what changed and why
  • N/A before/after images: the press dim lasts a fraction of a second and isn't visible in a still capture; the text changes are single words
  • N/A video: not recorded

🤖 Generated with Claude Code

SamGu-NRX and others added 3 commits October 7, 2026 16:01
…Motion

Every press-scaling button style now goes through one pressFeedback
modifier. Normal motion is unchanged. With Reduce Motion on, a press dims
the label to at most 70% opacity over the existing 120 ms press curve,
instead of scaling it. The spotlight tutorial's style previously ignored
Reduce Motion entirely.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Kitchen read "1 items on hand"; recipe, lot and ingredient counts had the
same problem. They now use the codebase's existing inline plural form.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- Pluralize allergens, the expiry and star-rating VoiceOver labels, and
  servings.
- Restore "lots", which only shows for two or more.
- Bind the home ingredient count instead of concatenating strings.
- Clarify that Reduce Motion dims a press to at most 70% opacity.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 7, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

SamGu-NRX and others added 2 commits October 7, 2026 18:22
…on for the macos-26 CI workflow

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The meal-photo recipe picker showed stored keys like "high_protein" and
"one_pot". RecipeTags.labels is only used for display, so it now returns
readable words, and the two screens that patched underscores themselves
use it directly.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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.

1 participant