Skip to content

[backport cloud/1.45] feat(billing): align workspace Plan & Credits panel to DES-186 (FE-768)#13300

Open
comfy-pr-bot wants to merge 1 commit into
cloud/1.45from
backport-12761-to-cloud-1.45
Open

[backport cloud/1.45] feat(billing): align workspace Plan & Credits panel to DES-186 (FE-768)#13300
comfy-pr-bot wants to merge 1 commit into
cloud/1.45from
backport-12761-to-cloud-1.45

Conversation

@comfy-pr-bot

Copy link
Copy Markdown
Member

Backport of #12761 to cloud/1.45

Automatically created by backport workflow.

…8) (#12761)

## Summary

Aligns the Settings ▸ Workspaces **Plan & Credits** panel to DES-186:
state-driven subtitle, team/personal header variants, design perks, and
a shared footer help bar. Stacked on FE-964 (#12734), which owns the
CreditsTile content.

## Changes

- **What**:
- Subtitle per design variants (Figma 3255-21472): Active → "Renews on
{date}", Ending → "Ends on {date}". `subscription_status: 'scheduled'`
falls back to the Active treatment — the facade exposes no
scheduled-plan target/date fields yet, so "Changes to {plan} on {date}"
cannot be rendered (template reserved in i18n-ready form; see Linear
note).
- Team-active header: plan name "Team" + seat-aware workspace total
(`seat_summary.total_cost_cents` from `/billing/plans`) as "$X USD /
mo"; the Next-month-invoice card reads the same computed so the two
can't disagree. Per-member tier price + "USD / mo / member" kept as the
plans-unresolved fallback.
- CTAs per design + designer annotation: "Manage billing" + "Change
plan" on a team plan, "Upgrade plan" on personal.
- Team perks (Figma 2993-14789): "Your plan includes everything in
**Pro**, plus:" (i18n-t, plan name emphasized) + invite members /
concurrent runs / shared credit pool / role-based permissions.
- Personal no-subscription variant (Figma 2993-14604): "Free · $0 USD /
mo" header + primary Subscribe CTA + "What's included:" with the
max-runtime perk → "10 min max runtime" (`subscription.maxDuration.free`
set to 10 min per DES 3253-16079).
- Footer help bar (Learn more / Partner Nodes pricing table / Message
support / Invoice history) extracted into `SubscriptionFooterLinks.vue`,
shared by workspace + legacy panels; new surface-specific key for
"Partner Nodes pricing table".
- **Breaking**: none.

## Review Focus

- Seat-aware price source (`currentPlan.seat_summary.total_cost_cents`)
vs per-member fallback — fixture locks $320 vs $80.
- `'scheduled'` → Active fallback (adapter-level test in
`useWorkspaceBilling.test.ts`).
- Free-state perk copy: `subscription.maxDuration.free` set to **10
min** per DES 3253-16079 (design confirmed; was 30 min).
- Free-state overflow (`⋯`) button intentionally omitted: the only
existing menu item (Cancel Subscription) doesn't apply to a free plan.

Linear:
[FE-768](https://linear.app/comfyorg/issue/FE-768/updates-to-workspaces-tab-of-settings)
(Plan & Credits half; Members invite UI ships in #12759)

## Screenshots

Captured on `local.comfy.org` dev (cloud-prod backend, authenticated
session). Team and free states use client-side API stubs (XHR-level for
`/api/billing/*` + `/api/workspace/*`, fetch-level for legacy
`/customers/*`) since the test workspaces are unsubscribed;
personal-active rows are real account data.

| State | Before (FE-964 base) | After (this PR) |
|---|---|---|
| Team plan — active | <img width="400" alt="before: Pro, $100
USD/mo/member, Renews, Manage Payment/Upgrade Plan"
src="https://github.com/user-attachments/assets/622a9a27-1875-4c08-92b7-9e43a8067c59"
/> | <img width="400" alt="after: Team, $300 USD/mo, Renews on, Manage
billing/Change plan, design perks"
src="https://github.com/user-attachments/assets/adb0f767-d508-4455-ad8e-ee2d6ac419dc"
/> |
| Team plan — ending (cancelled) | <img width="400" alt="before: Expires
Jul 10, 2026"
src="https://github.com/user-attachments/assets/cb4bb978-4e8b-4372-8ecc-7265f477a828"
/> | <img width="400" alt="after: Ends on Jul 10, 2026"
src="https://github.com/user-attachments/assets/5466b99a-d016-4eba-a60f-99b87bd2693e"
/> |
| Personal — active (real data) | <img width="400" alt="before: Renews
Mar 10 2027, Manage Payment"
src="https://github.com/user-attachments/assets/34018400-930b-4147-bd0d-398fb4d159ee"
/> | <img width="400" alt="after: Renews on Mar 10 2027, Manage billing"
src="https://github.com/user-attachments/assets/87af7fa7-28cf-4cdf-b9a2-158b2a6eb979"
/> |
| Personal — no subscription | <img width="400" alt="before: generic
not-on-a-subscription prompt"
src="https://github.com/user-attachments/assets/7ee5b36e-1e07-4630-a9b7-680f4fad349b"
/> | <img width="400" alt="after: Free $0 USD/mo header + Subscribe +
What's included"
src="https://github.com/user-attachments/assets/1eda1791-e3de-46c3-bb69-df0365545211"
/> |



---

## Perk descriptions — designer QA (DES `3253-16079`)

CDP-verified the Plan & Credits **perk list** per current plan against
Figma. Captured at the full 1280px settings layout (width fix: #12849;
the perk text/content is identical at the current 960px).

| Plan | "Includes" header | Perks shown |
|---|---|---|
| Free (no subscription) | What's included: | 10 min max runtime |
| Personal — Pro | Your plan includes: | 1 hr max run duration · RTX
6000 Pro (96GB VRAM) · Add more credits whenever · Import your own LoRAs
|
| Team | Your plan includes everything in **Pro**, plus: | Invite
members · Members can run workflows concurrently · Shared credit pool
for all members · Role-based permissions |

**Free — Figma `3253-16079` (left) vs implementation (right):**

| Figma | Implementation |
|---|---|
| <img width="480" alt="Figma DES 3253-16079 free settings"
src="https://github.com/user-attachments/assets/cfe79570-f3ba-4627-a8eb-348b9158f6ac"
/> | <img width="480" alt="App free settings — What's included: 10 min
max runtime"
src="https://github.com/user-attachments/assets/d89898e4-d819-486c-9b4f-c2fd61916783"
/> |

**Personal — Pro:**

<img width="640" alt="App personal Pro — Your plan includes"
src="https://github.com/user-attachments/assets/adc2fd9f-d249-469f-b947-1ec8f674cbb0"
/>

**Team:**

<img width="640" alt="App team — Your plan includes everything in Pro,
plus"
src="https://github.com/user-attachments/assets/e7378067-11a2-411b-b37b-98c8aecb82b1"
/>

Open items (design):
- Free perk now reads **"10 min max runtime"**
(`subscription.maxDuration.free` set to 10 min) per Figma `3253-16079` —
✅ applied in this PR.
- Personal-plan perk **stacking** (show lower-tier perks under the
current tier) is an unresolved Figma thread on this node — not
implemented.

---------

Co-authored-by: GitHub Action <action@github.com>
@comfy-pr-bot comfy-pr-bot added the backport Backporting a PR onto a release candidate label Jun 29, 2026
@dosubot dosubot Bot added the size:XS This PR changes 0-9 lines, ignoring generated files. label Jun 29, 2026
@codecov

codecov Bot commented Jun 29, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

@@              Coverage Diff              @@
##             cloud/1.45   #13300   +/-   ##
=============================================
  Coverage              ?   62.41%           
=============================================
  Files                 ?     1466           
  Lines                 ?    75158           
  Branches              ?    21046           
=============================================
  Hits                  ?    46910           
  Misses                ?    27813           
  Partials              ?      435           
Flag Coverage Δ
unit 62.41% <100.00%> (?)

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

Files with missing lines Coverage Δ
.../subscription/composables/useSubscriptionDialog.ts 81.53% <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.

@github-actions

Copy link
Copy Markdown

📦 Bundle Size

⏳ Size data collection in progress…

⚡ Performance Report

canvas-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 61.6 MB heap
canvas-mouse-sweep: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 54.5 MB heap
canvas-zoom-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 66.4 MB heap
dom-widget-clipping: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 56.0 MB heap
large-graph-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 85.0 MB heap
large-graph-pan: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 59.5 MB heap
large-graph-zoom: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 86.9 MB heap
minimap-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 85.3 MB heap
subgraph-dom-widget-clipping: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 54.3 MB heap
subgraph-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 62.0 MB heap
subgraph-mouse-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 63.9 MB heap
subgraph-transition-enter: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 207ms TBT · 133.0 MB heap
viewport-pan-sweep: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 108.2 MB heap
vue-large-graph-idle: · 57.1 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 158.2 MB heap
vue-large-graph-pan: · 57.1 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 67ms TBT · 155.5 MB heap
workflow-execution: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 45.6 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 9
canvas-idle: task duration 360ms
canvas-idle: script duration 15ms
canvas-idle: TBT 0ms
canvas-idle: heap used 61.6 MB
canvas-idle: DOM nodes -138
canvas-idle: event listeners -87
canvas-mouse-sweep: avg frame time 17ms
canvas-mouse-sweep: p95 frame time 17ms
canvas-mouse-sweep: layout duration 3ms
canvas-mouse-sweep: style recalc duration 44ms
canvas-mouse-sweep: layout count 12
canvas-mouse-sweep: style recalc count 75
canvas-mouse-sweep: task duration 799ms
canvas-mouse-sweep: script duration 129ms
canvas-mouse-sweep: TBT 0ms
canvas-mouse-sweep: heap used 54.5 MB
canvas-mouse-sweep: DOM nodes 58
canvas-mouse-sweep: event listeners 5
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 19ms
canvas-zoom-sweep: layout count 6
canvas-zoom-sweep: style recalc count 31
canvas-zoom-sweep: task duration 397ms
canvas-zoom-sweep: script duration 29ms
canvas-zoom-sweep: TBT 0ms
canvas-zoom-sweep: heap used 66.4 MB
canvas-zoom-sweep: DOM nodes -228
canvas-zoom-sweep: event listeners -173
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 12
dom-widget-clipping: task duration 344ms
dom-widget-clipping: script duration 62ms
dom-widget-clipping: TBT 0ms
dom-widget-clipping: heap used 56.0 MB
dom-widget-clipping: DOM nodes 19
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 9
large-graph-idle: task duration 551ms
large-graph-idle: script duration 97ms
large-graph-idle: TBT 0ms
large-graph-idle: heap used 85.0 MB
large-graph-idle: DOM nodes -137
large-graph-idle: event listeners -85
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 18ms
large-graph-pan: layout count 0
large-graph-pan: style recalc count 68
large-graph-pan: task duration 1087ms
large-graph-pan: script duration 404ms
large-graph-pan: TBT 0ms
large-graph-pan: heap used 59.5 MB
large-graph-pan: DOM nodes -128
large-graph-pan: event listeners 6
large-graph-zoom: avg frame time 17ms
large-graph-zoom: p95 frame time 17ms
large-graph-zoom: layout duration 8ms
large-graph-zoom: style recalc duration 17ms
large-graph-zoom: layout count 60
large-graph-zoom: style recalc count 64
large-graph-zoom: task duration 1329ms
large-graph-zoom: script duration 493ms
large-graph-zoom: TBT 0ms
large-graph-zoom: heap used 86.9 MB
large-graph-zoom: DOM nodes 9
large-graph-zoom: event listeners 8
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 8
minimap-idle: task duration 572ms
minimap-idle: script duration 100ms
minimap-idle: TBT 0ms
minimap-idle: heap used 85.3 MB
minimap-idle: DOM nodes -127
minimap-idle: event listeners -90
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 48
subgraph-dom-widget-clipping: task duration 401ms
subgraph-dom-widget-clipping: script duration 123ms
subgraph-dom-widget-clipping: TBT 0ms
subgraph-dom-widget-clipping: heap used 54.3 MB
subgraph-dom-widget-clipping: DOM nodes -128
subgraph-dom-widget-clipping: event listeners -78
subgraph-idle: avg frame time 17ms
subgraph-idle: p95 frame time 17ms
subgraph-idle: layout duration 0ms
subgraph-idle: style recalc duration 10ms
subgraph-idle: layout count 0
subgraph-idle: style recalc count 11
subgraph-idle: task duration 405ms
subgraph-idle: script duration 21ms
subgraph-idle: TBT 0ms
subgraph-idle: heap used 62.0 MB
subgraph-idle: DOM nodes 22
subgraph-idle: event listeners 4
subgraph-mouse-sweep: avg frame time 17ms
subgraph-mouse-sweep: p95 frame time 17ms
subgraph-mouse-sweep: layout duration 4ms
subgraph-mouse-sweep: style recalc duration 37ms
subgraph-mouse-sweep: layout count 16
subgraph-mouse-sweep: style recalc count 76
subgraph-mouse-sweep: task duration 694ms
subgraph-mouse-sweep: script duration 96ms
subgraph-mouse-sweep: TBT 0ms
subgraph-mouse-sweep: heap used 63.9 MB
subgraph-mouse-sweep: DOM nodes 64
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 15ms
subgraph-transition-enter: style recalc duration 32ms
subgraph-transition-enter: layout count 4
subgraph-transition-enter: style recalc count 14
subgraph-transition-enter: task duration 1129ms
subgraph-transition-enter: script duration 46ms
subgraph-transition-enter: TBT 207ms
subgraph-transition-enter: heap used 133.0 MB
subgraph-transition-enter: DOM nodes 12477
subgraph-transition-enter: event listeners 1290
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 56ms
viewport-pan-sweep: layout count 0
viewport-pan-sweep: style recalc count 251
viewport-pan-sweep: task duration 4205ms
viewport-pan-sweep: script duration 1421ms
viewport-pan-sweep: TBT 0ms
viewport-pan-sweep: heap used 108.2 MB
viewport-pan-sweep: DOM nodes -145
viewport-pan-sweep: event listeners -82
vue-large-graph-idle: avg frame time 17ms
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 12814ms
vue-large-graph-idle: script duration 603ms
vue-large-graph-idle: TBT 0ms
vue-large-graph-idle: heap used 158.2 MB
vue-large-graph-idle: DOM nodes -5817
vue-large-graph-idle: event listeners -16467
vue-large-graph-pan: avg frame time 17ms
vue-large-graph-pan: p95 frame time 17ms
vue-large-graph-pan: layout duration 0ms
vue-large-graph-pan: style recalc duration 22ms
vue-large-graph-pan: layout count 0
vue-large-graph-pan: style recalc count 76
vue-large-graph-pan: task duration 15340ms
vue-large-graph-pan: script duration 907ms
vue-large-graph-pan: TBT 67ms
vue-large-graph-pan: heap used 155.5 MB
vue-large-graph-pan: DOM nodes -3310
vue-large-graph-pan: event listeners -16467
workflow-execution: avg frame time 17ms
workflow-execution: p95 frame time 17ms
workflow-execution: layout duration 1ms
workflow-execution: style recalc duration 23ms
workflow-execution: layout count 6
workflow-execution: style recalc count 15
workflow-execution: task duration 217ms
workflow-execution: script duration 18ms
workflow-execution: TBT 0ms
workflow-execution: heap used 45.6 MB
workflow-execution: DOM nodes -197
workflow-execution: event listeners -119
Raw data
{
  "timestamp": "2026-06-30T00:00:19.846Z",
  "gitSha": "5b94a5590af21cac0c365b121776127390de67d8",
  "branch": "backport-12761-to-cloud-1.45",
  "measurements": [
    {
      "name": "canvas-idle",
      "durationMs": 2037.1710000000007,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 6.866999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 369.209,
      "heapDeltaBytes": 10243516,
      "heapUsedBytes": 63292108,
      "domNodes": -294,
      "jsHeapTotalBytes": 15663104,
      "scriptDurationMs": 14.041999999999998,
      "eventListeners": -178,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-idle",
      "durationMs": 2042.895000000044,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 8.216,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 350.27,
      "heapDeltaBytes": 2990972,
      "heapUsedBytes": 65903308,
      "domNodes": 18,
      "jsHeapTotalBytes": 15204352,
      "scriptDurationMs": 15.274,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1882.630000000006,
      "styleRecalcs": 76,
      "styleRecalcDurationMs": 53.767999999999994,
      "layouts": 12,
      "layoutDurationMs": 3.75,
      "taskDurationMs": 880.067,
      "heapDeltaBytes": -2119220,
      "heapUsedBytes": 62155448,
      "domNodes": 58,
      "jsHeapTotalBytes": 24117248,
      "scriptDurationMs": 135.22,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1792.416000000003,
      "styleRecalcs": 74,
      "styleRecalcDurationMs": 34.931999999999995,
      "layouts": 12,
      "layoutDurationMs": 3.078,
      "taskDurationMs": 718.714,
      "heapDeltaBytes": -7665168,
      "heapUsedBytes": 52111664,
      "domNodes": 57,
      "jsHeapTotalBytes": 26476544,
      "scriptDurationMs": 122.979,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1757.1099999999547,
      "styleRecalcs": 31,
      "styleRecalcDurationMs": 19.415000000000003,
      "layouts": 6,
      "layoutDurationMs": 0.689,
      "taskDurationMs": 413.096,
      "heapDeltaBytes": -2952152,
      "heapUsedBytes": 65183060,
      "domNodes": -226,
      "jsHeapTotalBytes": 12779520,
      "scriptDurationMs": 30.523000000000003,
      "eventListeners": -161,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1739.0189999999848,
      "styleRecalcs": 31,
      "styleRecalcDurationMs": 18.874000000000002,
      "layouts": 6,
      "layoutDurationMs": 0.654,
      "taskDurationMs": 381.36800000000005,
      "heapDeltaBytes": 5588340,
      "heapUsedBytes": 74095264,
      "domNodes": -229,
      "jsHeapTotalBytes": 17235968,
      "scriptDurationMs": 28.315,
      "eventListeners": -184,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 604.6160000000214,
      "styleRecalcs": 12,
      "styleRecalcDurationMs": 8.635,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 348.79900000000004,
      "heapDeltaBytes": -11028060,
      "heapUsedBytes": 51533412,
      "domNodes": 20,
      "jsHeapTotalBytes": 16252928,
      "scriptDurationMs": 63.730999999999995,
      "eventListeners": 2,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 580.6830000000218,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 7.668999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 339.166,
      "heapDeltaBytes": 7395116,
      "heapUsedBytes": 65911880,
      "domNodes": 18,
      "jsHeapTotalBytes": 16777216,
      "scriptDurationMs": 59.3,
      "eventListeners": 0,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000273
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2024.768999999992,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 9.873,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 568.9329999999999,
      "heapDeltaBytes": -7243236,
      "heapUsedBytes": 63288456,
      "domNodes": 20,
      "jsHeapTotalBytes": 12988416,
      "scriptDurationMs": 112.08100000000002,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2033.2730000000083,
      "styleRecalcs": 7,
      "styleRecalcDurationMs": 5.464,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 533.9499999999999,
      "heapDeltaBytes": 31915756,
      "heapUsedBytes": 115020808,
      "domNodes": -293,
      "jsHeapTotalBytes": 36560896,
      "scriptDurationMs": 82.826,
      "eventListeners": -175,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2119.700000000023,
      "styleRecalcs": 66,
      "styleRecalcDurationMs": 16.674000000000003,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1136.438,
      "heapDeltaBytes": 1661848,
      "heapUsedBytes": 56451736,
      "domNodes": -276,
      "jsHeapTotalBytes": 262144,
      "scriptDurationMs": 415.863,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2127.4459999999635,
      "styleRecalcs": 70,
      "styleRecalcDurationMs": 19.679000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1038.011,
      "heapDeltaBytes": 7482084,
      "heapUsedBytes": 68259676,
      "domNodes": 20,
      "jsHeapTotalBytes": 6467584,
      "scriptDurationMs": 392.18800000000005,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3132.0160000000214,
      "styleRecalcs": 62,
      "styleRecalcDurationMs": 15.084000000000003,
      "layouts": 60,
      "layoutDurationMs": 7.7509999999999994,
      "taskDurationMs": 1373.833,
      "heapDeltaBytes": 57085144,
      "heapUsedBytes": 113305036,
      "domNodes": 4,
      "jsHeapTotalBytes": 46137344,
      "scriptDurationMs": 493.11499999999995,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3116.031000000021,
      "styleRecalcs": 66,
      "styleRecalcDurationMs": 18.962,
      "layouts": 60,
      "layoutDurationMs": 7.33,
      "taskDurationMs": 1285.072,
      "heapDeltaBytes": -4868076,
      "heapUsedBytes": 68908324,
      "domNodes": 14,
      "jsHeapTotalBytes": 9842688,
      "scriptDurationMs": 491.94599999999997,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "minimap-idle",
      "durationMs": 2072.296000000051,
      "styleRecalcs": 6,
      "styleRecalcDurationMs": 5.342,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 679.9060000000002,
      "heapDeltaBytes": 62416020,
      "heapUsedBytes": 116675904,
      "domNodes": -272,
      "jsHeapTotalBytes": 36438016,
      "scriptDurationMs": 121.506,
      "eventListeners": -183,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "minimap-idle",
      "durationMs": 2017.0029999999315,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 8.128,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 464.625,
      "heapDeltaBytes": -10294232,
      "heapUsedBytes": 62228200,
      "domNodes": 18,
      "jsHeapTotalBytes": 11153408,
      "scriptDurationMs": 78.011,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 626.2789999999541,
      "styleRecalcs": 47,
      "styleRecalcDurationMs": 12.754999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 452.02200000000005,
      "heapDeltaBytes": -22162432,
      "heapUsedBytes": 46309616,
      "domNodes": -278,
      "jsHeapTotalBytes": 5701632,
      "scriptDurationMs": 129.04399999999998,
      "eventListeners": -164,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 586.153999999965,
      "styleRecalcs": 48,
      "styleRecalcDurationMs": 12.057,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 349.53599999999994,
      "heapDeltaBytes": 8210516,
      "heapUsedBytes": 67495840,
      "domNodes": 22,
      "jsHeapTotalBytes": 18350080,
      "scriptDurationMs": 117.771,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666682,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2011.0880000000293,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 10.140999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 451.2200000000001,
      "heapDeltaBytes": 25152680,
      "heapUsedBytes": 74750544,
      "domNodes": 22,
      "jsHeapTotalBytes": 18350080,
      "scriptDurationMs": 28.535999999999998,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2015.1709999998957,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 10.496,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 359.644,
      "heapDeltaBytes": -3325508,
      "heapUsedBytes": 55316108,
      "domNodes": 22,
      "jsHeapTotalBytes": 26214400,
      "scriptDurationMs": 14.069,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1731.724999999983,
      "styleRecalcs": 75,
      "styleRecalcDurationMs": 37.618,
      "layouts": 16,
      "layoutDurationMs": 4.574999999999999,
      "taskDurationMs": 701.908,
      "heapDeltaBytes": 18478508,
      "heapUsedBytes": 76084376,
      "domNodes": 62,
      "jsHeapTotalBytes": 18874368,
      "scriptDurationMs": 94.48100000000001,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1693.8219999999546,
      "styleRecalcs": 76,
      "styleRecalcDurationMs": 37.356,
      "layouts": 16,
      "layoutDurationMs": 3.9090000000000003,
      "taskDurationMs": 685.8989999999999,
      "heapDeltaBytes": -4885652,
      "heapUsedBytes": 57937428,
      "domNodes": 65,
      "jsHeapTotalBytes": 15728640,
      "scriptDurationMs": 96.944,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "subgraph-transition-enter",
      "durationMs": 1479.8220000000128,
      "styleRecalcs": 14,
      "styleRecalcDurationMs": 31.537999999999997,
      "layouts": 4,
      "layoutDurationMs": 15.377000000000002,
      "taskDurationMs": 1129.458,
      "heapDeltaBytes": -23953932,
      "heapUsedBytes": 139460964,
      "domNodes": 12477,
      "jsHeapTotalBytes": -13766656,
      "scriptDurationMs": 46.30299999999998,
      "eventListeners": 1290,
      "totalBlockingTimeMs": 207,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8297.650000000032,
      "styleRecalcs": 251,
      "styleRecalcDurationMs": 57.243,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 4376.196,
      "heapDeltaBytes": 437484,
      "heapUsedBytes": 69857716,
      "domNodes": 20,
      "jsHeapTotalBytes": 22863872,
      "scriptDurationMs": 1477.244,
      "eventListeners": 20,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8474.659000000087,
      "styleRecalcs": 251,
      "styleRecalcDurationMs": 55.696,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 4033.652,
      "heapDeltaBytes": 75771964,
      "heapUsedBytes": 157075596,
      "domNodes": -309,
      "jsHeapTotalBytes": 78446592,
      "scriptDurationMs": 1364.684,
      "eventListeners": -183,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 13712.608999999986,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 13676.703999999998,
      "heapDeltaBytes": -54229876,
      "heapUsedBytes": 158277884,
      "domNodes": -3302,
      "jsHeapTotalBytes": 23330816,
      "scriptDurationMs": 662.613,
      "eventListeners": -16464,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.776666666666642,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 11965.502000000015,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 11951.301000000001,
      "heapDeltaBytes": -30691552,
      "heapUsedBytes": 173562696,
      "domNodes": -8331,
      "jsHeapTotalBytes": 24580096,
      "scriptDurationMs": 543.7149999999999,
      "eventListeners": -16470,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.219999999999953,
      "p95FrameDurationMs": 16.80000000000291
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 14709.42500000001,
      "styleRecalcs": 67,
      "styleRecalcDurationMs": 21.94800000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 14684.986,
      "heapDeltaBytes": -38439452,
      "heapUsedBytes": 158508612,
      "domNodes": -3288,
      "jsHeapTotalBytes": 19922944,
      "scriptDurationMs": 876.17,
      "eventListeners": -16464,
      "totalBlockingTimeMs": 55,
      "frameDurationMs": 17.219999999999953,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 16019.65999999993,
      "styleRecalcs": 85,
      "styleRecalcDurationMs": 22.063,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 15994.105000000001,
      "heapDeltaBytes": -32775908,
      "heapUsedBytes": 167545752,
      "domNodes": -3331,
      "jsHeapTotalBytes": 17797120,
      "scriptDurationMs": 937.535,
      "eventListeners": -16469,
      "totalBlockingTimeMs": 78,
      "frameDurationMs": 17.779999999999927,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "workflow-execution",
      "durationMs": 465.9639999999854,
      "styleRecalcs": 14,
      "styleRecalcDurationMs": 22.49,
      "layouts": 5,
      "layoutDurationMs": 1.477,
      "taskDurationMs": 215.67999999999998,
      "heapDeltaBytes": -22055548,
      "heapUsedBytes": 47964408,
      "domNodes": -191,
      "jsHeapTotalBytes": 5177344,
      "scriptDurationMs": 17.034999999999993,
      "eventListeners": -124,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.663333333333338,
      "p95FrameDurationMs": 16.700000000000273
    },
    {
      "name": "workflow-execution",
      "durationMs": 498.2919999999922,
      "styleRecalcs": 16,
      "styleRecalcDurationMs": 23.301000000000002,
      "layouts": 6,
      "layoutDurationMs": 1.4880000000000002,
      "taskDurationMs": 219.23399999999998,
      "heapDeltaBytes": -22389920,
      "heapUsedBytes": 47725644,
      "domNodes": -203,
      "jsHeapTotalBytes": 5177344,
      "scriptDurationMs": 19.516000000000002,
      "eventListeners": -114,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    }
  ]
}

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:XS This PR changes 0-9 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants