| C[struct].s_fixed | |
| C[struct].s_handlers | |
| C[struct].s_state | |
| CCalendarConfig | The rules a face hands the store, built from its own settings so the store names no SETTING_* |
| CCalendarEvent | One event. start and end are absolute epochs so the readouts stay fresh against the watch's own clock. The phone fills end with a sensible default when the feed omits DTEND |
| CCalendarPersist | The trimmed snapshot saved to flash. Holds only the first few events, not the whole strip |
| CCalendarSeed | Optional prefill: shown until the first real reading lands, or pinned when live = false |
| CCalendarStrip | The agenda strip. count is 0 until a reading lands |
| CCallbackList | A list over storage its owner provides. Start it as {entries, max, 0} |
| CDevShot | One screenshot's worth of state, so a walk of eight themes is not eight shots of the same numbers |
| CEngineSlot | One slot of a face. Set zone (+ text) for a text-slot, or frame (+ draw) for a draw-slot. Never both. A text-slot with no text stays empty, and so does a draw-slot with no draw |
| CHealthConfig | The rules a face hands the store |
| CHealthSaved | The only part worth keeping across a relaunch |
| CHealthSeed | Optional prefill, or pinned readings when live = false |
| CHourLatch | Remembers the hour that last buzzed |
| CIconEntry | One cached icon. Its resource id, the loaded picture, and the extra state icon_tint and the auto-trim scan keep between calls |
| CIconMargins | The transparent border around an icon's opaque art, in pixels per side |
| CLocationConfig | The rules a face hands the store |
| CLocationSeed | Optional prefill, or pinned coords when live = false. On a live store a seed takes the place of restoring the last real fix, and shows until the phone sends coordinates. A seed is never saved, so the fix on flash stays as it was for the next launch without one |
| COutboxJob | One job waiting to go out, or already in flight |
| COutboxQueue | Everything the outbox is holding: what is waiting, what nacked, and what is out |
| CSettingField | Blueprint for a single setting |
| CSettingsInbound | Carries what an inbound settings message changed, so the caller can react |
| CSettingsSchema | A face's persistence identity |
| CStockConfig | The rules a face hands the store, built from its own settings so the store names no SETTING_* |
| CStockSeed | Optional prefill: shown until the first real reading lands, or pinned when live = false |
| CStockSlot | One quote slot. When ok is false the symbol field carries a short status word ("RATE LIMIT" and friends) instead of a ticker so the watch has something to show |
| CStockStrip | The watchlist strip. count is 0 until a reading lands |
| CStoreFetch | One store's polling state, its catch-up timer, and how it asks the phone |
| CStorePoll | One store's polling: its interval, whether it polls at all, and when it is next due |
| CSystemConfig | The rules a face hands the store |
| CSystemSeed | Optional prefill, or pinned state when live = false |
| CTimeBand | The stretch of day a band shows: where it starts and how long it runs |
| CTimeBandSpan | A span clipped to the window, in minutes past the window's start |
| CTimeConfig | The rules a face hands the store, built from its own settings so the store names no SETTING_* |
| CWeatherClock | The watch's clock at the moment a message lands, broken apart |
| CWeatherConfig | The rules a face hands the store, built from its own settings so the store names no SETTING_* |
| CWeatherDaily | The 7-day strip. count is 0 until a reading lands |
| CWeatherDayCol | One daily forecast column: a sky code plus the day's high and low |
| CWeatherHourCol | One hourly forecast column: a sky code plus a temperature (WEATHER_NO_TEMP for none) |
| CWeatherHourly | The hourly strip. count is 0 until a reading lands |
| CWeatherMessage | One weather message as the transport read it, before anything is kept |
| CWeatherSeed | Optional prefill: shown until the first real reading lands, or pinned when live = false |
| CWeatherState | The weather a store keeps, laid out as the blob it saves to flash |
| CZone | Everything needed to present one text slot. Where it sits, and which registered font, alignment, and colour to use, plus up to three smaller font and rect tiers to step down to when the text would overflow |