feat(client): add pull-to-refresh to every content page #314
No reviewers
Labels
No labels
area:auth
area:ci
area:db
area:infra
area:native
area:pwa
area:service
epic
feature
foundation
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
james/carol!314
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "309-pull-to-refresh"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Adds a shared pull-to-refresh gesture to every server-data page of the universal client, wired to refetch that page's TanStack Query data.
How
New hook
lib/nav/useRefreshControl.tsxtakes one or more query results and returns a themed<RefreshControl>(accent-colored spinner viauseTheme().tokens.accent, i18naccessibilityLabel, web-safe — the control renders but the gesture is native-only). Each page passes it to its scroll container'srefreshControlprop.useNotesuseSkillSectionsuseProjectsuseProfileuseEducations,useJobs,useContractsusePeople,useOrganizationsusePerson,usePeople,useOrganizationsuseOrganization,usePeopleuseMe,useAccountIdentities,useAccountTokens,useServerVersionapplicationsandchatare Placeholder screens (epics #2/#47) with no scroll container or server query — skipped.Notes
common.refreshtoen.json(sentence case) for the control's accessibility label.Verification
pnpm -F @carol/client typecheck— cleanpnpm -F @carol/client lint— cleanpnpm -F @carol/client test— 131 passCloses #309
🤖 Generated with Claude Code
📊 Test coverage
Patch coverage: no testable lines changed.
Overall (
app/,lib/,db/, excluding UI per ADR-0019):Soft thresholds per ADR-0019. Coverage is informational and does not block merge.
a1d2bdb52057965318b3