Skip to content

fix(mobile): slide settled threads out before collapsing - #10345

Merged
juliusmarminge merged 1 commit into
pingdotgg:mainfrom
StiensWout:t3code/fix-ios-card-dismissal-animation
Sep 6, 2026
Merged

fix(mobile): slide settled threads out before collapsing#10345
juliusmarminge merged 1 commit into
pingdotgg:mainfrom
StiensWout:t3code/fix-ios-card-dismissal-animation

Conversation

@StiensWout

@StiensWout StiensWout commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Settling a thread could spring the row back to the right before it disappeared. Settle now finishes the leftward exit, collapses the gap, and then commits the action. Failed settles restore the row, and recycled rows retain their original pending action.

Intercept the swipe release before Gesture Handler starts its return spring. Full swipes and the Settle button share the dismissal animation and respect Reduce Motion.

Validation: mobile typecheck and 41 thread-list tests pass. Native builds succeeded for the iOS simulator and iPhone; the clip below records two full-swipe settles on an iPhone 15 Pro Max. Simulator interaction testing was stopped at the maintainer's request.

iPhone recording

https://pub-b182a4071edc4521829926b34990540b.r2.dev/files/ed69ef0c-a417-421e-b445-bc7e1a1c7513/ios-settle-after.mp4

Implemented with GPT-6 in Codex, running through T3 Code.

Note

Slide settled threads out of view before collapsing in ThreadSwipeableRow

  • Settle primary swipe actions now animate the row off-screen and collapse its height before invoking the settlement callback, instead of collapsing immediately
  • The callback returns Promise<boolean>; a false result restores the row, and a rejected promise restores mounted rows and shows an error alert
  • Patches ReanimatedSwipeable in react-native-gesture-handler@2.32.0.patch to accept a UI-thread release callback that can consume a full swipe release and take over the animation before the built-in spring runs
  • ThreadSwipeable now keys its internal row component on resetKey, so changing a row's content identity (variant or snoozed state) remounts the swipeable instead of reusing stale animation state
  • Risk: Settle is marked dismiss-before-commit in thread-list-v2-items.tsx; the gesture-handler patch must remain in sync with the upstream ReanimatedSwipeable source or the release callback contract breaks

Macroscope summarized e9e7585.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Sep 6, 2026
@macroscopeapp

macroscopeapp Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This changes an existing mobile interaction through a new UI-thread dismissal/collapse lifecycle and an application-maintained gesture-handler patch. The async commit timing, recycled-row cleanup, and dependency patch synchronization create enough runtime integration risk to require human review.

You can add or adjust custom eligibility rules. Learn more.

@juliusmarminge
juliusmarminge merged commit 9846915 into pingdotgg:main Sep 6, 2026
21 checks passed
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 6, 2026
## What's Changed
* fix(web): show Tux icon for WSL environments by @UtkarshUsername in pingdotgg/t3code#8511
* perf(web): speed up folder menu sorting by @AksharP5 in pingdotgg/t3code#10190
* style(web): fix inconsistencies in new settings layouts by @extoci in pingdotgg/t3code#10177
* feat(threads): persist manual active thread order by @juliusmarminge in pingdotgg/t3code#9729
* feat(mobile): arrange active threads from both thread lists by @juliusmarminge in pingdotgg/t3code#9730
* feat(web): drag threads across sections with consistent motion by @juliusmarminge in pingdotgg/t3code#9731
* feat(web): simplify sidebar drag destination cues by @juliusmarminge in pingdotgg/t3code#9750
* fix(mobile): keep pending tasks queued when a send fails in flight by @juliusmarminge in pingdotgg/t3code#10245
* feat(mobile): show new-task drafts alongside pending tasks in the thread list by @juliusmarminge in pingdotgg/t3code#10260
* feat(mobile): allow several new-task drafts per project by @juliusmarminge in pingdotgg/t3code#10327
* fix(mobile): slide settled threads out before collapsing by @StiensWout in pingdotgg/t3code#10345


**Full Changelog**: pingdotgg/t3code@v0.0.39-nightly.20260906.1303...v0.0.39-nightly.20260906.1316

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.39-nightly.20260906.1316
BarretoDiego pushed a commit to BarretoDiego/t3code that referenced this pull request Sep 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 changed lines (additions + deletions). 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.

2 participants