pulseflow_flutter 0.2.6
pulseflow_flutter: ^0.2.6 copied to clipboard
App-side probes for PulseFlow: accurate frame timing, rebuild hotspots with source locations, HTTP capture, and memory-leak signals.
0.2.6 #
- StallProbe no longer treats idle gaps (1 Hz clocks, static screens) as
freezes. Stalls come only from [FrameTiming]:
vsyncOverheadorbuildDuration≥ threshold on a frame that was actually scheduled. Works in release too. - FrameProbe drops a 3s warmup, exposes
p95Session/p95Recent, and marks jank asjankInconclusivewhen recent fps < 10 or frames are not back-to-back (so 1 fps idle cannot report 100% jank).
0.2.5 #
- RebuildProbe no longer inflates
FrameTiming.buildDuration: the rebuild callback only inserts into an identity set; route/id/source work runs in the post-frame flush. - Keep the route-label cache across frames/polls (cap 2000) instead of clearing it on every flush/snapshot.
- Cache idle snapshots for 250ms; budget the mounted-tree walk at 5ms once
inside the target route (
partial: truewhen truncated); exposeprobeOverheadUs/probeFlushOverheadUs/probeSnapshotOverheadUs; skip the tree walk when the last flush was already expensive.
0.2.4 #
- Cut the profiler's own main-isolate cost (it was inflating the very CPU/stall
numbers PulseFlow reports):
isUsefulScreenNameno longer compiles a RegExp per ancestor, route labels are cached per frame, the mounted-tree walk no longer re-resolves the route for every node, anddetectLiveRouteskips the Router walk when a modal route name exists.
0.2.3 #
- Rebuild roots now carry
file:line— source resolution no longer skips private app widgets (only real framework shells and*Transition). - Detect builders that rebuild their reusable
child(AnimatedBuilder,ListenableBuilder,ValueListenableBuilder) viachildProvided/childReusedon the widget stats. - Fix
resetWidgetProbeleaving the probe frozen (a reset now resumes recording).
0.2.2 #
- Remove the
injectInvoicesdemo extension/stress action (use thelistFloodscenario andPulseFlowStressState.invoicesinstead). - README: document the PulseFlow MCP server (
pulseflow-mcpon npm) so a coding agent can read the live session directly.
0.2.1 #
- README: drop insecure
http://markdown links so pub points stay at 160.
0.2.0 #
- Device context:
ext.pulseflow.getDeviceContextreports platform, build mode, locale, text scale, display metrics, and optional app enricher extras. - Custom scenarios:
registerPulseFlowScenario()merges app scenarios intolistScenarios/runScenario(built-in ids cannot be overridden). - UI stall probe:
ext.pulseflow.getStallReportdetects main-isolate freezes above a configurable threshold (default 250 ms). - Network:
networkBurstfires real HTTP GETs by default (or anonNetworkBursthook); captured URIs redact auth/token query params. registerPulseFlowgainstrackStalls,stallThreshold, anddeviceEnricheroptions.
0.1.0 #
- Initial release of the PulseFlow app-side package.
- Accurate frame timings via
SchedulerBinding.addTimingsCallback, with refresh-rate-aware budgets from the active display. - Rebuild hotspot probe with stable widget ids, route labels, and source
locations (
file:line) through the widget inspector. - HTTP capture via a delegating
HttpOverrides. - Leak signals from
FlutterMemoryAllocations(created-not-disposed objects). - Runtime error / overflow signatures, image cache health, and oversized decode tracking.
- Built-in lab scenarios and stress RPCs (
scrollStorm,routeThrash,listFlood,animationFlood,retainMemory,networkBurst). - Public entry point:
registerPulseFlow()registeringext.pulseflow.*service extensions for the PulseFlow dashboard.