ZeppBridge 2.2.0
Your scale and your food log now reach the app
Two whole categories of Zepp data were being left in the cloud.
Weight and body composition now sync into the local library, read from the
endpoint that actually carries them. Where a scale reports them, eleven readings
are accepted: weight, BMI, height, body fat, body water, muscle, bone, protein,
visceral fat, basal metabolism and balance score. Only weight, BMI and height
have been confirmed against a live account. Every other field has to land inside
a range that only that reading can occupy before it is charted, because
publishing a health number under a guessed field name is worse than publishing
nothing.
The food log has a screen. Calories, protein, fat and carbs appear under
Body status, together with a dietary-balance ring showing what share of your
calories each macronutrient contributed. Meals are logged by hand in the Zepp
App, so the days you did not log stay blank: no bar, and never a zero. The ring's
percentages are worked out here from the daily grams rather than sent by the
cloud, so they can differ by a point or two from the figures in the Zepp App.
The screen stops filling up with empty cards
Without a body-composition scale, Body status used to show nine identical "no
records" cards, and an account that had never logged a meal added four more.
Thirteen cards saying the same thing pushed everything that did have data off the
screen. Cards with no readings in the selected range are no longer drawn, and a
section that is empty in full says so in one line instead. Nothing is filled in
with zeros; a missing reading is still missing, it is just no longer repeated
thirteen times.
Workouts
- Rucking is recognised. Zepp activity code
225now maps to Rucking, and
upgrading corrects workouts already stored asunknown:225. Contributed by
@luispabon. - The
.fitfiles carry more, and carry it right. Kilometre laps are real
splits now instead of one lap for the whole workout, and the laps your watch
recorded with its own lap button come through as well. That field was sitting
in 32 of 336 stored workout details and had never been decoded. Nutrition and
strength-training load reach the file too, so Strava, Garmin Connect and
Intervals.icu read what they expect.
Fixes
- The app could start with no window you could see. The initial window size
was derived from the monitor work area with no lower bound, and a work area of
0x0— which remote desktop sessions, monitor hot-plug and the moment before a
display is ready all report — produced a negative width that the window
accepted. What you got was a tray icon, a running process, and nothing to
click. The app also no longer re-syncs from scratch on every launch. - The command line no longer hangs instead of reporting an error. Any failure
raised after the database was opened — an unrecognised--types, an invalid
date, a--workoutthat does not exist — leftzeppbridge-clispinning at
100% CPU and never returning. Exit codes are a documented contract, so a
scheduled job hit this as a hang rather than a failure. - The command line says where it looked. Every "not found" now names the
folder it resolved, and explains why the data is not next to the executable
when that is the case. "No account connected" is split in two, because a
missingauth.jsonand a missing token are different problems with different
answers. - Food records can be exported.
--types foodwas silently dropped: intake
data was stored and could be charted, but not a single row came out of an
export. - Weight reached the screens it was supposed to. The readings were stored and
exportable, but the charts skipped them and the data-health page did not list
the stream at all. - Watch laps no longer double. Replaying more than once appended laps instead
of replacing them, so a second replay stored every lap twice.
Upgrading replays your stored payloads once, to backfill the laps your watch
recorded and to correct rucking workouts. It uses no network, and cloud syncing
waits for it rather than failing.