Releases: CPlusPlus17/FitnessJournal
Releases · CPlusPlus17/FitnessJournal
v1.3 — Coaching Intelligence & Context Enrichment
smarter AI coach that remembers your past plans, tracks your adherence, and draws from your full athlete profile when generating advice.
✨ New Features
- Coaching Intelligence
- Coaching memory — Previous plan responses are now fed back into the next coaching brief, giving the AI continuity across weekly cycles
- Adherence tracking — The coach compares generated_workouts.json against actual Garmin activities and reports completion rates (e.g., "3/4 planned workouts completed — 75%")
- Weekly progression deltas — Week-over-week strength comparisons (weight × reps) are included in the coaching brief to inform the next plan
- Enriched Conversational AI Context
- Upcoming races & events — Filtered from the Garmin calendar with days-until countdown, so the AI can reference your timeline
- Profile goals, constraints & equipment — Loaded from profiles.json and appended to every conversation
- All-time strength PRs — Top 15 exercises by best weight × reps are included, giving the AI awareness of long-term progression
- New API Endpoints
- GET /api/recovery/history — 30-day recovery metrics history for dashboard charts
- GET /api/progression/deltas — Week-over-week exercise weight/rep comparisons
- Refined AI coaching prompt generation with improved Garmin exercise set handling
📝 Documentation
- Complete rewrite of
- CLAUDE.md
- — comprehensive reference covering all 11 modules, 16 API endpoints, 5 notifiers, and full configuration
- Updated
- README.md
- with all bot commands, free-text chat, scheduled notifications, and expanded changelog
- Updated
- INSTALL_DUMMIES.md
- with SIGNAL_SUBSCRIBERS, new Phase 7 (Getting to Know Your Coach)
- Replaced default
- dashboard/README.md
- with project-specific documentation
- Added
- .gitleaksignore
- for Garmin's public OAuth1 consumer key/secret (false positives)
🔧 Improvements
- Recent activity analyses are included in coaching briefs for better training continuity
- Improved Garmin exercise set handling in prompt generation
- Full Changelog: 1.2...1.3
1.2: PWA Support, Smarter Coaching & Interactive Muscle Map
What's New in v1.2
- Progressive Web App (PWA) — Install Fitness Journal on your phone or tablet with full offline-ready manifest and icons (4809ef4)
- Configurable week start day — Choose your preferred first day of the week for scheduling (664f592)
- Smarter AI coaching — The coach now considers completed strength sessions and only cleans up future workouts, avoiding unwanted regeneration on restart (664f592)
- Interactive muscle map tooltip — Hover over muscles on the body map to see targeted muscle details (3a64b9a)
- Improved Docker stability — SQLite configured with journal_mode=DELETE and synchronous=FULL for reliable persistence in containerized environments (3a64b9a)
1.1: AI Event Analysis & Configuration Enhancements
What's Changed
✨ Features
- AI Analysis: Implement AI-powered analysis for upcoming primary events with UI integration and caching (51fab7a)
- Caching: Make Garmin data cache time-to-live configurable via environment variable, defaulting to 5 minutes (02b2d2a)
- Configuration: Allow configuring the profiles path via
PROFILES_PATHenvironment variable (5dea2cd) - Configuration: Added capability to change the Gemini API model via configuration (ed49703)
- Logging: Log the AI model being used upon instantiation (a68547d)
🐛 Bug Fixes
- Docker: Correct the
PROFILES_PATHenvironment variable to match the volume mount (363430f) - Docker: Resolve duplicate environment dictionary in compose file and missing
gemini_modelparameters in bot.rs and api.rs (aa9a1c4) - Build: Resolve extra brace from merge conflict resolution (8801082)
- Database: Fixed Database initialization/access issues (a625b77)
1.0.1
✨ Features
- Superset & Nested Step Support: Implemented the ability to handle nested exercises and sets within workout steps, allowing for the creation and tracking of supersets.
- Enhanced AI Workout Generation:
- Added constraints to ensure the AI generates workouts using only valid, known exercises.
- Enabled the creation of multiple workouts from a single user input prompt.
- Improved the parsing of CSV headers for better data ingestion.
- Gemini API Token Tracking: Added deserialization and comprehensive logging for Gemini API token usage to better monitor AI requests and costs.
🐛 Bug Fixes
- Garmin API Payload Format: Fixed an issue with the Garmin API integration by updating the exerciseName and category payload format to correctly match Garmin's exact API requirements.
1.0
🤖 AI Coach & Messaging Features
- Conversational AI Coach: Added a live conversational AI coach that utilizes your Garmin context, including workout scheduling and chat history logging (6001f1e).
- Coaching Notifiers: Implemented weekly AI coach reviews (a35557f), monthly AI-powered debriefs, and race readiness assessments with new scheduled bot commands (5eac6b3).
- Context Enhancements: Boosted the AI bot's context by including recent activities, analysis summaries (facb7de), and the current date/time (6f2c851).
- Message Processing: Enhanced "note to self" message detection using UUIDs to accurately identify the sender (8827935).
🏃 Activity & Workout Management
- AI Workout Generation: Improved workout generation to leverage valid Garmin exercise constraints, enabled creating multiple workouts from a single prompt, and updated data payload formats to better match the API (fea16c3, c4ae8b2).
- Workout Duration Prediction: Added logic to automatically predict workout durations with database caching and exposed it on the dashboard (20b05ab).
- Automatic Activity Analysis: Implemented automated analysis of workouts (filtered by mapped sports in user profiles) and added real-time Signal broadcasting (f4215a8). Added force data synchronization for deeper insights (634a1fc).
- Cleanup Operations: Integrated a database function to automatically purge and clear old coach briefs right before generating new AI workout plans (66f174f).
📊 Dashboard & API
- Recovery Analytics: Introduced a new recovery history chart to the dashboard, supported by dedicated database tables to store daily recovery metric logs and accessible via new API endpoints (3ba9dd8).
⚙️ Architecture & Refactoring
- Configuration Management: Centralized all project configurations via the figment crate to load configurations seamlessly from environment variables or a Fitness.toml file (babdbcf).
- Logging Improvements: Refactored println! and eprintln! calls to use the tracing macro structured logger across the repository (f7b80ee).
- Code Modularity: Extracted monolithic processing tasks into dedicated helper functions covering synchronizing workouts, checking profiles, parsing activities, and generating training plans (9adee3e).
- CLI Parsing: Swapped basic argument parsing for the robust clap crate structure (2e9f172).
- Daemon Tuning: Adjusted the application's daemon loop poll interval to 5 minutes (6f2c851).
📝 Documentation
0.9
feat: Introduce daily morning workout briefings, post-generation work…