Skip to content

[backport core/1.51] fix(workspace): hide subscription CTA on Local - #15716

Open
comfy-pr-bot wants to merge 1 commit into
core/1.51from
backport-15601-to-core-1.51
Open

[backport core/1.51] fix(workspace): hide subscription CTA on Local#15716
comfy-pr-bot wants to merge 1 commit into
core/1.51from
backport-15601-to-core-1.51

Conversation

@comfy-pr-bot

Copy link
Copy Markdown
Member

Backport of #15601 to core/1.51

Automatically created by backport workflow.

## Why

QA findings 3 and 6 expose the same invalid Local-only state:

- **Finding 3:** a Local personal workspace without a subscription shows
`Subscribe`.
- **Finding 6:** switching to another Local workspace recomputes billing
state and shows the same `Subscribe` action.

Local workspace switching from
[FE-1584](https://linear.app/comfyorg/issue/FE-1584/add-workspace-switcher-to-localdesktop-credits-only-no-settings)
is limited to authentication and credits. Local does not support Cloud
subscription management, so neither workspace state should offer a
subscription CTA.

### Root cause

`CurrentUserPopoverWorkspace` derived `showSubscribeAction` only from
subscription access, delinquency, lifecycle, and permission state. It
did not include the app distribution. In Local, an unsubscribed
workspace can validly have no subscription access while retaining
workspace-management permissions; that combination incorrectly satisfied
the Cloud `Subscribe` condition. A workspace switch recalculated the
same condition, which is why findings 3 and 6 had the same visible
outcome.

## How

- Gate `showSubscribeAction` on the existing deterministic `isCloud`
distribution value.
- Preserve the existing Subscribe/Resubscribe behavior for Cloud
distributions.
- Add unit coverage for a Local workspace changing from personal to an
unsubscribed team workspace.
- Extend the Local workspace-switch browser test to assert the CTA is
absent both before and after the switch.

## AS IS

![AS IS — Local Team Workspace showing
Subscribe](https://ampcode.com/user-content/artifacts/7f7fc9ae0f228d09f6f76ed80a58c83230fbcffaf898c1e6818e712532cb0930-file.png)

Local after switching to Team Workspace incorrectly shows `Subscribe`.

## TO BE

![TO BE — Local Team Workspace without subscription
CTA](https://ampcode.com/user-content/artifacts/5fcba122839eeaa2fd387c289b55198257a232778f0d6f89c68fdc0451e6d386-file.png)

Local after switching to Team Workspace keeps subscription actions
hidden.

## Testing

- `pnpm test:unit
src/platform/workspace/components/CurrentUserPopoverWorkspace.test.ts`
- `pnpm test:browser:local
browser_tests/tests/workspace/localWorkspaceSwitcher.spec.ts
--project=chromium`
- `pnpm typecheck`
- `pnpm typecheck:browser`
- `pnpm knip`
- lint-staged: oxfmt, stylelint, oxlint, ESLint

## References

- [QA
findings](https://app.notion.com/p/3c36d73d365080b4a1b7ea008d323c69)
-
[FE-1584](https://linear.app/comfyorg/issue/FE-1584/add-workspace-switcher-to-localdesktop-credits-only-no-settings)

---------

Co-authored-by: Amp <amp@ampcode.com>
@comfy-pr-bot comfy-pr-bot added the backport Backporting a PR onto a release candidate label Aug 23, 2026
@comfy-pr-bot
comfy-pr-bot enabled auto-merge (squash) August 23, 2026 08:10
@dosubot dosubot Bot added the size:XS This PR changes 0-9 lines, ignoring generated files. label Aug 23, 2026
@github-actions

github-actions Bot commented Aug 23, 2026

Copy link
Copy Markdown

🎨 Storybook: ✅ Built — View Storybook

Details

⏰ Completed at: 08/23/2026, 08:12:34 AM UTC

Links

🎭 Playwright: ✅ 1825 passed, 0 failed · 2 flaky

📊 Browser Reports
  • chromium: View Report (✅ 1804 / ❌ 0 / ⚠️ 2 / ⏭️ 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 · 67.4 MB heap
canvas-mouse-sweep: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 53.6 MB heap
canvas-zoom-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 70.4 MB heap
dom-widget-clipping: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 51.5 MB heap
large-graph-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 70.5 MB heap
large-graph-pan: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 65.9 MB heap
large-graph-zoom: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 75.6 MB heap
minimap-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 69.3 MB heap
subgraph-dom-widget-clipping: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 52.4 MB heap
subgraph-idle: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 67.8 MB heap
subgraph-mouse-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 59.0 MB heap
subgraph-transition-enter: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 118ms TBT · 75.7 MB heap
viewport-pan-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 64.1 MB heap
vue-large-graph-idle: · 58.1 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 161.6 MB heap
vue-large-graph-pan: · 59.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 29ms TBT · 162.3 MB heap
workflow-execution: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 66.3 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 8ms 6ms -27% z=-5.5
canvas-idle: layout count 0 0 +0%
canvas-idle: style recalc count 9 10 +11% z=-2.1
canvas-idle: task duration 493ms 409ms -17% z=0.5
canvas-idle: script duration 8ms 6ms -21% z=-8.6
canvas-idle: TBT 0ms 0ms +0%
canvas-idle: heap used 67.3 MB 67.4 MB +0%
canvas-idle: DOM nodes 18 20 +11% z=-2.0
canvas-idle: event listeners 4 6 +50% z=-1.2
canvas-mouse-sweep: avg frame time 17ms 17ms +0% z=-0.9
canvas-mouse-sweep: p95 frame time 17ms 17ms +0%
canvas-mouse-sweep: layout duration 4ms 3ms -22% z=-4.2
canvas-mouse-sweep: style recalc duration 39ms 27ms -31% z=-4.9
canvas-mouse-sweep: layout count 12 12 +0%
canvas-mouse-sweep: style recalc count 76 73 -4% z=-2.4
canvas-mouse-sweep: task duration 930ms 672ms -28% z=-3.3
canvas-mouse-sweep: script duration 118ms 74ms -37% z=-9.5
canvas-mouse-sweep: TBT 0ms 0ms +0%
canvas-mouse-sweep: heap used 45.5 MB 53.6 MB +18%
canvas-mouse-sweep: DOM nodes -111 -112 +0% z=-67.2
canvas-mouse-sweep: event listeners -74 -73 -1% z=-19.4
canvas-zoom-sweep: avg frame time 17ms 17ms +0% z=0.5
canvas-zoom-sweep: p95 frame time 17ms 17ms +0%
canvas-zoom-sweep: layout duration 1ms 1ms -3% z=-2.7
canvas-zoom-sweep: style recalc duration 17ms 12ms -28% z=-4.5
canvas-zoom-sweep: layout count 6 6 +0%
canvas-zoom-sweep: style recalc count 32 31 -5% z=-1.7
canvas-zoom-sweep: task duration 371ms 306ms -18% z=-0.9
canvas-zoom-sweep: script duration 10ms 8ms -14% z=-6.3
canvas-zoom-sweep: TBT 0ms 0ms +0%
canvas-zoom-sweep: heap used 69.7 MB 70.4 MB +1%
canvas-zoom-sweep: DOM nodes 78 78 +0% z=-1.6
canvas-zoom-sweep: event listeners 19 19 +0% z=-0.9
dom-widget-clipping: avg frame time 17ms 17ms -0% z=-0.6
dom-widget-clipping: p95 frame time 17ms 17ms -0%
dom-widget-clipping: layout duration 0ms 0ms +0%
dom-widget-clipping: style recalc duration 8ms 5ms -30% z=-5.9
dom-widget-clipping: layout count 0 0 +0%
dom-widget-clipping: style recalc count 11 12 +14% z=-2.2
dom-widget-clipping: task duration 388ms 281ms -28% z=-5.1
dom-widget-clipping: script duration 58ms 37ms -36% z=-9.4
dom-widget-clipping: TBT 0ms 0ms +0%
dom-widget-clipping: heap used 51.4 MB 51.5 MB +0%
dom-widget-clipping: DOM nodes 17 20 +18% z=-1.5
dom-widget-clipping: event listeners 1 2 +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 8ms 6ms -28% z=-6.3
large-graph-idle: layout count 0 0 +0%
large-graph-idle: style recalc count 8 10 +25% z=-5.1
large-graph-idle: task duration 643ms 503ms -22% z=-0.7
large-graph-idle: script duration 17ms 11ms -33% z=-8.7
large-graph-idle: TBT 0ms 0ms +0%
large-graph-idle: heap used 67.9 MB 70.5 MB +4%
large-graph-idle: DOM nodes -283 -281 -1% z=-337.7
large-graph-idle: event listeners -164 -149 -9% z=-28.7
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 15ms 9ms -38% z=-9.8
large-graph-pan: layout count 0 0 +0%
large-graph-pan: style recalc count 69 68 -1% z=-2.4
large-graph-pan: task duration 1266ms 909ms -28% z=-4.0
large-graph-pan: script duration 352ms 231ms -34% z=-8.9
large-graph-pan: TBT 0ms 0ms +0%
large-graph-pan: heap used 66.7 MB 65.9 MB -1%
large-graph-pan: DOM nodes -284 -284 +0% z=-183.7
large-graph-pan: event listeners -148 -147 -1% z=-183.5
large-graph-zoom: avg frame time 17ms 17ms +0%
large-graph-zoom: p95 frame time 17ms 17ms +0%
large-graph-zoom: layout duration 8ms 6ms -20%
large-graph-zoom: style recalc duration 15ms 11ms -27%
large-graph-zoom: layout count 60 60 +0%
large-graph-zoom: style recalc count 65 66 +2%
large-graph-zoom: task duration 1439ms 1016ms -29%
large-graph-zoom: script duration 398ms 270ms -32%
large-graph-zoom: TBT 0ms 0ms +0%
large-graph-zoom: heap used 57.6 MB 75.6 MB +31%
large-graph-zoom: DOM nodes -289 13 -105%
large-graph-zoom: event listeners -183 7 -104%
minimap-idle: avg frame time 17ms 17ms +0% z=0.7
minimap-idle: p95 frame time 17ms 17ms +0%
minimap-idle: layout duration 0ms 0ms +0%
minimap-idle: style recalc duration 7ms 5ms -25% z=-5.4
minimap-idle: layout count 0 0 +0%
minimap-idle: style recalc count 7 9 +21% z=-1.6
minimap-idle: task duration 642ms 505ms -21% z=-0.5
minimap-idle: script duration 17ms 11ms -32% z=-8.8
minimap-idle: TBT 0ms 0ms +0%
minimap-idle: heap used 63.2 MB 69.3 MB +10%
minimap-idle: DOM nodes -284 -283 -1% z=-220.5
minimap-idle: event listeners -179 -163 -9% z=-253.8
subgraph-dom-widget-clipping: avg frame time 17ms 17ms +0% z=0.1
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 7ms -37% z=-5.9
subgraph-dom-widget-clipping: layout count 0 0 +0%
subgraph-dom-widget-clipping: style recalc count 47 47 -1% z=-2.5
subgraph-dom-widget-clipping: task duration 408ms 305ms -25% z=-4.0
subgraph-dom-widget-clipping: script duration 118ms 83ms -29% z=-7.1
subgraph-dom-widget-clipping: TBT 0ms 0ms +0%
subgraph-dom-widget-clipping: heap used 53.1 MB 52.4 MB -1%
subgraph-dom-widget-clipping: DOM nodes 20 19 -5% z=-2.8
subgraph-dom-widget-clipping: event listeners 6 8 +33% z=-1.4
subgraph-idle: avg frame time 17ms 17ms +0% z=-0.2
subgraph-idle: p95 frame time 17ms 17ms -1%
subgraph-idle: layout duration 0ms 0ms +0%
subgraph-idle: style recalc duration 9ms 6ms -32% z=-5.2
subgraph-idle: layout count 0 0 +0%
subgraph-idle: style recalc count 10 11 +11% z=-0.6
subgraph-idle: task duration 476ms 377ms -21% z=0.2
subgraph-idle: script duration 8ms 6ms -26% z=-5.4
subgraph-idle: TBT 0ms 0ms +0%
subgraph-idle: heap used 67.7 MB 67.8 MB +0%
subgraph-idle: DOM nodes 19 21 +11% z=-0.5
subgraph-idle: event listeners 4 6 +50% variance too high
subgraph-mouse-sweep: avg frame time 17ms 17ms +0% z=0.8
subgraph-mouse-sweep: p95 frame time 17ms 17ms -0%
subgraph-mouse-sweep: layout duration 4ms 4ms -16% z=-3.6
subgraph-mouse-sweep: style recalc duration 38ms 28ms -25% z=-4.3
subgraph-mouse-sweep: layout count 16 16 +0%
subgraph-mouse-sweep: style recalc count 77 76 -1% z=-2.1
subgraph-mouse-sweep: task duration 782ms 599ms -23% z=-2.4
subgraph-mouse-sweep: script duration 88ms 59ms -34% z=-6.5
subgraph-mouse-sweep: TBT 0ms 0ms +0%
subgraph-mouse-sweep: heap used 59.0 MB 59.0 MB +0%
subgraph-mouse-sweep: DOM nodes 63 62 -1% z=-2.2
subgraph-mouse-sweep: event listeners 4 4 +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 8ms -35%
subgraph-transition-enter: style recalc duration 32ms 25ms -23%
subgraph-transition-enter: layout count 15 14 -7%
subgraph-transition-enter: style recalc count 20 19 -5%
subgraph-transition-enter: task duration 994ms 740ms -26%
subgraph-transition-enter: script duration 19ms 12ms -34%
subgraph-transition-enter: TBT 139ms 118ms -15%
subgraph-transition-enter: heap used 72.5 MB 75.7 MB +4%
subgraph-transition-enter: DOM nodes 13673 13673 +0%
subgraph-transition-enter: event listeners 2375 2373 -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 25ms -32%
viewport-pan-sweep: layout count 0 0 +0%
viewport-pan-sweep: style recalc count 249 249 +0%
viewport-pan-sweep: task duration 4245ms 3141ms -26%
viewport-pan-sweep: script duration 1036ms 708ms -32%
viewport-pan-sweep: TBT 0ms 0ms +0%
viewport-pan-sweep: heap used 66.9 MB 64.1 MB -4%
viewport-pan-sweep: DOM nodes -283 -281 -1%
viewport-pan-sweep: event listeners -149 -148 -1%
vue-large-graph-idle: avg frame time 18ms 17ms -3%
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 16934ms 11462ms -32%
vue-large-graph-idle: script duration 126ms 83ms -35%
vue-large-graph-idle: TBT 0ms 0ms +0%
vue-large-graph-idle: heap used 163.2 MB 161.6 MB -1%
vue-large-graph-idle: DOM nodes -8312 -8312 +0%
vue-large-graph-idle: event listeners -16386 -16392 +0%
vue-large-graph-pan: avg frame time 18ms 17ms -5%
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 13ms -28%
vue-large-graph-pan: layout count 0 0 +0%
vue-large-graph-pan: style recalc count 176 77 -56%
vue-large-graph-pan: task duration 20513ms 14467ms -29%
vue-large-graph-pan: script duration 408ms 351ms -14%
vue-large-graph-pan: TBT 43ms 29ms -34%
vue-large-graph-pan: heap used 170.1 MB 162.3 MB -5%
vue-large-graph-pan: DOM nodes -8312 -8312 +0%
vue-large-graph-pan: event listeners -16384 -16386 +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 -36% z=-6.3
workflow-execution: style recalc duration 23ms 14ms -40% z=-4.8
workflow-execution: layout count 3 3 -17% z=-4.5
workflow-execution: style recalc count 16 14 -13% z=-1.9
workflow-execution: task duration 116ms 81ms -30% z=-3.8
workflow-execution: script duration 8ms 6ms -24% z=-7.9
workflow-execution: TBT 0ms 0ms +0%
workflow-execution: heap used 66.3 MB 66.3 MB +0%
workflow-execution: DOM nodes 136 126 -7% z=-5.0
workflow-execution: event listeners 98 98 +0% z=10.6
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-08-23T08:21:28.266Z",
  "gitSha": "87aacbd58eb3557bab9f1de16b2e4bb66c9f9c95",
  "branch": "backport-15601-to-core-1.51",
  "measurements": [
    {
      "name": "canvas-idle",
      "durationMs": 2016.3790000001427,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 5.974,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 440.905,
      "heapDeltaBytes": 5053040,
      "heapUsedBytes": 70560400,
      "domNodes": 20,
      "jsHeapTotalBytes": 24379392,
      "scriptDurationMs": 6.414999999999999,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-idle",
      "durationMs": 2000.8680000000822,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 5.946999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 376.468,
      "heapDeltaBytes": 5395692,
      "heapUsedBytes": 70862996,
      "domNodes": 20,
      "jsHeapTotalBytes": 24117248,
      "scriptDurationMs": 5.773999999999998,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1770.808999999872,
      "styleRecalcs": 73,
      "styleRecalcDurationMs": 29.192999999999998,
      "layouts": 12,
      "layoutDurationMs": 3.101,
      "taskDurationMs": 686.0820000000001,
      "heapDeltaBytes": -130072,
      "heapUsedBytes": 65252192,
      "domNodes": 55,
      "jsHeapTotalBytes": 25432064,
      "scriptDurationMs": 78.792,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1702.8620000000956,
      "styleRecalcs": 73,
      "styleRecalcDurationMs": 24.936000000000003,
      "layouts": 12,
      "layoutDurationMs": 2.465,
      "taskDurationMs": 657.165,
      "heapDeltaBytes": -18237104,
      "heapUsedBytes": 47218556,
      "domNodes": -278,
      "jsHeapTotalBytes": 23433216,
      "scriptDurationMs": 69.82900000000001,
      "eventListeners": -151,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1665.2259999998478,
      "styleRecalcs": 29,
      "styleRecalcDurationMs": 12.118,
      "layouts": 6,
      "layoutDurationMs": 0.539,
      "taskDurationMs": 300.431,
      "heapDeltaBytes": 8200836,
      "heapUsedBytes": 73725608,
      "domNodes": 77,
      "jsHeapTotalBytes": 23592960,
      "scriptDurationMs": 7.892000000000001,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1670.7839999999123,
      "styleRecalcs": 32,
      "styleRecalcDurationMs": 12.432,
      "layouts": 6,
      "layoutDurationMs": 0.5049999999999999,
      "taskDurationMs": 310.771,
      "heapDeltaBytes": 8222248,
      "heapUsedBytes": 73859360,
      "domNodes": 79,
      "jsHeapTotalBytes": 24117248,
      "scriptDurationMs": 8.509999999999998,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 522.2049999999854,
      "styleRecalcs": 13,
      "styleRecalcDurationMs": 5.8180000000000005,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 295.122,
      "heapDeltaBytes": -11533612,
      "heapUsedBytes": 53907652,
      "domNodes": 22,
      "jsHeapTotalBytes": 25690112,
      "scriptDurationMs": 39.04600000000001,
      "eventListeners": 2,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 426.6539999998713,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 4.6339999999999995,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 266.207,
      "heapDeltaBytes": -11437028,
      "heapUsedBytes": 54041188,
      "domNodes": 18,
      "jsHeapTotalBytes": 24641536,
      "scriptDurationMs": 35.41,
      "eventListeners": 2,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.663333333333338,
      "p95FrameDurationMs": 16.700000000000273
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2013.3280000000013,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 5.138999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 502.16499999999996,
      "heapDeltaBytes": 13039620,
      "heapUsedBytes": 73190324,
      "domNodes": -281,
      "jsHeapTotalBytes": 3768320,
      "scriptDurationMs": 11.794999999999996,
      "eventListeners": -149,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2007.7329999999165,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 6.083999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 504.7539999999999,
      "heapDeltaBytes": 12620800,
      "heapUsedBytes": 74688780,
      "domNodes": -280,
      "jsHeapTotalBytes": 4292608,
      "scriptDurationMs": 10.793999999999999,
      "eventListeners": -149,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2084.5220000001063,
      "styleRecalcs": 68,
      "styleRecalcDurationMs": 8.597000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 890.3570000000001,
      "heapDeltaBytes": 5915616,
      "heapUsedBytes": 67284504,
      "domNodes": -284,
      "jsHeapTotalBytes": 5271552,
      "scriptDurationMs": 226.462,
      "eventListeners": -147,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2138.5580000001028,
      "styleRecalcs": 68,
      "styleRecalcDurationMs": 10.289,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 928.296,
      "heapDeltaBytes": 9764952,
      "heapUsedBytes": 70857532,
      "domNodes": -284,
      "jsHeapTotalBytes": 3960832,
      "scriptDurationMs": 235.74399999999997,
      "eventListeners": -147,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000012,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3068.905000000086,
      "styleRecalcs": 65,
      "styleRecalcDurationMs": 10.637,
      "layouts": 60,
      "layoutDurationMs": 6.22,
      "taskDurationMs": 1014.943,
      "heapDeltaBytes": 16496632,
      "heapUsedBytes": 79253904,
      "domNodes": 12,
      "jsHeapTotalBytes": 4718592,
      "scriptDurationMs": 266.567,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3078.9199999999255,
      "styleRecalcs": 66,
      "styleRecalcDurationMs": 11.372000000000002,
      "layouts": 60,
      "layoutDurationMs": 6.130000000000001,
      "taskDurationMs": 1016.127,
      "heapDeltaBytes": 16545048,
      "heapUsedBytes": 79273500,
      "domNodes": 14,
      "jsHeapTotalBytes": 5767168,
      "scriptDurationMs": 273.181,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "minimap-idle",
      "durationMs": 2000.985000000128,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 4.9239999999999995,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 504.86300000000006,
      "heapDeltaBytes": 9743400,
      "heapUsedBytes": 71239548,
      "domNodes": -282,
      "jsHeapTotalBytes": 2981888,
      "scriptDurationMs": 12.053999999999998,
      "eventListeners": -177,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000012,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "minimap-idle",
      "durationMs": 2038.75499999981,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 5.293999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 505.252,
      "heapDeltaBytes": 13459304,
      "heapUsedBytes": 74031948,
      "domNodes": -283,
      "jsHeapTotalBytes": 2195456,
      "scriptDurationMs": 10.607999999999995,
      "eventListeners": -149,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 520.5290000001241,
      "styleRecalcs": 46,
      "styleRecalcDurationMs": 6.644000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 299.38300000000004,
      "heapDeltaBytes": -10050544,
      "heapUsedBytes": 55534012,
      "domNodes": 18,
      "jsHeapTotalBytes": 24641536,
      "scriptDurationMs": 81.349,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 501.26000000000204,
      "styleRecalcs": 47,
      "styleRecalcDurationMs": 7.738,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 311.16700000000003,
      "heapDeltaBytes": -11125904,
      "heapUsedBytes": 54365940,
      "domNodes": 20,
      "jsHeapTotalBytes": 25952256,
      "scriptDurationMs": 85.581,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000273
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2005.0289999999222,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 6.194,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 379.38000000000005,
      "heapDeltaBytes": 5594820,
      "heapUsedBytes": 71088704,
      "domNodes": 22,
      "jsHeapTotalBytes": 23855104,
      "scriptDurationMs": 5.9,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2006.2480000001415,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 6.538999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 375.36,
      "heapDeltaBytes": 5546560,
      "heapUsedBytes": 71104740,
      "domNodes": 20,
      "jsHeapTotalBytes": 24117248,
      "scriptDurationMs": 5.543000000000001,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1712.474999999813,
      "styleRecalcs": 77,
      "styleRecalcDurationMs": 29.487,
      "layouts": 16,
      "layoutDurationMs": 3.7520000000000002,
      "taskDurationMs": 625.9399999999999,
      "heapDeltaBytes": -3608668,
      "heapUsedBytes": 61915440,
      "domNodes": 63,
      "jsHeapTotalBytes": 24379392,
      "scriptDurationMs": 59.356,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1678.7390000001778,
      "styleRecalcs": 75,
      "styleRecalcDurationMs": 27.033,
      "layouts": 16,
      "layoutDurationMs": 3.337,
      "taskDurationMs": 571.768,
      "heapDeltaBytes": -3787104,
      "heapUsedBytes": 61798264,
      "domNodes": 61,
      "jsHeapTotalBytes": 24117248,
      "scriptDurationMs": 57.74799999999999,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-transition-enter",
      "durationMs": 932.213000000047,
      "styleRecalcs": 19,
      "styleRecalcDurationMs": 24.53799999999999,
      "layouts": 14,
      "layoutDurationMs": 8.494,
      "taskDurationMs": 739.771,
      "heapDeltaBytes": -6052176,
      "heapUsedBytes": 79338980,
      "domNodes": 13673,
      "jsHeapTotalBytes": 9437184,
      "scriptDurationMs": 12.443000000000003,
      "eventListeners": 2373,
      "totalBlockingTimeMs": 118,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8112.544000000071,
      "styleRecalcs": 249,
      "styleRecalcDurationMs": 24.096,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 3106.3460000000005,
      "heapDeltaBytes": 384860,
      "heapUsedBytes": 60596184,
      "domNodes": -281,
      "jsHeapTotalBytes": 4485120,
      "scriptDurationMs": 700.277,
      "eventListeners": -163,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8120.644999999968,
      "styleRecalcs": 249,
      "styleRecalcDurationMs": 25.95,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 3176.355,
      "heapDeltaBytes": 13302272,
      "heapUsedBytes": 73931828,
      "domNodes": -281,
      "jsHeapTotalBytes": 4222976,
      "scriptDurationMs": 714.788,
      "eventListeners": -133,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 12495.00399999988,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 11458.041,
      "heapDeltaBytes": -25773852,
      "heapUsedBytes": 172655980,
      "domNodes": -8312,
      "jsHeapTotalBytes": -6754304,
      "scriptDurationMs": 82.08699999999999,
      "eventListeners": -16391,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.220000000000073,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 12515.419000000065,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 11465.859,
      "heapDeltaBytes": -31045084,
      "heapUsedBytes": 166160116,
      "domNodes": -8312,
      "jsHeapTotalBytes": -12525568,
      "scriptDurationMs": 83.13400000000001,
      "eventListeners": -16393,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.22666666666664,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 15064.343000000008,
      "styleRecalcs": 72,
      "styleRecalcDurationMs": 12.822,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 14329.239999999998,
      "heapDeltaBytes": -41563172,
      "heapUsedBytes": 170676052,
      "domNodes": -8312,
      "jsHeapTotalBytes": -13901824,
      "scriptDurationMs": 343.05800000000005,
      "eventListeners": -16385,
      "totalBlockingTimeMs": 54,
      "frameDurationMs": 17.219999999999953,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 15321.736999999985,
      "styleRecalcs": 82,
      "styleRecalcDurationMs": 13.632000000000005,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 14605.640000000001,
      "heapDeltaBytes": -27719388,
      "heapUsedBytes": 169633448,
      "domNodes": -8312,
      "jsHeapTotalBytes": -14692352,
      "scriptDurationMs": 358.817,
      "eventListeners": -16387,
      "totalBlockingTimeMs": 3,
      "frameDurationMs": 16.66333333333326,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "workflow-execution",
      "durationMs": 426.8819999999778,
      "styleRecalcs": 15,
      "styleRecalcDurationMs": 16.25,
      "layouts": 3,
      "layoutDurationMs": 0.961,
      "taskDurationMs": 84.00599999999999,
      "heapDeltaBytes": 4966724,
      "heapUsedBytes": 69489308,
      "domNodes": 128,
      "jsHeapTotalBytes": 4980736,
      "scriptDurationMs": 5.91,
      "eventListeners": 97,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666682,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "workflow-execution",
      "durationMs": 435.8669999999165,
      "styleRecalcs": 13,
      "styleRecalcDurationMs": 11.21,
      "layouts": 2,
      "layoutDurationMs": 0.3180000000000001,
      "taskDurationMs": 78.70400000000001,
      "heapDeltaBytes": 4930028,
      "heapUsedBytes": 69527284,
      "domNodes": 123,
      "jsHeapTotalBytes": 4718592,
      "scriptDurationMs": 5.516,
      "eventListeners": 99,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.663333333333338,
      "p95FrameDurationMs": 16.700000000000273
    }
  ]
}

@github-actions github-actions Bot added the risk:R2 PR risk grade (advisory shadow check; grader-owned) label Aug 23, 2026
@github-actions
github-actions Bot requested a review from AustinMroz August 23, 2026 08:11
@codecov

codecov Bot commented Aug 23, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

@@            Coverage Diff             @@
##           core/1.51   #15716   +/-   ##
==========================================
  Coverage      81.65%   81.65%           
==========================================
  Files           1884     1884           
  Lines         107107   107108    +1     
  Branches       33108    33109    +1     
==========================================
+ Hits           87456    87457    +1     
+ Misses         19318    19309    -9     
- Partials         333      342    +9     
Flag Coverage Δ
unit 73.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 Δ
...rkspace/components/CurrentUserPopoverWorkspace.vue 83.45% <100.00%> (+0.11%) ⬆️

... and 7 files 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.

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 risk:R2 PR risk grade (advisory shadow check; grader-owned) size:XS This PR changes 0-9 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants