@flemo/devtools 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs +21 -14
- package/dist/noop.mjs +2 -2
- package/dist/types.d.ts +9 -0
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -186,13 +186,13 @@ var e = 30, t = 1e4, n = 50, r = 120, i = 100, a = (e) => {
|
|
|
186
186
|
key: "flemo:layers",
|
|
187
187
|
storage: "session",
|
|
188
188
|
kind: "opt-in-diagnostic",
|
|
189
|
-
description: "resident screen layers at rest
|
|
189
|
+
description: "resident screen layers at rest"
|
|
190
190
|
},
|
|
191
191
|
{
|
|
192
192
|
key: "flemo:freeze",
|
|
193
193
|
storage: "session",
|
|
194
194
|
kind: "opt-in-diagnostic",
|
|
195
|
-
description: "keep the direct prev screen live
|
|
195
|
+
description: "keep the direct prev screen live"
|
|
196
196
|
},
|
|
197
197
|
{
|
|
198
198
|
key: "flemo:preraster",
|
|
@@ -403,20 +403,20 @@ var e = 30, t = 1e4, n = 50, r = 120, i = 100, a = (e) => {
|
|
|
403
403
|
for (let t of e.imagesTracked) t.hasAttribute(L) && e.imagesHeld.add(t);
|
|
404
404
|
}, G = (e, t) => {
|
|
405
405
|
e.releasedFrames += 1;
|
|
406
|
-
let n = !1;
|
|
406
|
+
let n = !1, r = !1;
|
|
407
407
|
for (let t of e.elements) {
|
|
408
|
-
let
|
|
409
|
-
if (
|
|
410
|
-
|
|
411
|
-
let
|
|
412
|
-
if (
|
|
408
|
+
let i = e.clocks.get(t);
|
|
409
|
+
if (i) {
|
|
410
|
+
i.playState === "paused" && (e.pausedAfterRelease = !0), i.playState !== "finished" && (r = !0);
|
|
411
|
+
let a = typeof i.currentTime == "number" ? i.currentTime : null;
|
|
412
|
+
if (a !== null) {
|
|
413
413
|
let r = e.lastClock.get(t);
|
|
414
|
-
r !== void 0 &&
|
|
414
|
+
r !== void 0 && a !== r && (n = !0), e.lastClock.set(t, a);
|
|
415
415
|
}
|
|
416
416
|
}
|
|
417
|
-
let
|
|
418
|
-
if (
|
|
419
|
-
let r = `${
|
|
417
|
+
let a = t.style;
|
|
418
|
+
if (a && a.animation !== "") {
|
|
419
|
+
let r = `${a.transform}/${a.opacity}`;
|
|
420
420
|
e.lastPose.get(t) !== r && (n = !0);
|
|
421
421
|
}
|
|
422
422
|
}
|
|
@@ -425,6 +425,10 @@ var e = 30, t = 1e4, n = 50, r = 120, i = 100, a = (e) => {
|
|
|
425
425
|
e.stallRunMs = 0;
|
|
426
426
|
return;
|
|
427
427
|
}
|
|
428
|
+
if (!r && e.clocks.size > 0) {
|
|
429
|
+
e.tailFrames += 1, e.stallRunMs = 0;
|
|
430
|
+
return;
|
|
431
|
+
}
|
|
428
432
|
e.stalledFrames += 1, e.stallRunMs += t, e.stallRunMs > e.longestStallMs && (e.longestStallMs = e.stallRunMs);
|
|
429
433
|
}
|
|
430
434
|
}, K = (e) => {
|
|
@@ -507,6 +511,7 @@ var e = 30, t = 1e4, n = 50, r = 120, i = 100, a = (e) => {
|
|
|
507
511
|
clocks: /* @__PURE__ */ new Map(),
|
|
508
512
|
lastClock: /* @__PURE__ */ new Map(),
|
|
509
513
|
releasedFrames: 0,
|
|
514
|
+
tailFrames: 0,
|
|
510
515
|
stalledFrames: 0,
|
|
511
516
|
stallRunMs: 0,
|
|
512
517
|
longestStallMs: 0,
|
|
@@ -582,7 +587,8 @@ var e = 30, t = 1e4, n = 50, r = 120, i = 100, a = (e) => {
|
|
|
582
587
|
stalledFrames: i.stalledFrames,
|
|
583
588
|
longestStallMs: z(i.longestStallMs),
|
|
584
589
|
pausedAfterRelease: i.pausedAfterRelease,
|
|
585
|
-
holdReassertedAtMs: i.holdReassertedAtMs
|
|
590
|
+
holdReassertedAtMs: i.holdReassertedAtMs,
|
|
591
|
+
tailFrames: i.tailFrames
|
|
586
592
|
},
|
|
587
593
|
images: H(i),
|
|
588
594
|
...a ? { playerGaps: a } : {},
|
|
@@ -708,7 +714,8 @@ var e = 30, t = 1e4, n = 50, r = 120, i = 100, a = (e) => {
|
|
|
708
714
|
stalledFrames: r.stalledFrames,
|
|
709
715
|
longestStallMs: z(r.longestStallMs),
|
|
710
716
|
pausedAfterRelease: r.pausedAfterRelease,
|
|
711
|
-
holdReassertedAtMs: r.holdReassertedAtMs
|
|
717
|
+
holdReassertedAtMs: r.holdReassertedAtMs,
|
|
718
|
+
tailFrames: r.tailFrames
|
|
712
719
|
},
|
|
713
720
|
images: H(r),
|
|
714
721
|
longTasks: [],
|
package/dist/noop.mjs
CHANGED
|
@@ -181,13 +181,13 @@ var e = 30, t = 1e4, n = 50, r = 120, i = 100, a = 48, o = (e) => {
|
|
|
181
181
|
key: "flemo:layers",
|
|
182
182
|
storage: "session",
|
|
183
183
|
kind: "opt-in-diagnostic",
|
|
184
|
-
description: "resident screen layers at rest
|
|
184
|
+
description: "resident screen layers at rest"
|
|
185
185
|
},
|
|
186
186
|
{
|
|
187
187
|
key: "flemo:freeze",
|
|
188
188
|
storage: "session",
|
|
189
189
|
kind: "opt-in-diagnostic",
|
|
190
|
-
description: "keep the direct prev screen live
|
|
190
|
+
description: "keep the direct prev screen live"
|
|
191
191
|
},
|
|
192
192
|
{
|
|
193
193
|
key: "flemo:preraster",
|
package/dist/types.d.ts
CHANGED
|
@@ -85,6 +85,15 @@ export interface MotionProgress {
|
|
|
85
85
|
pausedAfterRelease: boolean;
|
|
86
86
|
/** Offset from t0 at which a hold was re-asserted AFTER the release. */
|
|
87
87
|
holdReassertedAtMs: number | null;
|
|
88
|
+
/**
|
|
89
|
+
* Released frames sampled AFTER every tracked animation reported "finished".
|
|
90
|
+
* The motion is over there and the pose is legitimately still; the flight is
|
|
91
|
+
* simply not closed yet. Counted separately because folding them into
|
|
92
|
+
* `stalledFrames` made a ~50ms "stall" fire on EVERY healthy flight — a
|
|
93
|
+
* constant that masks the real ones (measured on plen, 2026-08-20: 10 of 10
|
|
94
|
+
* flights, always exactly 3 frames).
|
|
95
|
+
*/
|
|
96
|
+
tailFrames: number;
|
|
88
97
|
}
|
|
89
98
|
/**
|
|
90
99
|
* Images inside the flight's participants. A still-loading <img> that
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flemo/devtools",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Zero-config flight recorder for flemo screen transitions: captures per-flight driver routing, frame pacing, long tasks, landing residues, active debug overrides, and environment/observation-trap fingerprints into one JSON report readable by humans and coding agents.",
|
|
5
5
|
"main": "./dist/index.mjs",
|
|
6
6
|
"module": "./dist/index.mjs",
|