hindsight_flutter 0.9.3
hindsight_flutter: ^0.9.3 copied to clipboard
Session replay for Flutter tree/state-delta capture with compact scene-graph encoding.
Changelog #
0.9.3 #
- Changes the default active-scroll content policy to defer expensive Flutter
tree captures until scroll settle.
scrollContentCaptureMinIntervalnow defaults toDuration.zero, so scroll gestures keep recording offset traces without doing periodic full tree walks on the UI isolate. - Keeps mid-scroll content keyframes available as an explicit opt-in: set a
positive
scrollContentCaptureMinIntervalwhen the extra replay fidelity is worth the host app performance cost. - Replaces active-scroll viewport observation's per-frame render-tree scan with
tracked scroll targets discovered from pointer hit-tests and scroll
notifications. Apps that consume
ScrollNotifications still get scroll offset sampling without the recorder walking unrelated render subtrees every frame.
0.9.2 #
- Stops generic Flutter animation/ticker frames from being treated as replay layer activity. This removes the periodic full-tree capture loop that could make host apps stutter and heat up when replay was enabled.
- Keeps explicit capture triggers intact: initial snapshots, pointer/tap-driven updates, scroll content cadence, route transitions, focus/viewport changes, and deferred shader-mask captures still schedule replay layer captures.
0.9.1 #
- Stops replay asset readiness from forcing another full layer capture. Raster,
image, painter, leaf-raster, and platform-view nodes now emit stable
image_refvalues during the first collection and publish bytes asynchronously under the same ref. - Keeps shader-mask deferred capture behavior, where a follow-up tree capture is still needed because the mask JSON itself is attached to captured nodes.
0.9.0 #
- Initial public release of the Hindsight Flutter session replay SDK.
- Captures Flutter UI as structured scene-graph layers, text, visual layers, scroll context, route changes, breadcrumbs, and errors.
- Keeps static UI text visible by default so replays remain legible.
- Masks user input by default through
maskAllInputs: true; obscured fields are always masked with no opt-out. - Adds targeted privacy controls through
HindsightRedact,Hindsight.mask<T>(),Hindsight.unmask<T>(),Hindsight.maskCallback<T>(), gesture privacy, image privacy, and debug masking overlays. - Adds visual source boundaries so optional adapters can capture declared UI vectors as structured vector metadata instead of PNG readbacks.
- Reuses unchanged unknown canvas leaf rasters from frame signals instead of waking or re-encoding from wall-clock age alone.
- Adds opt-in error hooks, HTTP/Dio breadcrumbs, console breadcrumbs, device breadcrumbs, session lifecycle controls, durable pending uploads, and remote SDK config polling.
- Adds Android/iOS native plugin support for platform-view capture.