POWR/CHANGELOG.md

459 lines
20 KiB
Markdown
Raw Normal View History

2025-02-09 20:38:38 -05:00
# Changelog
All notable changes to the POWR project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
# Changelog - March 20, 2025
## Improved
- Enhanced Social Feed UI
- Redesigned feed posts with divider-based layout instead of cards
- Implemented edge-to-edge content display with hairline separators
- Optimized post spacing for more compact, Twitter-like appearance
- Reduced vertical padding between post elements
- Tightened spacing between content and action buttons
- Fixed image loading for POWR Pack images
- Enhanced overall feed performance with component memoization
- Improved empty state messaging
- Fixed infinite loop issues in feed subscription management
- Added proper feed reset and refresh functionality
- Enhanced debugging tools for relay connection troubleshooting
- Improved feed state management with proper lifecycle handling
- Optimized rendering for long lists with virtualized FlatList
- Added scrollToTop functionality for new content
# Changelog - March 19, 2025
## Added
- Social Feed Integration
- Implemented tabbed social feed with Following, POWR, and Global tabs
- Created EnhancedSocialPost component for rendering workout events
- Added support for viewing workout records, exercise templates, and workout templates
- Implemented post interaction features (likes, comments)
- Added workout detail screen for viewing complete workout information
- Integrated with Nostr protocol for decentralized social content
- Created SocialFeedService for fetching and managing social content
- Implemented useFollowingFeed, usePOWRFeed, and useGlobalFeed hooks
- Added user profile integration with avatar display
- Created POWRPackSection for discovering shared workout templates
## Improved
- Enhanced profile handling
- Added robust error management for profile image loading
- Implemented proper state management to prevent infinite update loops
- Better memory management with cleanup on component unmount
- Workout content display
- Created rich workout event cards with detailed exercise information
- Added support for displaying workout duration, exercises, and performance metrics
- Implemented proper text handling for React Native
- Nostr integration
- Added support for exercise, template, and workout event kinds
- Implemented event parsing for different content types
- Created useSocialFeed hook with pagination support
- Enhanced NDK integration with better error handling
- UI/UX enhancements
- Added pull-to-refresh for feed updates
- Implemented load more functionality for pagination
- Created skeleton loading states for better loading experience
- Enhanced navigation between feed and detail screens
# Changelog - March 12, 2025
## Added
- POWR Packs - Shareable template and exercise collections
- Implemented import/export system for workout content using Nostr protocol
- Added database schema support for packs (tables: powr_packs, powr_pack_items)
- Created POWRPackService for fetching, importing, and managing packs
- Built NostrIntegration helper for conversion between Nostr events and local models
- Implemented interface to browse and import workout packs from the community
- Added pack management screen with import/delete functionality
- Created pack discovery in POWR Community tab
- Added dependency tracking for exercises required by templates
- Implemented selective import with smart dependency management
- Added clipboard support for sharing pack addresses
## Improved
- Enhanced Social experience
- Added POWR Pack discovery to POWR Community tab
- Implemented horizontal scrolling gallery for featured packs
- Added loading states with skeleton UI
- Improved visual presentation of shared content
- Settings drawer enhancements
- Added POWR Packs management option
- Improved navigation structure
- Nostr integration
- Added support for NIP-51 lists (kind 30004)
- Enhanced compatibility between app models and Nostr events
- Improved type safety for Nostr operations
- Better error handling for network operations
- Expanded event type support for templates and exercises
2025-03-09 11:15:28 -04:00
# Changelog - March 9, 2025
## Added
- Relay management system
- Added relays table to SQLite schema (version 3)
- Created RelayService for database operations
- Implemented RelayStore using Zustand for state management
- Added compatibility layer for NDK and NDK-mobile
- Added relay management UI in settings drawer
- Implemented relay connection status tracking
- Added support for read/write permissions
- Created relay initialization system with defaults
## Improved
- Enhanced NDK initialization
- Added proper relay configuration loading
- Improved connection status tracking
- Enhanced error handling for relay operations
- Settings drawer enhancements
- Added relay management option
- Improved navigation structure
- Enhanced user interface
- NDK compatibility
- Created universal interfaces for NDK implementations
- Added type safety for complex operations
- Improved error handling throughout relay management
# Changelog - March 8, 2025
## Added
- Database schema upgrade to version 5
- Added workouts, workout_exercises, and workout_sets tables
- Added templates and template_exercises tables
- Added publication_queue table for offline-first functionality
- Added app_status table for connectivity tracking
- New database services
- WorkoutService for managing workout data persistence
- Enhanced TemplateService for template management
- NostrWorkoutService for Nostr event conversion
- Updated PublicationQueueService for offline publishing
- React hooks for database access
- useWorkouts hook for workout operations
- useTemplates hook for template operations
- Improved workout completion flow
- Three-tier storage approach (Local Only, Publish Complete, Publish Limited)
- Template modification options (keep original, update, save as new)
- Enhanced social sharing capabilities
- Detailed workout summary with statistics
- Enhanced database debugging tools
- Added proper error handling and logging
- Improved transaction management
- Added connectivity status tracking
## Fixed
- Missing workout and template table errors
- Incomplete data storage issues
- Template management synchronization
- Nostr event conversion between app models and Nostr protocol
- Workout persistence across app sessions
- Database transaction handling in workout operations
- Template reference handling in workout records
## Improved
- Workout store persistence layer
- Enhanced integration with database services
- Better error handling for database operations
- Improved Nostr connectivity detection
- Template management workflow
- Proper versioning and attribution
- Enhanced modification tracking
- Better user control over template sharing
- Overall data persistence architecture
- Consistent service-based approach
- Improved type safety
- Enhanced error propagation
# Changelog - March 6, 2025
## Added
2025-03-07 10:09:55 -05:00
- Comprehensive workout completion flow
- Implemented three-tier storage approach (Local Only, Publish Complete, Publish Limited)
- Added support for template modifications with options to keep original, update, or save as new
- Created celebration screen with confetti animation
- Integrated social sharing capabilities for Nostr
- Built detailed workout summary with achievement tracking
- Added workout statistics including duration, volume, and set completion
- Implemented privacy-focused publishing options
- Added template attribution and modification tracking
- NDK mobile integration for Nostr functionality
- Added event publishing and subscription capabilities
- Implemented proper type safety for NDK interactions
- Created testing components for NDK functionality verification
- Enhanced exercise management with Nostr support
- Implemented exercise creation, editing, and forking workflows
- Added support for custom exercise event kinds (33401)
- Built exercise publication queue for offline-first functionality
- User profile integration
- Added profile fetching and caching
- Implemented profile-based permissions for content editing
- Fixed type definitions for NDK user profiles
- Robust workout state management
- Fixed favorites persistence in SQLite
- Added template-based workout initialization
- Implemented workout tracking with real-time updates
## Fixed
- TypeScript errors across multiple components:
- Resolved NDK-related type errors in ExerciseSheet component
- Fixed FavoritesService reference errors in workoutStore
- Corrected null/undefined handling in NDKEvent initialization
- Fixed profile type compatibility in useProfile hook
- Added proper type definitions for NDK UserProfile
- Dependency errors in PublicationQueue and DevSeeder services
- Source and authorization checks for exercise editing permissions
- Component interoperability with NDK mobile
## Improved
2025-03-07 10:09:55 -05:00
- Enhanced relay connection management
- Added timeout-based connection attempts
- Implemented better connection status tracking
- Added relay connectivity verification before publishing
- Improved error handling for publishing failures
- Workout completion UI
- Added scrollable interfaces for better content accessibility
- Enhanced visual feedback for selected options
- Improved button placement and visual hierarchy
- Added clearer visual indicators for selected storage options
- Refactored code for better type safety
- Enhanced error handling with proper type checking
- Improved Nostr event creation workflow with NDK
- Streamlined user authentication process
- Enhanced development environment with better type checking
2025-02-09 20:38:38 -05:00
## [Unreleased]
### Added
- Successful Nostr protocol integration
- Implemented NDK-mobile for React Native compatibility
- Added secure key management with Expo SecureStore
- Created event signing and publishing functionality
- Built relay connection management system
- Implemented event caching for offline support
- Added support for various Nostr event kinds (Text, Exercise, Template, Workout)
- Programs component for testing Nostr functionality
- Created tabbed interface with Database and Nostr sections
- Implemented user authentication flow
- Added event creation with multiple event types
- Built query functionality for retrieving events
- Developed event display with detailed tag inspection
- Added login/logout capabilities with secure key handling
- Enhanced crypto support for React Native environment
- Implemented proper cryptographic polyfills
- Added secure random number generation
- Built robust key management system
- Developed signer implementation for Nostr
- Zustand workout store for state management
- Created comprehensive workout state store with Zustand
- Implemented selectors for efficient state access
- Added workout persistence and recovery
- Built automatic timer management with background support
- Developed minimization and maximization functionality
- Zustand workout store for state management
- Created comprehensive workout state store with Zustand
- Implemented selectors for efficient state access
- Added workout persistence and recovery
- Built automatic timer management with background support
- Developed minimization and maximization functionality
- Workout tracking implementation with real-time tracking
- Added workout timer with proper background handling
- Implemented rest timer functionality
- Added exercise set tracking with weight and reps
- Created workout minimization and maximization system
- Implemented active workout bar for minimized workouts
- SQLite database implementation with development seeding
- Successfully integrated SQLite with proper transaction handling
- Added mock exercise library with 10 initial exercises
- Implemented development database seeder
- Added debug logging for database operations
- Event caching system for future Nostr integration
- Added EventCache service for Nostr event handling
- Implemented proper transaction management
- Added cache metadata tracking
- Database schema improvements
- Added nostr_events and event_tags tables
- Added cache_metadata table for performance optimization
- Added exercise_media table for future media support
- Alphabetical quick scroll in exercise library
- Dynamic letter highlighting for available sections
- Smooth scrolling to selected sections
- Sticky section headers for better navigation
2025-02-09 20:38:38 -05:00
- Basic exercise template creation functionality
- Input validation for required fields
- Schema-compliant field constraints
- Native picker components for standardized inputs
- Enhanced error handling in database operations
- Detailed SQLite error logging
- Improved transaction management
- Added proper error types and propagation
2025-02-19 21:39:47 -05:00
- Template management features
- Basic template creation interface
- Favorite template functionality
- Template categories and filtering
- Quick-start template actions
- Full-screen template details with tab navigation
- Replaced bottom sheet with dedicated full-screen layout
- Implemented material top tabs for content organization
- Added Overview, History, and Social tabs
- Improved template information hierarchy
- Added contextual action buttons based on template source
- Enhanced social sharing capabilities
- Improved workout history visualization
2025-02-09 20:38:38 -05:00
### Changed
- Improved workout screen navigation consistency
- Standardized screen transitions and gestures
- Added back buttons for clearer navigation
- Implemented proper workout state persistence
- Enhanced exercise selection interface
- Updated add-exercises screen with cleaner UI
- Added multi-select functionality for bulk exercise addition
- Implemented exercise search and filtering
- Improved exercise library interface
- Removed "Recent Exercises" section for cleaner UI
- Added alphabetical section organization
- Enhanced keyboard handling for input fields
- Increased description text area size
2025-02-09 20:38:38 -05:00
- Updated NewExerciseScreen with constrained inputs
- Added dropdowns for equipment selection
- Added movement pattern selection
- Added difficulty selection
- Added exercise type selection
- Improved DbService with better error handling
- Added proper SQLite error types
- Enhanced transaction rollback handling
- Added detailed debug logging
2025-02-19 21:39:47 -05:00
- Updated type system for better data handling
- Consolidated exercise and template types
- Added proper type guards
- Improved type safety in components
- Enhanced template display UI
- Added category pills for filtering
- Improved spacing and layout
- Better visual hierarchy for favorites
- Migrated from React Context to Zustand for state management
- Improved performance with fine-grained rendering
- Enhanced developer experience with simpler API
- Better type safety with TypeScript integration
- Added persistent workout state for recovery
- Redesigned template details experience
- Migrated from bottom sheet to full-screen layout
- Restructured content with tab-based navigation
- Added dedicated header with prominent action buttons
- Improved attribution and source indication
- Enhanced visual separation between template metadata and content
2025-02-09 20:38:38 -05:00
### Fixed
- Workout navigation gesture handling issues
- Workout timer inconsistency during app background state
- Exercise deletion functionality
- Keyboard overlap issues in exercise creation form
- SQLite transaction nesting issues
- TypeScript parameter typing in database services
- Null value handling in database operations
- Development seeding duplicate prevention
2025-02-19 21:39:47 -05:00
- Template category spacing issues
- Exercise list rendering on iOS
- Database reset and reseeding behavior
- Template details UI overflow issues
- Navigation inconsistencies between template screens
- Content rendering issues in bottom sheet components
2025-02-09 20:38:38 -05:00
### Technical Details
1. Nostr Integration:
- Implemented @nostr-dev-kit/ndk-mobile package for React Native compatibility
- Created dedicated NDK store using Zustand for state management
- Built secure key storage and retrieval using Expo SecureStore
- Implemented event creation, signing, and publishing workflow
- Added relay connection management with status tracking
- Developed proper error handling for network operations
2. Cryptographic Implementation:
- Integrated react-native-get-random-values for crypto API polyfill
- Implemented NDKMobilePrivateKeySigner for key operations
- Added proper key format handling (hex, nsec)
- Created secure key generation functionality
- Built robust error handling for cryptographic operations
3. Programs Testing Component:
- Developed dual-purpose interface for Database and Nostr testing
- Implemented login system with key generation and secure storage
- Built event creation interface with multiple event kinds
- Added event querying and display functionality
- Created detailed event inspection with tag visualization
- Added relay status monitoring
4. Database Schema Enforcement:
2025-02-09 20:38:38 -05:00
- Added CHECK constraints for equipment types
- Added CHECK constraints for exercise types
- Added CHECK constraints for categories
- Proper handling of foreign key constraints
5. Input Validation:
2025-02-09 20:38:38 -05:00
- Equipment options: bodyweight, barbell, dumbbell, kettlebell, machine, cable, other
- Exercise types: strength, cardio, bodyweight
- Categories: Push, Pull, Legs, Core
- Difficulty levels: beginner, intermediate, advanced
- Movement patterns: push, pull, squat, hinge, carry, rotation
6. Error Handling:
2025-02-09 20:38:38 -05:00
- Added SQLite error type definitions
- Improved error propagation in LibraryService
- Added transaction rollback on constraint violations
7. Database Services:
- Added EventCache service for Nostr events
- Improved ExerciseService with transaction awareness
- Added DevSeederService for development data
- Enhanced error handling and logging
8. Workout State Management with Zustand:
- Implemented selector pattern for performance optimization
- Added module-level timer references for background operation
- Created workout persistence with auto-save functionality
- Developed state recovery for crash protection
- Added support for future Nostr integration
- Implemented workout minimization for multi-tasking
9. Template Details UI Architecture:
- Implemented MaterialTopTabNavigator for content organization
- Created screen-specific components for each tab
- Developed conditional rendering based on template source
- Implemented context-aware action buttons
- Added proper navigation state handling
2025-02-09 20:38:38 -05:00
### Migration Notes
- Exercise creation now enforces schema constraints
- Input validation prevents invalid data entry
- Enhanced error messages provide better debugging information
2025-02-19 21:39:47 -05:00
- Template management requires updated type definitions
- Workout state now persists across app restarts
- Component access to workout state requires new selector pattern
- Template details navigation has changed from modal to screen-based approach
2025-02-09 20:38:38 -05:00
## [0.1.0] - 2024-02-09
### Added
- Initial project setup with Expo and React Native
- Basic tab navigation structure
- Theme support (light/dark mode)
- SQLite database integration
- Basic exercise library interface
### Changed
- Migrated to TypeScript
- Updated to latest Expo SDK
- Implemented NativeWind for styling
### Fixed
- iOS status bar appearance
- Android back button handling
- SQLite transaction management
### Security
- Added basic input validation
- Implemented secure storage for sensitive data
## [0.0.1] - 2024-02-01
### Added
- Initial repository setup
- Basic project structure
- Development environment configuration
- Documentation templates