From the multi-agent perf audit (adversarially verified), the two app-side wins:
- 1.1 Preserve the max-resolution cap on autoplay-next. The enter-video
trackSelectionParameters reset built from a blank default, silently
dropping the data-saver ceiling every URL change so autoplay streamed
uncapped. Now: re-enable the video track via buildUpon + reassert
applyMaxResolutionCap().
- 2.1 VideoDetailBody verticalScroll Column -> LazyColumn. Related +
more-from-channel rows recycle and defer each AsyncImage decode + the
two ThumbnailProgress flow collectors until scrolled into view (was ~40
decodes + ~80 collectors eager on every open). Namespaced item keys
(rel:/mfc:) so a url in both lists doesn't crash the list; kept take(20);
dialogs hoisted out of the lazy content.