Donner 0.5.1
Embeddable browser-grade SVG2 engine
Loading...
Searching...
No Matches
ReproRecorder.h File Reference

Live UI-input recorder. Install one instance in EditorShell when the user passes --save-repro <path>; call snapshotFrame() once per editor frame (before any UI widgets have consumed input events — right after window_.beginFrame() / ImGui::NewFrame()). On process exit, call flush() to serialize the recording to the destination path. More...

#include <chrono>
#include <filesystem>
#include <string>
#include "donner/editor/repro/ReproFile.h"
Include dependency graph for ReproRecorder.h:

Classes

struct  donner::editor::repro::ReproRecorderOptions
 Options passed at construction. All fields populated from editor startup state; the recorder copies what it needs. More...
class  donner::editor::repro::ReproRecorder
 Records editor UI inputs frame-by-frame. Not thread-safe; must be invoked from the UI thread (where ImGui context is active). More...

Namespaces

namespace  donner
 Top-level Donner namespace, which is split into different sub-namespaces such as donner::svg and donner::css.

Detailed Description

Live UI-input recorder. Install one instance in EditorShell when the user passes --save-repro <path>; call snapshotFrame() once per editor frame (before any UI widgets have consumed input events — right after window_.beginFrame() / ImGui::NewFrame()). On process exit, call flush() to serialize the recording to the destination path.

The recorder captures raw ImGui input state (mouse position, mouse button mask, modifier state, wheel deltas, discrete key/char events) plus enough metadata to re-instantiate the editor session. That's the input boundary BELOW menu / tool / compositor dispatch, so a replay exercises every stage of the stack: a recording of a bug you can see in the editor always reproduces that bug in playback, regardless of which layer owns it.