Skip to content

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

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

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

Conversation

@comfy-pr-bot

Copy link
Copy Markdown
Member

Backport of #15601 to cloud/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:38 AM UTC

Links

🎭 Playwright: ✅ 1827 passed, 0 failed · 1 flaky

📊 Browser Reports
  • chromium: View Report (✅ 1806 / ❌ 0 / ⚠️ 1 / ⏭️ 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.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 67.1 MB heap
canvas-mouse-sweep: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 53.9 MB heap
canvas-zoom-sweep: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 69.9 MB heap
dom-widget-clipping: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 51.2 MB heap
large-graph-idle: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 69.7 MB heap
large-graph-pan: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 65.7 MB heap
large-graph-zoom: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 68.6 MB heap
minimap-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 70.6 MB heap
subgraph-dom-widget-clipping: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 53.0 MB heap
subgraph-idle: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 67.6 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) · 144ms TBT · 79.7 MB heap
viewport-pan-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 62.2 MB heap
vue-large-graph-idle: · 56.3 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 154.5 MB heap
vue-large-graph-pan: · 55.4 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 108ms TBT · 166.9 MB heap
workflow-execution: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 66.3 MB heap

ℹ️ No baseline found — significance unavailable.

Absolute values
Metric Value
canvas-idle: avg frame time 17ms
canvas-idle: p95 frame time 17ms
canvas-idle: layout duration 0ms
canvas-idle: style recalc duration 8ms
canvas-idle: layout count 0
canvas-idle: style recalc count 8
canvas-idle: task duration 517ms
canvas-idle: script duration 9ms
canvas-idle: TBT 0ms
canvas-idle: heap used 67.1 MB
canvas-idle: DOM nodes 16
canvas-idle: event listeners 4
canvas-mouse-sweep: avg frame time 17ms
canvas-mouse-sweep: p95 frame time 17ms
canvas-mouse-sweep: layout duration 4ms
canvas-mouse-sweep: style recalc duration 48ms
canvas-mouse-sweep: layout count 12
canvas-mouse-sweep: style recalc count 79
canvas-mouse-sweep: task duration 957ms
canvas-mouse-sweep: script duration 124ms
canvas-mouse-sweep: TBT 0ms
canvas-mouse-sweep: heap used 53.9 MB
canvas-mouse-sweep: DOM nodes -110
canvas-mouse-sweep: event listeners -75
canvas-zoom-sweep: avg frame time 17ms
canvas-zoom-sweep: p95 frame time 17ms
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 31
canvas-zoom-sweep: task duration 414ms
canvas-zoom-sweep: script duration 12ms
canvas-zoom-sweep: TBT 0ms
canvas-zoom-sweep: heap used 69.9 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 17ms
dom-widget-clipping: layout duration 0ms
dom-widget-clipping: style recalc duration 8ms
dom-widget-clipping: layout count 0
dom-widget-clipping: style recalc count 11
dom-widget-clipping: task duration 404ms
dom-widget-clipping: script duration 60ms
dom-widget-clipping: TBT 0ms
dom-widget-clipping: heap used 51.2 MB
dom-widget-clipping: DOM nodes 18
dom-widget-clipping: event listeners 1
large-graph-idle: avg frame time 17ms
large-graph-idle: p95 frame time 17ms
large-graph-idle: layout duration 0ms
large-graph-idle: style recalc duration 8ms
large-graph-idle: layout count 0
large-graph-idle: style recalc count 8
large-graph-idle: task duration 668ms
large-graph-idle: script duration 16ms
large-graph-idle: TBT 0ms
large-graph-idle: heap used 69.7 MB
large-graph-idle: DOM nodes -282
large-graph-idle: event listeners -164
large-graph-pan: avg frame time 17ms
large-graph-pan: p95 frame time 17ms
large-graph-pan: layout duration 0ms
large-graph-pan: style recalc duration 15ms
large-graph-pan: layout count 0
large-graph-pan: style recalc count 69
large-graph-pan: task duration 1260ms
large-graph-pan: script duration 347ms
large-graph-pan: TBT 0ms
large-graph-pan: heap used 65.7 MB
large-graph-pan: DOM nodes -285
large-graph-pan: event listeners -149
large-graph-zoom: avg frame time 17ms
large-graph-zoom: p95 frame time 17ms
large-graph-zoom: layout duration 7ms
large-graph-zoom: style recalc duration 15ms
large-graph-zoom: layout count 60
large-graph-zoom: style recalc count 65
large-graph-zoom: task duration 1423ms
large-graph-zoom: script duration 397ms
large-graph-zoom: TBT 0ms
large-graph-zoom: heap used 68.6 MB
large-graph-zoom: DOM nodes -138
large-graph-zoom: event listeners -73
minimap-idle: avg frame time 17ms
minimap-idle: p95 frame time 17ms
minimap-idle: layout duration 0ms
minimap-idle: style recalc duration 7ms
minimap-idle: layout count 0
minimap-idle: style recalc count 7
minimap-idle: task duration 647ms
minimap-idle: script duration 17ms
minimap-idle: TBT 0ms
minimap-idle: heap used 70.6 MB
minimap-idle: DOM nodes -286
minimap-idle: event listeners -149
subgraph-dom-widget-clipping: avg frame time 17ms
subgraph-dom-widget-clipping: p95 frame time 17ms
subgraph-dom-widget-clipping: layout duration 0ms
subgraph-dom-widget-clipping: style recalc duration 12ms
subgraph-dom-widget-clipping: layout count 0
subgraph-dom-widget-clipping: style recalc count 47
subgraph-dom-widget-clipping: task duration 418ms
subgraph-dom-widget-clipping: script duration 122ms
subgraph-dom-widget-clipping: TBT 0ms
subgraph-dom-widget-clipping: heap used 53.0 MB
subgraph-dom-widget-clipping: DOM nodes 19
subgraph-dom-widget-clipping: event listeners 6
subgraph-idle: avg frame time 17ms
subgraph-idle: p95 frame time 17ms
subgraph-idle: layout duration 0ms
subgraph-idle: style recalc duration 9ms
subgraph-idle: layout count 0
subgraph-idle: style recalc count 9
subgraph-idle: task duration 504ms
subgraph-idle: script duration 9ms
subgraph-idle: TBT 0ms
subgraph-idle: heap used 67.6 MB
subgraph-idle: DOM nodes 17
subgraph-idle: event listeners 4
subgraph-mouse-sweep: avg frame time 17ms
subgraph-mouse-sweep: p95 frame time 17ms
subgraph-mouse-sweep: layout duration 5ms
subgraph-mouse-sweep: style recalc duration 41ms
subgraph-mouse-sweep: layout count 16
subgraph-mouse-sweep: style recalc count 76
subgraph-mouse-sweep: task duration 810ms
subgraph-mouse-sweep: script duration 93ms
subgraph-mouse-sweep: TBT 0ms
subgraph-mouse-sweep: heap used 59.0 MB
subgraph-mouse-sweep: DOM nodes 61
subgraph-mouse-sweep: event listeners 4
subgraph-transition-enter: avg frame time 17ms
subgraph-transition-enter: p95 frame time 17ms
subgraph-transition-enter: layout duration 13ms
subgraph-transition-enter: style recalc duration 32ms
subgraph-transition-enter: layout count 14
subgraph-transition-enter: style recalc count 19
subgraph-transition-enter: task duration 1019ms
subgraph-transition-enter: script duration 18ms
subgraph-transition-enter: TBT 144ms
subgraph-transition-enter: heap used 79.7 MB
subgraph-transition-enter: DOM nodes 13673
subgraph-transition-enter: event listeners 2375
viewport-pan-sweep: avg frame time 17ms
viewport-pan-sweep: p95 frame time 17ms
viewport-pan-sweep: layout duration 0ms
viewport-pan-sweep: style recalc duration 37ms
viewport-pan-sweep: layout count 0
viewport-pan-sweep: style recalc count 249
viewport-pan-sweep: task duration 4450ms
viewport-pan-sweep: script duration 1091ms
viewport-pan-sweep: TBT 0ms
viewport-pan-sweep: heap used 62.2 MB
viewport-pan-sweep: DOM nodes -282
viewport-pan-sweep: event listeners -147
vue-large-graph-idle: avg frame time 18ms
vue-large-graph-idle: p95 frame time 17ms
vue-large-graph-idle: layout duration 0ms
vue-large-graph-idle: style recalc duration 0ms
vue-large-graph-idle: layout count 0
vue-large-graph-idle: style recalc count 0
vue-large-graph-idle: task duration 16938ms
vue-large-graph-idle: script duration 134ms
vue-large-graph-idle: TBT 0ms
vue-large-graph-idle: heap used 154.5 MB
vue-large-graph-idle: DOM nodes -8312
vue-large-graph-idle: event listeners -16390
vue-large-graph-pan: avg frame time 18ms
vue-large-graph-pan: p95 frame time 17ms
vue-large-graph-pan: layout duration 0ms
vue-large-graph-pan: style recalc duration 21ms
vue-large-graph-pan: layout count 0
vue-large-graph-pan: style recalc count 177
vue-large-graph-pan: task duration 20671ms
vue-large-graph-pan: script duration 434ms
vue-large-graph-pan: TBT 108ms
vue-large-graph-pan: heap used 166.9 MB
vue-large-graph-pan: DOM nodes -8312
vue-large-graph-pan: event listeners -16384
workflow-execution: avg frame time 17ms
workflow-execution: p95 frame time 17ms
workflow-execution: layout duration 1ms
workflow-execution: style recalc duration 20ms
workflow-execution: layout count 3
workflow-execution: style recalc count 14
workflow-execution: task duration 116ms
workflow-execution: script duration 9ms
workflow-execution: TBT 0ms
workflow-execution: heap used 66.3 MB
workflow-execution: DOM nodes 127
workflow-execution: event listeners 98
Raw data
{
  "timestamp": "2026-08-23T08:23:15.203Z",
  "gitSha": "262f7d11a8b33b962c61a21f49394afedd79d603",
  "branch": "backport-15601-to-cloud-1.51",
  "measurements": [
    {
      "name": "canvas-idle",
      "durationMs": 2033.5599999999658,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 7.981999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 529.065,
      "heapDeltaBytes": 4895196,
      "heapUsedBytes": 70279072,
      "domNodes": 16,
      "jsHeapTotalBytes": 24379392,
      "scriptDurationMs": 9.151999999999997,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-idle",
      "durationMs": 2018.5270000000628,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 8.446000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 505.29100000000005,
      "heapDeltaBytes": 5050964,
      "heapUsedBytes": 70509560,
      "domNodes": 16,
      "jsHeapTotalBytes": 24379392,
      "scriptDurationMs": 9.044,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 2033.8519999999676,
      "styleRecalcs": 80,
      "styleRecalcDurationMs": 51.513000000000005,
      "layouts": 12,
      "layoutDurationMs": 3.7449999999999997,
      "taskDurationMs": 1029.265,
      "heapDeltaBytes": -17844348,
      "heapUsedBytes": 47475616,
      "domNodes": -279,
      "jsHeapTotalBytes": 23433216,
      "scriptDurationMs": 129.28300000000002,
      "eventListeners": -153,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1893.63400000002,
      "styleRecalcs": 77,
      "styleRecalcDurationMs": 43.988,
      "layouts": 12,
      "layoutDurationMs": 4.034000000000001,
      "taskDurationMs": 885.6360000000001,
      "heapDeltaBytes": 191768,
      "heapUsedBytes": 65581216,
      "domNodes": 60,
      "jsHeapTotalBytes": 25169920,
      "scriptDurationMs": 118.64,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1738.4829999999738,
      "styleRecalcs": 31,
      "styleRecalcDurationMs": 19.907,
      "layouts": 6,
      "layoutDurationMs": 0.6880000000000001,
      "taskDurationMs": 413.57099999999997,
      "heapDeltaBytes": 7926048,
      "heapUsedBytes": 73173248,
      "domNodes": 78,
      "jsHeapTotalBytes": 24641536,
      "scriptDurationMs": 11.565000000000001,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1741.54400000009,
      "styleRecalcs": 31,
      "styleRecalcDurationMs": 19.318999999999996,
      "layouts": 6,
      "layoutDurationMs": 0.5419999999999999,
      "taskDurationMs": 413.562,
      "heapDeltaBytes": 8180592,
      "heapUsedBytes": 73501156,
      "domNodes": 79,
      "jsHeapTotalBytes": 23855104,
      "scriptDurationMs": 11.902000000000001,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 623.0160000000069,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 8.344,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 410.749,
      "heapDeltaBytes": -11882256,
      "heapUsedBytes": 53752948,
      "domNodes": 18,
      "jsHeapTotalBytes": 25427968,
      "scriptDurationMs": 59.808,
      "eventListeners": 2,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 630.6600000000344,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 8.408000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 396.8740000000001,
      "heapDeltaBytes": -11585040,
      "heapUsedBytes": 53699440,
      "domNodes": 18,
      "jsHeapTotalBytes": 25427968,
      "scriptDurationMs": 59.351,
      "eventListeners": 0,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2016.4819999999963,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 8.212999999999997,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 658.059,
      "heapDeltaBytes": 12795576,
      "heapUsedBytes": 72976124,
      "domNodes": -283,
      "jsHeapTotalBytes": 2981888,
      "scriptDurationMs": 15.502000000000002,
      "eventListeners": -149,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2029.7630000000026,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 7.642999999999997,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 677.014,
      "heapDeltaBytes": 12760916,
      "heapUsedBytes": 73125448,
      "domNodes": -281,
      "jsHeapTotalBytes": 4030464,
      "scriptDurationMs": 16.496000000000002,
      "eventListeners": -179,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2233.793999999989,
      "styleRecalcs": 69,
      "styleRecalcDurationMs": 15.328999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1270.6029999999998,
      "heapDeltaBytes": 7660776,
      "heapUsedBytes": 68765648,
      "domNodes": -284,
      "jsHeapTotalBytes": 4485120,
      "scriptDurationMs": 349.734,
      "eventListeners": -149,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2234.220999999934,
      "styleRecalcs": 68,
      "styleRecalcDurationMs": 14.129999999999997,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1250.252,
      "heapDeltaBytes": 7774544,
      "heapUsedBytes": 69040032,
      "domNodes": -285,
      "jsHeapTotalBytes": 3698688,
      "scriptDurationMs": 344.652,
      "eventListeners": -149,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3241.6939999999954,
      "styleRecalcs": 65,
      "styleRecalcDurationMs": 16.17,
      "layouts": 60,
      "layoutDurationMs": 7.6690000000000005,
      "taskDurationMs": 1416.7990000000002,
      "heapDeltaBytes": 16515132,
      "heapUsedBytes": 79398012,
      "domNodes": 12,
      "jsHeapTotalBytes": 5505024,
      "scriptDurationMs": 402.874,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3329.3559999999616,
      "styleRecalcs": 64,
      "styleRecalcDurationMs": 14.018999999999997,
      "layouts": 60,
      "layoutDurationMs": 7.191999999999999,
      "taskDurationMs": 1428.744,
      "heapDeltaBytes": 2167900,
      "heapUsedBytes": 64439508,
      "domNodes": -287,
      "jsHeapTotalBytes": 2981888,
      "scriptDurationMs": 390.597,
      "eventListeners": -153,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "minimap-idle",
      "durationMs": 2017.2940000000494,
      "styleRecalcs": 7,
      "styleRecalcDurationMs": 6.867000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 653.017,
      "heapDeltaBytes": 12753704,
      "heapUsedBytes": 73673924,
      "domNodes": -284,
      "jsHeapTotalBytes": 3506176,
      "scriptDurationMs": 15.816999999999998,
      "eventListeners": -149,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "minimap-idle",
      "durationMs": 2016.4689999999155,
      "styleRecalcs": 6,
      "styleRecalcDurationMs": 6.252000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 640.3820000000001,
      "heapDeltaBytes": 12670320,
      "heapUsedBytes": 74422968,
      "domNodes": -288,
      "jsHeapTotalBytes": 2719744,
      "scriptDurationMs": 17.846999999999994,
      "eventListeners": -149,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 609.1679999999542,
      "styleRecalcs": 46,
      "styleRecalcDurationMs": 11.569,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 418.669,
      "heapDeltaBytes": -9980328,
      "heapUsedBytes": 55563932,
      "domNodes": 18,
      "jsHeapTotalBytes": 24903680,
      "scriptDurationMs": 121.633,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 611.7130000000088,
      "styleRecalcs": 47,
      "styleRecalcDurationMs": 11.945999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 416.407,
      "heapDeltaBytes": -10004736,
      "heapUsedBytes": 55581784,
      "domNodes": 20,
      "jsHeapTotalBytes": 24641536,
      "scriptDurationMs": 121.838,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-idle",
      "durationMs": 1991.8420000000197,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 8.431,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 504.14300000000003,
      "heapDeltaBytes": 5213924,
      "heapUsedBytes": 70872128,
      "domNodes": 16,
      "jsHeapTotalBytes": 24379392,
      "scriptDurationMs": 9.047,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2004.7140000000354,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 9.699,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 504.04400000000004,
      "heapDeltaBytes": 5472140,
      "heapUsedBytes": 70863604,
      "domNodes": 18,
      "jsHeapTotalBytes": 24117248,
      "scriptDurationMs": 8.732999999999999,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1717.0229999999833,
      "styleRecalcs": 76,
      "styleRecalcDurationMs": 42.882000000000005,
      "layouts": 16,
      "layoutDurationMs": 4.804,
      "taskDurationMs": 816.4879999999999,
      "heapDeltaBytes": -3719276,
      "heapUsedBytes": 61804380,
      "domNodes": 61,
      "jsHeapTotalBytes": 24117248,
      "scriptDurationMs": 92.831,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1696.2220000000343,
      "styleRecalcs": 76,
      "styleRecalcDurationMs": 39.114000000000004,
      "layouts": 16,
      "layoutDurationMs": 4.777,
      "taskDurationMs": 802.952,
      "heapDeltaBytes": -3696172,
      "heapUsedBytes": 61986096,
      "domNodes": 61,
      "jsHeapTotalBytes": 23855104,
      "scriptDurationMs": 93.321,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-transition-enter",
      "durationMs": 1434.6499999999196,
      "styleRecalcs": 19,
      "styleRecalcDurationMs": 31.595,
      "layouts": 14,
      "layoutDurationMs": 12.710000000000003,
      "taskDurationMs": 1019.4859999999999,
      "heapDeltaBytes": -4210252,
      "heapUsedBytes": 83547792,
      "domNodes": 13673,
      "jsHeapTotalBytes": 10485760,
      "scriptDurationMs": 18.496,
      "eventListeners": 2375,
      "totalBlockingTimeMs": 144,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8711.680999999999,
      "styleRecalcs": 249,
      "styleRecalcDurationMs": 36.973,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 4534.590999999999,
      "heapDeltaBytes": -3538612,
      "heapUsedBytes": 56874256,
      "domNodes": -282,
      "jsHeapTotalBytes": 4816896,
      "scriptDurationMs": 1137.587,
      "eventListeners": -163,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8468.422999999915,
      "styleRecalcs": 249,
      "styleRecalcDurationMs": 36.451,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 4365.307,
      "heapDeltaBytes": 13816268,
      "heapUsedBytes": 73576032,
      "domNodes": -282,
      "jsHeapTotalBytes": 3698688,
      "scriptDurationMs": 1044.503,
      "eventListeners": -131,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333338,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 17865.746000000003,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 16951.048,
      "heapDeltaBytes": -26238600,
      "heapUsedBytes": 171156756,
      "domNodes": -8312,
      "jsHeapTotalBytes": -6496256,
      "scriptDurationMs": 132.484,
      "eventListeners": -16389,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.776666666666642,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 17870.62100000003,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 16924.342,
      "heapDeltaBytes": -44386404,
      "heapUsedBytes": 152911080,
      "domNodes": -8312,
      "jsHeapTotalBytes": -13836288,
      "scriptDurationMs": 136.405,
      "eventListeners": -16391,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.776666666666642,
      "p95FrameDurationMs": 16.80000000000291
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 21189.099,
      "styleRecalcs": 176,
      "styleRecalcDurationMs": 20.891999999999967,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 20578.01,
      "heapDeltaBytes": -21874120,
      "heapUsedBytes": 176705788,
      "domNodes": -8312,
      "jsHeapTotalBytes": -11284480,
      "scriptDurationMs": 429.624,
      "eventListeners": -16385,
      "totalBlockingTimeMs": 50,
      "frameDurationMs": 18.333333333333332,
      "p95FrameDurationMs": 16.80000000000291
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 21317.318,
      "styleRecalcs": 177,
      "styleRecalcDurationMs": 20.726999999999997,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 20764.143,
      "heapDeltaBytes": -24147116,
      "heapUsedBytes": 173225464,
      "domNodes": -8312,
      "jsHeapTotalBytes": -14692352,
      "scriptDurationMs": 438.26199999999994,
      "eventListeners": -16383,
      "totalBlockingTimeMs": 165,
      "frameDurationMs": 17.776666666666642,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "workflow-execution",
      "durationMs": 471.0929999999962,
      "styleRecalcs": 15,
      "styleRecalcDurationMs": 22.766999999999996,
      "layouts": 3,
      "layoutDurationMs": 0.5720000000000001,
      "taskDurationMs": 122.24,
      "heapDeltaBytes": 5037836,
      "heapUsedBytes": 69450876,
      "domNodes": 130,
      "jsHeapTotalBytes": 5242880,
      "scriptDurationMs": 10.352,
      "eventListeners": 99,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "workflow-execution",
      "durationMs": 461.2769999999955,
      "styleRecalcs": 13,
      "styleRecalcDurationMs": 18.175,
      "layouts": 3,
      "layoutDurationMs": 0.581,
      "taskDurationMs": 109.299,
      "heapDeltaBytes": 4928408,
      "heapUsedBytes": 69679172,
      "domNodes": 123,
      "jsHeapTotalBytes": 4718592,
      "scriptDurationMs": 7.453999999999999,
      "eventListeners": 97,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    }
  ]
}

@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              @@
##             cloud/1.51   #15717   +/-   ##
=============================================
  Coverage              ?   81.55%           
=============================================
  Files                 ?     1884           
  Lines                 ?   117703           
  Branches              ?    37243           
=============================================
  Hits                  ?    95987           
  Misses                ?    21244           
  Partials              ?      472           
Flag Coverage Δ
unit 73.13% <100.00%> (?)

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

Files with missing lines Coverage Δ
...rkspace/components/CurrentUserPopoverWorkspace.vue 81.34% <100.00%> (ø)
🚀 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