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).
|
|
|
|
|
|
|
|
## [Unreleased]
|
|
|
|
|
|
|
|
### Added
|
2025-03-06 09:19:16 -05:00
|
|
|
- Comprehensive exercise management features
|
|
|
|
- Added exercise editing functionality
|
|
|
|
- Implemented exercise forking for Nostr exercises
|
|
|
|
- Created local-first editing with offline support
|
|
|
|
- Added publication queue for deferred Nostr publishing
|
|
|
|
- Built robust exercise update workflow
|
|
|
|
- Implemented source-aware editing permissions
|
|
|
|
- Connectivity service for network state management
|
|
|
|
- Added real-time connectivity monitoring
|
|
|
|
- Implemented persistence for offline state
|
|
|
|
- Built automatic retry system for failed requests
|
|
|
|
- Created hook-based connectivity API for components
|
|
|
|
- Extended database schema for publication queuing
|
|
|
|
- Added publication_queue table
|
|
|
|
- Implemented attempt tracking and rate limiting
|
|
|
|
- Added app_status table for system-wide states
|
2025-03-04 08:07:27 -05:00
|
|
|
- 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
|
2025-02-26 23:30:00 -05:00
|
|
|
- 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
|
2025-02-17 13:40:37 -05:00
|
|
|
- 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
|
2025-02-17 11:24:17 -05:00
|
|
|
- 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
|
2025-02-26 23:30:00 -05:00
|
|
|
- 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
|
2025-03-06 09:19:16 -05:00
|
|
|
- Enhanced exercise detail viewer
|
|
|
|
- Replaced bottom sheet with full-screen modal
|
|
|
|
- Added tabbed interface for information organization
|
|
|
|
- Implemented edit capability with ownership detection
|
|
|
|
- Added fork functionality for Nostr exercises from other users
|
|
|
|
- Improved progress visualization with charts
|
|
|
|
- Redesigned exercise editor
|
|
|
|
- Created multi-purpose editor for create/edit/fork workflows
|
|
|
|
- Added context-aware UI based on exercise source
|
|
|
|
- Implemented specialized buttons based on workflow type
|
|
|
|
- Added better form validation and feedback
|
|
|
|
- Improved keyboard handling across platforms
|
|
|
|
- Improved workflow architecture for model context protocol
|
|
|
|
- Implemented offline-first editing paradigm
|
|
|
|
- Added cryptographic signing before submission
|
|
|
|
- Built local caching with deferred publishing
|
|
|
|
- Created connectivity-aware operation queueing
|
|
|
|
- Added proper error recovery and retry mechanisms
|
2025-02-26 23:30:00 -05:00
|
|
|
- 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
|
2025-02-17 11:24:17 -05:00
|
|
|
- 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
|
2025-02-26 23:30:00 -05:00
|
|
|
- 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
|
|
|
|
2025-02-17 11:24:17 -05:00
|
|
|
### Fixed
|
2025-03-06 09:19:16 -05:00
|
|
|
- Exercise update functionality using delete-recreate pattern
|
|
|
|
- Exercise data type handling in forking operation
|
|
|
|
- TypeScript errors in exercise component interfaces
|
|
|
|
- Nostr event queuing and retry mechanism
|
|
|
|
- Exercise ownership detection for edit vs fork workflows
|
|
|
|
- Connectivity monitoring edge cases
|
2025-02-26 23:30:00 -05:00
|
|
|
- Workout navigation gesture handling issues
|
|
|
|
- Workout timer inconsistency during app background state
|
2025-02-17 11:24:17 -05:00
|
|
|
- Exercise deletion functionality
|
|
|
|
- Keyboard overlap issues in exercise creation form
|
2025-02-17 13:40:37 -05:00
|
|
|
- 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
|
2025-02-26 23:30:00 -05:00
|
|
|
- Template details UI overflow issues
|
|
|
|
- Navigation inconsistencies between template screens
|
|
|
|
- Content rendering issues in bottom sheet components
|
2025-02-17 11:24:17 -05:00
|
|
|
|
2025-02-09 20:38:38 -05:00
|
|
|
### Technical Details
|
2025-03-06 09:19:16 -05:00
|
|
|
1. Exercise Management:
|
|
|
|
- Implemented edit/fork/create workflows with unified interface
|
|
|
|
- Built local-first editing pattern with offline support
|
|
|
|
- Added publication queue for deferred Nostr submissions
|
|
|
|
- Created robust update mechanism in useExercises hook
|
|
|
|
- Implemented source-aware editing permissions
|
|
|
|
- Added ownership detection for exercise operations
|
|
|
|
|
|
|
|
2. Connectivity Management:
|
|
|
|
- Implemented singleton ConnectivityService for app-wide monitoring
|
|
|
|
- Added NetInfo integration for real-time status detection
|
|
|
|
- Built React hook for component-level connectivity awareness
|
|
|
|
- Created database persistence for connectivity state
|
|
|
|
- Implemented event-based notification system
|
|
|
|
|
|
|
|
3. Nostr Integration:
|
2025-03-04 08:07:27 -05:00
|
|
|
- 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
|
|
|
|
|
2025-03-06 09:19:16 -05:00
|
|
|
4. Cryptographic Implementation:
|
2025-03-04 08:07:27 -05:00
|
|
|
- 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
|
|
|
|
|
2025-03-06 09:19:16 -05:00
|
|
|
5. Programs Testing Component:
|
2025-03-04 08:07:27 -05:00
|
|
|
- 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
|
2025-03-06 09:19:16 -05:00
|
|
|
|
|
|
|
6. 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
|
2025-03-06 09:19:16 -05:00
|
|
|
|
|
|
|
7. 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
|
2025-03-06 09:19:16 -05:00
|
|
|
|
|
|
|
8. 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
|
2025-03-06 09:19:16 -05:00
|
|
|
|
|
|
|
9. Database Services:
|
2025-02-17 13:40:37 -05:00
|
|
|
- Added EventCache service for Nostr events
|
|
|
|
- Improved ExerciseService with transaction awareness
|
|
|
|
- Added DevSeederService for development data
|
|
|
|
- Enhanced error handling and logging
|
2025-03-06 09:19:16 -05:00
|
|
|
|
|
|
|
10. 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
|
|
|
|
|
|
|
|
11. 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-26 23:30:00 -05:00
|
|
|
|
2025-02-09 20:38:38 -05:00
|
|
|
### Migration Notes
|
2025-03-06 09:19:16 -05:00
|
|
|
- Exercise editing now follows an offline-first approach with Nostr awareness
|
|
|
|
- ExerciseSheet component replaces separate create/edit components
|
|
|
|
- Exercise updates require proper source and metadata handling
|
|
|
|
- Publication queue provides automatic retry for Nostr events
|
2025-02-09 20:38:38 -05:00
|
|
|
- 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
|
2025-02-26 23:30:00 -05:00
|
|
|
- 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
|