Skip to content

[backport core/1.48] fix(workspace): show subscribe prompt for ended subscriptions - #14511

Merged
wei-hai merged 1 commit into
core/1.48from
backport-14504-to-core-1.48
Jul 31, 2026
Merged

[backport core/1.48] fix(workspace): show subscribe prompt for ended subscriptions#14511
wei-hai merged 1 commit into
core/1.48from
backport-14504-to-core-1.48

Conversation

@wei-hai

@wei-hai wei-hai commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Summary

Backport of #14504 to core/1.48.

  • Resolves the release-branch cherry-pick conflicts while preserving the existing cancellation behavior.
  • Treats subscription_status: ended as terminal even when paid-plan metadata is stale.
  • Includes component and cloud E2E regression coverage adapted to this release branch.

Validation

  • 31 component tests passed
  • App and browser typechecks
  • Targeted formatting and lint checks
  • knip push hook

- Treat `subscription_status: ended` as terminal even when `is_active`
and paid-plan metadata lag behind.
- Show the subscribe prompt instead of a stale Standard plan.
- Keep cloud billing mocks internally consistent and add component and
end-to-end regression coverage.

The subscription panel required `ended` **and** `is_active=false`. When
the terminal status arrived first, stale active/plan data suppressed the
subscribe prompt.

```mermaid
flowchart LR
  subgraph BEFORE[Before]
    direction TB
    B1[Billing state loads] --> B2{"ended AND is_active=false?"}
    B2 -- Yes --> B3[Show subscribe prompt]
    B2 -- "No: ended + stale active" --> B4[Show stale Standard plan]
  end

  subgraph AFTER[After]
    direction TB
    A1[Billing state loads] --> A2{"subscription_status = ended?"}
    A2 -- Yes --> A3[Show subscribe prompt]
    A2 -- No --> A4{"Active paid plan?"}
    A4 -- Yes --> A5[Show current plan]
    A4 -- No --> A3
  end
```

- `SubscriptionPanelContentWorkspace.vue`: ended status now takes
precedence over stale paid-plan guards.
- `CloudWorkspaceMockHelper.ts`: `current_plan_slug` always has a
matching plan.
- Tests retain stale active/paid/team-plan state so the regression
specifically verifies ended-status precedence.

- Component tests: 42 passed
- Cloud Playwright regression: 1 passed
- App and browser typechecks
- Formatting, lint, commit hooks, and `knip`
@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Ignore keyword(s) in the title.

⛔ Ignored keywords (2)
  • [release]
  • [backport

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 4faa18aa-b272-49d2-8604-26d620454990

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@wei-hai wei-hai added the backport Backporting a PR onto a release candidate label Jul 31, 2026 — with ChatGPT Codex Connector
@github-actions

github-actions Bot commented Jul 31, 2026

Copy link
Copy Markdown

🎨 Storybook: ✅ Built — View Storybook

Details

⏰ Completed at: 07/31/2026, 10:16:42 PM UTC

Links

🎭 Playwright: ✅ 1763 passed, 0 failed

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

📦 Bundle Size

⏳ Size data collection in progress…

⚡ Performance Report

canvas-idle: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 55.6 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 · 71.7 MB heap
dom-widget-clipping: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 53.0 MB heap
large-graph-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 62.6 MB heap
large-graph-pan: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 57.7 MB heap
large-graph-zoom: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 56.2 MB heap
minimap-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 64.1 MB heap
subgraph-dom-widget-clipping: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 53.5 MB heap
subgraph-idle: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 56.2 MB heap
subgraph-mouse-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 45.0 MB heap
subgraph-transition-enter: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 123ms TBT · 94.8 MB heap
viewport-pan-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 67.4 MB heap
vue-large-graph-idle: · 55.4 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 158.8 MB heap
vue-large-graph-pan: · 55.4 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 446ms TBT · 162.6 MB heap
workflow-execution: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 48.7 MB heap

⚠️ 6 regressions detected

Show regressions
Metric Baseline PR (median) Δ Sig
canvas-idle: task duration 556ms 490ms -12% ⚠️ z=3.1
canvas-zoom-sweep: task duration 426ms 374ms -12% ⚠️ z=2.1
large-graph-idle: task duration 773ms 671ms -13% ⚠️ z=2.4
large-graph-pan: task duration 1348ms 1249ms -7% ⚠️ z=3.9
minimap-idle: task duration 755ms 671ms -11% ⚠️ z=3.0
subgraph-idle: task duration 488ms 470ms -4% ⚠️ z=3.2
All metrics
Metric Baseline PR (median) Δ Sig
canvas-idle: avg frame time 17ms 17ms -0% z=-0.9
canvas-idle: p95 frame time 17ms 17ms -0%
canvas-idle: layout duration 0ms 0ms +0%
canvas-idle: style recalc duration 9ms 8ms -18% z=-3.6
canvas-idle: layout count 0 0 +0%
canvas-idle: style recalc count 10 10 +5% z=-2.1
canvas-idle: task duration 556ms 490ms -12% ⚠️ z=3.1
canvas-idle: script duration 26ms 18ms -33% z=-3.3
canvas-idle: TBT 0ms 0ms +0%
canvas-idle: heap used 68.5 MB 55.6 MB -19%
canvas-idle: DOM nodes 19 20 +5% z=-2.0
canvas-idle: event listeners 4 5 +25% 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 3ms 4ms +7% z=-0.0
canvas-mouse-sweep: style recalc duration 42ms 37ms -13% z=-1.9
canvas-mouse-sweep: layout count 12 12 +0%
canvas-mouse-sweep: style recalc count 76 75 -2% z=-1.8
canvas-mouse-sweep: task duration 957ms 865ms -10% z=-0.0
canvas-mouse-sweep: script duration 136ms 115ms -15% z=-3.1
canvas-mouse-sweep: TBT 0ms 0ms +0%
canvas-mouse-sweep: heap used 49.9 MB 56.2 MB +13%
canvas-mouse-sweep: DOM nodes -275 -109 -61% z=-66.0
canvas-mouse-sweep: event listeners -147 -72 -51% z=-19.3
canvas-zoom-sweep: avg frame time 17ms 17ms +0% z=-0.3
canvas-zoom-sweep: p95 frame time 17ms 17ms +0%
canvas-zoom-sweep: layout duration 1ms 1ms +18% z=1.5
canvas-zoom-sweep: style recalc duration 19ms 17ms -12% z=-1.7
canvas-zoom-sweep: layout count 6 6 +0%
canvas-zoom-sweep: style recalc count 31 32 +3% z=1.6
canvas-zoom-sweep: task duration 426ms 374ms -12% ⚠️ z=2.1
canvas-zoom-sweep: script duration 25ms 18ms -25% z=-2.9
canvas-zoom-sweep: TBT 0ms 0ms +0%
canvas-zoom-sweep: heap used 71.6 MB 71.7 MB +0%
canvas-zoom-sweep: DOM nodes 77 77 +1% z=-2.8
canvas-zoom-sweep: event listeners 19 19 +0% z=-0.9
dom-widget-clipping: avg frame time 17ms 17ms +0% z=0.1
dom-widget-clipping: p95 frame time 17ms 17ms +0%
dom-widget-clipping: layout duration 0ms 0ms +0%
dom-widget-clipping: style recalc duration 9ms 8ms -17% z=-2.9
dom-widget-clipping: layout count 0 0 +0%
dom-widget-clipping: style recalc count 12 12 +0% z=-2.2
dom-widget-clipping: task duration 398ms 369ms -7% z=0.3
dom-widget-clipping: script duration 62ms 55ms -11% z=-3.9
dom-widget-clipping: TBT 0ms 0ms +0%
dom-widget-clipping: heap used 53.2 MB 53.0 MB -0%
dom-widget-clipping: DOM nodes 20 20 +0% z=-1.5
dom-widget-clipping: event listeners 1 0 -100% variance too high
large-graph-idle: avg frame time 17ms 17ms +0% z=-0.6
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 -16% z=-4.3
large-graph-idle: layout count 0 0 +0%
large-graph-idle: style recalc count 9 10 +6% z=-6.7
large-graph-idle: task duration 773ms 671ms -13% ⚠️ z=2.4
large-graph-idle: script duration 124ms 95ms -23% z=-0.7
large-graph-idle: TBT 0ms 0ms +0%
large-graph-idle: heap used 62.2 MB 62.6 MB +1%
large-graph-idle: DOM nodes -275 -273 -1% z=-329.4
large-graph-idle: event listeners -143 -143 +0% z=-27.7
large-graph-pan: avg frame time 17ms 17ms -0% z=-0.2
large-graph-pan: p95 frame time 17ms 17ms +0%
large-graph-pan: layout duration 0ms 0ms +0%
large-graph-pan: style recalc duration 13ms 14ms +6% z=-4.3
large-graph-pan: layout count 0 0 +0%
large-graph-pan: style recalc count 68 68 +0% z=-2.4
large-graph-pan: task duration 1348ms 1249ms -7% ⚠️ z=3.9
large-graph-pan: script duration 444ms 401ms -10% z=-0.4
large-graph-pan: TBT 0ms 0ms +0%
large-graph-pan: heap used 61.9 MB 57.7 MB -7%
large-graph-pan: DOM nodes -278 -278 -0% z=-179.7
large-graph-pan: event listeners -143 -143 +0% z=-178.6
large-graph-zoom: avg frame time 17ms 17ms +0%
large-graph-zoom: p95 frame time 17ms 17ms +0%
large-graph-zoom: layout duration 8ms 8ms +6%
large-graph-zoom: style recalc duration 14ms 16ms +12%
large-graph-zoom: layout count 60 60 +0%
large-graph-zoom: style recalc count 64 66 +2%
large-graph-zoom: task duration 1566ms 1510ms -4%
large-graph-zoom: script duration 547ms 536ms -2%
large-graph-zoom: TBT 0ms 0ms +0%
large-graph-zoom: heap used 60.8 MB 56.2 MB -7%
large-graph-zoom: DOM nodes -283 -281 -1%
large-graph-zoom: event listeners -148 -148 +0%
minimap-idle: avg frame time 17ms 17ms -0% z=-0.4
minimap-idle: p95 frame time 17ms 17ms -0%
minimap-idle: layout duration 0ms 0ms +0%
minimap-idle: style recalc duration 9ms 6ms -27% z=-4.0
minimap-idle: layout count 0 0 +0%
minimap-idle: style recalc count 9 8 -6% z=-2.3
minimap-idle: task duration 755ms 671ms -11% ⚠️ z=3.0
minimap-idle: script duration 121ms 97ms -20% z=-0.1
minimap-idle: TBT 0ms 0ms +0%
minimap-idle: heap used 64.3 MB 64.1 MB -0%
minimap-idle: DOM nodes -276 -277 +0% z=-216.5
minimap-idle: event listeners -144 -144 +0% z=-225.0
subgraph-dom-widget-clipping: avg frame time 17ms 17ms -0% z=0.1
subgraph-dom-widget-clipping: p95 frame time 17ms 17ms -1%
subgraph-dom-widget-clipping: layout duration 0ms 0ms +0%
subgraph-dom-widget-clipping: style recalc duration 13ms 11ms -17% z=-2.3
subgraph-dom-widget-clipping: layout count 0 0 +0%
subgraph-dom-widget-clipping: style recalc count 47 46 -2% z=-4.2
subgraph-dom-widget-clipping: task duration 419ms 408ms -3% z=1.6
subgraph-dom-widget-clipping: script duration 123ms 123ms -0% z=-0.9
subgraph-dom-widget-clipping: TBT 0ms 0ms +0%
subgraph-dom-widget-clipping: heap used 53.4 MB 53.5 MB +0%
subgraph-dom-widget-clipping: DOM nodes 19 17 -11% z=-4.6
subgraph-dom-widget-clipping: event listeners 7 7 +0% z=-1.6
subgraph-idle: avg frame time 17ms 17ms +0% z=0.9
subgraph-idle: p95 frame time 17ms 17ms +0%
subgraph-idle: layout duration 0ms 0ms +0%
subgraph-idle: style recalc duration 9ms 7ms -24% z=-4.2
subgraph-idle: layout count 0 0 +0%
subgraph-idle: style recalc count 10 10 +5% z=-1.4
subgraph-idle: task duration 488ms 470ms -4% ⚠️ z=3.2
subgraph-idle: script duration 18ms 14ms -23% z=-2.4
subgraph-idle: TBT 0ms 0ms +0%
subgraph-idle: heap used 68.3 MB 56.2 MB -18%
subgraph-idle: DOM nodes 19 -127 -766% z=-99.2
subgraph-idle: event listeners 4 -72 -1900% 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 5ms 4ms -9% z=-1.8
subgraph-mouse-sweep: style recalc duration 39ms 34ms -12% z=-2.4
subgraph-mouse-sweep: layout count 16 16 +0%
subgraph-mouse-sweep: style recalc count 76 77 +1% z=-1.9
subgraph-mouse-sweep: task duration 853ms 776ms -9% z=0.1
subgraph-mouse-sweep: script duration 97ms 87ms -10% z=-2.1
subgraph-mouse-sweep: TBT 0ms 0ms +0%
subgraph-mouse-sweep: heap used 46.3 MB 45.0 MB -3%
subgraph-mouse-sweep: DOM nodes -273 -273 -0% z=-151.9
subgraph-mouse-sweep: event listeners -148 -148 +0% variance too high
subgraph-transition-enter: avg frame time 17ms 17ms +0%
subgraph-transition-enter: p95 frame time 17ms 17ms +0%
subgraph-transition-enter: layout duration 13ms 11ms -13%
subgraph-transition-enter: style recalc duration 31ms 29ms -6%
subgraph-transition-enter: layout count 14 15 +7%
subgraph-transition-enter: style recalc count 18 19 +6%
subgraph-transition-enter: task duration 1039ms 899ms -13%
subgraph-transition-enter: script duration 39ms 30ms -22%
subgraph-transition-enter: TBT 137ms 123ms -10%
subgraph-transition-enter: heap used 92.6 MB 94.8 MB +2%
subgraph-transition-enter: DOM nodes 13673 13673 +0%
subgraph-transition-enter: event listeners 2371 2371 +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 37ms 39ms +6%
viewport-pan-sweep: layout count 0 0 +0%
viewport-pan-sweep: style recalc count 249 250 +0%
viewport-pan-sweep: task duration 4779ms 4308ms -10%
viewport-pan-sweep: script duration 1461ms 1281ms -12%
viewport-pan-sweep: TBT 0ms 0ms +0%
viewport-pan-sweep: heap used 64.2 MB 67.4 MB +5%
viewport-pan-sweep: DOM nodes -276 -275 -1%
viewport-pan-sweep: event listeners -126 -128 +2%
vue-large-graph-idle: avg frame time 18ms 18ms +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 17364ms 17350ms -0%
vue-large-graph-idle: script duration 585ms 530ms -9%
vue-large-graph-idle: TBT 0ms 0ms +0%
vue-large-graph-idle: heap used 161.5 MB 158.8 MB -2%
vue-large-graph-idle: DOM nodes -8327 -8312 -0%
vue-large-graph-idle: event listeners -16389 -16388 -0%
vue-large-graph-pan: avg frame time 18ms 18ms +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 18ms 21ms +20%
vue-large-graph-pan: layout count 0 0 +0%
vue-large-graph-pan: style recalc count 142 156 +10%
vue-large-graph-pan: task duration 20809ms 21703ms +4%
vue-large-graph-pan: script duration 887ms 891ms +0%
vue-large-graph-pan: TBT 246ms 446ms +82%
vue-large-graph-pan: heap used 164.7 MB 162.6 MB -1%
vue-large-graph-pan: DOM nodes -8329 -8312 -0%
vue-large-graph-pan: event listeners -16383 -16381 -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 -17% z=-6.9
workflow-execution: style recalc duration 19ms 19ms -2% z=-2.4
workflow-execution: layout count 3 3 +0% z=-4.5
workflow-execution: style recalc count 16 12 -23% z=-2.8
workflow-execution: task duration 117ms 114ms -2% z=-0.8
workflow-execution: script duration 11ms 9ms -15% z=-6.6
workflow-execution: TBT 0ms 0ms +0%
workflow-execution: heap used 48.6 MB 48.7 MB +0%
workflow-execution: DOM nodes 137 124 -10% z=-5.2
workflow-execution: event listeners 66 66 +0% z=3.2
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-31T22:26:53.753Z",
  "gitSha": "29e4aa6a95ed80868c62f2f3dfd491cdb2f75a48",
  "branch": "backport-14504-to-core-1.48",
  "measurements": [
    {
      "name": "canvas-idle",
      "durationMs": 2196.6879999999946,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 7.997999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 474.032,
      "heapDeltaBytes": 3433724,
      "heapUsedBytes": 71200720,
      "domNodes": 20,
      "jsHeapTotalBytes": 20578304,
      "scriptDurationMs": 18.804,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.659999999999975,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "canvas-idle",
      "durationMs": 2055.2579999999807,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 7.271,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 506.069,
      "heapDeltaBytes": -22733368,
      "heapUsedBytes": 45455536,
      "domNodes": 20,
      "jsHeapTotalBytes": 19656704,
      "scriptDurationMs": 16.901000000000003,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1789.2369999999858,
      "styleRecalcs": 73,
      "styleRecalcDurationMs": 33.238,
      "layouts": 12,
      "layoutDurationMs": 3.6249999999999996,
      "taskDurationMs": 794.648,
      "heapDeltaBytes": -1634932,
      "heapUsedBytes": 66336816,
      "domNodes": 56,
      "jsHeapTotalBytes": 21102592,
      "scriptDurationMs": 107.617,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1872.3260000000437,
      "styleRecalcs": 76,
      "styleRecalcDurationMs": 39.785000000000004,
      "layouts": 12,
      "layoutDurationMs": 3.595,
      "taskDurationMs": 934.474,
      "heapDeltaBytes": -16285944,
      "heapUsedBytes": 51481712,
      "domNodes": -273,
      "jsHeapTotalBytes": 21491712,
      "scriptDurationMs": 123.11899999999999,
      "eventListeners": -148,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1756.2839999999937,
      "styleRecalcs": 32,
      "styleRecalcDurationMs": 16.159,
      "layouts": 6,
      "layoutDurationMs": 0.727,
      "taskDurationMs": 381.096,
      "heapDeltaBytes": 7237244,
      "heapUsedBytes": 75216540,
      "domNodes": 77,
      "jsHeapTotalBytes": 20578304,
      "scriptDurationMs": 18.113999999999997,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1736.6269999999986,
      "styleRecalcs": 32,
      "styleRecalcDurationMs": 16.869,
      "layouts": 6,
      "layoutDurationMs": 0.691,
      "taskDurationMs": 367.71999999999997,
      "heapDeltaBytes": 7255940,
      "heapUsedBytes": 75149908,
      "domNodes": 77,
      "jsHeapTotalBytes": 20316160,
      "scriptDurationMs": 18.608999999999998,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 589.0919999999937,
      "styleRecalcs": 12,
      "styleRecalcDurationMs": 7.623000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 369.76,
      "heapDeltaBytes": -12254460,
      "heapUsedBytes": 55490500,
      "domNodes": 20,
      "jsHeapTotalBytes": 21626880,
      "scriptDurationMs": 55.00899999999999,
      "eventListeners": 0,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 556.6850000000159,
      "styleRecalcs": 12,
      "styleRecalcDurationMs": 7.491000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 367.779,
      "heapDeltaBytes": -12264232,
      "heapUsedBytes": 55630416,
      "domNodes": 20,
      "jsHeapTotalBytes": 20840448,
      "scriptDurationMs": 55.34,
      "eventListeners": 0,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2048.291000000006,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 8.256,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 665.034,
      "heapDeltaBytes": 6521168,
      "heapUsedBytes": 65268616,
      "domNodes": -272,
      "jsHeapTotalBytes": 4784128,
      "scriptDurationMs": 93.062,
      "eventListeners": -144,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2038.821999999982,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 7.132,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 676.296,
      "heapDeltaBytes": 7271980,
      "heapUsedBytes": 66004512,
      "domNodes": -274,
      "jsHeapTotalBytes": 5308416,
      "scriptDurationMs": 97.90199999999999,
      "eventListeners": -142,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2138.286999999991,
      "styleRecalcs": 68,
      "styleRecalcDurationMs": 13.221,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1218.157,
      "heapDeltaBytes": -3943108,
      "heapUsedBytes": 55789312,
      "domNodes": -276,
      "jsHeapTotalBytes": 5570560,
      "scriptDurationMs": 390.781,
      "eventListeners": -142,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2162.292999999977,
      "styleRecalcs": 68,
      "styleRecalcDurationMs": 14.478000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1279.798,
      "heapDeltaBytes": 4817100,
      "heapUsedBytes": 65211332,
      "domNodes": -279,
      "jsHeapTotalBytes": 4988928,
      "scriptDurationMs": 410.576,
      "eventListeners": -144,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3180.0680000000057,
      "styleRecalcs": 65,
      "styleRecalcDurationMs": 14.996999999999996,
      "layouts": 60,
      "layoutDurationMs": 8.039000000000001,
      "taskDurationMs": 1512.383,
      "heapDeltaBytes": -1637888,
      "heapUsedBytes": 59909292,
      "domNodes": -281,
      "jsHeapTotalBytes": 8192000,
      "scriptDurationMs": 548.933,
      "eventListeners": -148,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3179.9230000000307,
      "styleRecalcs": 66,
      "styleRecalcDurationMs": 16.459000000000003,
      "layouts": 60,
      "layoutDurationMs": 7.929,
      "taskDurationMs": 1507.905,
      "heapDeltaBytes": -3343096,
      "heapUsedBytes": 58018108,
      "domNodes": -280,
      "jsHeapTotalBytes": 7929856,
      "scriptDurationMs": 522.1060000000001,
      "eventListeners": -148,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "minimap-idle",
      "durationMs": 2013.9639999999872,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 6.370999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 667.967,
      "heapDeltaBytes": 6451036,
      "heapUsedBytes": 67049112,
      "domNodes": -277,
      "jsHeapTotalBytes": 4521984,
      "scriptDurationMs": 93.15400000000001,
      "eventListeners": -144,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "minimap-idle",
      "durationMs": 2037.8509999999324,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 6.169999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 675.006,
      "heapDeltaBytes": 7126076,
      "heapUsedBytes": 67477288,
      "domNodes": -277,
      "jsHeapTotalBytes": 3997696,
      "scriptDurationMs": 100.72499999999998,
      "eventListeners": -144,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 608.854000000008,
      "styleRecalcs": 46,
      "styleRecalcDurationMs": 11.871999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 417.388,
      "heapDeltaBytes": -11841016,
      "heapUsedBytes": 56193516,
      "domNodes": 18,
      "jsHeapTotalBytes": 21889024,
      "scriptDurationMs": 124.81500000000001,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 600.5269999999427,
      "styleRecalcs": 45,
      "styleRecalcDurationMs": 9.142000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 399.30100000000004,
      "heapDeltaBytes": -12169128,
      "heapUsedBytes": 55931452,
      "domNodes": 16,
      "jsHeapTotalBytes": 22151168,
      "scriptDurationMs": 120.48199999999999,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-idle",
      "durationMs": 1993.9190000000053,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 6.971000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 438.5849999999999,
      "heapDeltaBytes": 3458488,
      "heapUsedBytes": 71448712,
      "domNodes": 20,
      "jsHeapTotalBytes": 20840448,
      "scriptDurationMs": 13.109999999999998,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2011.2440000000333,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 7.330999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 501.582,
      "heapDeltaBytes": -21607060,
      "heapUsedBytes": 46315596,
      "domNodes": -273,
      "jsHeapTotalBytes": 20180992,
      "scriptDurationMs": 14.342,
      "eventListeners": -148,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1739.768999999967,
      "styleRecalcs": 78,
      "styleRecalcDurationMs": 34.24099999999999,
      "layouts": 16,
      "layoutDurationMs": 3.9140000000000006,
      "taskDurationMs": 766.35,
      "heapDeltaBytes": -20972032,
      "heapUsedBytes": 47003844,
      "domNodes": -272,
      "jsHeapTotalBytes": 20443136,
      "scriptDurationMs": 84.09800000000001,
      "eventListeners": -148,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1708.8619999999537,
      "styleRecalcs": 75,
      "styleRecalcDurationMs": 34.653000000000006,
      "layouts": 16,
      "layoutDurationMs": 4.314,
      "taskDurationMs": 785.457,
      "heapDeltaBytes": -20608328,
      "heapUsedBytes": 47311632,
      "domNodes": -273,
      "jsHeapTotalBytes": 20967424,
      "scriptDurationMs": 90.115,
      "eventListeners": -148,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-transition-enter",
      "durationMs": 1384.7489999999993,
      "styleRecalcs": 19,
      "styleRecalcDurationMs": 29.026999999999997,
      "layouts": 15,
      "layoutDurationMs": 11.099999999999998,
      "taskDurationMs": 899.2419999999998,
      "heapDeltaBytes": 29240144,
      "heapUsedBytes": 99414568,
      "domNodes": 13673,
      "jsHeapTotalBytes": 16252928,
      "scriptDurationMs": 30.149999999999995,
      "eventListeners": 2371,
      "totalBlockingTimeMs": 123,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8204.903000000002,
      "styleRecalcs": 251,
      "styleRecalcDurationMs": 38.224,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 4265.269,
      "heapDeltaBytes": 11433344,
      "heapUsedBytes": 72166048,
      "domNodes": -273,
      "jsHeapTotalBytes": 6823936,
      "scriptDurationMs": 1255.5559999999998,
      "eventListeners": -128,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333338,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8237.717999999972,
      "styleRecalcs": 249,
      "styleRecalcDurationMs": 40.33,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 4350.423,
      "heapDeltaBytes": 9890308,
      "heapUsedBytes": 69132092,
      "domNodes": -276,
      "jsHeapTotalBytes": 6561792,
      "scriptDurationMs": 1307.086,
      "eventListeners": -128,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 17252.12300000004,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 17223.240999999998,
      "heapDeltaBytes": -59257204,
      "heapUsedBytes": 165866320,
      "domNodes": -8312,
      "jsHeapTotalBytes": -16715776,
      "scriptDurationMs": 534.772,
      "eventListeners": -16389,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.776666666666763,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 17492.400999999973,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 17476.669,
      "heapDeltaBytes": -57665000,
      "heapUsedBytes": 167186204,
      "domNodes": -8312,
      "jsHeapTotalBytes": -13307904,
      "scriptDurationMs": 525.423,
      "eventListeners": -16387,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 18.33666666666662,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 21930.42600000001,
      "styleRecalcs": 160,
      "styleRecalcDurationMs": 21.763999999999978,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 21903.073,
      "heapDeltaBytes": -46515932,
      "heapUsedBytes": 166233256,
      "domNodes": -8312,
      "jsHeapTotalBytes": -15929344,
      "scriptDurationMs": 903.493,
      "eventListeners": -16381,
      "totalBlockingTimeMs": 409,
      "frameDurationMs": 18.33666666666662,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 21535.708,
      "styleRecalcs": 152,
      "styleRecalcDurationMs": 20.909999999999982,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 21502.384,
      "heapDeltaBytes": -58567856,
      "heapUsedBytes": 174683056,
      "domNodes": -8312,
      "jsHeapTotalBytes": -14704640,
      "scriptDurationMs": 878.1709999999999,
      "eventListeners": -16381,
      "totalBlockingTimeMs": 483,
      "frameDurationMs": 17.776666666666642,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "workflow-execution",
      "durationMs": 487.07600000000184,
      "styleRecalcs": 13,
      "styleRecalcDurationMs": 18.824,
      "layouts": 2,
      "layoutDurationMs": 0.433,
      "taskDurationMs": 118.069,
      "heapDeltaBytes": -15935888,
      "heapUsedBytes": 51083556,
      "domNodes": 130,
      "jsHeapTotalBytes": 7995392,
      "scriptDurationMs": 9.617,
      "eventListeners": 67,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "workflow-execution",
      "durationMs": 477.4639999999408,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 18.987000000000002,
      "layouts": 3,
      "layoutDurationMs": 0.6580000000000001,
      "taskDurationMs": 110.785,
      "heapDeltaBytes": -16057664,
      "heapUsedBytes": 51025816,
      "domNodes": 117,
      "jsHeapTotalBytes": 7208960,
      "scriptDurationMs": 9.190999999999999,
      "eventListeners": 65,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    }
  ]
}

@wei-hai
wei-hai marked this pull request as ready for review July 31, 2026 22:19
@dosubot dosubot Bot added the size:M This PR changes 30-99 lines, ignoring generated files. label Jul 31, 2026
@dosubot

dosubot Bot commented Jul 31, 2026

Copy link
Copy Markdown

📄 Knowledge review

Dosu skipped reviewing this PR because your organization has used its 200 included credits for the month. Your usage will reset on 2026-08-01. To have Dosu review this PR before then, ask your organization admin to upgrade to a pro account.


Leave Feedback Ask Dosu about ComfyUI_frontend Add Dosu to your team

@github-actions
github-actions Bot requested a review from christian-byrne July 31, 2026 22:20
@wei-hai
wei-hai enabled auto-merge (squash) July 31, 2026 22:20
@codecov

codecov Bot commented Jul 31, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

@@            Coverage Diff             @@
##           core/1.48   #14511   +/-   ##
==========================================
  Coverage      79.32%   79.32%           
==========================================
  Files           1746     1746           
  Lines          99331    99332    +1     
  Branches       32588    32589    +1     
==========================================
+ Hits           78794    78795    +1     
  Misses         20135    20135           
  Partials         402      402           
Flag Coverage Δ
unit 69.13% <100.00%> (+<0.01%) ⬆️

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

Files with missing lines Coverage Δ
...e/components/SubscriptionPanelContentWorkspace.vue 97.54% <100.00%> (+0.01%) ⬆️
🚀 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.

@wei-hai
wei-hai merged commit 8890bc0 into core/1.48 Jul 31, 2026
77 of 78 checks passed
@wei-hai
wei-hai deleted the backport-14504-to-core-1.48 branch July 31, 2026 22:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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