Skip to content

Conversation

mkende
Copy link

@mkende mkende commented Aug 29, 2025

This PR classifies watch faces in 3 categories:

  1. The dynamic watch faces, either displaying a continuously changing information or one where the user is expected to interact with it over a long time. (typically a clock, or a score keeping face)
  2. Static watch faces displaying a non-information (output of a random generator, configuration screen, etc.)
  3. The static watch faces showing some computed information (e.g. the moon phase face).

For the watch face in class 1. we make them never resign on timeout. For those in class 2. we make them always resign on timeout. Finally, for those in class 3. we make them resign or not, based on the new MOVEMENT_TIMEOUT_GOES_TO_CLOCK config flag that is used in movement.c. The default for that flag is false which means that watch faces in category 3 do not resign (which is mostly the default today but for some watch faces).

@joeycastillo
Copy link
Owner

Alas, as alluded to in the Discord, a lot of thought went into the current paradigm and I don't have the bandwidth to think through the UX of this change right now, nor the broader implications. At a glance, this #define feels like a band-aid to achieve a particular goal, adding technical debt and boilerplate when there could be a more elegant solution like using the (admittedly not currently finished) watch face advisory functionality to provide semantic information about what's on screen.

I don't have the bandwidth for this right now so I ask that we please not merge this until I can review in depth.

@mkende
Copy link
Author

mkende commented Aug 29, 2025

Sure, there is no hurry.

If it helps, I think this PR should be reviewed in two phase. First the changes to the watch faces. This is mostly a functional no-op, that adds documentation and serves to clarify the intent of each watch face (it wants to resign, it does not want to resign, it does not care). It also fixes a few small inconsistencies (like a non running stopwatch now always resign, same as what the countdown already did).

And, separately, there is the change to movement.c and movement_config.h that adds the new flag in a very localized way which also does not change the current behavior with the default setting.

I can also split that in two PR if that would makes sense.

As this PR makes the timeout contract very explicit between movement and the watch face, I don’t really see how this adds tech debt. But I’m also happy to have a look at this watch face advisory functionality if it can help with this type of feature.

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.

2 participants