Commit Graph
15106 Commits
Author SHA1 Message Date
FjuroandHosted Weblate 7b1047eeff Translated using Weblate (Czech)
Currently translated at 100.0% (4341 of 4341 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/cs/
2025-12-21 14:01:42 +00:00
陈少举andHosted Weblate cedd840b45 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (4341 of 4341 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/zh_Hans/
2025-12-21 14:01:41 +00:00
大王叫我来巡山andHosted Weblate 0f33d2b9ad Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (4341 of 4341 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/zh_Hans/
2025-12-21 14:01:40 +00:00
Максим ГорпинічandHosted Weblate 1ad7c50fe4 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (4341 of 4341 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/uk/
2025-12-21 14:01:39 +00:00
ranovich suorcandHosted Weblate 7ecbc9d81f Translated using Weblate (Catalan)
Currently translated at 44.0% (1908 of 4327 strings)

Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/ca/
2025-12-21 14:01:38 +00:00
José Rebelo 0b86fb6fee Update changelog 2025-12-21 14:01:11 +00:00
José Rebelo c7596207af Garmin: Re-generate Fit classes 2025-12-21 13:57:03 +00:00
Daniele GobbettiandJosé Rebelo 4eba10858c Garmin: Register FitLocalMessageHandler on incoming FitDefinitionMessage
Also log the incoming FitDataMessage once it's parsed, without any further processing.
2025-12-21 13:54:21 +00:00
Daniele GobbettiandJosé Rebelo 157c9c2237 Garmin: Initial attempt at supporting incoming FitDefinition/FitData Messages
Add the code to generate outgoing FitDefinition- and FitDataStatusMessage.
Add support for incoming FitDefinitionMessage and register handler via deviceEvent (commented for now to avoid leaking).
Refactor FitLocalMessageHandler to support both outgoing and incoming handling of FitDefinition/FitData.

Most of the changes were not tested for the lack of hardware, but at least they show no regressions.
2025-12-21 13:54:21 +00:00
Daniele GobbettiandJosé Rebelo a3d732f11a Garmin: Remove PredefinedLocalMessage class
Refactor FitDataMessage to support a two-step message parsing: at first hold a copy of the incoming bytestream and later parse it according to a list of RecordDefinitions.
This allows to remove PredefinedLocalMessage which was already made obsolete by previous changes.
This should also allow to support incoming FitDefinition/FitData exchanges.
2025-12-21 13:54:21 +00:00
Daniele GobbettiandJosé Rebelo 63e0ecba63 Garmin: Better Local Message Handling
Use a temporary MessageHandler to send Definitions and Data in sequence instead of in parallel.
Add functionality to populate FitLocalMessageBuilder record by record instead of with a List, also add helper to get an unused localMessageType.
Don't use hardcoded localMessageTypes for weather message as they are not required.
2025-12-21 13:54:21 +00:00
Daniele GobbettiandJosé Rebelo fe6def63ee Garmin: Weather message improvements
Add equals() and hashCode() to all classes needed to properly compare RecordDefinition class instances.
Add FitLocalMessageBuilder class to deduplicate the Definitions also recreating the RecordData in case they differ just from previous ones with the same localMessageType (e.g. if they were built specifying the fields in a different order).
Restore a different order in GarminSupport when building weather messages, to test the deduplication.
Add FieldDefinitionWeatherReport as proper enum with explicit Types. Also adapt the code generator and run it (without adding all unrelated changes to generated Messages, only FitWeather).
2025-12-21 13:54:21 +00:00
José Rebelo af91ecf9ba Garmin: Use FitWeather.Builder and add unit test
TODO: Distinct record definitions extraction does not work properly since RecordData may contain Fields in different order.
2025-12-21 13:54:21 +00:00
José Rebelo 8754cc90cd Charts: Adjust SpO2 chart colors 2025-12-21 13:50:53 +00:00
José Rebelo a3daf822c7 Charts: Fix SpO2 chart crash when there is no data 2025-12-21 13:50:48 +00:00
trentsuzukiandJosé Rebelo d7c489c145 Add weekly/monthly charts for blood oxygen 2025-12-21 14:50:35 +01:00
José Rebelo 9f5a15911b Dismiss permissions screen after all permissions granted 2025-12-20 19:43:59 +00:00
José Rebelo bba80d3c60 Huami: Improve workout charts for activities without gps 2025-12-20 19:12:14 +00:00
Andreas Shimokawa 76a844eb8a Pebble: Support Signal icon with 2025 models 2025-12-20 19:42:41 +01:00
José Rebelo 51845a6501 Charts: Avoid flashing progressbar when loading is fast 2025-12-20 18:23:14 +00:00
José Rebelo 4f339a1d51 Charts: Fix body energy crash when no data 2025-12-20 18:23:12 +00:00
trentsuzukiandJosé Rebelo 7c25ec2b6d Add weekly/monthly charts for body energy 2025-12-20 19:22:11 +01:00
Gideon ZenzandJosé Rebelo 40137ef9e7 Ignore devices that don't support HRV measurements 2025-12-20 19:07:34 +01:00
Gideon ZenzandJosé Rebelo 3b4b7292c3 Invalidate HRV cache based on latest sample timestamp
Query latest HRV sample to invalidate also yesterday if needed
2025-12-20 19:07:34 +01:00
Gideon ZenzandJosé Rebelo 68f12ea92e Invalidate HRV summary cache when new data arrives
Add HrvCacheInvalidationReceiver to listen for ACTION_NEW_DATA broadcasts and invalidate the computed HRV summary cache for the current day.
2025-12-20 19:07:34 +01:00
Gideon ZenzandJosé Rebelo 9ef4942102 Add HRV summary computation for Huawei devices
Uses ComputedHrvSummarySampleProvider to generate HRV summary statistics
from per-minute HRV values stored by Huawei devices.
2025-12-20 19:07:34 +01:00
José RebeloandJosé Rebelo 36e067938c Add charts loading indicator 2025-12-20 19:07:34 +01:00
Gideon ZenzandJosé Rebelo ca532a6350 Implemented a static, thread-safe LRU cache that persists across provider instances: 2025-12-20 19:07:34 +01:00
Gideon ZenzandJosé Rebelo 290379a462 - Use SleepAnalysis for last night HRV calculation
- remove ColmiHrvSummarySampleProvider
2025-12-20 19:07:34 +01:00
Gideon ZenzandJosé Rebelo 0c7a2c3960 Adding Yawell Rings 2025-12-20 19:07:34 +01:00
Gideon ZenzandJosé Rebelo 8c0b8934ee Require minimum 7 days of overnight HRV data before calculating baseline status to prevent unreliable POOR status in first few days 2025-12-20 19:07:34 +01:00
Gideon ZenzandJosé Rebelo 9df32ad1ac Generic provider creation
Garmin algorithm implementation
POOR status addition
Caching for performance
Application to both Huami and Ultrahuman devices
2025-12-20 19:07:34 +01:00
Gideon ZenzandJosé Rebelo c0f5da073e Add HRV summary computation for Huami/Zepp OS devices
Implements HuamiHrvSummarySampleProvider to compute HRV summary statistics
on-demand from per-minute HRV value samples. Calculates weekly averages,
last night values, baselines, and HRV status (LOW/UNBALANCED/BALANCED).

This enables full HRV dashboard and status screen functionality for devices
that only provide raw HRV measurements without pre-computed summaries.

- Created HuamiHrvSummarySampleProvider with computed summary logic
- Added getHrvSummarySampleProvider() override in HuamiCoordinator
- Computes 7-day rolling average, last-night stats, and 14-day baselines
- Works retroactively with existing historical HRV data
2025-12-20 19:07:34 +01:00
José Rebelo f005db7e1d Discard sleep sessions that are too small 2025-12-20 14:43:36 +00:00
José Rebelo e7c4cc11f7 Prevent out of order samples when filling gaps 2025-12-20 14:43:11 +00:00
José Rebelo 46ea7cc1c5 FwAppInstallerActivity: Improve logging 2025-12-20 14:02:11 +00:00
dependency-botandJosé Rebelo 65f03195e8 Update dependency androidx.activity:activity-ktx to v1.12.2 2025-12-20 10:33:29 +01:00
dependency-bot 3a8dc21d06 Update dependency com.google.protobuf:protobuf-gradle-plugin to v0.9.6 2025-12-20 01:04:53 +00:00
Me7c7andJosé Rebelo eaf0250c8e Huawei: sync raw ECG data(no UI) 2025-12-19 23:50:25 +01:00
dependency-bot db121a4761 Update kotlin monorepo to v2.3.0 2025-12-17 01:04:08 +00:00
José Rebelo 07884a277b Garmin Edge 840: Initial support 2025-12-15 20:48:25 +00:00
José Rebelo 5fdc2b8fc6 Garmin: Basic http web request/response parsing
As per https://gadgetbridge.org/internals/specifics/garmin-protocol/#internal-structures
2025-12-15 20:45:19 +00:00
Kreato 790e18a9e3 Add support for Galaxy Buds3 Pro
- Add Galaxy Buds3 Pro device coordinator and assets
- Remove unnecessary duplicate entries
- Clean up device type migration file
2025-12-14 00:55:39 +03:00
José Rebelo 625e007b71 Xiaomi-protobuf: Enable active calories 2025-12-13 18:45:28 +00:00
José Rebelo 74612b8db8 CMF Buds 2: Initial support 2025-12-13 17:35:06 +00:00
José Rebelo f208e6a6fc Zepp OS: Add jump rope stats 2025-12-13 16:50:02 +00:00
dependency-botandArjan Schrijver 02acd94a1e Update dependency org.mockito:mockito-core to v5.21.0 2025-12-13 13:39:36 +01:00
dependency-bot fbf48d5f8a Update dependency com.android.tools.build:gradle to v8.13.2 2025-12-13 01:05:07 +00:00
Andreas Shimokawa f765c70971 ATC_BLE_OEPL: fix support for WO 260 BWRY JD V2 0.88.0 2025-12-09 11:03:41 +01:00
José Rebelo 7b0ba247e9 Update changelog 2025-12-07 23:02:56 +00:00