guinea-trace 0.13.6

What caused what inside a guinea application
Documentation

What caused what.

Every observable point - an action from the UI, a message sent to an actor, its handling, background work and its result, a publication and each of its deliveries, a reducer update, a navigation - is a [Record] with an id and the id of the point that caused it. Following parent from any record gives its provenance; following it the other way gives everything it set off.

The cause is carried implicitly on the thread ([current]) and explicitly wherever work crosses a queue or a thread: an actor's mailbox, a background task, a hop back onto the UI thread. [Cause] is Copy + Send for that.

Records go to the observers on the thread that produced them (devtools), and to tracing as one event each: the target names the kind of point, guinea::send, and the fields carry id, parent and what the point holds. guinea::tick=off silences one kind. [json] writes them, and the application's own events with the point they happened under, as JSON lines.