Skip to content

[backport core/1.47] fix(dialog): keep Settings open when nested dialogs shift focus + BYOK secrets E2E#13621

Merged
christian-byrne merged 1 commit into
core/1.47from
backport-13510-to-core-1.47
Jul 13, 2026
Merged

[backport core/1.47] fix(dialog): keep Settings open when nested dialogs shift focus + BYOK secrets E2E#13621
christian-byrne merged 1 commit into
core/1.47from
backport-13510-to-core-1.47

Conversation

@comfy-pr-bot

Copy link
Copy Markdown
Member

Backport of #13510 to core/1.47

Automatically created by backport workflow.

## ELI-5

The settings screen now has a "Secrets" panel where you can save API
keys for
model/AI providers. This adds an end-to-end test that plays out the
whole story
like a real user: open the panel, add a key, watch it show up in the
list, then
delete it. It also checks the security promise — the key you type is
sent to the
server but is **never** shown back to you afterward — and that an
account without
access to the gated providers never even sees them in the dropdown.

## What

Adds `browser_tests/tests/cloudSecrets.spec.ts`, a Playwright spec
covering the
secrets (API keys) surface in the cloud app:

- **Entitled account, full CRUD round-trip:** empty state -> add a
provider key
(pick provider, name, secret value, save) -> the key appears in the list
->
  delete it via the confirm dialog -> back to empty state.
- **Secret value is write-only:** asserts the create request carried the
plaintext
value, but the value is never echoed back into the DOM (the
list-response schema
  is metadata-only).
- **Entitlement gate:** an account whose provider allowlist is empty
never sees
  the gated providers anywhere in the add dialog.

Follows the existing cloud E2E conventions: drives a raw `page` and
reuses the
`mockCloudBoot` / `bootCloud` helpers so the app boots signed-in against
fully
mocked endpoints. A small stateful in-memory handler backs the secrets
endpoints
(list / create / delete + the provider allowlist) so the flow is
deterministic
and never touches a real backend.

## Why

Verification capstone for the secrets settings surface — proves the add
/ list /
delete flow works against the documented API behavior
(`GET`/`POST`/`DELETE` on
the secrets collection, `GET` on the provider allowlist) and locks in
the two
contracts that matter: the secret value is never returned after
creation, and the
provider allowlist is the only thing that surfaces gated providers to
the user.

## Tests

- `browser_tests/tests/cloudSecrets.spec.ts` — new, two cases (tagged
`@cloud`).
- Static checks pass locally: oxlint (0 warnings/errors) and oxfmt
formatting.
- The browser run itself needs a served app + the E2E harness (CI), so
it was not
executed in this environment; the spec is self-contained and mocks all
network.

---------

Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
@comfy-pr-bot comfy-pr-bot added the backport Backporting a PR onto a release candidate label Jul 13, 2026
@dosubot dosubot Bot added the size:M This PR changes 30-99 lines, ignoring generated files. label Jul 13, 2026
@github-actions

github-actions Bot commented Jul 13, 2026

Copy link
Copy Markdown

🎨 Storybook: ✅ Built — View Storybook

Details

⏰ Completed at: 07/13/2026, 05:49:25 PM UTC

Links

🎭 Playwright: ✅ 1691 passed, 0 failed · 3 flaky

📊 Browser Reports
  • chromium: View Report (✅ 1672 / ❌ 0 / ⚠️ 2 / ⏭️ 5)
  • chromium-2x: View Report (✅ 2 / ❌ 0 / ⚠️ 0 / ⏭️ 0)
  • chromium-0.5x: View Report (✅ 1 / ❌ 0 / ⚠️ 0 / ⏭️ 0)
  • mobile-chrome: View Report (✅ 16 / ❌ 0 / ⚠️ 1 / ⏭️ 0)

📦 Bundle Size

⏳ Size data collection in progress…

⚡ Performance Report

canvas-idle: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 50.8 MB heap
canvas-mouse-sweep: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 56.2 MB heap
canvas-zoom-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 60.8 MB heap
dom-widget-clipping: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 51.8 MB heap
large-graph-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 60.3 MB heap
large-graph-pan: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 77.7 MB heap
large-graph-zoom: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 64.3 MB heap
minimap-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 59.6 MB heap
subgraph-dom-widget-clipping: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 53.9 MB heap
subgraph-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 53.8 MB heap
subgraph-mouse-sweep: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 58.1 MB heap
subgraph-transition-enter: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 152ms TBT · 93.0 MB heap
viewport-pan-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 66.4 MB heap
vue-large-graph-idle: · 59.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 162.9 MB heap
vue-large-graph-pan: · 57.1 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 25ms TBT · 165.4 MB heap
workflow-execution: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 50.8 MB heap

✅ No regressions detected.

All metrics
Metric Baseline PR (median) Δ Sig
canvas-idle: avg frame time 17ms 17ms -0% z=-0.5
canvas-idle: p95 frame time 17ms 17ms -0%
canvas-idle: layout duration 0ms 0ms +0%
canvas-idle: style recalc duration 9ms 9ms +6% z=-1.5
canvas-idle: layout count 0 0 +0%
canvas-idle: style recalc count 10 10 +5% z=-2.1
canvas-idle: task duration 375ms 371ms -1% z=-0.7
canvas-idle: script duration 17ms 18ms +10% z=-3.1
canvas-idle: TBT 0ms 0ms +0%
canvas-idle: heap used 57.7 MB 50.8 MB -12%
canvas-idle: DOM nodes -131 20 -115% z=-2.0
canvas-idle: event listeners -97 5 -105% z=-1.4
canvas-mouse-sweep: avg frame time 17ms 17ms -0% z=-1.5
canvas-mouse-sweep: p95 frame time 17ms 17ms +0%
canvas-mouse-sweep: layout duration 4ms 3ms -8% z=-0.8
canvas-mouse-sweep: style recalc duration 42ms 37ms -10% z=-1.6
canvas-mouse-sweep: layout count 12 12 +0%
canvas-mouse-sweep: style recalc count 74 74 +0% z=-2.0
canvas-mouse-sweep: task duration 856ms 786ms -8% z=-1.4
canvas-mouse-sweep: script duration 126ms 123ms -2% z=-2.0
canvas-mouse-sweep: TBT 0ms 0ms +0%
canvas-mouse-sweep: heap used 54.5 MB 56.2 MB +3%
canvas-mouse-sweep: DOM nodes -241 57 -124% z=-2.1
canvas-mouse-sweep: event listeners -199 4 -102% z=-1.1
canvas-zoom-sweep: avg frame time 17ms 17ms -0% z=-1.1
canvas-zoom-sweep: p95 frame time 17ms 17ms -0%
canvas-zoom-sweep: layout duration 1ms 1ms -15% z=-2.0
canvas-zoom-sweep: style recalc duration 16ms 17ms +9% z=-1.1
canvas-zoom-sweep: layout count 6 6 +0%
canvas-zoom-sweep: style recalc count 32 31 -2% z=-0.6
canvas-zoom-sweep: task duration 303ms 349ms +15% z=0.9
canvas-zoom-sweep: script duration 18ms 21ms +19% z=-1.9
canvas-zoom-sweep: TBT 0ms 0ms +0%
canvas-zoom-sweep: heap used 62.4 MB 60.8 MB -2%
canvas-zoom-sweep: DOM nodes -67 -75 +11% z=-194.2
canvas-zoom-sweep: event listeners -83 -83 +0% z=-20.5
dom-widget-clipping: avg frame time 17ms 17ms +0% z=0.1
dom-widget-clipping: p95 frame time 17ms 17ms +1%
dom-widget-clipping: layout duration 0ms 0ms +0%
dom-widget-clipping: style recalc duration 9ms 8ms -15% z=-2.5
dom-widget-clipping: layout count 0 0 +0%
dom-widget-clipping: style recalc count 12 11 -4% z=-4.2
dom-widget-clipping: task duration 375ms 373ms -1% z=0.5
dom-widget-clipping: script duration 58ms 55ms -6% z=-4.0
dom-widget-clipping: TBT 0ms 0ms +0%
dom-widget-clipping: heap used 51.9 MB 51.8 MB -0%
dom-widget-clipping: DOM nodes -283 -285 +1% z=-216.5
dom-widget-clipping: event listeners -202 -202 +0% variance too high
large-graph-idle: avg frame time 17ms 17ms +0% z=-0.2
large-graph-idle: p95 frame time 17ms 17ms +0%
large-graph-idle: layout duration 0ms 0ms +0%
large-graph-idle: style recalc duration 9ms 8ms -7% z=-3.8
large-graph-idle: layout count 0 0 +0%
large-graph-idle: style recalc count 10 9 -11% z=-9.9
large-graph-idle: task duration 518ms 497ms -4% z=-0.8
large-graph-idle: script duration 91ms 87ms -5% z=-1.5
large-graph-idle: TBT 0ms 0ms +0%
large-graph-idle: heap used 56.6 MB 60.3 MB +7%
large-graph-idle: DOM nodes -266 -128 -52% z=-168.4
large-graph-idle: event listeners -197 -96 -52% z=-20.0
large-graph-pan: avg frame time 17ms 17ms +0% z=0.8
large-graph-pan: p95 frame time 17ms 17ms -1%
large-graph-pan: layout duration 0ms 0ms +0%
large-graph-pan: style recalc duration 18ms 17ms -1% z=0.2
large-graph-pan: layout count 0 0 +0%
large-graph-pan: style recalc count 69 69 +0% z=-1.7
large-graph-pan: task duration 1025ms 1143ms +12% z=1.4
large-graph-pan: script duration 392ms 424ms +8% z=0.8
large-graph-pan: TBT 0ms 0ms +0%
large-graph-pan: heap used 79.3 MB 77.7 MB -2%
large-graph-pan: DOM nodes -128 -276 +116% z=-178.5
large-graph-pan: event listeners 6 -197 -3383% z=-243.9
large-graph-zoom: avg frame time 17ms 17ms +0%
large-graph-zoom: p95 frame time 17ms 17ms +0%
large-graph-zoom: layout duration 7ms 7ms +3%
large-graph-zoom: style recalc duration 17ms 16ms -2%
large-graph-zoom: layout count 60 60 +0%
large-graph-zoom: style recalc count 64 63 -2%
large-graph-zoom: task duration 1248ms 1290ms +3%
large-graph-zoom: script duration 468ms 489ms +4%
large-graph-zoom: TBT 0ms 0ms +0%
large-graph-zoom: heap used 64.7 MB 64.3 MB -1%
large-graph-zoom: DOM nodes -134 -136 +1%
large-graph-zoom: event listeners -94 8 -109%
minimap-idle: avg frame time 17ms 17ms -0% z=-0.9
minimap-idle: p95 frame time 17ms 17ms +0%
minimap-idle: layout duration 0ms 0ms +0%
minimap-idle: style recalc duration 9ms 8ms -8% z=-1.4
minimap-idle: layout count 0 0 +0%
minimap-idle: style recalc count 10 8 -16% z=-2.3
minimap-idle: task duration 476ms 528ms +11% z=0.0
minimap-idle: script duration 85ms 96ms +13% z=-0.2
minimap-idle: TBT 0ms 0ms +0%
minimap-idle: heap used 69.1 MB 59.6 MB -14%
minimap-idle: DOM nodes 19 -129 -776% z=-108.0
minimap-idle: event listeners 5 -96 -2010% z=-151.6
subgraph-dom-widget-clipping: avg frame time 17ms 17ms +0% z=0.7
subgraph-dom-widget-clipping: p95 frame time 17ms 17ms +0%
subgraph-dom-widget-clipping: layout duration 0ms 0ms +0%
subgraph-dom-widget-clipping: style recalc duration 11ms 12ms +8% z=-0.6
subgraph-dom-widget-clipping: layout count 0 0 +0%
subgraph-dom-widget-clipping: style recalc count 48 48 +0% z=-0.8
subgraph-dom-widget-clipping: task duration 368ms 383ms +4% z=0.2
subgraph-dom-widget-clipping: script duration 118ms 119ms +1% z=-1.4
subgraph-dom-widget-clipping: TBT 0ms 0ms +0%
subgraph-dom-widget-clipping: heap used 62.0 MB 53.9 MB -13%
subgraph-dom-widget-clipping: DOM nodes -134 -129 -4% z=-134.7
subgraph-dom-widget-clipping: event listeners -96 -96 +0% z=-19.2
subgraph-idle: avg frame time 17ms 17ms -0% z=-0.2
subgraph-idle: p95 frame time 17ms 17ms +0%
subgraph-idle: layout duration 0ms 0ms +0%
subgraph-idle: style recalc duration 10ms 10ms -6% z=-0.8
subgraph-idle: layout count 0 0 +0%
subgraph-idle: style recalc count 11 11 +5% z=0.2
subgraph-idle: task duration 409ms 384ms -6% z=0.4
subgraph-idle: script duration 15ms 13ms -11% z=-2.7
subgraph-idle: TBT 0ms 0ms +0%
subgraph-idle: heap used 59.5 MB 53.8 MB -10%
subgraph-idle: DOM nodes -275 -283 +3% z=-203.9
subgraph-idle: event listeners -199 -199 +0% variance too high
subgraph-mouse-sweep: avg frame time 17ms 17ms +0% z=0.4
subgraph-mouse-sweep: p95 frame time 17ms 17ms -0%
subgraph-mouse-sweep: layout duration 4ms 4ms -7% z=-2.0
subgraph-mouse-sweep: style recalc duration 35ms 37ms +6% z=-1.8
subgraph-mouse-sweep: layout count 16 16 +0%
subgraph-mouse-sweep: style recalc count 76 76 +0% z=-2.4
subgraph-mouse-sweep: task duration 683ms 678ms -1% z=-1.3
subgraph-mouse-sweep: script duration 92ms 91ms -2% z=-1.6
subgraph-mouse-sweep: TBT 0ms 0ms +0%
subgraph-mouse-sweep: heap used 57.8 MB 58.1 MB +0%
subgraph-mouse-sweep: DOM nodes -95 -94 -1% z=-71.8
subgraph-mouse-sweep: event listeners -98 -98 +0% variance too high
subgraph-transition-enter: avg frame time 17ms 17ms +0%
subgraph-transition-enter: p95 frame time 17ms 17ms -1%
subgraph-transition-enter: layout duration 19ms 16ms -14%
subgraph-transition-enter: style recalc duration 32ms 33ms +2%
subgraph-transition-enter: layout count 13 14 +8%
subgraph-transition-enter: style recalc count 17 18 +6%
subgraph-transition-enter: task duration 748ms 758ms +1%
subgraph-transition-enter: script duration 26ms 45ms +69%
subgraph-transition-enter: TBT 166ms 152ms -8%
subgraph-transition-enter: heap used 73.8 MB 93.0 MB +26%
subgraph-transition-enter: DOM nodes 13673 13673 +0%
subgraph-transition-enter: event listeners 2533 2533 +0%
viewport-pan-sweep: avg frame time 17ms 17ms -0%
viewport-pan-sweep: p95 frame time 17ms 17ms +0%
viewport-pan-sweep: layout duration 0ms 0ms +0%
viewport-pan-sweep: style recalc duration 54ms 56ms +4%
viewport-pan-sweep: layout count 0 0 +0%
viewport-pan-sweep: style recalc count 251 251 -0%
viewport-pan-sweep: task duration 3698ms 3761ms +2%
viewport-pan-sweep: script duration 1275ms 1247ms -2%
viewport-pan-sweep: TBT 0ms 0ms +0%
viewport-pan-sweep: heap used 73.8 MB 66.4 MB -10%
viewport-pan-sweep: DOM nodes -122 -127 +5%
viewport-pan-sweep: event listeners -49 -82 +66%
vue-large-graph-idle: avg frame time 17ms 17ms -0%
vue-large-graph-idle: p95 frame time 17ms 17ms +0%
vue-large-graph-idle: layout duration 0ms 0ms +0%
vue-large-graph-idle: style recalc duration 0ms 0ms +0%
vue-large-graph-idle: layout count 0 0 +0%
vue-large-graph-idle: style recalc count 0 0 +0%
vue-large-graph-idle: task duration 12165ms 12505ms +3%
vue-large-graph-idle: script duration 526ms 536ms +2%
vue-large-graph-idle: TBT 0ms 0ms +0%
vue-large-graph-idle: heap used 162.0 MB 162.9 MB +1%
vue-large-graph-idle: DOM nodes -3301 -3301 +0%
vue-large-graph-idle: event listeners -16372 -16378 +0%
vue-large-graph-pan: avg frame time 17ms 17ms +2%
vue-large-graph-pan: p95 frame time 17ms 17ms +0%
vue-large-graph-pan: layout duration 0ms 0ms +0%
vue-large-graph-pan: style recalc duration 17ms 18ms +4%
vue-large-graph-pan: layout count 0 0 +0%
vue-large-graph-pan: style recalc count 76 81 +7%
vue-large-graph-pan: task duration 15268ms 15710ms +3%
vue-large-graph-pan: script duration 838ms 797ms -5%
vue-large-graph-pan: TBT 14ms 25ms +79%
vue-large-graph-pan: heap used 148.0 MB 165.4 MB +12%
vue-large-graph-pan: DOM nodes -3306 -3307 +0%
vue-large-graph-pan: event listeners -16369 -16372 +0%
workflow-execution: avg frame time 17ms 17ms -0% z=0.1
workflow-execution: p95 frame time 17ms 17ms +0%
workflow-execution: layout duration 1ms 1ms -38% z=-6.3
workflow-execution: style recalc duration 20ms 18ms -12% z=-3.0
workflow-execution: layout count 3 3 +20% z=-3.6
workflow-execution: style recalc count 16 11 -32% z=-3.6
workflow-execution: task duration 107ms 122ms +15% z=-0.1
workflow-execution: script duration 9ms 9ms -7% z=-6.9
workflow-execution: TBT 0ms 0ms +0%
workflow-execution: heap used 55.5 MB 50.8 MB -9%
workflow-execution: DOM nodes 136 -17 -113% z=-25.0
workflow-execution: event listeners 65 -34 -152% z=-19.5
Historical variance (last 15 runs)
Metric μ σ CV
canvas-idle: avg frame time 17ms 0ms 0.0%
canvas-idle: layout duration 0ms 0ms 0.0%
canvas-idle: style recalc duration 11ms 1ms 8.2%
canvas-idle: layout count 0 0 0.0%
canvas-idle: style recalc count 11 1 5.0%
canvas-idle: task duration 395ms 31ms 7.9%
canvas-idle: script duration 25ms 2ms 8.8%
canvas-idle: TBT 0ms 0ms 0.0%
canvas-idle: DOM nodes 23 1 5.6%
canvas-idle: event listeners 12 5 40.9%
canvas-mouse-sweep: avg frame time 17ms 0ms 0.0%
canvas-mouse-sweep: layout duration 4ms 0ms 5.4%
canvas-mouse-sweep: style recalc duration 43ms 3ms 7.4%
canvas-mouse-sweep: layout count 12 0 0.0%
canvas-mouse-sweep: style recalc count 79 2 3.0%
canvas-mouse-sweep: task duration 865ms 58ms 6.7%
canvas-mouse-sweep: script duration 136ms 6ms 4.8%
canvas-mouse-sweep: TBT 0ms 0ms 0.0%
canvas-mouse-sweep: DOM nodes 62 3 4.2%
canvas-mouse-sweep: event listeners 8 4 49.4%
canvas-zoom-sweep: avg frame time 17ms 0ms 0.0%
canvas-zoom-sweep: layout duration 1ms 0ms 7.0%
canvas-zoom-sweep: style recalc duration 19ms 2ms 8.0%
canvas-zoom-sweep: layout count 6 0 0.0%
canvas-zoom-sweep: style recalc count 31 0 1.5%
canvas-zoom-sweep: task duration 327ms 23ms 7.1%
canvas-zoom-sweep: script duration 27ms 3ms 11.1%
canvas-zoom-sweep: TBT 0ms 0ms 0.0%
canvas-zoom-sweep: DOM nodes 79 1 1.0%
canvas-zoom-sweep: event listeners 24 5 21.8%
dom-widget-clipping: avg frame time 17ms 0ms 0.0%
dom-widget-clipping: layout duration 0ms 0ms 0.0%
dom-widget-clipping: style recalc duration 10ms 1ms 8.0%
dom-widget-clipping: layout count 0 0 0.0%
dom-widget-clipping: style recalc count 13 0 3.8%
dom-widget-clipping: task duration 365ms 16ms 4.5%
dom-widget-clipping: script duration 68ms 3ms 4.8%
dom-widget-clipping: TBT 0ms 0ms 0.0%
dom-widget-clipping: DOM nodes 22 1 6.4%
dom-widget-clipping: event listeners 8 6 81.2%
large-graph-idle: avg frame time 17ms 0ms 0.0%
large-graph-idle: layout duration 0ms 0ms 0.0%
large-graph-idle: style recalc duration 12ms 1ms 8.6%
large-graph-idle: layout count 0 0 0.0%
large-graph-idle: style recalc count 12 0 2.7%
large-graph-idle: task duration 542ms 54ms 10.0%
large-graph-idle: script duration 102ms 11ms 10.3%
large-graph-idle: TBT 0ms 0ms 0.0%
large-graph-idle: DOM nodes 25 1 3.7%
large-graph-idle: event listeners 26 6 23.2%
large-graph-pan: avg frame time 17ms 0ms 0.0%
large-graph-pan: layout duration 0ms 0ms 0.0%
large-graph-pan: style recalc duration 17ms 1ms 4.6%
large-graph-pan: layout count 0 0 0.0%
large-graph-pan: style recalc count 70 1 0.9%
large-graph-pan: task duration 1082ms 43ms 4.0%
large-graph-pan: script duration 408ms 20ms 4.8%
large-graph-pan: TBT 0ms 0ms 0.0%
large-graph-pan: DOM nodes 19 2 8.7%
large-graph-pan: event listeners 5 1 16.8%
minimap-idle: avg frame time 17ms 0ms 0.0%
minimap-idle: layout duration 0ms 0ms 0.0%
minimap-idle: style recalc duration 10ms 1ms 8.6%
minimap-idle: layout count 0 0 0.0%
minimap-idle: style recalc count 10 1 7.1%
minimap-idle: task duration 527ms 47ms 9.0%
minimap-idle: script duration 98ms 10ms 10.1%
minimap-idle: TBT 0ms 0ms 0.0%
minimap-idle: DOM nodes 19 1 7.1%
minimap-idle: event listeners 5 1 14.4%
subgraph-dom-widget-clipping: avg frame time 17ms 0ms 0.0%
subgraph-dom-widget-clipping: layout duration 0ms 0ms 0.0%
subgraph-dom-widget-clipping: style recalc duration 13ms 1ms 7.4%
subgraph-dom-widget-clipping: layout count 0 0 0.0%
subgraph-dom-widget-clipping: style recalc count 48 1 1.2%
subgraph-dom-widget-clipping: task duration 378ms 18ms 4.9%
subgraph-dom-widget-clipping: script duration 128ms 6ms 4.9%
subgraph-dom-widget-clipping: TBT 0ms 0ms 0.0%
subgraph-dom-widget-clipping: DOM nodes 22 1 5.0%
subgraph-dom-widget-clipping: event listeners 16 6 36.0%
subgraph-idle: avg frame time 17ms 0ms 0.0%
subgraph-idle: layout duration 0ms 0ms 0.0%
subgraph-idle: style recalc duration 10ms 1ms 7.5%
subgraph-idle: layout count 0 0 0.0%
subgraph-idle: style recalc count 11 1 6.0%
subgraph-idle: task duration 370ms 31ms 8.5%
subgraph-idle: script duration 20ms 3ms 13.2%
subgraph-idle: TBT 0ms 0ms 0.0%
subgraph-idle: DOM nodes 22 1 6.9%
subgraph-idle: event listeners 10 7 64.5%
subgraph-mouse-sweep: avg frame time 17ms 0ms 0.0%
subgraph-mouse-sweep: layout duration 5ms 0ms 6.8%
subgraph-mouse-sweep: style recalc duration 42ms 3ms 7.8%
subgraph-mouse-sweep: layout count 16 0 0.0%
subgraph-mouse-sweep: style recalc count 80 2 2.4%
subgraph-mouse-sweep: task duration 766ms 69ms 9.0%
subgraph-mouse-sweep: script duration 101ms 7ms 6.5%
subgraph-mouse-sweep: TBT 0ms 0ms 0.0%
subgraph-mouse-sweep: DOM nodes 67 2 3.3%
subgraph-mouse-sweep: event listeners 8 4 52.6%
workflow-execution: avg frame time 17ms 0ms 0.0%
workflow-execution: layout duration 2ms 0ms 9.4%
workflow-execution: style recalc duration 24ms 2ms 9.1%
workflow-execution: layout count 5 1 11.0%
workflow-execution: style recalc count 18 2 11.5%
workflow-execution: task duration 123ms 11ms 8.8%
workflow-execution: script duration 29ms 3ms 10.2%
workflow-execution: TBT 0ms 0ms 0.0%
workflow-execution: DOM nodes 161 7 4.4%
workflow-execution: event listeners 52 4 8.4%
Trend (last 15 commits on main)
Metric Trend Dir Latest
canvas-idle: avg frame time ▆▃▆▁▆▃▆█▆▆▄▃▃▄▃ ➡️ 17ms
canvas-idle: p95 frame time ➡️ NaNms
canvas-idle: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
canvas-idle: style recalc duration ▇▇▆▆▃█▄▃▄▃▇▄▁▆▇ ➡️ 11ms
canvas-idle: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
canvas-idle: style recalc count █▃▅▂▅▆▃▁▂▁▂▅▆▅▆ ➡️ 12
canvas-idle: task duration ▃▃▃▆▂▃▃▅▆▂█▃▁▃▃ ➡️ 391ms
canvas-idle: script duration ▄▃▅▇▂▅▃▆▇▅█▄▁▅▆ ➡️ 27ms
canvas-idle: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
canvas-idle: heap used ➡️ NaN MB
canvas-idle: DOM nodes █▇▆▅▃▇▃▁▂▂▅▆▆▆▇ ➡️ 24
canvas-idle: event listeners ▅█▅▄▁▅▁▁▁▄▅▅▁▅▄ 📉 11
canvas-mouse-sweep: avg frame time ▆█▆▃▁▃▁▆▆▁▃▆▆▃▃ ➡️ 17ms
canvas-mouse-sweep: p95 frame time ➡️ NaNms
canvas-mouse-sweep: layout duration ▁▃▂▄▁▂▁▃▆▂█▇▆▄▃ ➡️ 4ms
canvas-mouse-sweep: style recalc duration ▄▄▂▄▁▂▃▃▅▄█▆▂▄▄ ➡️ 43ms
canvas-mouse-sweep: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 12
canvas-mouse-sweep: style recalc count █▅▄▃▂▂▁▄▄▅▆▅▂▇▄ ➡️ 79
canvas-mouse-sweep: task duration █▆▄▂▂▃▂▄▄▅█▆▁▆▄ ➡️ 868ms
canvas-mouse-sweep: script duration ▄▅▄▆▄▆▆▆▅▅█▆▁▅▆ ➡️ 139ms
canvas-mouse-sweep: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
canvas-mouse-sweep: heap used ➡️ NaN MB
canvas-mouse-sweep: DOM nodes █▅▃▃▁▂▂▃▂▄▆▅▃▅▅ ➡️ 64
canvas-mouse-sweep: event listeners █▁▁▁▁▁▇▁▁▁██▇▁█ 📈 13
canvas-zoom-sweep: avg frame time ▅▅█▄▅▁▁▁▅▁▁▅▄▅▁ ➡️ 17ms
canvas-zoom-sweep: p95 frame time ➡️ NaNms
canvas-zoom-sweep: layout duration ▆▅▅▄▁▁█▅▃▅▇▆▁▂▆ ➡️ 1ms
canvas-zoom-sweep: style recalc duration ▆▅▄▆▅▃█▆▇▅▇▄▁▃▅ ➡️ 20ms
canvas-zoom-sweep: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 6
canvas-zoom-sweep: style recalc count ▁▁▃▄▆▃▆█▄▄▆▁▆▁▆ ➡️ 32
canvas-zoom-sweep: task duration ▄▂▁▇▂▂▄▅▆▃█▄▁▁▅ ➡️ 338ms
canvas-zoom-sweep: script duration ▃▃▂▇▂▂▅▇▆▅█▄▁▂▆ ➡️ 30ms
canvas-zoom-sweep: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
canvas-zoom-sweep: heap used ➡️ NaN MB
canvas-zoom-sweep: DOM nodes ▄▃▁▅█▁▃▆▄▅▅▃▃▄▃ ➡️ 79
canvas-zoom-sweep: event listeners ▁▁▂▅█▂▁▅▁▅▅▄▁▅▁ ➡️ 19
dom-widget-clipping: avg frame time ▂▄▅▅▂▄█▇▅▇▇▅▅▁▇ ➡️ 17ms
dom-widget-clipping: p95 frame time ➡️ NaNms
dom-widget-clipping: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
dom-widget-clipping: style recalc duration ▆▆▂▆▄▃██▄▁▆▇▆▃▅ ➡️ 10ms
dom-widget-clipping: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
dom-widget-clipping: style recalc count ▇█▅█▅▄█▇▇▁▇▄▇▂▅ ➡️ 13
dom-widget-clipping: task duration ▃▃▁▅▄▃▅▆▅▂▇█▁▅▅ ➡️ 371ms
dom-widget-clipping: script duration ▅▄▄▆▆▅▇▇▆▃█▇▁▇▇ ➡️ 71ms
dom-widget-clipping: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
dom-widget-clipping: heap used ➡️ NaN MB
dom-widget-clipping: DOM nodes ▇▇▄▇▅▄█▇▅▁▅▄▇▃▄ ➡️ 21
dom-widget-clipping: event listeners ▅▅▅▅▁▅██▁▁▁▁█▁▁ 📉 2
large-graph-idle: avg frame time ▅▅▅▅▅▂▁▂▄▅▄▂▂▅█ ➡️ 17ms
large-graph-idle: p95 frame time ➡️ NaNms
large-graph-idle: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
large-graph-idle: style recalc duration ▅▅▅▆▄▅▃▄▅▅▆█▁▄▆ ➡️ 13ms
large-graph-idle: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
large-graph-idle: style recalc count █▆█▃▃▁▃▆▃▆▆▃▆██ ➡️ 12
large-graph-idle: task duration ▂▃▂▆▂▃▃▇▅▃██▁▂▅ ➡️ 569ms
large-graph-idle: script duration ▄▅▄▆▄▅▅▇▆▅█▆▁▃▆ ➡️ 110ms
large-graph-idle: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
large-graph-idle: heap used ➡️ NaN MB
large-graph-idle: DOM nodes ▆█▅▂▅▃▁▂▃▅▅▆▂▆▅ ➡️ 25
large-graph-idle: event listeners ███▇██▄▁▄▇▇█▂█▇ ➡️ 29
large-graph-pan: avg frame time ▆▃▃▆█▃▁█▆▆▆▆█▁▆ ➡️ 17ms
large-graph-pan: p95 frame time ➡️ NaNms
large-graph-pan: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
large-graph-pan: style recalc duration ▃▂▄▄▁▅▂▂▁▄▄█▃▁▂ ➡️ 17ms
large-graph-pan: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
large-graph-pan: style recalc count ▆▃█▂▃▂▂▂▁▇▅▃█▆▃ ➡️ 69
large-graph-pan: task duration ▄▃▄▆▄▄▄▆▄▄█▆▁▂▅ ➡️ 1100ms
large-graph-pan: script duration ▅▄▅▆▆▅▄▆▄▅█▄▁▄▅ ➡️ 413ms
large-graph-pan: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
large-graph-pan: heap used ➡️ NaN MB
large-graph-pan: DOM nodes ▅▃▆▂▄▁▃▁▁▅▁▂█▅▂ ➡️ 18
large-graph-pan: event listeners █▆█▁▁▆▁▁▃▆▁▃██▃ ➡️ 5
minimap-idle: avg frame time ▃▆▆▃█▁█▆▆▃▃▆█▆█ ➡️ 17ms
minimap-idle: p95 frame time ➡️ NaNms
minimap-idle: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
minimap-idle: style recalc duration ▄█▁█▅▅█▅▅▃▅▁▁▄▆ ➡️ 10ms
minimap-idle: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
minimap-idle: style recalc count ▃▅▂▄█▃▆▁▂▅▂▁▅▆▃ ➡️ 9
minimap-idle: task duration ▃▄▁▅▁▃▄▅▇▃█▅▁▁▅ ➡️ 547ms
minimap-idle: script duration ▄▆▃▇▃▅▆▆▇▅█▅▁▃▆ ➡️ 106ms
minimap-idle: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
minimap-idle: heap used ➡️ NaN MB
minimap-idle: DOM nodes ▃▅▂▄█▃▆▁▂▅▂▁▅▆▃ ➡️ 19
minimap-idle: event listeners ▃▃▆▁▁▁▃▁▁▆▁▃█▆▁ ➡️ 4
subgraph-dom-widget-clipping: avg frame time ▅▄▄▄▄▄█▄▄▄▃▁▆▃▃ ➡️ 17ms
subgraph-dom-widget-clipping: p95 frame time ➡️ NaNms
subgraph-dom-widget-clipping: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
subgraph-dom-widget-clipping: style recalc duration ▂▄▃▅▅▃▂▅▇▃▄█▁▄▆ ➡️ 14ms
subgraph-dom-widget-clipping: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
subgraph-dom-widget-clipping: style recalc count ▇█▆▃▆▃▁▆█▇▃▆▇█▅ ➡️ 48
subgraph-dom-widget-clipping: task duration ▂▃▃▆▅▅▂▅█▂▆█▁▂▇ ➡️ 398ms
subgraph-dom-widget-clipping: script duration ▃▃▃▄▅▅▂▄█▂▅▇▁▂▅ ➡️ 131ms
subgraph-dom-widget-clipping: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
subgraph-dom-widget-clipping: heap used ➡️ NaN MB
subgraph-dom-widget-clipping: DOM nodes ▅▇▅▂▅▂▁▅▅▅▁▇▅█▄ ➡️ 22
subgraph-dom-widget-clipping: event listeners ▅▅▅▂▅▁▅██▁▁█▅█▅ 📈 16
subgraph-idle: avg frame time ▆▆█▁▆▃▆▆▆▃▆▁▃▆█ ➡️ 17ms
subgraph-idle: p95 frame time ➡️ NaNms
subgraph-idle: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
subgraph-idle: style recalc duration ▁▇▃▆▂▄▂▃▃▆▆▄▃▇█ ➡️ 12ms
subgraph-idle: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
subgraph-idle: style recalc count ▃▆▃▃▂▅▁▂▁▆▃▃██▇ ➡️ 12
subgraph-idle: task duration ▁▃▁▇▁▁▃▆▅▂█▅▁▁▄ ➡️ 378ms
subgraph-idle: script duration ▁▃▂▇▁▂▃▇▆▂█▅▂▁▅ ➡️ 22ms
subgraph-idle: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
subgraph-idle: heap used ➡️ NaN MB
subgraph-idle: DOM nodes ▃▅▃▂▁▄▁▂▁▅▃▂▇█▇ ➡️ 24
subgraph-idle: event listeners ▁▅▁▁▁▁▁▁▁▅▄▁███ 📈 21
subgraph-mouse-sweep: avg frame time ▅▄▁▃▃▄▆▄▆▃▃█▁▃▃ ➡️ 17ms
subgraph-mouse-sweep: p95 frame time ➡️ NaNms
subgraph-mouse-sweep: layout duration ▁▄▄▄▃▃▅▅▅▂█▇▂▃▆ ➡️ 5ms
subgraph-mouse-sweep: style recalc duration ▃▂▄▅▂▃▄▅█▃█▆▁▂▅ ➡️ 43ms
subgraph-mouse-sweep: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 16
subgraph-mouse-sweep: style recalc count ▅▂▅▅▁▄▃▅█▅▆▄▂▄▅ ➡️ 81
subgraph-mouse-sweep: task duration ▃▂▄▅▂▄▄▅▇▄█▆▁▃▅ ➡️ 785ms
subgraph-mouse-sweep: script duration ▄▅▄▇▅▅▆▇▆▅██▁▄▆ ➡️ 105ms
subgraph-mouse-sweep: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
subgraph-mouse-sweep: heap used ➡️ NaN MB
subgraph-mouse-sweep: DOM nodes ▅▁▄▅▁▄▃▃█▅▅▄▂▅▃ ➡️ 66
subgraph-mouse-sweep: event listeners ▇▁▂▇▁▂▂▂█▇▂▂▇▇▂ 📈 5
workflow-execution: avg frame time ▆▆▆▄▆▆▃▄▁▄█▆▅▄▆ ➡️ 17ms
workflow-execution: p95 frame time ➡️ NaNms
workflow-execution: layout duration ▁▆▁▃▂▄▃▂▃▃▅█▄▂▅ ➡️ 2ms
workflow-execution: style recalc duration ▃▇▅▇▁▅▆▇█▁██▂▄▆ ➡️ 25ms
workflow-execution: layout count ▁█▂▃▂▃▃▁▃▃▄▃▂▃▂ ➡️ 5
workflow-execution: style recalc count ▃█▅▇▁▄▅▆▅▅▅▅▄▄▂ ➡️ 15
workflow-execution: task duration ▂▅▄▅▁▄▆▆▆▁▇█▁▃▃ ➡️ 120ms
workflow-execution: script duration ▄▃▄▄▃▅▄▅▆▂▇█▁▃▄ ➡️ 29ms
workflow-execution: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
workflow-execution: heap used ➡️ NaN MB
workflow-execution: DOM nodes ▂█▃▆▁▄▃▅▃█▃▃▄▃▁ ➡️ 152
workflow-execution: event listeners ▅███▁▅███▁██▅█▅ ➡️ 49
Raw data
{
  "timestamp": "2026-07-13T17:59:05.125Z",
  "gitSha": "8e4cfa759764e16067691bde7f8a42dd79962299",
  "branch": "backport-13510-to-core-1.47",
  "measurements": [
    {
      "name": "canvas-idle",
      "durationMs": 2020.6530000000384,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 10.77,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 402.785,
      "heapDeltaBytes": -5088436,
      "heapUsedBytes": 49629000,
      "domNodes": 20,
      "jsHeapTotalBytes": 25165824,
      "scriptDurationMs": 21.385999999999996,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "canvas-idle",
      "durationMs": 2010.5629999999906,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 8.183000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 340.05999999999995,
      "heapDeltaBytes": 1190920,
      "heapUsedBytes": 56974648,
      "domNodes": 20,
      "jsHeapTotalBytes": 18874368,
      "scriptDurationMs": 15.154999999999998,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 2032.083,
      "styleRecalcs": 76,
      "styleRecalcDurationMs": 42.97999999999999,
      "layouts": 12,
      "layoutDurationMs": 3.687,
      "taskDurationMs": 854.715,
      "heapDeltaBytes": -3855560,
      "heapUsedBytes": 65513028,
      "domNodes": 60,
      "jsHeapTotalBytes": 18898944,
      "scriptDurationMs": 128.202,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1758.8030000000003,
      "styleRecalcs": 72,
      "styleRecalcDurationMs": 31.93,
      "layouts": 12,
      "layoutDurationMs": 3.209,
      "taskDurationMs": 717.2879999999999,
      "heapDeltaBytes": -6445456,
      "heapUsedBytes": 52428792,
      "domNodes": 54,
      "jsHeapTotalBytes": 25165824,
      "scriptDurationMs": 117.05100000000002,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1711.1090000000218,
      "styleRecalcs": 30,
      "styleRecalcDurationMs": 15.117,
      "layouts": 6,
      "layoutDurationMs": 0.516,
      "taskDurationMs": 296.66700000000003,
      "heapDeltaBytes": 2364460,
      "heapUsedBytes": 61258480,
      "domNodes": 77,
      "jsHeapTotalBytes": 25952256,
      "scriptDurationMs": 17.632,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1773.054000000002,
      "styleRecalcs": 32,
      "styleRecalcDurationMs": 19.721999999999998,
      "layouts": 6,
      "layoutDurationMs": 0.5919999999999999,
      "taskDurationMs": 400.533,
      "heapDeltaBytes": -3465872,
      "heapUsedBytes": 66302920,
      "domNodes": -226,
      "jsHeapTotalBytes": 12472320,
      "scriptDurationMs": 25.028000000000002,
      "eventListeners": -184,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 621.3549999999941,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 8.164,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 386.79400000000004,
      "heapDeltaBytes": -23676088,
      "heapUsedBytes": 45958256,
      "domNodes": -279,
      "jsHeapTotalBytes": 6705152,
      "scriptDurationMs": 56.446000000000005,
      "eventListeners": -201,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 555.8650000000398,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 7.6259999999999994,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 359.09499999999997,
      "heapDeltaBytes": 10595124,
      "heapUsedBytes": 62640072,
      "domNodes": -291,
      "jsHeapTotalBytes": 6156288,
      "scriptDurationMs": 53.314,
      "eventListeners": -203,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2041.3139999999999,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 7.622,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 515.245,
      "heapDeltaBytes": -3114624,
      "heapUsedBytes": 57903832,
      "domNodes": -273,
      "jsHeapTotalBytes": -1089536,
      "scriptDurationMs": 85.85400000000001,
      "eventListeners": -197,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2010.0830000000087,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 8.888,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 478.675,
      "heapDeltaBytes": 11192704,
      "heapUsedBytes": 68494524,
      "domNodes": 18,
      "jsHeapTotalBytes": 6029312,
      "scriptDurationMs": 87.15800000000002,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2156.6869999999767,
      "styleRecalcs": 69,
      "styleRecalcDurationMs": 17.394000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1162.7350000000001,
      "heapDeltaBytes": 19674124,
      "heapUsedBytes": 81549352,
      "domNodes": -275,
      "jsHeapTotalBytes": 163840,
      "scriptDurationMs": 448.183,
      "eventListeners": -197,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2113.078000000087,
      "styleRecalcs": 68,
      "styleRecalcDurationMs": 17.551000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1123.4630000000002,
      "heapDeltaBytes": 19041404,
      "heapUsedBytes": 81347080,
      "domNodes": -276,
      "jsHeapTotalBytes": -622592,
      "scriptDurationMs": 399.23800000000006,
      "eventListeners": -197,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000012,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3096.7259999999897,
      "styleRecalcs": 62,
      "styleRecalcDurationMs": 15.126000000000001,
      "layouts": 60,
      "layoutDurationMs": 6.994999999999999,
      "taskDurationMs": 1222.02,
      "heapDeltaBytes": 11758364,
      "heapUsedBytes": 67760860,
      "domNodes": 6,
      "jsHeapTotalBytes": 1835008,
      "scriptDurationMs": 466.463,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3115.0370000000294,
      "styleRecalcs": 63,
      "styleRecalcDurationMs": 17.799999999999997,
      "layouts": 60,
      "layoutDurationMs": 7.6690000000000005,
      "taskDurationMs": 1357.944,
      "heapDeltaBytes": 12788300,
      "heapUsedBytes": 66996592,
      "domNodes": -278,
      "jsHeapTotalBytes": 0,
      "scriptDurationMs": 511.007,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "minimap-idle",
      "durationMs": 2024.39099999998,
      "styleRecalcs": 7,
      "styleRecalcDurationMs": 5.663999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 489.51399999999995,
      "heapDeltaBytes": -3287108,
      "heapUsedBytes": 59693200,
      "domNodes": -275,
      "jsHeapTotalBytes": -303104,
      "scriptDurationMs": 86.44400000000002,
      "eventListeners": -197,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "minimap-idle",
      "durationMs": 2002.1370000000616,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 11.117999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 565.6650000000001,
      "heapDeltaBytes": 10324028,
      "heapUsedBytes": 65335804,
      "domNodes": 18,
      "jsHeapTotalBytes": 4980736,
      "scriptDurationMs": 105.322,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 606.3720000000217,
      "styleRecalcs": 48,
      "styleRecalcDurationMs": 12.926000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 402.463,
      "heapDeltaBytes": -23925484,
      "heapUsedBytes": 45905672,
      "domNodes": -277,
      "jsHeapTotalBytes": 5394432,
      "scriptDurationMs": 120.482,
      "eventListeners": -197,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666682,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 580.9400000000551,
      "styleRecalcs": 47,
      "styleRecalcDurationMs": 11.372,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 362.991,
      "heapDeltaBytes": 8085424,
      "heapUsedBytes": 67038680,
      "domNodes": 20,
      "jsHeapTotalBytes": 19660800,
      "scriptDurationMs": 118.213,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000012,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2052.400999999975,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 9.405999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 392.449,
      "heapDeltaBytes": -7363680,
      "heapUsedBytes": 62599744,
      "domNodes": -278,
      "jsHeapTotalBytes": 18239488,
      "scriptDurationMs": 12.604000000000001,
      "eventListeners": -199,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-idle",
      "durationMs": 1995.326000000091,
      "styleRecalcs": 12,
      "styleRecalcDurationMs": 10.143,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 374.90299999999996,
      "heapDeltaBytes": -2382468,
      "heapUsedBytes": 50135864,
      "domNodes": -288,
      "jsHeapTotalBytes": 17952768,
      "scriptDurationMs": 13.493000000000002,
      "eventListeners": -199,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1698.6670000000004,
      "styleRecalcs": 75,
      "styleRecalcDurationMs": 34.31999999999999,
      "layouts": 16,
      "layoutDurationMs": 3.887,
      "taskDurationMs": 636.5110000000001,
      "heapDeltaBytes": -9940072,
      "heapUsedBytes": 50641920,
      "domNodes": 63,
      "jsHeapTotalBytes": 26738688,
      "scriptDurationMs": 89.035,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1755.4210000000694,
      "styleRecalcs": 76,
      "styleRecalcDurationMs": 38.785,
      "layouts": 16,
      "layoutDurationMs": 4.204000000000001,
      "taskDurationMs": 719.215,
      "heapDeltaBytes": 18042324,
      "heapUsedBytes": 71099704,
      "domNodes": -250,
      "jsHeapTotalBytes": 15331328,
      "scriptDurationMs": 92.071,
      "eventListeners": -199,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-transition-enter",
      "durationMs": 965.8079999999813,
      "styleRecalcs": 18,
      "styleRecalcDurationMs": 32.839999999999996,
      "layouts": 14,
      "layoutDurationMs": 16.058000000000003,
      "taskDurationMs": 758.1249999999999,
      "heapDeltaBytes": 27905300,
      "heapUsedBytes": 97543916,
      "domNodes": 13673,
      "jsHeapTotalBytes": 16515072,
      "scriptDurationMs": 44.61,
      "eventListeners": 2533,
      "totalBlockingTimeMs": 152,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8144.496000000004,
      "styleRecalcs": 251,
      "styleRecalcDurationMs": 55.659,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 3614.879,
      "heapDeltaBytes": 8015040,
      "heapUsedBytes": 68547420,
      "domNodes": -272,
      "jsHeapTotalBytes": 425984,
      "scriptDurationMs": 1217.0210000000002,
      "eventListeners": -183,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.80000000000109
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8180.052000000046,
      "styleRecalcs": 250,
      "styleRecalcDurationMs": 55.998999999999995,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 3907.2919999999995,
      "heapDeltaBytes": -1725924,
      "heapUsedBytes": 70758888,
      "domNodes": 18,
      "jsHeapTotalBytes": 16834560,
      "scriptDurationMs": 1276.03,
      "eventListeners": 20,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 12134.83500000001,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 12112.585,
      "heapDeltaBytes": -29155212,
      "heapUsedBytes": 170264736,
      "domNodes": -3301,
      "jsHeapTotalBytes": 20680704,
      "scriptDurationMs": 491.444,
      "eventListeners": -16374,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 12915.835000000015,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 12897.927000000001,
      "heapDeltaBytes": -46635068,
      "heapUsedBytes": 171269044,
      "domNodes": -3301,
      "jsHeapTotalBytes": 16748544,
      "scriptDurationMs": 579.8559999999999,
      "eventListeners": -16381,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.219999999999953,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 15655.129999999986,
      "styleRecalcs": 81,
      "styleRecalcDurationMs": 17.404000000000032,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 15628.466,
      "heapDeltaBytes": -35127668,
      "heapUsedBytes": 166413760,
      "domNodes": -3302,
      "jsHeapTotalBytes": 16748544,
      "scriptDurationMs": 764.105,
      "eventListeners": -16372,
      "totalBlockingTimeMs": 32,
      "frameDurationMs": 17.219999999999953,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 15816.456000000017,
      "styleRecalcs": 81,
      "styleRecalcDurationMs": 18.269999999999953,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 15790.901999999998,
      "heapDeltaBytes": -9275620,
      "heapUsedBytes": 180484368,
      "domNodes": -3311,
      "jsHeapTotalBytes": 18497536,
      "scriptDurationMs": 829.1299999999999,
      "eventListeners": -16371,
      "totalBlockingTimeMs": 18,
      "frameDurationMs": 17.776666666666642,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "workflow-execution",
      "durationMs": 447.5500000000352,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 16.604,
      "layouts": 3,
      "layoutDurationMs": 0.5940000000000001,
      "taskDurationMs": 89.965,
      "heapDeltaBytes": 4887108,
      "heapUsedBytes": 56956004,
      "domNodes": 128,
      "jsHeapTotalBytes": 0,
      "scriptDurationMs": 8.583,
      "eventListeners": 65,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "workflow-execution",
      "durationMs": 498.29699999997956,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 18.622,
      "layouts": 3,
      "layoutDurationMs": 0.673,
      "taskDurationMs": 154.508,
      "heapDeltaBytes": -2525884,
      "heapUsedBytes": 49500464,
      "domNodes": -162,
      "jsHeapTotalBytes": -659456,
      "scriptDurationMs": 8.872000000000002,
      "eventListeners": -132,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    }
  ]
}

@codecov

codecov Bot commented Jul 13, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 90.00000% with 1 line in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/components/dialog/GlobalDialog.vue 0.00% 1 Missing ⚠️
@@             Coverage Diff             @@
##           core/1.47   #13621    +/-   ##
===========================================
  Coverage      78.03%   78.03%            
===========================================
  Files           1656     1656            
  Lines          92592    92599     +7     
  Branches       32742    32082   -660     
===========================================
+ Hits           72252    72259     +7     
  Misses         19720    19720            
  Partials         620      620            
Flag Coverage Δ
unit 65.95% <90.00%> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
src/components/dialog/rekaPrimeVueBridge.ts 100.00% <100.00%> (ø)
...c/platform/secrets/components/SecretFormDialog.vue 73.33% <ø> (ø)
src/platform/secrets/composables/useSecretForm.ts 94.62% <100.00%> (+0.11%) ⬆️
...platform/settings/composables/useSettingsDialog.ts 100.00% <ø> (ø)
src/stores/dialogStore.ts 78.26% <ø> (ø)
src/components/dialog/GlobalDialog.vue 87.75% <0.00%> (-1.83%) ⬇️

... and 1 file with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@christian-byrne
christian-byrne merged commit 51ea158 into core/1.47 Jul 13, 2026
66 checks passed
@christian-byrne
christian-byrne deleted the backport-13510-to-core-1.47 branch July 13, 2026 23:05
@github-actions github-actions Bot locked and limited conversation to collaborators Jul 13, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

backport Backporting a PR onto a release candidate size:M This PR changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants