Fjuro and Hosted Weblate
d73fbd082a
Translated using Weblate (Czech)
...
Currently translated at 100.0% (4610 of 4610 strings)
Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/cs/
2026-04-12 19:53:27 +02:00
大王叫我来巡山 and Hosted Weblate
58a2d2f48f
Translated using Weblate (Chinese (Simplified Han script))
...
Currently translated at 100.0% (4610 of 4610 strings)
Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/zh_Hans/
2026-04-12 19:53:26 +02:00
summoner001 and Hosted Weblate
a8b9a9ae01
Translated using Weblate (Hungarian)
...
Currently translated at 100.0% (4610 of 4610 strings)
Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/hu/
2026-04-12 19:53:25 +02:00
Thomas Kuehne and Hosted Weblate
cce6ed4d03
Translated using Weblate (German)
...
Currently translated at 99.9% (4607 of 4610 strings)
Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/de/
2026-04-12 19:53:25 +02:00
Daniel Finol and Hosted Weblate
5ce6ef075c
Translated using Weblate (Spanish)
...
Currently translated at 99.9% (4601 of 4603 strings)
Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/es/
2026-04-12 19:53:24 +02:00
summoner001 and Hosted Weblate
ef575196f9
Translated using Weblate (Hungarian)
...
Currently translated at 100.0% (4603 of 4603 strings)
Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/hu/
2026-04-12 19:53:23 +02:00
summoner001 and Hosted Weblate
d1f1ed6d1d
Translated using Weblate (Hungarian)
...
Currently translated at 100.0% (4602 of 4602 strings)
Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/hu/
2026-04-12 19:53:23 +02:00
Kachelkaiser and Hosted Weblate
d6df34f429
Translated using Weblate (German)
...
Currently translated at 100.0% (4602 of 4602 strings)
Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/de/
2026-04-12 19:53:22 +02:00
大王叫我来巡山 and Hosted Weblate
10c463a663
Translated using Weblate (Chinese (Simplified Han script))
...
Currently translated at 100.0% (4602 of 4602 strings)
Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/zh_Hans/
2026-04-12 19:53:21 +02:00
qtm and Hosted Weblate
33e182a31e
Translated using Weblate (Russian)
...
Currently translated at 93.8% (4314 of 4599 strings)
Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/ru/
2026-04-12 19:53:21 +02:00
Christian Breiteneder and Hosted Weblate
1351d9af59
Translated using Weblate (German)
...
Currently translated at 100.0% (4599 of 4599 strings)
Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/de/
2026-04-12 19:53:20 +02:00
Fjuro and Hosted Weblate
9f93d52bb4
Translated using Weblate (Czech)
...
Currently translated at 100.0% (4599 of 4599 strings)
Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/cs/
2026-04-12 19:53:19 +02:00
Michał Korczak and Hosted Weblate
bb8b1abef6
Translated using Weblate (Polish)
...
Currently translated at 100.0% (4599 of 4599 strings)
Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/pl/
2026-04-12 19:53:19 +02:00
summoner001 and Hosted Weblate
ed59abd109
Translated using Weblate (Hungarian)
...
Currently translated at 100.0% (4599 of 4599 strings)
Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/hu/
2026-04-12 19:53:18 +02:00
Priit Jõerüüt and Hosted Weblate
f741731e00
Translated using Weblate (Estonian)
...
Currently translated at 34.2% (1573 of 4599 strings)
Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/et/
2026-04-12 19:53:18 +02:00
大王叫我来巡山 and Hosted Weblate
46d99a11c4
Translated using Weblate (Chinese (Simplified Han script))
...
Currently translated at 100.0% (4599 of 4599 strings)
Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/zh_Hans/
2026-04-12 19:53:17 +02:00
Kachelkaiser and Hosted Weblate
6cf7e5a4ad
Translated using Weblate (German)
...
Currently translated at 100.0% (4597 of 4597 strings)
Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/de/
2026-04-12 19:53:16 +02:00
summoner001 and Hosted Weblate
93af45dbff
Translated using Weblate (Hungarian)
...
Currently translated at 100.0% (4596 of 4596 strings)
Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/hu/
2026-04-12 19:53:16 +02:00
omletccblpom and Hosted Weblate
51de8915f7
Translated using Weblate (Russian)
...
Currently translated at 93.6% (4302 of 4594 strings)
Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/ru/
2026-04-12 19:53:15 +02:00
summoner001 and Hosted Weblate
b6a20400c1
Translated using Weblate (Hungarian)
...
Currently translated at 100.0% (4594 of 4594 strings)
Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/hu/
2026-04-12 19:53:14 +02:00
大王叫我来巡山 and Hosted Weblate
393ba75e08
Translated using Weblate (Chinese (Simplified Han script))
...
Currently translated at 100.0% (4594 of 4594 strings)
Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/zh_Hans/
2026-04-12 19:53:14 +02:00
David D. and Hosted Weblate
00be5b08f7
Translated using Weblate (French)
...
Currently translated at 93.5% (4299 of 4594 strings)
Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/fr/
2026-04-12 19:53:13 +02:00
Christian Breiteneder and Hosted Weblate
cbb1036924
Translated using Weblate (German)
...
Currently translated at 100.0% (4587 of 4587 strings)
Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/de/
2026-04-12 19:53:12 +02:00
Viktor Rak and Hosted Weblate
2aa776277f
Translated using Weblate (Ukrainian)
...
Currently translated at 99.5% (4557 of 4578 strings)
Translation: Freeyourgadget/Gadgetbridge
Translate-URL: https://hosted.weblate.org/projects/freeyourgadget/gadgetbridge/uk/
2026-04-12 19:53:12 +02:00
Thomas Kuehne
f9d9ecce09
Garmin: extract and store metrics ( #5708 , #5709 , #5710 )
...
This extracts the following metrics and stores them in a new GenericMetricSample / GENERIC_METRIC_SAMPLE table:
- endurance score
- functional threshold power
- hill endurance
- hill score
- hill strength
- MET max VO2
- running lactate threshold power
- training readiness
Visualisation and charts aren't part of this PR.
2026-04-12 17:13:10 +00:00
José Rebelo
bec7846657
Merge pull request 'Health Connect: Add DistanceSyncer for daily activity distance' ( #5951 )
...
Reviewed-on: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/5951
2026-04-12 17:24:36 +02:00
José Rebelo
ba963c0ca4
Test Device: Log loyalty cards
2026-04-12 16:07:56 +01:00
José Rebelo
c3b248da36
Improve battery notifications
...
* Prevent battery updates from one gadget from removing the notification
from another
* Prevent gadgets with multiple batteries from replacing a battery full
or low notification if any of the other batteries is not notifying
2026-04-12 14:46:32 +01:00
Thomas Kuehne and José Rebelo
bde914fad2
Garmin: extend support for non-GPS activities
...
- chart elevation even if the activity has no GPS recording (e.g. treadmill and floor climbing)
- added distance chart
- added stride chart
- added step length chart
- added body energy chart - 24/7 energy level
- added stamina chart - activity specific endurance capacity
- added N2 load (Nitrogen) chart for diving
- added CNS toxicity (Central Nervous System) chart for diving
- added oxygen toxicity summary for diving
- added surface interval summary for diving
- adjusted dive summary layout
2026-04-11 01:43:45 +02:00
Thomas Kuehne and José Rebelo
5b2f982509
Garmin: fix identification of relevant FitDiveSummary session record
...
The logic depended on the sequence of records and not their actual content.
2026-04-11 01:43:45 +02:00
Thomas Kuehne and José Rebelo
4da08f7968
Garmin: ignore Null Island for ActivitySummaryData.setHasGps
...
Some indoor tracks, like Edge1030's Cycling / Virtual Activity, record all points with fake Null Island (0°N 0°E) position.
2026-04-11 01:43:45 +02:00
Thomas Kuehne and José Rebelo
9344940260
extend support for non-GPS activities
...
This enhances the general GB code _without_ the device specific adjustments required to actually display values:
- chart elevation even if the activity has no GPS recording (e.g. treadmill and floor climbing)
- added distance chart
- added stride chart
- added step length chart
- added body energy chart - 24/7 energy level
- added stamina chart - activity specific endurance capacity
- added N2 load (Nitrogen) chart for diving
- added CNS toxicity (Central Nervous System) chart for diving
- added oxygen toxicity summary for diving
- added surface interval summary for diving
2026-04-11 01:43:45 +02:00
José Rebelo
bad2d6f842
Fix duplicated weight conversion
2026-04-11 00:31:46 +01:00
José Rebelo
cede254fd8
Huawei Band 11 Pro: Initial support
2026-04-10 23:28:15 +01:00
Thomas Kuehne and José Rebelo
536ad17c4d
Garmin HRM 600: Initial support
...
Based on feedback in #5633
2026-04-11 00:03:36 +02:00
duhow and José Rebelo
749219f840
fix: use Ambient Sound Control 2
2026-04-10 23:23:11 +02:00
Thomas Kuehne
9edeec2a57
Garmin: fix start time handling for stopwatch ( #4507 ) and prepare for multi sessions in one file ( #5862 . #5860 )
...
Prioritise the session specific start time over the file creation time.
2026-04-10 17:33:39 +00:00
luckyluk607 and Arjan Schrijver
7a1960a85a
ITech Active 3: Update coordinator with all features
2026-04-09 21:40:50 +02:00
Arjan Schrijver
f05b55a250
Fossil hybrids: Increase request timeout for big activity file downloads
2026-04-07 13:04:23 +02:00
Gideon Zenz
4d8ef91b13
Health Connect: Gate DistanceSyncer with supportsActivityDistance flag
...
Add supportsActivityDistance coordinator capability flag following the
supportsActiveCalories pattern. When true, DistanceSyncer syncs all
per-minute distance and RecordedWorkoutSyncer skips DistanceRecords.
Enabled for Garmin (watch + bike), Xiaomi, and Huawei. Other devices
with distance fields (CMF, Colmi, H+, etc.) left at default false
until per-minute data quality is verified.
2026-04-07 10:30:40 +02:00
Gideon Zenz
da3f21aafb
Health Connect: Add DistanceSyncer for daily activity distance
...
Syncs device-reported distance (distanceCm) from ActivitySamples to
Health Connect DistanceRecord. Only writes actual device measurements,
skips NOT_MEASURED or zero values.
2026-04-07 10:29:13 +02:00
José Rebelo
77a66eb9c6
Merge pull request 'Health Connect: Fix partial sleep sessions not being replaced by full data' ( #5961 )
...
Reviewed-on: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/5961
2026-04-07 00:49:41 +02:00
Gideon Zenz
26dc2879d9
Health Connect: Fix partial sleep sessions not being replaced by full data
...
Sleep sessions that grow over time (partial data synced mid-sleep, full
data available after waking) were permanently stuck as partial records
in Health Connect. The sync cursor advanced past the session's start
after the first sync, so the full session was never re-processed.
Fix with two mechanisms:
- Set clientRecordId per sleep session (deterministic from device +
start hour) with clientRecordVersion = stage count, enabling HC's
native upsert: re-inserting the same session replaces partial data
with the full record.
- Hold the sync cursor behind sessions that ended less than 6 hours
ago (likely still in-progress), so they get re-processed on the
next sync with more complete data.
2026-04-07 00:35:58 +02:00
José Rebelo
b4ca137d8c
Merge pull request 'Redmi Buds 8 Active: Add device support' ( #5932 )
...
Reviewed-on: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/5932
2026-04-07 00:26:44 +02:00
Benjamin Temple and José Rebelo
c595e69ef2
Pebble: Unify Pebble hardware definitions into PebbleHardware class
...
Create PebbleHardware.java as the single source of truth for all
Pebble hardware definitions and for determining what model and features
a watch has. The goal of this commit is to better unify the pebble watch
model definitions into a single source of truth to make adding new
models easier, as well as to bring all the relevant model specific logic
about what a watch is capable of, or which watch model to use into a
single file versus being spread out among multiple files making it
easier to fail to fix logic bugs.
The PebbleHardware class now has all the definitions for the following
information in one place:
- Platform enum with capabilities (BLE-only, hasHealth, hasHRM)
- Hardware revision registry mapping hardware IDs to codenames
- BLE-only device detection methods
- Platform name lookup for watchface installation
This cleans up PebbleUtils to only contain non-hardware utilities.
(maybe should move into the pebble directory away from the utils folder
in another commit?)
2026-04-07 00:22:44 +02:00
Thomas Kuehne and José Rebelo
fc6dcc793b
Garmin: export FIT laps as GPX track segments
2026-04-07 00:14:44 +02:00
Thomas Kuehne and José Rebelo
68aa74bc39
GPX: fix redirecting URLs in xsi:schemaLocation
...
Some XML parsers don't support HTTP redirection for schemaLocation so encode the actual URLs.
2026-04-07 00:14:06 +02:00
Gideon Zenz
68475a07fd
Health Connect: Use separate start/end offsets for workout records
...
Resolve ZoneOffset independently for workout start and end instants,
so workouts spanning a DST transition get correct offset metadata on
both ends.
2026-04-05 23:40:57 +02:00
Gideon Zenz
746bc16bfa
Health Connect: Use per-timestamp timezone offset for DST correctness
...
Replace single sync-time ZoneOffset with ZoneId, resolving the correct
offset per record timestamp via ZoneId.rules.getOffset(instant). Fixes
wrong offset metadata on records crossing DST boundaries (e.g. sleep
sessions starting in CET and ending in CEST).
Also fixes leading space in device model name after manufacturer prefix
strip.
2026-04-05 23:40:57 +02:00
Me7c7 and Martin.JM
bc63bfa588
Huawei: fix for watchfaces installation for some devices
2026-04-05 18:09:10 +02:00