feat(ui): consistent motion polish, predictive back & reduced-motion #36

Merged
makiolaj merged 2 commits from feat/ui-polish-animations into release/v2.9.0 2026-06-25 07:52:32 +00:00
Owner

Animation/UX polish pass for v2.9.0: make motion consistent across the app, add predictive-back gesture preview, and honour the system "remove animations" setting. On-device verified on a Pixel 10.

Motion consistency

  • Centralised the motion vocabulary in CalendarTransitions.kt and routed every surface through it (shared expand/collapse, list-item, fade-through helpers). The event-edit expand pattern is now the shared one (no duplicate).
  • Settings reminder-override rows and the reminder Custom field now expand/collapse instead of bare-fading.
  • Search and agenda rows animate (fade/relocate) via animateItem.
  • View switching (Month/Week/Day/Agenda) now fades through instead of snapping — lateral navigation per M3 — while in-view paging keeps its directional slide.
  • Onboarding/permission gates cross-fade.

Predictive back

  • enableOnBackInvokedCallback enabled in the manifest.
  • New Modifier.predictiveBack(onBack) drives the standard preview transform (scale / shift / round) following the back gesture; applied to detail, edit, search, settings (+ sub-screens & calendar manager via CollapsingScaffold), the calendar editor and import — each keeping its existing back semantics.

Accessibility

  • rememberReduceMotion() reads the OS "remove animations" setting (which Compose ignores by default); spatial motion collapses to a quick fade and the back preview is skipped.

Changelog

  • [Unreleased] updated (Added: predictive back, reduce-motion; Changed: consistent motion + view-switch cross-fade).

🤖 Generated with Claude Code

Animation/UX polish pass for v2.9.0: make motion consistent across the app, add predictive-back gesture preview, and honour the system "remove animations" setting. On-device verified on a Pixel 10. ## Motion consistency - Centralised the motion vocabulary in `CalendarTransitions.kt` and routed every surface through it (shared expand/collapse, list-item, fade-through helpers). The event-edit expand pattern is now the shared one (no duplicate). - Settings reminder-override rows and the reminder **Custom** field now expand/collapse instead of bare-fading. - Search and agenda rows animate (fade/relocate) via `animateItem`. - **View switching** (Month/Week/Day/Agenda) now fades through instead of snapping — lateral navigation per M3 — while in-view paging keeps its directional slide. - Onboarding/permission gates cross-fade. ## Predictive back - `enableOnBackInvokedCallback` enabled in the manifest. - New `Modifier.predictiveBack(onBack)` drives the standard preview transform (scale / shift / round) following the back gesture; applied to detail, edit, search, settings (+ sub-screens & calendar manager via `CollapsingScaffold`), the calendar editor and import — each keeping its existing back semantics. ## Accessibility - `rememberReduceMotion()` reads the OS "remove animations" setting (which Compose ignores by default); spatial motion collapses to a quick fade and the back preview is skipped. ## Changelog - `[Unreleased]` updated (Added: predictive back, reduce-motion; Changed: consistent motion + view-switch cross-fade). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
makiolaj added 2 commits 2026-06-25 07:44:48 +00:00
Centralise the app's motion vocabulary in CalendarTransitions.kt and route
every surface through it so animation is consistent app-wide:

- Shared expand/collapse, list-item and fade-through helpers; the event-edit
  expand pattern is now the shared one (no duplicate).
- Settings reminder-override rows and the reminder Custom field now expand/
  collapse instead of bare-fading.
- Search and agenda rows animate (fade/relocate) via animateItem.
- Month/week/day slide and the onboarding gates honour the new helpers.
- View switching (month/week/day/agenda) now fades through instead of
  snapping — lateral navigation per M3, while in-view paging keeps its slide.

Add full predictive-back support:

- enableOnBackInvokedCallback in the manifest.
- New Modifier.predictiveBack(onBack) drives the standard preview transform
  (scale/shift/round) following the back gesture; applied to detail, edit,
  search, settings (+ sub-screens & calendar manager via CollapsingScaffold),
  the calendar editor and import — each keeping its existing back semantics.

Reduced-motion guardrail throughout: rememberReduceMotion() (reads the OS
"remove animations" setting, which Compose ignores by default) collapses
spatial motion to a quick fade and skips the back preview.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
docs(changelog): note motion polish, predictive back & reduced-motion
All checks were successful
CI / ci (pull_request) Successful in 4m27s
5d48c90408
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
makiolaj merged commit 599c3c03e7 into release/v2.9.0 2026-06-25 07:52:32 +00:00
makiolaj deleted branch feat/ui-polish-animations 2026-06-25 07:52:33 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: makiolaj/calendula#36