Opening Frasier on a Fairphone took ~5 s to render the episode list
although every episode was cached. Three causes:
- resolve_series_view waited for Next Up and resume before returning the
episodes, and Next Up was server-first. The episode list now returns as
soon as the episodes are in (with_hints); hints that have answered are
used, late ones dropped, and the picker falls back to local watch state.
Next Up is cache-first like every other query.
- The page loaded itself six times per open: onMount plus a mount-time
$effect, the reachability effect's first run posing as a reconnect, and
a double mount. All triggers now share one coalesced load per item
(createCoalescedLoader); refresh triggers get one re-run after it.
- The root layout rendered the route in two branches that each rendered
children; the page store deciding between them updates a flush late, so
navigating Search -> library page mounted the page twice. One element
now renders the route and only its classes change.
On the device: one load per open, seasons from cache in 14 ms, episodes
and the Resume button up in under a second (was ~5 s).