- Videos kept looping forever after scrolling off-screen (expo-video has
no visibility awareness). New useVisiblePostIds hook tracks FlatList
viewability and pauses VideoPlayer once a post scrolls away, wired
into both the feed and the pet-profile post list.
- Pet edit screen couldn't change breed or set birthday/adoption date,
even though the backend (pets.update) already supported all three —
web already used them. Extracted BreedPicker out of PetCreateForm
into a shared component, added it plus TT-MM-JJJJ date fields (same
validation pattern as the health forms) to edit.tsx. Its BreedPicker
nests a ScrollView, so edit.tsx's outer ScrollView was swapped for a
FlatList to avoid the same nested-scroll gesture conflict fixed
earlier for onboarding/pet.tsx.
- Pet profile's own avatar was a plain, non-tappable Image. Tapping it
now opens the existing /image-viewer (same pinch-to-zoom viewer post
images already use) when the pet has an avatar set.
- milestones.tsx and milestone-new.tsx still imported the static
light-only colors/typography tokens instead of useTheme() — switched
to the established makeStyles(colors) pattern.