Changelog
[1.9.9] - 2026-02-27
Fixed
- Live Session Test Regression: Mise à jour de l'assertion
test_history_and_pr_displaypour correspondre au nouveau libellé du badge PR ("PR :"au lieu de"Record (PR)") introduit par le refactor v1.9.8.
[1.9.8] - 2026-02-27
Changed
- Live Session Layout: Optimized page layout for better mobile UX.
- "Programme de la séance" déplacé tout en bas de page (pleine largeur).
- Bouton "Ajouter un set" colorié en bleu (
btn-outline-primary). - Historique récent (PR, sets précédents) remonté juste sous le champ "Note" dans le formulaire.
- Vidéo / image masquée par défaut ; bouton
?(Bootstrap collapse) pour l'afficher à la demande.
[1.9.7] - 2026-02-27
Fixed / Completed
- Body Metrics Tracking (completion): Finished the full frontend implementation started in v1.9.6.
- UI: Added the missing "Données Corporelles" tab pane in
analytics_dashboard.html(form + Chart.js + history table). - Edit/Delete: Users can now edit and delete existing entries directly from the history table (PATCH/DELETE via the DRF API).
- UX: "Modifier" button pre-fills the form; "Annuler" returns to creation mode; unique-date collision shows a helpful warning.
- Testing: Added 3 regression tests:
test_update_body_metrics,test_delete_body_metrics,test_cannot_access_other_user_metrics(6 tests total, all passing).
[1.9.6] - 2026-02-27
Added
- Body Metrics Tracking: New feature to track body measurements over time.
- Data Model: Added
BodyMetricsmodel (Weight, Biceps, Chest, Thigh, Waist). - API: Implemented REST API endpoints for Body Metrics.
- UI: Added "Données Corporelles" tab in Analytics Dashboard with entry form and interactive Chart.js visualizations.
- Testing: Added regression tests for Body Metrics API.
[1.9.5] - 2026-02-27
Added
- Live Session UI: Added a Tracking Type Modal to allow dynamically changing the unit of a set during a session (Reps, Time, Distance, with or without weight).
- Live Session UX: Dynamically adjusts the input widths depending on the presence of a weight constraint (using
col-12when weight is omitted vscol-6).
Fixed
- Mobile Safari: Replaced deprecated
apple-mobile-web-app-capablewithmobile-web-app-capableinbase.htmlfor PWA compliance.
[1.9.4] - 2026-02-27
Fixed
- Analytics Integrity: Fixed a bug where cancelled or abandoned sessions were visible in analytics, charts, and dashboard stats. All analytics now strictly filter for
flag_finished=True. - Session Management: Implemented auto-cleanup of orphan sessions. Starting any new session (Normal or Free) now automatically deletes previous unfinished sessions for that user.
- Resume Feature: Improved "Resume Session" logic to ensure only one unfinished session can exist at a time per user.
- Data Integrity: Unified the use of
current_workout_sessionin templates to prevent context variable collisions.
[1.9.3] - 2026-02-27
Added
- Feature (Cancel Session): Implemented "Cancel Session" for Free Sessions.
- UI: Added a "Cancel" button in the Free Session Hub and the Exercise View (under the Options menu).
- Logic: Unified cancellation logic for both normal and free sessions, ensuring all session data is deleted from the database.
- Testing: Added regression tests (
test_cancel_session.py) for both session types.
[1.9.2] - 2026-02-08
Added
- Exercise Inventory: Admins can now approve or reject weight inventories from the "Pending Review" tab in Exercise List.
- Exercise Inventory: Added pending badges and pending inventory counts for Admins.
Changed
- Exercise Inventory: Users now see their own pending inventories in Exercise Detail.
- Exercise Inventory: Redirect to Exercise Detail after submission for immediate feedback.
[1.9.1] - 2026-02-05
Added
- Feature (Exercise Inventory): Added support for incremental weight generation.
- Logic: New fields
min_weight,max_weight, andincrementinExerciseWeightInventory. - Form: Automatic weight list generation (e.g., Min: 5, Max: 50, Interval: 2.5) in the submission form.
- Validation: Strict validation of increment values (>0) and ranges (Min <= Max).
- Admin: Improved Admin interface with grouped fieldsets for inventory management.
- Infrastructure: Added
make migrationstarget to the Makefile to facilitate database updates via Docker Compose.
[1.9.0] - 2026-02-04
Added
- Feature (Exercise Inventory): Preparation for Drop Sets.
- Model: New
ExerciseWeightInventoryto track available weights per exercise/machine. - Contribution: Users can now submit weight inventories (e.g., weights of a specific machine stack or dumbbell rack).
- Validation: Admin workflow to approve or reject submitted inventories.
- UI: Added inventory contribution links in Exercise List and Exercise Detail views.
- Integration: Approved inventories are displayed in the Exercise Detail view.
[1.8.0] - 2026-02-03
Added
- Feature (Custom Exercises): Users can now create custom exercises directly within a live session.
- Quick Creation: A "+" button in the "Swap Exercise" modal opens a creation form.
- Validation Workflow: User-created exercises are private by default but can be submitted for Admin validation.
- Admin: Admins can approve or reject submitted exercises via a dedicated "Pending" tab in the Exercise Library.
- Filtering: The Exercise Library now supports filtering by "All", "My Custom", and "Pending" (Staff only).
- Security: Updated Django to 4.2.28 to address potential vulnerabilities.
[1.7.2] - 2026-02-02
Fixed
- Infrastructure (Logging): Fixed an issue where Docker logs (stdout/stderr) were empty in production.
- Configuration: Updated
LOGGINGsettings indjango_hub/settings.pyto ensure logs are always sent to the console (stdout) in addition to file logging, resolving visibility issues indocker compose logs.
[1.7.1] - 2026-02-01
Fixed
- Mobile (PWA): Fixed a critical bug where the Rest Timer would freeze at 00:00 without resetting, requiring a manual stop/start.
- Logic: Removed obsolete
countdownIntervalcheck causing potential conflicts. - Stability: Added robust error handling for audio/vibration to prevent UI crashes on Android devices where
AudioContextpolicies might block playback.
[1.7.0] - 2026-01-29
Added
- Feature (Inverse PR): Implemented support for assisted exercises (e.g., Assisted Pullups).
- Backend: New
is_inverse_weightflag on Exercises. - Logic: Smart PR detection (lower weight = better performance) in
FitnessAnalyzer. - UI: Added a Bootstrap switch in Exercise editor to toggle Inverse PR mode.
- Live Session: Records and displays "Best Sets" and Personal Records correctly for inverse exercises.
- Documentation: Incremented
SITE_VERSIONto 1.7.0.
[1.6.4] - 2026-01-26
Added
- Mobile: New Dashboard with 3 main "Bricks" (Live, Programs, Exercises).
- Mobile: Persistent Bottom Navigation Bar.
- Mobile: "Continue Group" (Smart Rotation) brick on Dashboard.
- Backend: Added REST API for Program Groups to support mobile sync.
[1.6.3] - 2026-01-26
Fixed
- Mobile: Corrected Exercise selection screen (missing dart:io import and File usage).
- Backend: Fixed PEP8 linting errors in
serializers.py(Mixed indentation, trailing whitespace).
[1.6.2] - 2026-01-26
Fixed
- Mobile: Resolved "Upload KO" (400 Bad Request) by ensuring
notesfields are never null in payloads. - Mobile: Fixed Rest Timer increments to +/- 15s.
[1.6.1] - 2026-01-26
Added
- Mobile: Fullscreen Rest Timer in Live Session.
- Fixed: Immediate trigger of sync service after session completion.
[1.6.0] - 2026-01-25
Added (Mobile)
- Phase 3 (Live Session): Implemented full offline session tracking.
- Tracking: Real-time logging of sets (Weight, Reps, RIR) for each exercise in a program.
- Navigation: Ability to navigate between exercises and track progress via a progress bar.
- Persistence: Sessions and logs are saved locally using Drift (SQLite).
- Synchronization: Added bidirectional sync for workout sessions.
- Upload: Local finished sessions are automatically uploaded to the server during sync.
- Status: Visual feedback for sync status ('pending' vs 'synced').
[1.5.0] - 2026-01-25
Added
- Feature (Gym Card): Implemented a digital Gym Card feature for easier check-ins.
- Profile: Users can now save their Gym Card Number (e.g., Basic Fit) and format (Code 39, QR, etc.) in their profile settings.
- Access: Quick access via a barcode icon in the Dashboard (Mobile) and Live Session header.
- UI: Displayed in a high-contrast, brightness-optimized modal.
- UX: Vertical orientation for optimal smartphone scanning at gym turnstiles.
[1.4.5] - 2026-01-25
Improved
- UX (Session Detail): The session detail view now displays actual performed performances (logs) by default instead of just the theoretical program items.
- Real data is grouped by exercise for better readability.
- Summary includes Charge x Reps/Duration, RIR, and Notes per set.
- Theoretical program remains as a fallback if no performance data is recorded yet.
[1.4.4] - 2026-01-25
### Added- Feature (Resilience): Implemented "Resume Session" capability.
- Logic: Added flag_finished to WorkoutSession to track proper completion.
- Migration: Existing sessions are marked as finished to ensure a clean state.
- UI: Added a "Resume Session" tile in the Dashboard if an unfinished session (e.g., after a crash) is detected.
[1.4.3] - 2026-01-20
Improved
- UI (Mobile): Optimized the "Suggested Session" card layout on small screens to prevent program name truncation. Titles now wrap properly and spacing is improved.
[1.4.2] - 2026-01-20
Fixed
- Security (CSP): Moved inline JavaScript for Drag & Drop to an external file to comply with strict Content Security Policy.
- UI (Dark Mode): Fixed visibility issues in the "Group Ordering" drag & drop zone by using theme-aware Bootstrap classes (
bg-body-tertiary).
[1.4.1] - 2026-01-20
Added
- Feature (Rotation): Implemented "Smart Program Rotation" for Program Groups.
- Logic: Automatically suggests the next program in a group sequence based on the last completed session.
- UI: Added a "Continue [Group Name]" card in the Start Session screen.
- UX: Enabled Drag & Drop ordering for programs within a group using SortableJS.
[1.4.0] - 2026-01-20
Changed
- Navigation (Admin): Restructured Admin navigation for better accessibility on both Desktop and Mobile.
- Mobile: Moved IAM and User Management links to the bottom navigation bar under "Autre" for easier access on small screens.
- Desktop: Consolidated admin links into the "Admin Tool" dropdown.
- Cleanup: Removed redundant "Gestion Utilisateurs" menu from the top navbar.
[1.3.9] - 2026-01-20
Improved
- UX (Admin): Optimized admin navigation on mobile. Admin tools are now accessible via the bottom navigation bar for staff users to prevent layout overflow.
- UI (Admin): Fixed dark mode compatibility issues in User Management (search bar, table headers) and IAM Dashboard (permission cards).
[1.3.8] - 2026-01-20
Fixed
- Live Session: Fixed an issue where decimal values (Weight, Distance) were not displaying correctly when editing a previous set due to localization conflicts (Comma vs Dot in inputs).
[1.3.7] - 2026-01-20
Fixed
- Tests: Updated
test_search_similar_exercisesto reflect v1.3.6 logic changes (full library with similarity sorting) and fix CI failures.
[1.3.6] - 2026-01-20
Improved
- Live Session: Enhanced "Swap Exercise" feature to list all exercises, prioritizing those targeting similar muscle groups, followed by the rest of the library.
- UI: Fixed Dark Mode compatibility in Program Editor (Exercise list).
[1.3.5] - 2026-01-13
UX
- Navigation: Improved contextual navigation. "Back" button in Exercise Detail now correctly returns to the Program or Session it came from, instead of defaulting to the Exercise Library.
[1.3.4] - 2026-01-XX
Fixed
- Fix (Mobile/Desktop): Resolved "Copy for AI" reliability issues in Program Share Modal using pre-fetching.
[1.3.3] - 2026-01-XX
Fixed
- Mobile: Resolved "Copy for AI" issue on mobile devices by implementing a robust fallback for the Clipboard API in non-secure contexts.
- Mobile: Improved clipboard handling (v1.3.3 was a partial fix, this new patch v1.3.4 completes it).
[1.3.2] - 2026-01-XX
Changed
- Code Quality: Enforced strict PEP8 compliance across the codebase.
- Fix: Resolved linting errors and formatting issues in API views and URLs.
[1.3.1] - 2026-01-XX
Fixed
- Stability: Increased Gunicorn timeout to 300s to prevent worker kills during long AI Program generation.
- Infrastructure: Updated Docker & Gunicorn configuration.
[1.3.0] - 2026-01-XX
Added
- Analytics: Implemented Muscle Heatmap visualization (Front/Back) based on muscle load.
- API: Added endpoint for muscle load data.
[1.2.7] - 2025-12-XX
Added
- UX: Immersive Fullscreen Timer for mobile devices with SVG progress ring.
[1.2.6] - 2025-12-XX
Added
- Analytics: "By Exercise" detailed view with charts for Volume and Max Weight evolution.
[1.2.5] - 2025-12-XX
Fixed
- Logic: Smart redirection in Live Session (skips completed exercises).
- Fix: Set counter initialization bug.
[1.2.4] - 2025-12-XX
Fixed
- Feature: Implemented Per-Set Personal Records in Live Session.
[1.2.3] - 2025-12-XX
Added
- Deployment: Blue/Green deployment strategy with zero-downtime checks.
[1.2.2] - 2025-12-XX
Added
- Messaging: Real-time chat with shared resources (Programs/Sessions).