Reproduction:
- Open a session from the home dashboard.
- Press back to return to the dashboard.
- The session rows render as opaque gray bars (the pinch-blur overlay stuck at full effect), hiding the title/preview text. The rows are still tappable.
- The symptom clears after any gesture that forces a re-layout (e.g. dragging up from the bottom, or a second tap).
Root cause:
Each dashboard row hosts its content inside a UIVisualEffectView (pinchBlur) used to blur sibling rows during pinch-to-zoom. During a NavigationStack push/pop, iOS can finish/invalidate the paused UIViewPropertyAnimator driving the blur, snapping the effect to its end state. forceResetPinchBlurIfIdle was called on re-apply, but it skipped resetting when a stale fade CADisplayLink was present and rebuilt the paused animator without removing the stale effect view — so the milky band persisted until an external gesture forced a re-layout.
Fix:
In forceResetPinchBlurIfIdle, cancel any stale fade display link and remove the UIVisualEffectView from the hierarchy (the pinch path lazily reinstalls it when a real pinch begins), so returning from a conversation starts from a clean, blur-free row.
Reproduction:
Root cause:
Each dashboard row hosts its content inside a
UIVisualEffectView(pinchBlur) used to blur sibling rows during pinch-to-zoom. During a NavigationStack push/pop, iOS can finish/invalidate the pausedUIViewPropertyAnimatordriving the blur, snapping the effect to its end state.forceResetPinchBlurIfIdlewas called on re-apply, but it skipped resetting when a stale fadeCADisplayLinkwas present and rebuilt the paused animator without removing the stale effect view — so the milky band persisted until an external gesture forced a re-layout.Fix:
In
forceResetPinchBlurIfIdle, cancel any stale fade display link and remove theUIVisualEffectViewfrom the hierarchy (the pinch path lazily reinstalls it when a real pinch begins), so returning from a conversation starts from a clean, blur-free row.