[backport cloud/1.45] fix(billing): DES review polish on workspace billing UI#13319
[backport cloud/1.45] fix(billing): DES review polish on workspace billing UI#13319comfy-pr-bot wants to merge 1 commit into
Conversation
### before <img width="539" height="475" alt="Screenshot 2026-06-17 at 9 52 50 PM" src="https://github.com/user-attachments/assets/dd562cb4-870c-43de-aca4-81e0118735e9" /> ### after <img width="529" height="592" alt="Screenshot 2026-06-17 at 9 53 40 PM" src="https://github.com/user-attachments/assets/ba8ed01e-ac91-4654-bfaa-d8f73923f378" /> Design-review polish on the team-workspace billing UI (3 of the items from the Figma 'Team Plan - Workspaces' review). All three components are on main. ### 1. Remove dead 'Upgrade' badge in account popover `CurrentUserPopoverWorkspace.vue` — the white badge beside 'Plans & pricing' was gated on `canUpgrade`, which is hardcoded `false` (PRO is the only tier), so it never rendered. Removed the badge markup and the dead computed. (Figma node 2797-724189.) ### 2. Subscribe-to-Run button height `SubscribeToRun.vue` — used `size="sm"`, which didn't match the sibling run/queue button (an `h-8` button group it swaps with in the same slot via `CloudRunButtonWrapper`). Switched to `size="unset"` + `h-8 rounded-lg gap-1.5 px-4` to match. ### 3. Duplicate border/radius on member 'subscription inactive' dialog `useSubscriptionDialog.ts` — the layout dialog already zeroes the *content* border (`border-none shadow-none`), but the *root* pt kept only `bg-transparent`, so the dialog frame's default border+radius doubled with the card's own `rounded-2xl border`. Added `border-none rounded-none shadow-none` to root so only the card's single border/radius shows. (Figma node 3253-19473.) Surfaced during Billing V1 design review (team workspaces). --------- Co-authored-by: GitHub Action <action@github.com>
Codecov Report✅ All modified and coverable lines are covered by tests. @@ Coverage Diff @@
## cloud/1.45 #13319 +/- ##
=============================================
Coverage ? 62.41%
=============================================
Files ? 1466
Lines ? 75160
Branches ? 21047
=============================================
Hits ? 46914
Misses ? 27811
Partials ? 435
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
📦 Bundle Size
⚡ Performance Report
Absolute values
Raw data{
"timestamp": "2026-06-30T10:27:02.114Z",
"gitSha": "8501fce1d195093b6c9c754a92b3a40346e18f76",
"branch": "backport-12917-to-cloud-1.45",
"measurements": [
{
"name": "canvas-idle",
"durationMs": 2011.4550000000122,
"styleRecalcs": 8,
"styleRecalcDurationMs": 6.637999999999998,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 374.236,
"heapDeltaBytes": -2664412,
"heapUsedBytes": 57699244,
"domNodes": 16,
"jsHeapTotalBytes": 25165824,
"scriptDurationMs": 14.917000000000003,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.699999999999818
},
{
"name": "canvas-idle",
"durationMs": 2090.857999999912,
"styleRecalcs": 11,
"styleRecalcDurationMs": 13.578999999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 473.55600000000004,
"heapDeltaBytes": 17873104,
"heapUsedBytes": 86428904,
"domNodes": -299,
"jsHeapTotalBytes": 39256064,
"scriptDurationMs": 26.927,
"eventListeners": -199,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "canvas-mouse-sweep",
"durationMs": 1731.9540000000018,
"styleRecalcs": 74,
"styleRecalcDurationMs": 34.763999999999996,
"layouts": 12,
"layoutDurationMs": 3.712,
"taskDurationMs": 723.792,
"heapDeltaBytes": -7030584,
"heapUsedBytes": 53279540,
"domNodes": 56,
"jsHeapTotalBytes": 25427968,
"scriptDurationMs": 119.77499999999999,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333335,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "canvas-mouse-sweep",
"durationMs": 1754.8880000000509,
"styleRecalcs": 74,
"styleRecalcDurationMs": 33.999,
"layouts": 12,
"layoutDurationMs": 2.901,
"taskDurationMs": 728.7510000000001,
"heapDeltaBytes": -7862244,
"heapUsedBytes": 52870472,
"domNodes": 56,
"jsHeapTotalBytes": 26021888,
"scriptDurationMs": 129.48399999999998,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333335,
"p95FrameDurationMs": 16.699999999999818
},
{
"name": "canvas-zoom-sweep",
"durationMs": 1744.7260000000142,
"styleRecalcs": 30,
"styleRecalcDurationMs": 16.455,
"layouts": 6,
"layoutDurationMs": 0.516,
"taskDurationMs": 332.1,
"heapDeltaBytes": 7196984,
"heapUsedBytes": 60297976,
"domNodes": -260,
"jsHeapTotalBytes": 4915200,
"scriptDurationMs": 17.922,
"eventListeners": -158,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "canvas-zoom-sweep",
"durationMs": 1755.441000000019,
"styleRecalcs": 32,
"styleRecalcDurationMs": 23.398000000000003,
"layouts": 6,
"layoutDurationMs": 0.5170000000000001,
"taskDurationMs": 395.814,
"heapDeltaBytes": 5091664,
"heapUsedBytes": 73608264,
"domNodes": -243,
"jsHeapTotalBytes": 16973824,
"scriptDurationMs": 27.555999999999997,
"eventListeners": -169,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.699999999999818
},
{
"name": "dom-widget-clipping",
"durationMs": 602.3759999999925,
"styleRecalcs": 11,
"styleRecalcDurationMs": 9.275000000000002,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 389.41900000000004,
"heapDeltaBytes": 3168556,
"heapUsedBytes": 72163476,
"domNodes": -301,
"jsHeapTotalBytes": 7012352,
"scriptDurationMs": 57.663,
"eventListeners": -203,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666682,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "dom-widget-clipping",
"durationMs": 578.5190000000284,
"styleRecalcs": 13,
"styleRecalcDurationMs": 8.836000000000002,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 351.577,
"heapDeltaBytes": 7848888,
"heapUsedBytes": 67688248,
"domNodes": 22,
"jsHeapTotalBytes": 20709376,
"scriptDurationMs": 64.38400000000001,
"eventListeners": 0,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333335,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "large-graph-idle",
"durationMs": 2027.8320000000178,
"styleRecalcs": 9,
"styleRecalcDurationMs": 8.486,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 524.562,
"heapDeltaBytes": 10407288,
"heapUsedBytes": 66245012,
"domNodes": 18,
"jsHeapTotalBytes": 5767168,
"scriptDurationMs": 96.81300000000002,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "large-graph-idle",
"durationMs": 1991.9069999999692,
"styleRecalcs": 10,
"styleRecalcDurationMs": 9.907,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 502.5820000000001,
"heapDeltaBytes": -9130036,
"heapUsedBytes": 59810528,
"domNodes": 20,
"jsHeapTotalBytes": 13512704,
"scriptDurationMs": 93.65899999999999,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "large-graph-pan",
"durationMs": 2156.9529999999872,
"styleRecalcs": 66,
"styleRecalcDurationMs": 14.189000000000004,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 1115.985,
"heapDeltaBytes": 68893540,
"heapUsedBytes": 123710836,
"domNodes": 8,
"jsHeapTotalBytes": 43720704,
"scriptDurationMs": 393.726,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.699999999999818
},
{
"name": "large-graph-pan",
"durationMs": 2053.6670000000186,
"styleRecalcs": 66,
"styleRecalcDurationMs": 14.668999999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 992.0889999999999,
"heapDeltaBytes": 1015932,
"heapUsedBytes": 54919648,
"domNodes": 10,
"jsHeapTotalBytes": 0,
"scriptDurationMs": 376.263,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333335,
"p95FrameDurationMs": 16.699999999999818
},
{
"name": "large-graph-zoom",
"durationMs": 3081.6850000000213,
"styleRecalcs": 63,
"styleRecalcDurationMs": 15.905999999999997,
"layouts": 60,
"layoutDurationMs": 7.14,
"taskDurationMs": 1250.6299999999999,
"heapDeltaBytes": 11642736,
"heapUsedBytes": 67420612,
"domNodes": 8,
"jsHeapTotalBytes": 0,
"scriptDurationMs": 476.882,
"eventListeners": 8,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333335,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "large-graph-zoom",
"durationMs": 3099.0099999999074,
"styleRecalcs": 63,
"styleRecalcDurationMs": 16.092,
"layouts": 60,
"layoutDurationMs": 7.582,
"taskDurationMs": 1391.243,
"heapDeltaBytes": 15104228,
"heapUsedBytes": 71227900,
"domNodes": 8,
"jsHeapTotalBytes": 1835008,
"scriptDurationMs": 552.221,
"eventListeners": 8,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "minimap-idle",
"durationMs": 2019.6720000000141,
"styleRecalcs": 6,
"styleRecalcDurationMs": 5.798000000000001,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 520.567,
"heapDeltaBytes": 61893708,
"heapUsedBytes": 116263768,
"domNodes": -273,
"jsHeapTotalBytes": 36700160,
"scriptDurationMs": 89.00800000000001,
"eventListeners": -173,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333335,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "minimap-idle",
"durationMs": 2002.0110000000386,
"styleRecalcs": 9,
"styleRecalcDurationMs": 8.863,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 467.973,
"heapDeltaBytes": 10293956,
"heapUsedBytes": 70564896,
"domNodes": 18,
"jsHeapTotalBytes": 5505024,
"scriptDurationMs": 84.24699999999999,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333335,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "subgraph-dom-widget-clipping",
"durationMs": 580.976000000021,
"styleRecalcs": 47,
"styleRecalcDurationMs": 10.595000000000002,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 357.75900000000007,
"heapDeltaBytes": 8091404,
"heapUsedBytes": 66572320,
"domNodes": 20,
"jsHeapTotalBytes": 19398656,
"scriptDurationMs": 122.502,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666682,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "subgraph-dom-widget-clipping",
"durationMs": 612.8619999999501,
"styleRecalcs": 47,
"styleRecalcDurationMs": 12.398,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 411.9820000000001,
"heapDeltaBytes": 3821512,
"heapUsedBytes": 72393272,
"domNodes": -280,
"jsHeapTotalBytes": 6225920,
"scriptDurationMs": 150.02,
"eventListeners": -166,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333335,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "subgraph-idle",
"durationMs": 2029.1420000000073,
"styleRecalcs": 10,
"styleRecalcDurationMs": 12.023000000000001,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 423.56600000000003,
"heapDeltaBytes": 4441684,
"heapUsedBytes": 73341948,
"domNodes": -296,
"jsHeapTotalBytes": 21692416,
"scriptDurationMs": 22.689999999999998,
"eventListeners": -199,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "subgraph-idle",
"durationMs": 2016.1480000000438,
"styleRecalcs": 9,
"styleRecalcDurationMs": 8.208,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 344.611,
"heapDeltaBytes": -2876024,
"heapUsedBytes": 60633908,
"domNodes": 18,
"jsHeapTotalBytes": 23662592,
"scriptDurationMs": 13.967000000000002,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "subgraph-mouse-sweep",
"durationMs": 1692.5690000000202,
"styleRecalcs": 76,
"styleRecalcDurationMs": 36.884,
"layouts": 16,
"layoutDurationMs": 4.181,
"taskDurationMs": 655.344,
"heapDeltaBytes": 12634124,
"heapUsedBytes": 66720920,
"domNodes": 62,
"jsHeapTotalBytes": 22806528,
"scriptDurationMs": 95.301,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "subgraph-mouse-sweep",
"durationMs": 1707.3769999999513,
"styleRecalcs": 74,
"styleRecalcDurationMs": 36.293,
"layouts": 16,
"layoutDurationMs": 4.6290000000000004,
"taskDurationMs": 675.0110000000001,
"heapDeltaBytes": 2177956,
"heapUsedBytes": 55273428,
"domNodes": -227,
"jsHeapTotalBytes": 16187392,
"scriptDurationMs": 90.99,
"eventListeners": -166,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.670000000000012,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "subgraph-transition-enter",
"durationMs": 933.0649999999423,
"styleRecalcs": 15,
"styleRecalcDurationMs": 26.803,
"layouts": 4,
"layoutDurationMs": 12.490999999999998,
"taskDurationMs": 703.5850000000002,
"heapDeltaBytes": 4135784,
"heapUsedBytes": 92768908,
"domNodes": 13513,
"jsHeapTotalBytes": 11534336,
"scriptDurationMs": 27.823999999999987,
"eventListeners": 2527,
"totalBlockingTimeMs": 147,
"frameDurationMs": 16.66333333333335,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "viewport-pan-sweep",
"durationMs": 8172.54799999995,
"styleRecalcs": 251,
"styleRecalcDurationMs": 53.016,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 3733.634,
"heapDeltaBytes": 12348604,
"heapUsedBytes": 71204248,
"domNodes": -262,
"jsHeapTotalBytes": 3907584,
"scriptDurationMs": 1241.4260000000002,
"eventListeners": -130,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "viewport-pan-sweep",
"durationMs": 8215.843000000063,
"styleRecalcs": 252,
"styleRecalcDurationMs": 52.75300000000001,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 3640.826,
"heapDeltaBytes": -1825652,
"heapUsedBytes": 67122124,
"domNodes": 24,
"jsHeapTotalBytes": 20504576,
"scriptDurationMs": 1260.9050000000002,
"eventListeners": 20,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "vue-large-graph-idle",
"durationMs": 12777.266999999994,
"styleRecalcs": 0,
"styleRecalcDurationMs": 0,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 12726.307999999999,
"heapDeltaBytes": -27367388,
"heapUsedBytes": 169102080,
"domNodes": -3288,
"jsHeapTotalBytes": 21495808,
"scriptDurationMs": 647.5229999999999,
"eventListeners": -16462,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333326,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "vue-large-graph-idle",
"durationMs": 15173.557000000073,
"styleRecalcs": 0,
"styleRecalcDurationMs": 0,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 15123.843,
"heapDeltaBytes": 185227520,
"heapUsedBytes": 419369128,
"domNodes": -3304,
"jsHeapTotalBytes": 197394432,
"scriptDurationMs": 691.4639999999999,
"eventListeners": -16470,
"totalBlockingTimeMs": 0,
"frameDurationMs": 18.333333333333332,
"p95FrameDurationMs": 16.80000000000291
},
{
"name": "vue-large-graph-pan",
"durationMs": 17463.910999999996,
"styleRecalcs": 111,
"styleRecalcDurationMs": 20.268000000000008,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 17439.078,
"heapDeltaBytes": 197526668,
"heapUsedBytes": 438870576,
"domNodes": -3302,
"jsHeapTotalBytes": 185860096,
"scriptDurationMs": 980.2489999999999,
"eventListeners": -16468,
"totalBlockingTimeMs": 4,
"frameDurationMs": 17.780000000000047,
"p95FrameDurationMs": 16.80000000000291
},
{
"name": "vue-large-graph-pan",
"durationMs": 14426.455000000033,
"styleRecalcs": 66,
"styleRecalcDurationMs": 17.062000000000022,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 14399.318,
"heapDeltaBytes": -46181312,
"heapUsedBytes": 167344468,
"domNodes": -3302,
"jsHeapTotalBytes": 18612224,
"scriptDurationMs": 892.076,
"eventListeners": -16461,
"totalBlockingTimeMs": 35,
"frameDurationMs": 17.219999999999953,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "workflow-execution",
"durationMs": 451.3120000000299,
"styleRecalcs": 17,
"styleRecalcDurationMs": 23.494,
"layouts": 5,
"layoutDurationMs": 1.3190000000000002,
"taskDurationMs": 116.978,
"heapDeltaBytes": 5270244,
"heapUsedBytes": 67350020,
"domNodes": 170,
"jsHeapTotalBytes": 4980736,
"scriptDurationMs": 22.126,
"eventListeners": 69,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000273
},
{
"name": "workflow-execution",
"durationMs": 499.74199999996927,
"styleRecalcs": 18,
"styleRecalcDurationMs": 31.757,
"layouts": 5,
"layoutDurationMs": 1.209,
"taskDurationMs": 221.87699999999998,
"heapDeltaBytes": -22272736,
"heapUsedBytes": 47730536,
"domNodes": -202,
"jsHeapTotalBytes": 4653056,
"scriptDurationMs": 21.375999999999994,
"eventListeners": -134,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
}
]
} |
Backport of #12917 to
cloud/1.45Automatically created by backport workflow.