- Add state machine for authentication state management
- Add signing queue for background processing
- Add auth service for centralized authentication logic
- Add React context provider for components
- Keep feature flag disabled for now
* Add style prop to UserAvatar component for better customization
* Refactor UserAvatar to use getAvatarSeed utility for consistent avatar generation
* Fix React hook ordering issues in profile/overview.tsx to prevent crashes during auth state changes
* Add proper state initialization and cleanup during authentication transitions
* Ensure consistent fallback avatar display for unauthenticated users
These changes improve stability during login/logout operations and provide better visual continuity with Robohash avatars when profile images aren't available.
- Create reusable NostrProfileLogin component for consistent UI across all screens
- Fix profile feed error when not authenticated by conditionally calling useSocialFeed
- Resolve hook ordering inconsistencies to prevent React errors
- Improve feed loading state management during authentication transitions
- Update all profile screens (overview, activity, progress, settings) to use shared component
- Add proper error handling for profile data loading when not authenticated
This change resolves the console error that appeared when accessing the profile tab
while not logged in, while also providing a better user experience through
consistent styling and messaging across all profile screens.
- Update outdated Expo packages to latest compatible versions
- Remove unmaintained expo-random package
- Remove unnecessary @types/react-native package
- Configure eas.json with preview and production profiles for iOS
- Fix updates URL in app.json with correct project ID
- Add /android and /ios to .gitignore to resolve workflow conflict
- Create comprehensive iOS TestFlight submission guide
- Add production flag in theme constants
- Hide development-only Programs tab in production builds
- Remove debug UI and console logs from social feed in production
- Update CHANGELOG.md with TestFlight preparation changes
All checks from expo-doctor now pass (15/15).
- Add contact_cache table schema and migration
- Update useContactList hook with caching support
- Enhance RelayInitializer with cache initialization
- Update SocialFeedService to work with caching system
- Implemented global transaction lock mechanism in SocialFeedCache
- Updated ContactCacheService to use the transaction lock
- Enhanced Following feed refresh logic with retry mechanism
- Extended transaction lock to WorkoutService
- Updated documentation with transaction lock details
- Cleaned up code and improved error handling
- Modified NewTemplateSheet to store full exercise objects
- Updated handleAddTemplate to use original exercise IDs
- Fixed type definitions to support enhanced template exercises
Implements database tables and services for workout and template storage:
- Updates schema to version 5 with new workout and template tables
- Adds WorkoutService for CRUD operations on workouts
- Enhances TemplateService for template management
- Creates NostrWorkoutService for bidirectional Nostr event handling
- Implements React hooks for database access
- Connects workout store to database layer for persistence
- Improves offline support with publication queue
This change ensures workouts and templates are properly saved to SQLite
and can be referenced across app sessions, while maintaining Nostr
integration for social sharing.