Replaced login, reset password modal, and sign-up screenshots in the gallery. Updated gallery.md to specify that images should be 1000x1000 pixels. Also updated the login asset in the frontend.
Added new screenshots for health, settings, and authentication pages, updated several existing images, and removed obsolete ones. The gallery documentation was updated to reflect the new and reorganized screenshots, providing a more comprehensive and up-to-date visual overview of the application's UI. Minor formatting cleanups were also made in the developer and getting started guides.
Added new 'Features' section in docs. Renamed 'sleep-scoring.md' from 'getting-started' to 'features' and updated mkdocs.yml navigation to reflect this change.
Added fields for resting heart rate and average skin temperature deviation to the HealthSleepAddEditModalComponent, including support in form data, submission logic, and i18n translations for both English and Portuguese. Updated documentation to mention DB_HOST as a required environment variable. #426
Introduces a comprehensive sleep scoring module with detailed calculation logic and integration into health sleep creation and editing endpoints. Refactors HealthSleep model and schema to use integer types for heart rate, SpO2, respiration, and sleep stress fields. Updates related tests and documentation to reflect the new scoring system and data type changes.
Changed heart rate, SpO2, respiration, and stress level fields from Decimal to Integer in backend models and schemas for consistency. Updated frontend modal to support unmeasurable sleep and removed nap time, aligning form fields and API payloads with backend changes. Adjusted data processing and validation logic to match new types and constraints.
Introduces HealthSleepAddEditModalComponent for adding and editing sleep records. Refactors HealthSleepZone.vue to use the new modal, improves code formatting and readability across health and activity components, and updates event handling for sleep data management.
Refactored backend health_sleep CRUD, models, router and schema for improved type safety, docstrings, and response structure. Added HealthSleepListResponse for paginated and total-count responses. Updated router endpoints to return total counts and records, and improved error handling. Added new route and CRUD function for deleting sleep and added frontend support for it. Simplified array update on update and delete actions for steps, weight and sleep on HealthView.vue alongisde i18n translations for new strings
Refactored backend health_targets CRUD, models, router and schema for improved type safety, docstrings, and response structure. Added comprehensive unit tests for health_targets CRUD, models, and router. Added missing emit in HealthSleepZone.vue
Refactored backend health_steps CRUD, models, router, schema, and utils for improved type safety, docstrings, and response structure. Added HealthStepsListResponse for paginated and total-count responses. Updated router endpoints to return total counts and records, and improved error handling. Added comprehensive unit tests for health_steps CRUD, models, and router. Updated frontend service and view to match new API response format.
Refactored backend health_weight CRUD, models, router, schema, and utils for improved type safety, docstrings, and response structure. Added HealthWeightListResponse for paginated and total-count responses. Updated router endpoints to return total counts and records, and improved error handling. Added comprehensive unit tests for health_weight CRUD, models, and router. Updated frontend service and view to match new API response format.
Standardized capitalization and phrasing for identity provider related labels, modal titles, and button texts across settings components. This improves UI consistency and clarity for users managing identity providers and user authentication.
Standardized capitalization and phrasing in identityProvidersAddEditModalComponent.json to improve consistency and readability of UI labels and help texts.
Replaced specific avg/max/min labels with generic ones in HealthSleepListTabsComponent and updated i18n keys accordingly. This simplifies label management and improves consistency across heart rate, SpO2, and respiratory rate sections.
Updated crowdin.yml to reorder translation path entries and add new paths for healthSleepZone, healthStepsZone, and settingsIdentityProvidersZone. This improves organization and ensures new translation files are included in Crowdin sync.
Replaces FastAPI BackgroundTasks with a ThreadPoolExecutor for bulk activity import, queuing all files for processing in a single thread pool task. Adds process_all_files_sync to handle sequential file processing and database session management, improving scalability and resource usage. #399
Changed DATA_DIR to use BACKEND_DIR for consistency in config.py and removed unused import in fit/utils.py. Added documentation for FRONTEND_DIR, BACKEND_DIR, DATA_DIR, and LOGS_DIR environment variables in advanced-started.md to clarify their usage.
Introduces parsing of the FIT file_id frame to extract manufacturer, product, serial number, and creation time. Updates activity object creation to include tracker manufacturer and model, and propagates file_id data through parsing and splitting functions for improved device metadata handling.
Updates the pace calculation logic to handle cases where split_summary and lengths are missing for lap swimming activities, defaulting to the standard pace calculation.
Introduces parsing and handling of 'length' frames from FIT files, storing their data in a new 'lengths' array. Updates relevant functions to include and utilize 'lengths', particularly for more accurate swimming pace calculations based on active lengths.
Simplifies and condenses the markup in IdentityProviderListComponent.vue and IdentityProvidersAddEditModalComponent.vue for better readability and maintainability. Updates icon handling to support both predefined names and custom URLs, and clarifies icon help text in i18n to reflect this behavior.
Introduces new components for displaying and managing Resting Heart Rate (RHR) data, including a line chart and list view. Updates the sidebar navigation to include an RHR section, adjusts the HealthView layout to support the new zone, and adds relevant i18n strings. Refactors steps and sleep zone components for consistency and improves prop naming and usage.
Refactored backend Garmin sleep processing to robustly handle enum validation and avoid errors from unknown values. Updated frontend sleep list to conditionally render the timeline chart only if sleep stages exist. Reverted change to HealthWeightLineChartComponent.vue
Expanded the HealthWeightLineChartComponent to display additional metrics (BMI, body fat, body water, bone mass, muscle mass) alongside weight, each with its own dataset and axis. Improved tooltip formatting and axis labeling. Also refactored and cleaned up UsersListComponent markup for readability, and improved type annotations in UsersListComponent. Backend health_utils.py now includes stricter validation for Garmin data fields to prevent errors from invalid or missing values.
Expanded the HealthWeightAddEditModalComponent to include additional fields for BMI, body fat, body water, bone mass, and muscle mass, accessible via a collapsible section. Updated the i18n translations and ensured these new fields are handled in both add and edit flows, as well as reflected in the HealthView when weights are updated.
Refactored HealthWeightZone and related components to use 'userHealthWeight' prop instead of 'data', improving naming consistency. Enhanced HealthWeightListComponent with a collapsible details section showing BMI, body fat, body water, bone mass, and muscle mass. Updated i18n strings to support new details fields. Also improved code formatting and removed unnecessary console logs.
Added new cards for sleep, resting heart rate, and skin temperature deviation to the health dashboard. Expanded HealthSleepListTabsComponent with detailed tabs for heart rate, SpO2, respiratory rate, and additional sleep metrics, including improved handling of missing data. Updated i18n files for new labels and units, and adjusted HealthSideBarComponent navigation order. Minor backend and script fixes for field naming and test data.
When no `split_summary` is provided, treat `lap_swimming` activities active throughout the whole activity (thus, use the same calculation for pace as for other activity types).
Refactored HealthSleepListTabsComponent to add summary and breakdown sections with clearer labels and structure. Updated HealthSleepTimelineChartComponent to use internationalized y-axis labels and improved legend, ensuring better localization and clarity. Added new i18n keys for sleep stages and related labels in both component and general items translation files. Minor UI improvements for consistency and readability.
Introduces a reusable ModalComponentHoursMinutesInput for setting sleep targets, integrates it into HealthSleepZone, and adds logic to update the user's sleep target. Enhances HealthSleepListTabsComponent with improved labels and i18n support, adds new utility functions for time conversion and health status mapping, and updates i18n files with relevant translations.
Moved the creation and removal of the health_sleep table from a separate migration file into the main v0_16_0_migration.py. Deleted the now-redundant v0_16_0_migration_health_sleep.py migration file to consolidate schema changes.
Introduces avg_sleep_stress and sleep_stress_score fields to the HealthSleep database model, schema, and migration. Updates health_utils to process and store these new sleep stress metrics from Garmin data.
Extended backend models, schema, and migration to support new sleep metrics such as HRV status, resting heart rate, skin temperature deviation, and sleep score breakdowns. Updated Garmin health utils to process and store these new fields. On the frontend, refactored HealthSleepListComponent to use a new HealthSleepListTabsComponent for tabbed sleep details, updated prop names for clarity, and added new i18n resources for the updated UI.
Introduces health sleep tracking with new backend API endpoints, database schema updates, and CRUD logic. Adds frontend components for displaying, listing, and visualizing sleep data, including bar and timeline charts. Updates i18n resources and refactors health steps and weight components for consistency. Adds chartjs-adapter-date-fns and date-fns dependencies for improved chart date handling.
Introduces backend support for health sleep data, including new models, CRUD operations, and schema in the health_sleep module. Adds Alembic migration for sleep data, updates Garmin health utilities, and integrates sleep data retrieval in aux_gc_getbcstats.py. Frontend sidebar and i18n files updated to reflect new health sleep features.
Introduced a new modal for setting the steps target in HealthStepsZone.vue, including UI changes to add a 'Steps target' button. Updated HealthView.vue to handle the new setStepsTarget event and update logic. Added related i18n strings for steps target actions and modal labels. Also set a default value for weight target in HealthWeightZone.vue.
Introduces the ability for users to set and update their weight target. Adds a new modal for weight target input, updates the backend API with a PUT endpoint for health targets, and connects the frontend to this endpoint. Also includes related i18n updates and minor UI improvements for integration modals.
Enhanced Health dashboard, steps, and weight components to display user target values with visual indicators and updated i18n labels. Steps and weight charts now show dashed target lines if targets are set, and card footers display units and icons for progress direction.
Consolidates Alembic migrations for health_steps and health_weight into a single migration, removing redundant migration files. Refactors models and schemas to use a unified 'source' field (replacing garminconnect_body_composition_id) for both health_steps and health_weight, and updates related backend and frontend code to use this new field. Adds 'steps' to health_targets and updates enum usage for source fields. Frontend components now check 'source' for Garmin integration display.