After the minor refactoring of how we resolve sync statuses into an error we can display to the user, it became apparent that we need a more intelligence in the way we resolve errors in the sync engines for the user. 1. Adding context as to how the sync operation was instantiated. We probably want to show errors differently when sync operations happen automatically in the background vs when they were user initiated. 2. Be more explicit about certain types of errors. We support a limited amount of messaging around the errors - including some that need some rewording such as 'Sync is offline'. Does this mean the servers are offline or am I offline? 3. Adding a notion of staleness/time to errors states. For example, if we haven't synced in a day or two, surface to the user that we haven't been able to sync in the past X days.
Some of the initial design work for surfacing error states https://docs.google.com/document/d/1t0lhf3ATU_0vfhnChOj093i8dzv0BxJReR2ukhk3jIc/edit#heading=h.7p8j47h9geos