Runtime Status Activity

Sections, controls, and event types

Runtime Status Activity

FixoRuntimeActivity is the Agent-side full-page view of the live Runtime for the active preset. This page enumerates its sections, controls, and the event taxonomy it records.


Sections

Section Contents
Build & Inject The shared BuildInjectWidget band. Identical to the one inside the Fixo wizard; same controls drive build / inject / start / stop.
Live Values Per-channel actuator and sensor read-back. Placeholder until the firmware protocol gains a read path.
Numex Channels One row per active channel: (channelId → active stanza) with a LightWidget for activation state. Fed by Runtime::channelActiveChanged.
Event Log Read-only tail of the last 200 entries from the RuntimeEventLog, newest at the bottom. The full log survives restarts.

Controls

Control Behaviour
Change active preset… Pushes the preset picker (FixoPresetSelectorActivity). On pick, AgentRuntimeService::setActivePreset() swaps the runtime.
Clear log… Wipes the persistent RuntimeEventLog.

Stop / reflash / reconnect controls live inside the embedded Build & Inject band; the activity does not duplicate them.

Event types

Every entry in the log is one of six types:

Type Triggered by Payload
StatusChange Runtime::statusChanged from, to — both RuntimeStatus values
ConnectionChange Runtime::connectionStatusChanged from, to — both ConnectionStatus values
PresetChange AgentRuntimeService::setActivePreset from, fromHash, to, toHash
PingTimeout Runtime::pingTimeout reason string
Error Runtime::error message string
FirmwareReplied Runtime::statusReplied configHashHex, rttMs (sampled, see below)

FirmwareReplied is sampled at most once per minute per active preset. The first reply per (presetName, contentHash) pair is always logged so a quick boot still has a baseline.

buildProgress, flashProgress, serialCountersChanged, and channelActiveChanged are intentionally not logged — they're high-frequency or only meaningful live; the activity displays them, the log records discrete state.

Persistence

Backed by liblog/log/LogStorage — a memory-mapped append-only file with automatic rotation. Each entry is one JSON-encoded line. Stored at <userDataDir>/runtime_event_log/.

In-memory the log holds at most 10 000 entries, with entries older than 30 days pruned.

  • Check Runtime Status — howto walkthrough.
  • The glance row on FaceActivity (FixoRuntimeStatusWidget) — the same status surface, condensed.
Topics
reference runtime activity event-log