Skip to content

Health: Add current bin in typical step text#1306

Merged
gmarull merged 1 commit into
coredevices:mainfrom
aveao:typical-step-text-improvements
Jun 15, 2026
Merged

Health: Add current bin in typical step text#1306
gmarull merged 1 commit into
coredevices:mainfrom
aveao:typical-step-text-improvements

Conversation

@aveao

@aveao aveao commented May 17, 2026

Copy link
Copy Markdown
Contributor

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

aveao commented May 18, 2026

Copy link
Copy Markdown
Contributor Author

(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

gmarull commented May 18, 2026

Copy link
Copy Markdown
Member

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

@gmarull

gmarull commented May 18, 2026

Copy link
Copy Markdown
Member

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

aveao commented May 18, 2026

Copy link
Copy Markdown
Contributor Author

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

gmarull commented May 18, 2026

Copy link
Copy Markdown
Member

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

aveao commented May 19, 2026

Copy link
Copy Markdown
Contributor Author

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

ericmigi commented May 19, 2026

Copy link
Copy Markdown
Collaborator

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

aveao commented May 19, 2026

Copy link
Copy Markdown
Contributor Author

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

tilden commented May 20, 2026

Copy link
Copy Markdown
Contributor

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

gmarull commented May 20, 2026

Copy link
Copy Markdown
Member

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!

@jplexer jplexer left a comment

Copy link
Copy Markdown
Member

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
@aveao aveao force-pushed the typical-step-text-improvements branch from 0f94344 to af2eef6 Compare May 21, 2026 11:12
@gmarull

gmarull commented May 21, 2026

Copy link
Copy Markdown
Member
image

time/total should be gray?

@tilden

tilden commented May 21, 2026

Copy link
Copy Markdown
Contributor

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

gmarull commented May 21, 2026

Copy link
Copy Markdown
Member

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

aveao commented May 21, 2026

Copy link
Copy Markdown
Contributor Author

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

tilden commented May 22, 2026

Copy link
Copy Markdown
Contributor

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

gmarull commented May 22, 2026

Copy link
Copy Markdown
Member

what about a "dark yellow"?

@tilden

tilden commented May 22, 2026

Copy link
Copy Markdown
Contributor

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

aveao commented May 22, 2026

Copy link
Copy Markdown
Contributor Author

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

jplexer commented May 29, 2026

Copy link
Copy Markdown
Member

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

@tilden

tilden commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

I'm also okay with the black text if it would make it easier on @aveao!

@aveao

aveao commented Jun 3, 2026

Copy link
Copy Markdown
Contributor Author

I'll do army green, but a bit later than today ;)

@aveao aveao force-pushed the typical-step-text-improvements branch from af2eef6 to 38d63d1 Compare June 12, 2026 19:09
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 38d63d1 to ef16b49 Compare June 12, 2026 19:11
@aveao

aveao commented Jun 12, 2026

Copy link
Copy Markdown
Contributor Author

Okay, rebased, moved to armygreen, and regenerated images.

@jplexer jplexer left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Looks good to me! CC: @gmarull

@gmarull gmarull merged commit ea47ae2 into coredevices:main Jun 15, 2026
42 checks passed
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