State Transitions
Transition Principles#
The transition model follows several principles that keep the UI stable and predictable:
- Smoothness — all transitions use gradual changes in color, opacity, or motion.
- No flashing — the indicator never blinks or pulses rapidly.
- No intermediate states — transitions move directly from one state to another.
- No oscillation — the indicator does not flicker between states due to transient signals.
- Consistency — transitions behave the same on iOS and Android.
These principles ensure that the indicator remains ambient rather than attention‑seeking.
Transition Types#
Each Awareness state has a distinct visual expression, and transitions modify only the properties that differ between states:
- Color transitions — gradual shifts between clarity and drift palettes.
- Opacity transitions — subtle changes to reflect confidence or global instability.
- Motion transitions — gentle introduction or removal of shimmer or drift motion.
- Timing transitions — consistent durations to maintain a calm visual rhythm.
Transitions never alter the indicator’s shape or layout.
State‑to‑State Behavior#
The transitions between states follow a predictable pattern:
-
Clear → Local Drift
Introduces warm color shift and subtle motion over a short, smooth interval. -
Clear → Global Drift
Introduces cooler color shift and slight opacity reduction. -
Clear → Drift
Combines both color shift and motion, applied gradually. -
Local Drift → Clear
Removes motion first, then restores clarity color. -
Global Drift → Clear
Restores opacity and clarity color simultaneously. -
Local Drift → Global Drift
Motion fades out while color shifts toward the global palette. -
Global Drift → Local Drift
Motion fades in while color shifts toward the local palette. -
Any state → Drift
Adds both motion and color shift in a controlled, slow transition. -
Drift → Any state
Removes motion first, then adjusts color and opacity.
These transitions ensure that the indicator never feels abrupt or unstable.
Timing and Duration#
Transitions use consistent timing across all states:
- Short transitions for color and opacity changes.
- Medium transitions for motion introduction or removal.
- No instantaneous changes, even when signals update rapidly.
This timing model reinforces the app’s ambient, non‑urgent posture.
Handling Rapid Input Changes#
If local or server signals fluctuate quickly:
- The indicator completes the current transition before starting a new one.
- The state machine updates immediately, but the UI transitions remain smooth.
- The indicator never flickers or jumps between states.
This behavior preserves visual stability even when underlying signals are noisy.
Accessibility Considerations#
Transitions are designed to remain comfortable for all users:
- Motion is subtle and slow to avoid discomfort.
- Color changes maintain sufficient contrast.
- Screen readers announce state changes using simple labels without describing animations.
These considerations ensure that the indicator remains inclusive and predictable.
