- PageCarousel now creates the IntersectionObserver exactly once when
the track mounts and diffs observed wrappers on pages changes,
instead of tearing down and rebuilding the entire IO on every
add/remove. Already-mounted pages no longer re-fire the intersection
callback on each reactive tick.
- SceneAppBar receives stable callback identities. The bar-props effect
previously recreated fresh inline arrows on every reactive pass
(carouselPages / appTitles / DEFAULT_WIDTH change), forcing the bar
to see new props even when only data changed. Hoisted handlers make
the bar's prop diff a pure data comparison.
- `createScene` failures from the bar now surface in the console
instead of silently rejecting.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>