Skip to content

Health: Add current bin in typical step text#1306

Open
aveao wants to merge 1 commit into
coredevices:mainfrom
aveao:typical-step-text-improvements
Open

Health: Add current bin in typical step text#1306
aveao wants to merge 1 commit into
coredevices:mainfrom
aveao:typical-step-text-improvements

Conversation

@aveao
Copy link
Copy Markdown
Contributor

@aveao aveao commented May 17, 2026

Turns out the "typical " text represents the typical amount of steps on that day up to the 15 minute minute block you're on :D

Caught this while taking a shot at coredevices/mobileapp#192

This changes that text to "Typical " so that it's clear what it's representing (and ideally should not require translation changes), plus it widens the pill for typical and moves it down slightly on larger screens (emery and gabbro) so that the whole view appears more spacious. Rest of health view needs re-scaling too, but this is hopefully a good starting point.


Before & After:

@aveao aveao requested review from gmarull and jplexer as code owners May 17, 2026 12:32
@aveao
Copy link
Copy Markdown
Contributor Author

aveao commented May 18, 2026

(changed author and signed-off)

@aveao aveao force-pushed the typical-step-text-improvements branch 2 times, most recently from 893ec7e to 7833670 Compare May 18, 2026 11:24
@gmarull
Copy link
Copy Markdown
Member

gmarull commented May 18, 2026

shouldn't 'typical thursday' mean, typical step count for 'thursday' (whole day)? if it's not like that, we should fix?

@gmarull
Copy link
Copy Markdown
Member

gmarull commented May 18, 2026

shouldn't 'typical thursday' mean, typical step count for 'thursday' (whole day)? if it's not like that, we should fix? I guess the objective of the metric is to tell how far we are from the typical total, I find time confusing here.

@aveao
Copy link
Copy Markdown
Contributor Author

aveao commented May 18, 2026

Currently, the number represents how much you walked on avg until this 15 minute block. Agreed that it's confusing, which is why I did this PR :p I was trying to figure out why it differed from the debug data on the phone.

I find the idea of "here's how much you've walked until this time on thursdays" to be kind of useful, because unless you lead a particular life you're not walking consistent amounts but a bit on morning, midday and evening, and so comparing to the full day's 8k when you're doing 5k of that in the evening usually would reveal a different data point. But I think it's a different datapoint, and I think displaying both would be best.

An alternative I was thinking of was showing both on the lower text, then it fits into all screens better. maybe something like

TYPICAL THU
8000 (🕖 2000)

@gmarull
Copy link
Copy Markdown
Member

gmarull commented May 18, 2026

An alternative I was thinking of was showing both on the lower text, then it fits into all screens better. maybe something like

TYPICAL THU
8000 (🕖 2000)

that seems better

@aveao aveao force-pushed the typical-step-text-improvements branch from 7833670 to 1bd1529 Compare May 19, 2026 20:31
@aveao
Copy link
Copy Markdown
Contributor Author

aveao commented May 19, 2026

ehhhh it's a tough one

first tried some cool clock svgs, it didn't convey super clearly that it's the number until now

then tried this really cool homage to tictoc (actually dynamically generated on open)

screenshot_emery_red screenshot_flint_red

but it's both not very clear to the user and kinda bad screen real estate

then I tried this but it's way too busy:

screenshot_emery_split_v2-1

current state of code is showing the all-day-typical on small screen watches, and this on emery and gabbro:

screenshot_emery_shifted

It's a bit busy but I'm just not sure what's the best balance of eye candy and functionality is here.

fwiw the yellow bar in the bar around the shoe is based on the "typical until this time on this weekday" number.

@gmarull gmarull requested a review from ericmigi May 19, 2026 21:01
@ericmigi
Copy link
Copy Markdown
Collaborator

ericmigi commented May 19, 2026

I'm not sure it entirely makes it more understandable than the original UI? I think the bar that fills up through the day makes sense and explains that it's a progress-based number.

@aveao
Copy link
Copy Markdown
Contributor Author

aveao commented May 19, 2026

I think that's pretty cryptic, it took me until two hours ago to figure that out and you know how long I've been using one of these :p

IMO even if not in this shape, some form of clarification would be useful, as sleep has the exact same text but shows the total of the day, and the step count is showing typical until the time of day. I don't think very many realized this feature works this way.

@ericmigi
Copy link
Copy Markdown
Collaborator

image seems like the strongest candidate, but agreed it is still busy

@tilden
Copy link
Copy Markdown
Contributor

tilden commented May 20, 2026

Randomly jumping in here -- I like the idea of clarifying that "TYPICAL TUE" actually means "On a typical Tuesday you have walked N steps by the current time", since it is kind of ambiguous, as @aveao noted.

I was thinking @aveao's second layout could potentially work with some refinement; maybe something like this:

image

@gmarull
Copy link
Copy Markdown
Member

gmarull commented May 20, 2026

Randomly jumping in here -- I like the idea of clarifying that "TYPICAL TUE" actually means "On a typical Tuesday you have walked N steps by the current time", since it is kind of ambiguous, as @aveao noted.

I was thinking @aveao's second layout could potentially work with some refinement; maybe something like this:

image

I like this last mockup!

Copy link
Copy Markdown
Member

@jplexer jplexer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good but could you maybe squash (at least 1 + 3) since the first design is essentially dead?

@aveao aveao force-pushed the typical-step-text-improvements branch 2 times, most recently from 6dea0f4 to 47df311 Compare May 20, 2026 22:00
@aveao aveao marked this pull request as draft May 21, 2026 07:28
@aveao aveao force-pushed the typical-step-text-improvements branch from 47df311 to 0f94344 Compare May 21, 2026 11:01
@aveao aveao marked this pull request as ready for review May 21, 2026 11:01
Redesign the activity-summary "typical" pill so it surfaces both the
bin-aware "by now" step count and the full-day weekday historical
average, side by side, on wide (>= 200px) displays. The header stays
"TYPICAL <day>"; below it a two-column row shows each number on top with
its label beneath (bin time | TOTAL) in black, separated by a 1px black
vertical divider. Narrower displays (incl. BW) stay two-line: TYPICAL
<day> over the daily total alone, since they lack room for the split.

Renderer (ui.c): split the single renderer into two functions sharing a
prv_render_typical_pill helper (background + "TYPICAL <day>" header):
- health_ui_render_typical_text_box draws one value line below the
  header (35/36px pill).
- health_ui_render_split_typical_text_box draws the two-column split
  (53px pill). It takes a value and label per column from the caller, so
  it stays generic rather than steps-specific.
- Push the pill down by a third of HEALTH_Y_OFFSET (and the current step
  count by a sixth) so spacing stays balanced on taller displays; zero
  on legacy-sized displays where the offset is 0.
- On round, narrow the column band so the two halves sit closer to
  center instead of marooned at the display edges.

Activity card: prv_render_typical_steps formats the values and labels
(incl. i18n_get("TOTAL") and the bin time) and routes by display width
with #if DISP_COLS >= 200. Wide displays with typical data get the
split; narrow displays, and the no-typical-data case on wide displays,
show the single daily-total line (em-dash when that is missing too).

Data layer: add health_data_steps_get_current_average_minute, a
health-app-internal accessor returning the minute-of-day of the latest
completed step-average bin (cached by the preceding
health_data_steps_get_current_average call).

Sleep card: call the single-value renderer.

Test fixture: pin RTC to Saturday 16:19:35 UTC with 24h clock so the
rendered "16:15" bin time is deterministic; seed
step_average_last_updated_time per case. Regenerate activity, sleep, and
card-view goldens on obelix/gabbro.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Ave Özkal <git@ave.zone>
@aveao aveao force-pushed the typical-step-text-improvements branch from 0f94344 to af2eef6 Compare May 21, 2026 11:12
@gmarull
Copy link
Copy Markdown
Member

gmarull commented May 21, 2026

image

time/total should be gray?

@tilden
Copy link
Copy Markdown
Contributor

tilden commented May 21, 2026

time/total should be gray?

I was actually using GColorArmyGreen in the mockup, though there were some concerns about contrast on the real watch display. I took a couple of real watch photos for comparison:

GColorBlack subheading text + divider line:
steps-gcolorblack

GColorArmyGreen subheading text + divider line:
steps-gcolorarmygreen

I don't feel exceedingly strongly about it either way. Thoughts?

@gmarull
Copy link
Copy Markdown
Member

gmarull commented May 21, 2026

time/total should be gray?

I was actually using GColorArmyGreen in the mockup, though there were some concerns about contrast on the real watch display. I took a couple of real watch photos for comparison:

GColorBlack subheading text + divider line: steps-gcolorblack

GColorArmyGreen subheading text + divider line: steps-gcolorarmygreen

I don't feel exceedingly strongly about it either way. Thoughts?

I personally vote for the grey to differentiate

@aveao
Copy link
Copy Markdown
Contributor Author

aveao commented May 21, 2026

Apologies for shaky photos,

I tested both dark gray and army green yesterday, alongside a few other colors, and they all result in really poor contrast on the PT2. I would not suggest to use them in a low light situation.

PXL_20260520_190111522 PXL_20260520_190119667

I did some capturing of the screen in real life light conditions with color calibration so I can emulate more realistic colors on screenshots, and here's some simulated cases, specifically outdoors (hamburg sunlight, so not very sunlight), outdoors (PTS) vs indoors (low cri, mostly direct), neither with backlight:

Untitled-on-device Untitled-on-device(1) Untitled-on-device(3)

(I know especially the middle one looks ridiculous at first glimpse, but it's pretty similar to the right image of the actual watch, even though it was with a different camera and different light source)

fwiw, same profiles on armygreen:

Untitled-armygreen-on-device Untitled-armygreen-on-device(1) Untitled-armygreen-on-device(2)

@tilden
Copy link
Copy Markdown
Contributor

tilden commented May 22, 2026

Regarding readability, another thing to consider is that on the Time 2 and Round 2, the fonts should all probably be bumped up by 1 size to match other font size increases throughout the OS on those platforms (Presumably this would be in a future PR)

@gmarull
Copy link
Copy Markdown
Member

gmarull commented May 22, 2026

what about a "dark yellow"?

@tilden
Copy link
Copy Markdown
Contributor

tilden commented May 22, 2026

what about a "dark yellow"?

The color name is a bit confusing, but "GColorArmyGreen" is actually the darkest yellow on the platform IMO:

image

@aveao
Copy link
Copy Markdown
Contributor Author

aveao commented May 22, 2026

Yeah, there's no dark yellow, and closest is army green, which I tried both on device and simulated colors and it looked almost identical to dark gray.

@jplexer
Copy link
Copy Markdown
Member

jplexer commented May 29, 2026

first of all, sorry ave you gotta regenerate those fixtures 😆
secondly I personally think that while army green is less readable than black text in darker environments, it is worth the differenciation
so i'd go with army green

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants