José Rebelo
d1f5531217
Prevent crash on devices without GPS
2026-05-16 18:09:57 +01:00
José Rebelo
37ad178dac
Redmi Buds 6: Initial support
2026-05-16 17:54:51 +01:00
dependency-bot and José Rebelo
5f1f28cd3e
Update dependency org.slf4j:slf4j-api to v2.0.18
2026-05-16 14:38:03 +01:00
dependency-bot and José Rebelo
4759fe76b1
Update kotlin monorepo to v2.3.21
2026-05-16 10:17:36 +02:00
dependency-bot and José Rebelo
e72093fa52
Update dependency androidx.work:work-runtime-ktx to v2.11.2
2026-05-16 10:16:22 +02:00
dependency-bot and José Rebelo
05316837f3
Update dependency org.msgpack:msgpack-core to v0.9.12
2026-05-16 10:15:41 +02:00
Steffen Winter and José Rebelo
252779596a
Gradle: Migrate GBDaoGenerator build file to Kotlin DSL
2026-05-16 09:52:52 +02:00
Steffen Winter
8a5309f269
Renovate: Keep guava on -android tags
2026-05-16 01:07:10 +02:00
José Rebelo
5ffd6b6074
Set mimeType when sharing files
2026-05-15 23:09:10 +01:00
José Rebelo
bb97a90909
GpxReceiver: Set mimeType to application/gpx+xml
2026-05-15 23:08:52 +01:00
dependency-bot and José Rebelo
8b3cfaa1ee
Update dependency gradle to v9.5.1
2026-05-15 23:16:38 +02:00
Steffen Winter
5752a2bf96
Gradle: Migrate top-level build files to Kotlin DSL
...
Migrate the top-level build files to the new Kotlin DSL and use the new
pluginManagement block instead of the old buildscript.
2026-05-15 22:08:56 +02:00
Steffen Winter and José Rebelo
d33ada370f
Gradle: Migrate to version catalog
2026-05-15 22:02:12 +02:00
José Rebelo
7ba726c523
flake.nix: Override sdk from local.properties if present
2026-05-15 20:45:19 +01:00
Davide Gessa and José Rebelo
491f214611
Casio GBD200 device support ( #6070 )
...
In this pull request I separated the implementation of the GBD200 from the common implementation of GBX100 since during protocol reverse engineering (done here: github.com/dakk/casio-gshock-bt-proto/) I've found some discrepancies in the BLE protocol, and in my opinion it is better to separate since they are too different in many ways.
The flow works from initial pairing, connection, workout / step sync, configuration sync.
The following feature has been implemented and tested:
- [x] Watch connection and handshake
- [x] Config sync
- [x] Goal settings
- [x] Phone finder
- [x] Sport activity start and stop events
- [x] Sport activity sync with segment data
- [x] Step data sync
- [x] Notifications
- [x] Sport activity and OpenTracks
- [x] Alarm setting
Non Casio related edit:
- OpenTracksController.saveToGpx now handles empty activity (since gbd200 has no gps, and cannot handle gps data, running GBLocationService would be useless)
It should also address some of the following issues:
- https://codeberg.org/Freeyourgadget/Gadgetbridge/issues/5529
- https://codeberg.org/Freeyourgadget/Gadgetbridge/issues/2634
- https://codeberg.org/Freeyourgadget/Gadgetbridge/issues/2597
- https://codeberg.org/Freeyourgadget/Gadgetbridge/issues/5096
- https://codeberg.org/Freeyourgadget/Gadgetbridge/issues/3395
- https://codeberg.org/Freeyourgadget/Gadgetbridge/issues/2602
- https://codeberg.org/Freeyourgadget/Gadgetbridge/issues/4095
- https://codeberg.org/Freeyourgadget/Gadgetbridge/issues/4092
- (test all the GBD200 related issues https://codeberg.org/Freeyourgadget/Gadgetbridge/issues?state=open&type=all&labels=&milestone=0&project=0&assignee=0&poster=0&sort=relevance&q=GBD-200 )
Todo:
- [x] Test for some day on my wrist




Reviewed-on: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/6070
2026-05-15 21:28:35 +02:00
José Rebelo
22859347f8
Redmi Watch Move: Initial support
2026-05-15 18:23:24 +01:00
José Rebelo
4ad2284d5f
Merge pull request 'Pebble: Include battery read in pull-to-refresh update' ( #6110 )
...
Reviewed-on: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/6110
2026-05-15 13:48:49 +02:00
Dany Mestas and José Rebelo
e0820f106f
AlarmClockReceiver: populate spec so notifications render on Xiaomi
...
Previously sourceAppId, title, and body were left null and sourceName
was the literal "ALARMCLOCKRECEIVER", causing Xiaomi watches to drop
the alarm-fire notification (the watch falls back to Gadgetbridge's own
package id which is not on the app allowlist, and the spec has nothing
to display).
Plumb the captured clock-app package (com.android.deskclock or
com.google.android.deskclock) through sendAlarm so:
- sourceAppId carries the real clock package
- sourceName is the resolved application label (NotificationUtils.getApplicationLabel)
- title = "Alarm" (R.string.menuitem_alarm)
- body = current time formatted via DateFormat
Strict improvement for all device families; Huami/ZeppOs previously
also displayed the alarm with empty title/body.
2026-05-15 13:48:35 +02:00
MrYoranimo
a16b90f6aa
Xiaomi-protobuf: combine installed apps and watchface cache when reporting installed apps
...
Because the list of installed apps and the list of installed faces are
requested from Xiaomi devices separately, a race condition will occur if
the lists are not combined: when processing the AppInfo event, all
previously known installed apps are removed from the app manager cache, which
will cause either all apps or all faces to get forgotten.
2026-05-15 01:21:20 +02:00
José Rebelo
d5643468b9
iGPSPORT: Update install notification progress
2026-05-14 23:49:03 +01:00
José Rebelo
81ab123c32
iGPSPORT: Improve upload progress
2026-05-14 23:46:29 +01:00
Benjamin Temple
12db34cf90
Pebble: Include battery read in pull-to-refresh update
2026-05-14 15:38:02 -07:00
José Rebelo
cbd92ef6fe
update changelog, bump version
2026-05-14 21:12:43 +01:00
Benjamin Temple
552547ec9e
Pebble: Add support for pull to refresh for pebble health data
...
Only signalActivityDataFinish on error as datalog will invoke once health sync data finishes syncing
2026-05-13 23:24:41 -07:00
Vitaliy Tomin and José Rebelo
57154dff91
igpsport: Hide watchface tab
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
179e04beb1
igpsport: Fix endless loop when there is no route files
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
40401492fa
igpsport: Handle null values in MusicSpec
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
519b17647b
igpsport: Add BSC300
2026-05-13 23:33:24 +02:00
Thomas Kuehne and José Rebelo
85543cb4c6
igpsport: Rebase to current master
2026-05-13 23:33:24 +02:00
Michael Plattner and José Rebelo
b52e2312b2
feat: add activity fetching
...
- activate supportsDataFetching and recorded activities, to download fit files from device
- sync fit files, but do it only from the last sync time that we do not always sync all the fit files
2026-05-13 23:33:24 +02:00
Michael Plattner and José Rebelo
bad96e4f75
feat: add binavi air
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
26e162ec68
igpsport: Rebase to current master
...
* Updated for new units preference logic
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
ad1ff7250d
igpsport: Split iGS630S to its own coordinator
...
* minor log fix
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
6255057772
igpsport: Removed all RuntimeException from igpsport and minor fixes
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
5f9114c221
igpsport: Mark device names non-translatable
2026-05-13 23:33:24 +02:00
Thomas Kuehne and José Rebelo
2d36bda559
igpsport: Update for current master rebase
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
5216752665
igpsport: Use GarminWorkoutParser
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
d3103400fc
igpsport: Add missing return after download data
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
9a2b5a38ac
igpsport: Use Garmin FitImporter and FitAsyncProcessor
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
77f4a99ed5
igpsport: Remove unused loggers and commented code
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
0046666f19
igpsport: update strings s/IGPSPORT/iGPSPORT/
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
bab5311d7f
igpsport: Copy FitAsyncProcessor from Garmin
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
4f56b6569b
igpsport: Copy Fitimporter from Garmin
...
* remove garmin specific samples like stress, hrv and sleep, use only standard fit records
2026-05-13 23:33:24 +02:00
Richard Nauber and José Rebelo
78494a6877
igpsport: add BCS200S support
2026-05-13 23:33:24 +02:00
Richard Nauber and José Rebelo
6461a226fc
igpsport: explicitly set MTU before communicating
...
This is necessary for the BCS200S to work.
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
dacf0471ef
igpsport: Swithc to GarminTimeUtils time converting method, set device busy
...
* use garmin time epoch as it is used by all fit files
* use Locale.ROOT for filename generation
* set/unset device busy while downloading fit files
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
d4c2068aa4
igpsport: Implement Music info for igs800
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
0222175fb5
igpsport: Support media buttons (tested on iGS800)
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
faf0725951
igpsport: Fixes after rebase
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
f1004a663a
igpsport: Fix file payload calculation and offsets for file data
2026-05-13 23:33:24 +02:00