Skip to content

[backport cloud/1.47] feat(billing): add independent billing control flag#13816

Merged
comfy-pr-bot merged 1 commit into
cloud/1.47from
dante/backport-billing-control-enabled-cloud-1.47
Jul 19, 2026
Merged

[backport cloud/1.47] feat(billing): add independent billing control flag#13816
comfy-pr-bot merged 1 commit into
cloud/1.47from
dante/backport-billing-control-enabled-cloud-1.47

Conversation

@dante01yoon

@dante01yoon dante01yoon commented Jul 19, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds billing_control_enabled to cloud/1.47 without replacing the existing consolidated_billing_enabled rollout.

Changes

  • What: Adds the new Remote Config key, cache, enum value, and accessor while preserving consolidated billing and its personal-workspace routing.
  • Tests: Verifies the two flags resolve independently, including authenticated config values that differ.

Review Focus

The backend registers these as separate rollouts: consolidated billing selects the existing workspace-scoped billing flow, while billing control gates the new billing UX.

Screenshots (if applicable)

Not applicable; this adds flag plumbing without visual changes.

@dosubot dosubot Bot added the size:M This PR changes 30-99 lines, ignoring generated files. label Jul 19, 2026
@coderabbitai

coderabbitai Bot commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Ignore keyword(s) in the title.

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

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

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 37cee693-2d9f-4dab-88af-939c568835c6

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

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dante/backport-billing-control-enabled-cloud-1.47

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

❤️ Share

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

@github-actions

github-actions Bot commented Jul 19, 2026

Copy link
Copy Markdown

🎭 Playwright: ✅ 1694 passed, 0 failed · 3 flaky

📊 Browser Reports
  • chromium: View Report (✅ 1673 / ❌ 0 / ⚠️ 3 / ⏭️ 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)

🎨 Storybook: ✅ Built — View Storybook

Details

⏰ Completed at: 07/19/2026, 01:05:05 AM UTC

Links

📦 Bundle Size

⏳ Size data collection in progress…

⚡ Performance Report

canvas-idle: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 52.3 MB heap
canvas-mouse-sweep: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 48.4 MB heap
canvas-zoom-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 59.5 MB heap
dom-widget-clipping: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 62.3 MB heap
large-graph-idle: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 58.4 MB heap
large-graph-pan: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 67.3 MB heap
large-graph-zoom: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 67.5 MB heap
minimap-idle: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 60.8 MB heap
subgraph-dom-widget-clipping: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 44.5 MB heap
subgraph-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 64.2 MB heap
subgraph-mouse-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 60.1 MB heap
subgraph-transition-enter: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 167ms TBT · 96.7 MB heap
viewport-pan-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 72.3 MB heap
vue-large-graph-idle: · 57.1 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 161.3 MB heap
vue-large-graph-pan: · 58.1 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 45ms TBT · 162.5 MB heap
workflow-execution: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 54.5 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 9ms
canvas-idle: layout count 0
canvas-idle: style recalc count 9
canvas-idle: task duration 493ms
canvas-idle: script duration 24ms
canvas-idle: TBT 0ms
canvas-idle: heap used 52.3 MB
canvas-idle: DOM nodes -283
canvas-idle: event listeners -199
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 44ms
canvas-mouse-sweep: layout count 12
canvas-mouse-sweep: style recalc count 76
canvas-mouse-sweep: task duration 915ms
canvas-mouse-sweep: script duration 145ms
canvas-mouse-sweep: TBT 0ms
canvas-mouse-sweep: heap used 48.4 MB
canvas-mouse-sweep: DOM nodes -110
canvas-mouse-sweep: event listeners -98
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 18ms
canvas-zoom-sweep: layout count 6
canvas-zoom-sweep: style recalc count 31
canvas-zoom-sweep: task duration 338ms
canvas-zoom-sweep: script duration 23ms
canvas-zoom-sweep: TBT 0ms
canvas-zoom-sweep: heap used 59.5 MB
canvas-zoom-sweep: DOM nodes 77
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 10ms
dom-widget-clipping: layout count 0
dom-widget-clipping: style recalc count 13
dom-widget-clipping: task duration 396ms
dom-widget-clipping: script duration 64ms
dom-widget-clipping: TBT 0ms
dom-widget-clipping: heap used 62.3 MB
dom-widget-clipping: DOM nodes -132
dom-widget-clipping: event listeners -101
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 10ms
large-graph-idle: layout count 0
large-graph-idle: style recalc count 9
large-graph-idle: task duration 577ms
large-graph-idle: script duration 106ms
large-graph-idle: TBT 0ms
large-graph-idle: heap used 58.4 MB
large-graph-idle: DOM nodes -125
large-graph-idle: event listeners -96
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 20ms
large-graph-pan: layout count 0
large-graph-pan: style recalc count 70
large-graph-pan: task duration 1176ms
large-graph-pan: script duration 418ms
large-graph-pan: TBT 0ms
large-graph-pan: heap used 67.3 MB
large-graph-pan: DOM nodes -127
large-graph-pan: event listeners -96
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 18ms
large-graph-zoom: layout count 60
large-graph-zoom: style recalc count 64
large-graph-zoom: task duration 1384ms
large-graph-zoom: script duration 512ms
large-graph-zoom: TBT 0ms
large-graph-zoom: heap used 67.5 MB
large-graph-zoom: DOM nodes -135
large-graph-zoom: event listeners -94
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 592ms
minimap-idle: script duration 109ms
minimap-idle: TBT 0ms
minimap-idle: heap used 60.8 MB
minimap-idle: DOM nodes -128
minimap-idle: event listeners -96
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 13ms
subgraph-dom-widget-clipping: layout count 0
subgraph-dom-widget-clipping: style recalc count 47
subgraph-dom-widget-clipping: task duration 429ms
subgraph-dom-widget-clipping: script duration 129ms
subgraph-dom-widget-clipping: TBT 0ms
subgraph-dom-widget-clipping: heap used 44.5 MB
subgraph-dom-widget-clipping: DOM nodes -278
subgraph-dom-widget-clipping: event listeners -196
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 10
subgraph-idle: task duration 453ms
subgraph-idle: script duration 19ms
subgraph-idle: TBT 0ms
subgraph-idle: heap used 64.2 MB
subgraph-idle: DOM nodes -279
subgraph-idle: event listeners -199
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 42ms
subgraph-mouse-sweep: layout count 16
subgraph-mouse-sweep: style recalc count 76
subgraph-mouse-sweep: task duration 766ms
subgraph-mouse-sweep: script duration 102ms
subgraph-mouse-sweep: TBT 0ms
subgraph-mouse-sweep: heap used 60.1 MB
subgraph-mouse-sweep: DOM nodes -246
subgraph-mouse-sweep: event listeners -199
subgraph-transition-enter: avg frame time 17ms
subgraph-transition-enter: p95 frame time 17ms
subgraph-transition-enter: layout duration 17ms
subgraph-transition-enter: style recalc duration 34ms
subgraph-transition-enter: layout count 13
subgraph-transition-enter: style recalc count 17
subgraph-transition-enter: task duration 806ms
subgraph-transition-enter: script duration 30ms
subgraph-transition-enter: TBT 167ms
subgraph-transition-enter: heap used 96.7 MB
subgraph-transition-enter: DOM nodes 13673
subgraph-transition-enter: event listeners 2531
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 54ms
viewport-pan-sweep: layout count 0
viewport-pan-sweep: style recalc count 250
viewport-pan-sweep: task duration 4331ms
viewport-pan-sweep: script duration 1498ms
viewport-pan-sweep: TBT 0ms
viewport-pan-sweep: heap used 72.3 MB
viewport-pan-sweep: DOM nodes -270
viewport-pan-sweep: event listeners -183
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 13026ms
vue-large-graph-idle: script duration 581ms
vue-large-graph-idle: TBT 0ms
vue-large-graph-idle: heap used 161.3 MB
vue-large-graph-idle: DOM nodes -3301
vue-large-graph-idle: event listeners -16372
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 21ms
vue-large-graph-pan: layout count 0
vue-large-graph-pan: style recalc count 91
vue-large-graph-pan: task duration 15959ms
vue-large-graph-pan: script duration 829ms
vue-large-graph-pan: TBT 45ms
vue-large-graph-pan: heap used 162.5 MB
vue-large-graph-pan: DOM nodes -5807
vue-large-graph-pan: event listeners -16370
workflow-execution: avg frame time 17ms
workflow-execution: p95 frame time 17ms
workflow-execution: layout duration 1ms
workflow-execution: style recalc duration 19ms
workflow-execution: layout count 3
workflow-execution: style recalc count 11
workflow-execution: task duration 101ms
workflow-execution: script duration 10ms
workflow-execution: TBT 0ms
workflow-execution: heap used 54.5 MB
workflow-execution: DOM nodes 122
workflow-execution: event listeners 66
Raw data
{
  "timestamp": "2026-07-19T01:15:15.481Z",
  "gitSha": "55dc49db98119ae465330a3b2c86347458fe9d15",
  "branch": "dante/backport-billing-control-enabled-cloud-1.47",
  "measurements": [
    {
      "name": "canvas-idle",
      "durationMs": 2068.288999999993,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 8.148,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 480.136,
      "heapDeltaBytes": -7494072,
      "heapUsedBytes": 62434600,
      "domNodes": -280,
      "jsHeapTotalBytes": 18497536,
      "scriptDurationMs": 22.035999999999998,
      "eventListeners": -199,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-idle",
      "durationMs": 2055.663000000038,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 10.044999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 506.8300000000001,
      "heapDeltaBytes": -4937248,
      "heapUsedBytes": 47151872,
      "domNodes": -285,
      "jsHeapTotalBytes": 16379904,
      "scriptDurationMs": 25.498,
      "eventListeners": -199,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 2074.4080000000054,
      "styleRecalcs": 76,
      "styleRecalcDurationMs": 46.954,
      "layouts": 12,
      "layoutDurationMs": 4.478,
      "taskDurationMs": 991.957,
      "heapDeltaBytes": -5837224,
      "heapUsedBytes": 47324044,
      "domNodes": -276,
      "jsHeapTotalBytes": 16642048,
      "scriptDurationMs": 147.49499999999998,
      "eventListeners": -199,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1850.4159999999956,
      "styleRecalcs": 75,
      "styleRecalcDurationMs": 41.778,
      "layouts": 12,
      "layoutDurationMs": 3.615,
      "taskDurationMs": 838.8480000000001,
      "heapDeltaBytes": -3486436,
      "heapUsedBytes": 54084028,
      "domNodes": 57,
      "jsHeapTotalBytes": 18874368,
      "scriptDurationMs": 142.754,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1713.9249999999606,
      "styleRecalcs": 31,
      "styleRecalcDurationMs": 18.12,
      "layouts": 6,
      "layoutDurationMs": 0.5640000000000001,
      "taskDurationMs": 331.978,
      "heapDeltaBytes": 2499728,
      "heapUsedBytes": 63462212,
      "domNodes": 78,
      "jsHeapTotalBytes": 26214400,
      "scriptDurationMs": 22.485,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000012,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1724.1449999999077,
      "styleRecalcs": 30,
      "styleRecalcDurationMs": 17.862,
      "layouts": 6,
      "layoutDurationMs": 0.5920000000000001,
      "taskDurationMs": 343.352,
      "heapDeltaBytes": 2280572,
      "heapUsedBytes": 61221288,
      "domNodes": 76,
      "jsHeapTotalBytes": 25165824,
      "scriptDurationMs": 23.760000000000005,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 618.9269999999851,
      "styleRecalcs": 13,
      "styleRecalcDurationMs": 9.915999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 384.23799999999994,
      "heapDeltaBytes": 6205828,
      "heapUsedBytes": 70683672,
      "domNodes": 22,
      "jsHeapTotalBytes": 20992000,
      "scriptDurationMs": 62.620999999999995,
      "eventListeners": 2,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 633.1429999999045,
      "styleRecalcs": 12,
      "styleRecalcDurationMs": 9.315999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 408.59499999999997,
      "heapDeltaBytes": 7868720,
      "heapUsedBytes": 60049648,
      "domNodes": -285,
      "jsHeapTotalBytes": 10088448,
      "scriptDurationMs": 64.4,
      "eventListeners": -203,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2025.4209999999944,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 9.683,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 557.6659999999999,
      "heapDeltaBytes": -8936400,
      "heapUsedBytes": 63431144,
      "domNodes": 20,
      "jsHeapTotalBytes": 9056256,
      "scriptDurationMs": 105.298,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2041.3690000000315,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 9.825000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 596.4590000000001,
      "heapDeltaBytes": -9099160,
      "heapUsedBytes": 59088488,
      "domNodes": -269,
      "jsHeapTotalBytes": -2371584,
      "scriptDurationMs": 106.244,
      "eventListeners": -197,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2141.206000000011,
      "styleRecalcs": 69,
      "styleRecalcDurationMs": 18.662,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1206.7039999999997,
      "heapDeltaBytes": 13378804,
      "heapUsedBytes": 83231816,
      "domNodes": -271,
      "jsHeapTotalBytes": -1118208,
      "scriptDurationMs": 433.628,
      "eventListeners": -197,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2111.8470000000116,
      "styleRecalcs": 70,
      "styleRecalcDurationMs": 20.905000000000005,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1144.462,
      "heapDeltaBytes": -15619616,
      "heapUsedBytes": 57850580,
      "domNodes": 18,
      "jsHeapTotalBytes": 12464128,
      "scriptDurationMs": 402.734,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3189.1469999999913,
      "styleRecalcs": 64,
      "styleRecalcDurationMs": 18.741,
      "layouts": 60,
      "layoutDurationMs": 7.849,
      "taskDurationMs": 1403.2879999999998,
      "heapDeltaBytes": 16822660,
      "heapUsedBytes": 74252204,
      "domNodes": 10,
      "jsHeapTotalBytes": 7077888,
      "scriptDurationMs": 513.3930000000001,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3185.069999999996,
      "styleRecalcs": 63,
      "styleRecalcDurationMs": 16.392,
      "layouts": 60,
      "layoutDurationMs": 7.553,
      "taskDurationMs": 1364.372,
      "heapDeltaBytes": 13666364,
      "heapUsedBytes": 67394876,
      "domNodes": -280,
      "jsHeapTotalBytes": 0,
      "scriptDurationMs": 511.2370000000001,
      "eventListeners": -195,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "minimap-idle",
      "durationMs": 2018.453999999963,
      "styleRecalcs": 6,
      "styleRecalcDurationMs": 5.483999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 553.24,
      "heapDeltaBytes": -3662244,
      "heapUsedBytes": 59762596,
      "domNodes": -272,
      "jsHeapTotalBytes": -1093632,
      "scriptDurationMs": 105.495,
      "eventListeners": -197,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "minimap-idle",
      "durationMs": 2002.254999999991,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 9.234,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 630.956,
      "heapDeltaBytes": 10957548,
      "heapUsedBytes": 67820712,
      "domNodes": 16,
      "jsHeapTotalBytes": 4718592,
      "scriptDurationMs": 111.649,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 624.2210000000341,
      "styleRecalcs": 46,
      "styleRecalcDurationMs": 12.184000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 425.623,
      "heapDeltaBytes": -22667176,
      "heapUsedBytes": 47307592,
      "domNodes": -277,
      "jsHeapTotalBytes": 6176768,
      "scriptDurationMs": 125.84400000000001,
      "eventListeners": -197,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 612.4479999999721,
      "styleRecalcs": 47,
      "styleRecalcDurationMs": 12.973,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 432.699,
      "heapDeltaBytes": -24073080,
      "heapUsedBytes": 45974092,
      "domNodes": -278,
      "jsHeapTotalBytes": 6176768,
      "scriptDurationMs": 133.00500000000002,
      "eventListeners": -195,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2026.896000000022,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 10.465,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 451.685,
      "heapDeltaBytes": 19397872,
      "heapUsedBytes": 71869516,
      "domNodes": -287,
      "jsHeapTotalBytes": 15593472,
      "scriptDurationMs": 19.787,
      "eventListeners": -199,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2041.6139999999814,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 9.496999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 455.23999999999995,
      "heapDeltaBytes": -7413256,
      "heapUsedBytes": 62687956,
      "domNodes": -271,
      "jsHeapTotalBytes": 18759680,
      "scriptDurationMs": 18.319000000000003,
      "eventListeners": -199,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1761.3669999999502,
      "styleRecalcs": 76,
      "styleRecalcDurationMs": 44.13699999999999,
      "layouts": 16,
      "layoutDurationMs": 4.551,
      "taskDurationMs": 787.033,
      "heapDeltaBytes": 17085500,
      "heapUsedBytes": 69414472,
      "domNodes": -269,
      "jsHeapTotalBytes": 15069184,
      "scriptDurationMs": 103.759,
      "eventListeners": -199,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1719.6890000000167,
      "styleRecalcs": 75,
      "styleRecalcDurationMs": 39.864000000000004,
      "layouts": 16,
      "layoutDurationMs": 4.422000000000001,
      "taskDurationMs": 744.173,
      "heapDeltaBytes": 4277244,
      "heapUsedBytes": 56712756,
      "domNodes": -223,
      "jsHeapTotalBytes": 16379904,
      "scriptDurationMs": 100.405,
      "eventListeners": -199,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-transition-enter",
      "durationMs": 982.422999999983,
      "styleRecalcs": 17,
      "styleRecalcDurationMs": 33.805,
      "layouts": 13,
      "layoutDurationMs": 16.503000000000004,
      "taskDurationMs": 806.0240000000001,
      "heapDeltaBytes": 29116200,
      "heapUsedBytes": 101433664,
      "domNodes": 13673,
      "jsHeapTotalBytes": 15990784,
      "scriptDurationMs": 30.35600000000001,
      "eventListeners": 2531,
      "totalBlockingTimeMs": 167,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8162.779,
      "styleRecalcs": 250,
      "styleRecalcDurationMs": 54.834999999999994,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 4264.13,
      "heapDeltaBytes": 13605348,
      "heapUsedBytes": 74634292,
      "domNodes": -268,
      "jsHeapTotalBytes": 5664768,
      "scriptDurationMs": 1448.1899999999998,
      "eventListeners": -183,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8216.578000000027,
      "styleRecalcs": 249,
      "styleRecalcDurationMs": 53.614,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 4398.307,
      "heapDeltaBytes": 15822300,
      "heapUsedBytes": 76953212,
      "domNodes": -271,
      "jsHeapTotalBytes": 8810496,
      "scriptDurationMs": 1547.768,
      "eventListeners": -183,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 13320.641999999963,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 13300.431,
      "heapDeltaBytes": -21185312,
      "heapUsedBytes": 168307820,
      "domNodes": -3302,
      "jsHeapTotalBytes": 17272832,
      "scriptDurationMs": 549.381,
      "eventListeners": -16376,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.223333333333358,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 12768.256000000065,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 12751.731,
      "heapDeltaBytes": -29815108,
      "heapUsedBytes": 169896092,
      "domNodes": -3300,
      "jsHeapTotalBytes": 9175040,
      "scriptDurationMs": 612.897,
      "eventListeners": -16368,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.77333333333336,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 15676.198999999997,
      "styleRecalcs": 83,
      "styleRecalcDurationMs": 21.16699999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 15649.815999999997,
      "heapDeltaBytes": -52419244,
      "heapUsedBytes": 168338324,
      "domNodes": -8311,
      "jsHeapTotalBytes": 17297408,
      "scriptDurationMs": 827.386,
      "eventListeners": -16368,
      "totalBlockingTimeMs": 3,
      "frameDurationMs": 17.219999999999953,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 16299.759999999991,
      "styleRecalcs": 98,
      "styleRecalcDurationMs": 21.395999999999972,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 16268.957,
      "heapDeltaBytes": -16651676,
      "heapUsedBytes": 172506948,
      "domNodes": -3302,
      "jsHeapTotalBytes": 20942848,
      "scriptDurationMs": 829.841,
      "eventListeners": -16371,
      "totalBlockingTimeMs": 86,
      "frameDurationMs": 17.223333333333358,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "workflow-execution",
      "durationMs": 446.5009999999552,
      "styleRecalcs": 12,
      "styleRecalcDurationMs": 19.634,
      "layouts": 2,
      "layoutDurationMs": 0.399,
      "taskDurationMs": 100.00200000000001,
      "heapDeltaBytes": 4894356,
      "heapUsedBytes": 57509460,
      "domNodes": 128,
      "jsHeapTotalBytes": 0,
      "scriptDurationMs": 9.520000000000001,
      "eventListeners": 65,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "workflow-execution",
      "durationMs": 454.0860000000748,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 17.73,
      "layouts": 3,
      "layoutDurationMs": 0.748,
      "taskDurationMs": 102.89999999999999,
      "heapDeltaBytes": 4656316,
      "heapUsedBytes": 56883608,
      "domNodes": 115,
      "jsHeapTotalBytes": 0,
      "scriptDurationMs": 9.968000000000002,
      "eventListeners": 67,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    }
  ]
}

@dante01yoon dante01yoon added the backport Backporting a PR onto a release candidate label Jul 19, 2026
@codecov

codecov Bot commented Jul 19, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 71.42857% with 2 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/storybook/mocks/useFeatureFlags.ts 0.00% 2 Missing ⚠️
@@              Coverage Diff              @@
##             cloud/1.47   #13816   +/-   ##
=============================================
  Coverage              ?   78.26%           
=============================================
  Files                 ?     1662           
  Lines                 ?    93128           
  Branches              ?    32921           
=============================================
  Hits                  ?    72882           
  Misses                ?    19634           
  Partials              ?      612           
Flag Coverage Δ
unit 66.35% <71.42%> (?)

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

Files with missing lines Coverage Δ
src/composables/useFeatureFlags.ts 83.72% <100.00%> (ø)
src/platform/remoteConfig/refreshRemoteConfig.ts 100.00% <100.00%> (ø)
src/platform/remoteConfig/remoteConfig.ts 100.00% <100.00%> (ø)
src/storybook/mocks/useFeatureFlags.ts 0.00% <0.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.

@dante01yoon

Copy link
Copy Markdown
Collaborator Author

@luke-mino-altherr This is the cloud/1.47 equivalent of the focused cloud/1.45 dependency backport you approved in #13815. All checks are green; could you review it when available so the Members backport can proceed?

@dante01yoon
dante01yoon force-pushed the dante/backport-billing-control-enabled-cloud-1.47 branch from 077e8f3 to 5ee5620 Compare July 19, 2026 01:03
@dosubot dosubot Bot added size:S This PR changes 10-29 lines, ignoring generated files. and removed size:M This PR changes 30-99 lines, ignoring generated files. labels Jul 19, 2026
@dante01yoon dante01yoon changed the title [backport cloud/1.47] feat(billing): route personal workspaces on billing control flag [backport cloud/1.47] feat(billing): add independent billing control flag Jul 19, 2026
@comfy-pr-bot
comfy-pr-bot merged commit 629b829 into cloud/1.47 Jul 19, 2026
59 checks passed
@comfy-pr-bot
comfy-pr-bot deleted the dante/backport-billing-control-enabled-cloud-1.47 branch July 19, 2026 01:21
@github-actions github-actions Bot locked and limited conversation to collaborators Jul 19, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

backport Backporting a PR onto a release candidate size:S This PR changes 10-29 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants