Commit Graph
15609 Commits
Author SHA1 Message Date
Gideon Zenz 7096e11dcf Fix: Hide only all-day HR interval and activity monitoring for devices without display 2026-03-12 23:22:15 +01:00
Gideon Zenz b5e6fa82a6 Remove dead supportsActivityTracking guards and unused methods from RecordedWorkoutSyncer
RecordedWorkoutSyncer is only invoked for devices where supportsActivityTracks() is true,
and all such devices also support activity tracking — so the !supportsActivityTracking
guards were always false, making addHeartRateRecord and addStepsRecord unreachable.
HR and steps are already synced by HeartRateSyncer and StepsSyncer at activity level.
2026-03-12 21:46:41 +01:00
Gideon Zenz f9d1f3874c Health Connect: Fix duplicate and truncated sleep records across slice boundaries
SleepSyncer was inserting the same sleep session in multiple slices when
the session spanned a slice boundary. The 1-day look-back caused the
session to be re-discovered in adjacent slices, and the overlap check
allowed it to be synced in each one.
Assign each session to the slice where its start time falls
([sliceStart, sliceEnd)). This ownership rule ensures each session is
synced exactly once regardless of how many slices it overlaps with.
Add a 12-hour look-forward to the DB query for SLEEP so that sessions
starting near the slice end are fetched with their full data, preventing
truncation at the slice boundary.
Fixes: https://codeberg.org/Freeyourgadget/Gadgetbridge/issues/5873
2026-03-12 18:30:52 +01:00
Gideon Zenz f07779f249 Health Connect: Fix duplicate records from workout syncer overlapping ACTIVITY sync
RecordedWorkoutSyncer was writing heart rate, steps, and calorie records
that overlap with the per-minute data already synced by HeartRateSyncer,
StepsSyncer, and ActiveCaloriesSyncer in the ACTIVITY data type sync.
The supportsActiveCalories guard from 8c575535b only covered
processDetailedWorkout but not processAggregateWorkout, which is the
code path hit when no track file is available. No guards existed for
heart rate or steps in either path.

Skip workout-level aggregate HR and steps when supportsActivityTracking
(covered by ACTIVITY sync), and skip workout-level calories when
supportsActiveCalories (covered by ActiveCaloriesSyncer). Per-second HR
from detailed workout track data is always synced as it is more granular
than the per-minute activity HR.
2026-03-12 18:30:52 +01:00
Thomas KuehneandJosé Rebelo cb5634dcfe Garmin: add Recovery Heart Rate and Rate of Perceived Exertion to activity summary
RPE / rate of perceived exertion
https://support.garmin.com/en-US/?faq=8nISJXqSZVAI3Td4IWRqsA

recovery heart rate
https://support.garmin.com/en-US/?faq=3HTTUrSoRF51m8vGUtMhY9
2026-03-11 22:13:16 +01:00
Thomas Riedler 6b9650f675 Zepp OS: fix notification pictures 2026-03-10 21:44:10 +01:00
José Rebelo 3739a2935e Attempt to fix TinyWeatherForecastGermanyReceiver on some devices 2026-03-10 19:47:14 +00:00
José Rebelo 50338052b6 Zepp OS: Add setting to disable calendar event reminders 2026-03-09 22:46:06 +00:00
José Rebelo 63d94b3121 Garmin Instinct 2S Surf: Initial support 2026-03-09 21:44:50 +00:00
José Rebelo 6f6047363e Huawei Band 11: Initial support 2026-03-09 21:42:58 +00:00
José Rebelo 6f0b8b368e Dashboard: Add week day 2026-03-09 21:39:23 +00:00
Thomas KuehneandJosé Rebelo 07b1e593b3 nQuant: backport Gadgetbridge fixups 2026-03-09 22:28:03 +01:00
Thomas KuehneandJosé Rebelo c8da8b4717 nQuant: refresh to mcychan/nQuant.android@12822f15c9 2026-03-09 22:28:03 +01:00
Thomas KuehneandJosé Rebelo 26cf09d700 Garmin: move test FIT data into files 2026-03-09 22:15:35 +01:00
José Rebelo 680026d7a4 Restrict jitpack dependencies to com.github.* 2026-03-08 22:43:13 +00:00
Thomas Kuehne 98fe5caaa4 Garmin: FIT file type 57 is SPORTS_BACKUP 2026-03-08 08:30:55 +01:00
Thomas KuehneandJosé Rebelo 7dc6044138 BleNamesResolver: add more standard services and characteristics 2026-03-07 21:28:35 +01:00
José Rebelo d0993353cf Garmin: Improve activity fetch logging 2026-03-07 13:06:58 +00:00
Arjan Schrijver 422cb0eced Garmin Forerunner 245 Music: Remove experimental flag 2026-03-03 12:30:49 +01:00
Arjan Schrijver 700b39674e Webview: Firewall is not used when direct internet access is available 2026-03-03 10:55:30 +01:00
Arjan Schrijver 8e02231d66 Pebble: Fix app configuration when internet helper is available but disallowed 2026-03-03 10:48:55 +01:00
Gideon ZenzandMerow 92f0a7d802 Add data export for HC sync verification tooling as debug function 2026-03-02 20:24:53 +01:00
Gideon Zenz b5b0b585cc Fix #5797: Advance HC sync cursor by last-written record timestamp
The sync state cursor was advancing to the slice end timestamp
unconditionally, even when no records were written. Late-arriving data
(sleep, workouts, VO2Max, etc.) that arrives after the cursor has
already advanced past it would be permanently skipped.
Each syncer now reports the latest timestamp of records actually
inserted into Health Connect. The sync cursor advances to
max(currentPersisted, latestRecordTimestamp) instead of
sliceEndTimestamp. If no records were written for a slice, the cursor
stays put. This handles all late-arriving data generically without
needing per-data-type special-casing.
2026-03-02 20:19:02 +01:00
WilsontheWolfandJosé Rebelo 1b314c41b1 fix: battery and time sync 2026-03-02 20:14:59 +01:00
dependency-botandJosé Rebelo 23d3f0de1f Update protobuf to v4.34.0 2026-03-02 20:06:04 +01:00
dependency-botandJosé Rebelo 88e8524c79 Update dependency org.mockito:mockito-core to v5.22.0 2026-03-02 20:05:46 +01:00
Andreas Shimokawa 467b58edf3 Pebble: fix sending config to watchfaces 2026-03-01 10:14:42 +01:00
Andreas Shimokawa 7f3eec47ec Pebble: Fix crash when returning from exernal website from browser application. 2026-02-28 19:49:40 +01:00
Thomas KuehneandJosé Rebelo bacc85bcb8 Garmin: add sleep disruption FIT fields 2026-02-28 18:36:59 +01:00
Thomas Kuehne 9a9ba5b30c Garmin: add more FIT sport types
example FIT files for testing:

STREET_RUN (sport:1, subsport:2)
https://github.com/ThomasKuehne/FIT-test-files/tree/main/Activity/2025/Activity_20250410_Running_Nike_1794463148babf53fb33b260a19a91fe.fit

VIRTUAL_CYCLING (sport:2, subsport:58)
https://github.com/ThomasKuehne/FIT-test-files/tree/main/Activity/2026/Activity_20260110_Cycling_Mywhoosh_cbefa61fcd6d7c0f9916e07d119fbceb.fit

INDOOR_ROWING (sport:4, subsport:14)
https://github.com/ThomasKuehne/FIT-test-files/tree/main/Activity/2017/Activity_20170518_FitnessEquipment_VivoActiveHr_94dbffeb8be296bb39027edc041a2963.fit

STOPWATCH (sport:52, subsport:0)
https://github.com/ThomasKuehne/FIT-test-files/tree/main/Activity/2023/Activity_20221129_52_Fenix5Plus_43621059f6fc664f8f3b577e2f1d8695.fit

CCR_DIVING (sport:53, subsport:63)
https://github.com/ThomasKuehne/FIT-test-files/tree/main/Activity/2017/Activity_20230816_Diving_Descent_d602dcb95b6701d1921e9d6a26594ebe.fit
2026-02-28 17:39:51 +01:00
José Rebelo 2aed9d9bb2 Amazfit Active 2 NFC Square: Unmark as experimental 2026-02-27 23:23:22 +00:00
José Rebelo 297492d0a5 Amazfit GTR 4: Add bluetooth name for Limited Edition 2026-02-27 22:28:38 +00:00
Arjan Schrijver 7a5427e028 Dashboard: Add preference for disabling dimming in Today widget 2026-02-23 15:11:20 +01:00
Thomas Kuehne 17a4338984 Garmin: add more FILETYPEs 2026-02-21 12:55:02 +01:00
José Rebelo f60cb524f7 Improve media control logging 2026-02-18 23:09:09 +00:00
José Rebelo 433787d3af Health Connect: Fix calories unit 2026-02-18 23:00:56 +00:00
José Rebelo bf46baa5de Zepp OS: Add missing swim styles, fix columns 2026-02-17 18:30:32 +00:00
José Rebelo d621b1d8f8 Mi Band 9 Active: Add hack for daily activity parsing 2026-02-16 22:24:03 +00:00
José Rebelo a3e216320c Xiaomi-protobuf: Fix calories unit 2026-02-16 22:20:00 +00:00
dependency-botandJosé Rebelo c805ba298e Update dependency no.nordicsemi.android:dfu to v2.11.0 2026-02-15 00:09:58 +01:00
dependency-botandJosé Rebelo 8bd39f6913 Update dependency androidx.activity:activity-ktx to v1.12.4 2026-02-15 00:09:40 +01:00
Erwin Scheuch-HeiligandJosé Rebelo 9d918bdb3b Initial support for laxasfit devices (#5774)
# laxasfit support

With reference to issue #5640 here comes the initial implementation of the first supported laxasfit device:
- Q11 smartwatch

The used protocol is a derivate of the FitPro protocol, using
- different UUIDs
- different message ID's
- additional CRC

Protocol details are documented in the related issue #5640

Reviewed-on: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/5774
Co-authored-by: Erwin Scheuch-Heilig <fr3ts0n@gmx.at>
Co-committed-by: Erwin Scheuch-Heilig <fr3ts0n@gmx.at>
2026-02-14 23:53:04 +01:00
José Rebelo 6ed6c41244 update changelog, bump version 2026-02-14 21:36:59 +00:00
José Rebelo ae44694018 Huawei/Honor: Fix exception when processing workout data (#5795) 2026-02-14 21:02:20 +00:00
Gideon Zenz 3f59815f5f Hide heart rate monitoring config for Helio Strap (always-on by design) 2026-02-14 18:27:17 +01:00
José Rebelo d8c1ad6b7e Check calendar and contact permissions for calendar sync 2026-02-14 15:02:45 +00:00
Gideon Zenz 3c8a9b5821 Enable Sony WF1000XM4 Headphones speak-to-chat support 2026-02-14 07:50:33 +01:00
José Rebelo 8bdd124ab5 Lenovo: Align packages for watch9 and watchxplus 2026-02-13 22:52:34 +00:00
José Rebelo 79cef62cd3 Huawei/Honor: Enable VO2 Max for supported devices 2026-02-13 22:45:01 +00:00
José RebeloandMe7c7 1f1c598968 Huawei: Improve workout parsing (#5784)
Original patch by Me7c7 in #5784

Co-authored-by: Me7c7 <me7c7@noreply.codeberg.org>
2026-02-13 22:37:14 +00:00