Skip to content

fix: respect reduced motion in programmatic scrolling - #73

Closed
saphid wants to merge 1 commit into
docs/consistency-reduced-motionfrom
fix/consistency-reduced-motion
Closed

saphid wants to merge 1 commit into
docs/consistency-reduced-motionfrom
fix/consistency-reduced-motion

Conversation

@saphid

@saphid saphid commented Sep 20, 2026 •

Copy link
Copy Markdown
Owner

What Changed

Some programmatic scroll routes still animated when reduced motion was enabled: theme token reveal, timeline minimap and send anchors, scroll-to-bottom, keyboard page steps, and native message-to-end actions. These routes now read the current preference at the action boundary. Existing settings, tabs and citation behavior share the same small web helper.

Why

This implements the programmatic-scroll portion of the proposed reduced-motion invariant. Dependency inspection confirmed Legend forwards the animated flag; Pierre and Reanimated already honor their supported defaults, so those behaviors remain intact. Direct manipulation, held scrolling and keyboard dismissal retain their existing behavior. This does not claim all app motion was runtime-verified.

Stacked on docs/consistency-reduced-motion in the fork, independently of other invariant pairs.

Validation

  • 39 focused tests passed across ThemeEditorPanel, settingsLayout, pageScrollController and AssistantCitationSource.
  • Web and mobile package typechecks exited 0; scoped lint exited 0 with surrounding existing warnings.
  • Independent review was attempted with direct devin -p --model swe-2-max against the frozen diff and coding standard. It produced no review output for over 600 seconds; the manager stopped its captured process (exit 1). No completed independent review or findings are claimed.

UI Changes

Runtime proof (2026-09-20, isolated proof app; base d6f2913 vs this branch): with matchMedia stubbed to report prefers-reduced-motion, PageDown on the message timeline glides ~130 ms on base; on this branch it lands in a single frame (scrollTop sampled over time).

Before: https://github.com/user-attachments/assets/edc47833-6724-4437-8866-4a40b4a25e92
After: https://github.com/user-attachments/assets/0ca1dd0d-d8a3-41fe-9efc-bf3a2d2b1be2
Context: https://github.com/user-attachments/assets/22220954-f3a8-4663-93f1-6796e05938eb

Native scroll/accessibility paths were verified by focused tests only — T3 Device tools are unavailable in this environment.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for UI changes
  • I included a video for animation/interaction changes

Implemented by GPT-6 Astra (medium reasoning) in Codex; independent SWE-2 Max review attempt in Devin CLI timed out without a verdict.

Native verification limitation: T3 Device tools are unavailable. No native automation fallback or native build was started; native scrolling, preference changes, and motion/accessibility proof remain unverified. Isolated server setup remains authorized if a supported verification route becomes available.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M labels Sep 20, 2026
@saphid

saphid commented Sep 21, 2026

Copy link
Copy Markdown
Owner Author

Superseded by pingdotgg#12871 — the implementation PR now lives upstream against main (it contains the docs commit until the paired docs PR merges). Same head branch, same commits; this fork draft is closed to avoid a duplicate review surface.

@saphid saphid closed this Sep 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant