Skip to content

fix: prevent confirm dialog buttons from being unreachable on mobile with long text#8746

Open
christian-byrne wants to merge 7 commits intomainfrom
fix/mobile/confirm-dialog-textbreak
Open

fix: prevent confirm dialog buttons from being unreachable on mobile with long text#8746
christian-byrne wants to merge 7 commits intomainfrom
fix/mobile/confirm-dialog-textbreak

Conversation

@christian-byrne
Copy link
Contributor

@christian-byrne christian-byrne commented Feb 8, 2026

Summary

Fix confirm dialog buttons becoming unreachable on mobile when text contains long unbreakable words (e.g. content-hashed filenames with 100+ characters).

image

Changes

  • What: Added overflow-wrap: break-word and flex-wrap to both confirm dialog systems so long words break properly and buttons wrap on narrow screens.
    • ConfirmationDialogContent.vue: Added overflow-wrap: break-word to the existing scoped style and flex-wrap to button row.
    • ConfirmBody.vue: Added break-words tailwind class.
    • ConfirmFooter.vue: Added flex-wrap to button section.

Review Focus

Minimal CSS-only fix across both dialog systems (legacy dialogService.confirm() and newer showConfirmDialog()). No behavioral changes.

┆Issue is synchronized with this Notion page by Unito

@christian-byrne christian-byrne requested a review from a team as a code owner February 8, 2026 21:42
@christian-byrne christian-byrne self-assigned this Feb 8, 2026
@dosubot dosubot bot added the size:M This PR changes 30-99 lines, ignoring generated files. label Feb 8, 2026
@github-actions
Copy link

github-actions bot commented Feb 8, 2026

🎨 Storybook Build Status

Build completed successfully!

⏰ Completed at: 02/14/2026, 03:31:12 AM UTC

🔗 Links


🎉 Your Storybook is ready for review!

@github-actions
Copy link

github-actions bot commented Feb 8, 2026

Playwright: ❌ 517 passed, 1 failed · 4 flaky

❌ Failed Tests

📊 Browser Reports
  • chromium: View Report (✅ 504 / ❌ 1 / ⚠️ 4 / ⏭️ 8)
  • chromium-2x: View Report (✅ 2 / ❌ 0 / ⚠️ 0 / ⏭️ 0)
  • chromium-0.5x: View Report (✅ 1 / ❌ 0 / ⚠️ 0 / ⏭️ 0)
  • mobile-chrome: View Report (✅ 10 / ❌ 0 / ⚠️ 0 / ⏭️ 0)

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 8, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Updated confirmation dialog templates to improve handling of long/unbroken text (word-break and whitespace preservation), constrain dialog height with scrolling, and allow action buttons to wrap on narrow viewports; added unit and Playwright tests validating long-message rendering and responsive button layout.

Changes

Cohort / File(s) Summary
Confirm dialog UI
src/components/dialog/confirm/ConfirmBody.vue, src/components/dialog/confirm/ConfirmFooter.vue, src/components/dialog/content/ConfirmationDialogContent.vue, src/components/dialog/GlobalDialog.vue
Added Tailwind utilities (break-words, whitespace-pre-wrap, flex-wrap, flex-shrink-0) and restructured dialog content to introduce a top-level wrapper and a bottom action row that can wrap. Constrained global dialog height (max-height: 90vh) and enabled vertical scrolling (overflow-y: auto) in the dialog content. Removed previous scoped white-space style. No prop or public API changes.
Tests
src/components/dialog/content/ConfirmationDialogContent.test.ts, browser_tests/tests/confirmDialogTextWrap.spec.ts
Added unit test verifying long unbroken messages render and button container includes wrapping classes; added Playwright E2E test asserting dialog visibility and that Confirm/Cancel buttons are in viewport for a long filename on narrow/mobile viewport.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐇 I nibbled at a stubborn line so tight,
Gave words some room and buttons space to light.
Now long names bend and dialogs scroll with grace,
A little rabbit tweak — everything in place.

🚥 Pre-merge checks | ✅ 2 | ❌ 2
❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Merge Conflict Detection ⚠️ Warning ❌ Merge conflicts detected (249 files):

⚔️ .oxlintrc.json (content)
⚔️ .storybook/main.ts (content)
⚔️ browser_tests/fixtures/components/SettingDialog.ts (content)
⚔️ browser_tests/tests/bottomPanelShortcuts.spec.ts (content)
⚔️ browser_tests/tests/dialog.spec.ts (content)
⚔️ browser_tests/tests/interaction.spec.ts-snapshots/dragged-node1-chromium-linux.png (content)
⚔️ browser_tests/tests/mobileBaseline.spec.ts-snapshots/mobile-settings-dialog-mobile-chrome-linux.png (content)
⚔️ browser_tests/tests/subgraph.spec.ts (content)
⚔️ browser_tests/tests/templates.spec.ts-snapshots/template-grid-varying-content-chromium-linux.png (content)
⚔️ browser_tests/tests/useSettingSearch.spec.ts (content)
⚔️ browser_tests/tests/viewport.spec.ts-snapshots/viewport-fits-when-saved-offscreen-chromium-linux.png (content)
⚔️ browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-dragging-link-chromium-linux.png (content)
⚔️ browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-input-drag-ctrl-alt-chromium-linux.png (content)
⚔️ browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-input-drag-reuses-origin-chromium-linux.png (content)
⚔️ browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-reroute-input-drag-chromium-linux.png (content)
⚔️ browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-reroute-output-shift-drag-chromium-linux.png (content)
⚔️ browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-shift-output-multi-link-chromium-linux.png (content)
⚔️ browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-snap-to-node-chromium-linux.png (content)
⚔️ browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-snap-to-slot-chromium-linux.png (content)
⚔️ browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts-snapshots/bring-to-front-overlapped-after-chromium-linux.png (content)
⚔️ browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts-snapshots/bring-to-front-overlapped-before-chromium-linux.png (content)
⚔️ browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts-snapshots/bring-to-front-widget-overlapped-after-chromium-linux.png (content)
⚔️ browser_tests/tests/vueNodes/interactions/node/bringToFront.spec.ts-snapshots/bring-to-front-widget-overlapped-before-chromium-linux.png (content)
⚔️ browser_tests/tests/vueNodes/widgets/load/uploadWidgets.spec.ts-snapshots/vue-nodes-upload-widgets-chromium-linux.png (content)
⚔️ global.d.ts (content)
⚔️ index.html (content)
⚔️ package.json (content)
⚔️ pnpm-lock.yaml (content)
⚔️ pnpm-workspace.yaml (content)
⚔️ src/base/common/downloadUtil.test.ts (content)
⚔️ src/base/common/downloadUtil.ts (content)
⚔️ src/components/TopMenuSection.test.ts (content)
⚔️ src/components/TopMenuSection.vue (content)
⚔️ src/components/bottomPanel/BottomPanel.vue (content)
⚔️ src/components/common/TreeExplorer.vue (content)
⚔️ src/components/common/TreeExplorerTreeNode.vue (content)
⚔️ src/components/custom/widget/WorkflowTemplateSelectorDialog.vue (content)
⚔️ src/components/dialog/GlobalDialog.vue (content)
⚔️ src/components/dialog/confirm/ConfirmBody.vue (content)
⚔️ src/components/dialog/confirm/ConfirmFooter.vue (content)
⚔️ src/components/dialog/content/ConfirmationDialogContent.vue (content)
⚔️ src/components/dialog/content/MissingModelsWarning.vue (content)
⚔️ src/components/dialog/content/MissingNodesFooter.vue (content)
⚔️ src/components/dialog/content/TopUpCreditsDialogContentLegacy.vue (content)
⚔️ src/components/dialog/content/TopUpCreditsDialogContentWorkspace.vue (content)
⚔️ src/components/dialog/content/setting/AboutPanel.vue (content)
⚔️ src/components/dialog/content/setting/KeybindingPanel.vue (content)
⚔️ src/components/dialog/content/setting/LegacyCreditsPanel.vue (content)
⚔️ src/components/dialog/content/setting/MembersPanelContent.vue (content)
⚔️ src/components/dialog/content/setting/UserPanel.vue (content)
⚔️ src/components/dialog/content/setting/WorkspacePanelContent.vue (content)
⚔️ src/components/dialog/content/workspace/InviteMemberDialogContent.vue (content)
⚔️ src/components/graph/GraphCanvas.vue (content)
⚔️ src/components/graph/SelectionToolbox.vue (content)
⚔️ src/components/graph/widgets/DomWidget.vue (content)
⚔️ src/components/rightSidePanel/RightSidePanel.vue (content)
⚔️ src/components/rightSidePanel/parameters/WidgetItem.vue (content)
⚔️ src/components/rightSidePanel/settings/TabGlobalSettings.vue (content)
⚔️ src/components/sidebar/ComfyMenuButton.vue (content)
⚔️ src/components/sidebar/tabs/WorkflowsSidebarTab.vue (content)
⚔️ src/components/sidebar/tabs/nodeLibrary/NodeBookmarkTreeExplorer.vue (content)
⚔️ src/components/sidebar/tabs/nodeLibrary/NodeTreeFolder.vue (content)
⚔️ src/components/topbar/CurrentUserPopoverLegacy.test.ts (content)
⚔️ src/components/topbar/CurrentUserPopoverLegacy.vue (content)
⚔️ src/components/topbar/CurrentUserPopoverWorkspace.vue (content)
⚔️ src/components/ui/Popover.vue (content)
⚔️ src/components/widget/layout/BaseModalLayout.vue (content)
⚔️ src/composables/billing/types.ts (content)
⚔️ src/composables/billing/useBillingContext.test.ts (content)
⚔️ src/composables/billing/useBillingContext.ts (content)
⚔️ src/composables/billing/useWorkspaceBilling.ts (content)
⚔️ src/composables/graph/useGraphNodeManager.test.ts (content)
⚔️ src/composables/graph/useGraphNodeManager.ts (content)
⚔️ src/composables/node/usePriceBadge.ts (content)
⚔️ src/composables/queue/useJobList.test.ts (content)
⚔️ src/composables/queue/useJobList.ts (content)
⚔️ src/composables/tree/useTreeFolderOperations.ts (content)
⚔️ src/composables/useCoreCommands.test.ts (content)
⚔️ src/composables/useCoreCommands.ts (content)
⚔️ src/composables/useFeatureFlags.ts (content)
⚔️ src/composables/useLoad3d.ts (content)
⚔️ src/composables/useLoad3dDrag.test.ts (content)
⚔️ src/composables/usePaste.test.ts (content)
⚔️ src/composables/usePaste.ts (content)
⚔️ src/composables/useWorkflowTemplateSelectorDialog.ts (content)
⚔️ src/constants/serverConfig.ts (content)
⚔️ src/core/graph/subgraph/proxyWidget.test.ts (content)
⚔️ src/core/graph/subgraph/proxyWidget.ts (content)
⚔️ src/core/graph/subgraph/proxyWidgetUtils.ts (content)
⚔️ src/extensions/core/electronAdapter.ts (content)
⚔️ src/extensions/core/groupNode.ts (content)
⚔️ src/extensions/core/load3d.ts (content)
⚔️ src/extensions/core/load3d/constants.ts (content)
⚔️ src/extensions/core/load3dLazy.ts (content)
⚔️ src/extensions/core/previewAny.ts (content)
⚔️ src/extensions/core/slotDefaults.ts (content)
⚔️ src/extensions/core/uploadAudio.ts (content)
⚔️ src/lib/litegraph/src/LGraph.test.ts (content)
⚔️ src/lib/litegraph/src/LGraph.ts (content)
⚔️ src/lib/litegraph/src/LGraphCanvas.slotHitDetection.test.ts (content)
⚔️ src/lib/litegraph/src/LGraphCanvas.ts (content)
⚔️ src/lib/litegraph/src/LGraphNode.test.ts (content)
⚔️ src/lib/litegraph/src/LGraphNode.ts (content)
⚔️ src/lib/litegraph/src/LGraphNode.widgetOrder.test.ts (content)
⚔️ src/lib/litegraph/src/canvas/LinkConnectorSubgraphInputValidation.test.ts (content)
⚔️ src/lib/litegraph/src/canvas/ToInputFromIoNodeLink.ts (content)
⚔️ src/lib/litegraph/src/types/widgets.ts (content)
⚔️ src/lib/litegraph/src/utils/arrange.ts (content)
⚔️ src/lib/litegraph/src/utils/type.ts (content)
⚔️ src/lib/litegraph/src/widgets/BaseWidget.ts (content)
⚔️ src/locales/ar/main.json (content)
⚔️ src/locales/ar/nodeDefs.json (content)
⚔️ src/locales/ar/settings.json (content)
⚔️ src/locales/en/main.json (content)
⚔️ src/locales/en/nodeDefs.json (content)
⚔️ src/locales/en/settings.json (content)
⚔️ src/locales/es/main.json (content)
⚔️ src/locales/es/nodeDefs.json (content)
⚔️ src/locales/es/settings.json (content)
⚔️ src/locales/fa/main.json (content)
⚔️ src/locales/fa/nodeDefs.json (content)
⚔️ src/locales/fa/settings.json (content)
⚔️ src/locales/fr/main.json (content)
⚔️ src/locales/fr/nodeDefs.json (content)
⚔️ src/locales/fr/settings.json (content)
⚔️ src/locales/ja/main.json (content)
⚔️ src/locales/ja/nodeDefs.json (content)
⚔️ src/locales/ja/settings.json (content)
⚔️ src/locales/ko/main.json (content)
⚔️ src/locales/ko/nodeDefs.json (content)
⚔️ src/locales/ko/settings.json (content)
⚔️ src/locales/pt-BR/main.json (content)
⚔️ src/locales/pt-BR/nodeDefs.json (content)
⚔️ src/locales/pt-BR/settings.json (content)
⚔️ src/locales/ru/main.json (content)
⚔️ src/locales/ru/nodeDefs.json (content)
⚔️ src/locales/ru/settings.json (content)
⚔️ src/locales/tr/main.json (content)
⚔️ src/locales/tr/nodeDefs.json (content)
⚔️ src/locales/tr/settings.json (content)
⚔️ src/locales/zh-TW/main.json (content)
⚔️ src/locales/zh-TW/nodeDefs.json (content)
⚔️ src/locales/zh-TW/settings.json (content)
⚔️ src/locales/zh/main.json (content)
⚔️ src/locales/zh/nodeDefs.json (content)
⚔️ src/locales/zh/settings.json (content)
⚔️ src/platform/assets/components/UploadModelUrlInput.vue (content)
⚔️ src/platform/assets/composables/useAssetBrowserDialog.ts (content)
⚔️ src/platform/auth/workspace/useWorkspaceSwitch.test.ts (content)
⚔️ src/platform/cloud/subscription/components/PricingTable.test.ts (content)
⚔️ src/platform/cloud/subscription/components/PricingTable.vue (content)
⚔️ src/platform/cloud/subscription/components/PricingTableWorkspace.vue (content)
⚔️ src/platform/cloud/subscription/components/SubscriptionPanel.vue (content)
⚔️ src/platform/cloud/subscription/components/SubscriptionPanelContentWorkspace.vue (content)
⚔️ src/platform/cloud/subscription/composables/useSubscription.test.ts (content)
⚔️ src/platform/cloud/subscription/composables/useSubscription.ts (content)
⚔️ src/platform/cloud/subscription/constants/tierPricing.ts (content)
⚔️ src/platform/cloud/subscription/utils/subscriptionCheckoutUtil.test.ts (content)
⚔️ src/platform/cloud/subscription/utils/subscriptionCheckoutUtil.ts (content)
⚔️ src/platform/keybindings/keybindingService.ts (content)
⚔️ src/platform/settings/components/ExtensionPanel.vue (content)
⚔️ src/platform/settings/components/ServerConfigPanel.vue (content)
⚔️ src/platform/settings/components/SettingGroup.vue (content)
⚔️ src/platform/settings/composables/useSettingUI.ts (content)
⚔️ src/platform/settings/constants/coreSettings.ts (content)
⚔️ src/platform/settings/settingStore.test.ts (content)
⚔️ src/platform/settings/settingStore.ts (content)
⚔️ src/platform/settings/types.ts (content)
⚔️ src/platform/telemetry/initTelemetry.ts (content)
⚔️ src/platform/telemetry/types.ts (content)
⚔️ src/platform/telemetry/utils/__tests__/checkoutAttribution.test.ts (content)
⚔️ src/platform/telemetry/utils/checkoutAttribution.ts (content)
⚔️ src/platform/updates/common/releaseStore.test.ts (content)
⚔️ src/platform/updates/common/releaseStore.ts (content)
⚔️ src/platform/workspace/api/workspaceApi.ts (content)
⚔️ src/platform/workspace/composables/useInviteUrlLoader.test.ts (content)
⚔️ src/platform/workspace/composables/useInviteUrlLoader.ts (content)
⚔️ src/platform/workspace/composables/useWorkspaceUI.ts (content)
⚔️ src/platform/workspace/stores/teamWorkspaceStore.test.ts (content)
⚔️ src/platform/workspace/stores/teamWorkspaceStore.ts (content)
⚔️ src/renderer/core/canvas/litegraph/litegraphLinkAdapter.ts (content)
⚔️ src/renderer/core/layout/store/layoutStore.test.ts (content)
⚔️ src/renderer/core/layout/store/layoutStore.ts (content)
⚔️ src/renderer/core/layout/types.ts (content)
⚔️ src/renderer/extensions/vueNodes/components/ImagePreview.test.ts (content)
⚔️ src/renderer/extensions/vueNodes/components/ImagePreview.vue (content)
⚔️ src/renderer/extensions/vueNodes/components/InputSlot.vue (content)
⚔️ src/renderer/extensions/vueNodes/components/LGraphNode.vue (content)
⚔️ src/renderer/extensions/vueNodes/components/LGraphNodePreview.vue (content)
⚔️ src/renderer/extensions/vueNodes/components/NodeHeader.vue (content)
⚔️ src/renderer/extensions/vueNodes/components/NodeWidgets.test.ts (content)
⚔️ src/renderer/extensions/vueNodes/components/NodeWidgets.vue (content)
⚔️ src/renderer/extensions/vueNodes/components/OutputSlot.vue (content)
⚔️ src/renderer/extensions/vueNodes/components/SlotConnectionDot.vue (content)
⚔️ src/renderer/extensions/vueNodes/composables/useSlotElementTracking.ts (content)
⚔️ src/renderer/extensions/vueNodes/composables/useVueNodeResizeTracking.ts (content)
⚔️ src/renderer/extensions/vueNodes/interactions/resize/useNodeResize.ts (content)
⚔️ src/renderer/extensions/vueNodes/widgets/components/WidgetDOM.vue (content)
⚔️ src/renderer/extensions/vueNodes/widgets/components/WidgetSelect.test.ts (content)
⚔️ src/renderer/extensions/vueNodes/widgets/components/WidgetSelect.vue (content)
⚔️ src/renderer/extensions/vueNodes/widgets/components/WidgetSelectDefault.vue (content)
⚔️ src/renderer/extensions/vueNodes/widgets/components/WidgetSelectDropdown.test.ts (content)
⚔️ src/renderer/extensions/vueNodes/widgets/components/WidgetSelectDropdown.vue (content)
⚔️ src/renderer/extensions/vueNodes/widgets/components/WidgetTextarea.vue (content)
⚔️ src/renderer/extensions/vueNodes/widgets/components/form/dropdown/FormDropdown.vue (content)
⚔️ src/renderer/extensions/vueNodes/widgets/components/form/dropdown/FormDropdownInput.vue (content)
⚔️ src/renderer/extensions/vueNodes/widgets/composables/useMarkdownWidget.ts (content)
⚔️ src/renderer/extensions/vueNodes/widgets/composables/useProgressTextWidget.ts (content)
⚔️ src/renderer/extensions/vueNodes/widgets/composables/useStringWidget.ts (content)
⚔️ src/renderer/extensions/vueNodes/widgets/composables/useWidgetRenderer.test.ts (content)
⚔️ src/schemas/apiSchema.ts (content)
⚔️ src/schemas/nodeDefSchema.ts (content)
⚔️ src/scripts/api.ts (content)
⚔️ src/scripts/app.ts (content)
⚔️ src/scripts/domWidget.ts (content)
⚔️ src/scripts/metadata/png.ts (content)
⚔️ src/scripts/ui.ts (content)
⚔️ src/scripts/widgets.ts (content)
⚔️ src/services/dialogService.ts (content)
⚔️ src/services/extensionService.ts (content)
⚔️ src/services/litegraphService.ts (content)
⚔️ src/stores/billingOperationStore.test.ts (content)
⚔️ src/stores/billingOperationStore.ts (content)
⚔️ src/stores/executionStore.ts (content)
⚔️ src/stores/firebaseAuthStore.test.ts (content)
⚔️ src/stores/imagePreviewStore.test.ts (content)
⚔️ src/stores/imagePreviewStore.ts (content)
⚔️ src/stores/modelToNodeStore.test.ts (content)
⚔️ src/stores/modelToNodeStore.ts (content)
⚔️ src/stores/queueStore.ts (content)
⚔️ src/stores/serverConfigStore.test.ts (content)
⚔️ src/stores/workspace/rightSidePanelStore.ts (content)
⚔️ src/types/comfy.ts (content)
⚔️ src/types/litegraph-augmentation.d.ts (content)
⚔️ src/types/treeExplorerTypes.ts (content)
⚔️ src/types/widgetTypes.ts (content)
⚔️ src/utils/__tests__/eventUtils.test.ts (content)
⚔️ src/utils/eventUtils.ts (content)
⚔️ src/utils/litegraphUtil.test.ts (content)
⚔️ src/utils/litegraphUtil.ts (content)
⚔️ src/views/GraphView.vue (content)
⚔️ src/workbench/extensions/manager/components/manager/NodeConflictDialogContent.test.ts (content)
⚔️ src/workbench/extensions/manager/components/manager/PackVersionBadge.test.ts (content)
⚔️ src/workbench/extensions/manager/components/manager/PackVersionBadge.vue (content)
⚔️ src/workbench/extensions/manager/components/manager/PackVersionSelectorPopover.test.ts (content)
⚔️ src/workbench/extensions/manager/components/manager/button/PackEnableToggle.test.ts (content)
⚔️ src/workbench/extensions/manager/composables/useManagerDialog.ts (content)
⚔️ src/workbench/extensions/manager/composables/useManagerState.test.ts (content)
⚔️ src/workbench/extensions/manager/composables/useManagerState.ts (content)

These conflicts must be resolved before merging into main.
Resolve conflicts locally and push changes to this branch.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically describes the main fix: preventing confirm dialog buttons from becoming unreachable on mobile when text contains long words.
Description check ✅ Passed The description comprehensively covers all required sections: a clear summary of the problem, detailed changes across both dialog systems, and explicit focus on the CSS-only nature of the fix.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/mobile/confirm-dialog-textbreak

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

Copy link
Contributor Author

@christian-byrne christian-byrne left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add a playwright test

Comment on lines 43 to 47
it('uses flex-wrap on button container for narrow viewports', () => {
const wrapper = mountComponent()
const buttonRow = wrapper.find('.flex.flex-wrap.justify-end.gap-4')
expect(buttonRow.exists()).toBe(true)
})
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not necessary test

@github-actions
Copy link

github-actions bot commented Feb 8, 2026

Bundle Size Report

Summary

  • Raw size: 19.8 MB baseline 19.8 MB — 🟢 -66 B
  • Gzip: 4.24 MB baseline 4.24 MB — 🟢 -160 B
  • Brotli: 3.29 MB baseline 3.29 MB — 🔴 +292 B
  • Bundles: 230 current • 230 baseline • 108 added / 108 removed

Category Glance
Data & Services 🟢 -66 B (2.15 MB) · Vendor & Third-Party ⚪ 0 B (8.69 MB) · Other ⚪ 0 B (7.31 MB) · Graph Workspace ⚪ 0 B (879 kB) · Panels & Settings ⚪ 0 B (427 kB) · Utilities & Hooks ⚪ 0 B (237 kB) · + 5 more

Per-category breakdown
App Entry Points — 21.7 kB (baseline 21.7 kB) • ⚪ 0 B

Main entry bundles and manifests

File Before After Δ Raw Δ Gzip Δ Brotli
assets/index-B-4uiC3g.js (removed) 21.7 kB 🟢 -21.7 kB 🟢 -7.02 kB 🟢 -6.1 kB
assets/index-BwF4h4oF.js (new) 21.7 kB 🔴 +21.7 kB 🔴 +7.02 kB 🔴 +6.11 kB

Status: 1 added / 1 removed

Graph Workspace — 879 kB (baseline 879 kB) • ⚪ 0 B

Graph editor runtime, canvas, workflow orchestration

File Before After Δ Raw Δ Gzip Δ Brotli
assets/GraphView-C50o00_Z.js (new) 879 kB 🔴 +879 kB 🔴 +190 kB 🔴 +145 kB
assets/GraphView-HoeLwPCL.js (removed) 879 kB 🟢 -879 kB 🟢 -190 kB 🟢 -144 kB

Status: 1 added / 1 removed

Views & Navigation — 68.9 kB (baseline 68.9 kB) • ⚪ 0 B

Top-level views, pages, and routed surfaces

File Before After Δ Raw Δ Gzip Δ Brotli
assets/CloudSurveyView-BxH3gGLI.js (new) 15.4 kB 🔴 +15.4 kB 🔴 +3.31 kB 🔴 +2.81 kB
assets/CloudSurveyView-CBqtF8kn.js (removed) 15.4 kB 🟢 -15.4 kB 🟢 -3.31 kB 🟢 -2.81 kB
assets/CloudLoginView-BPYfz2sO.js (removed) 10.1 kB 🟢 -10.1 kB 🟢 -2.95 kB 🟢 -2.6 kB
assets/CloudLoginView-CZvQUetg.js (new) 10.1 kB 🔴 +10.1 kB 🔴 +2.95 kB 🔴 +2.59 kB
assets/UserCheckView-dk8b91ST.js (new) 8.38 kB 🔴 +8.38 kB 🔴 +2.21 kB 🔴 +1.92 kB
assets/UserCheckView-rsW2C4uJ.js (removed) 8.38 kB 🟢 -8.38 kB 🟢 -2.21 kB 🟢 -1.92 kB
assets/CloudSignupView-bgXlp5B9.js (removed) 7.46 kB 🟢 -7.46 kB 🟢 -2.34 kB 🟢 -2.06 kB
assets/CloudSignupView-BIImca4p.js (new) 7.46 kB 🔴 +7.46 kB 🔴 +2.34 kB 🔴 +2.07 kB
assets/CloudLayoutView-BEJFkiYG.js (new) 6.48 kB 🔴 +6.48 kB 🔴 +2.12 kB 🔴 +1.85 kB
assets/CloudLayoutView-D4uKhBJy.js (removed) 6.48 kB 🟢 -6.48 kB 🟢 -2.12 kB 🟢 -1.85 kB
assets/CloudForgotPasswordView-C9nkN6yw.js (new) 5.61 kB 🔴 +5.61 kB 🔴 +1.96 kB 🔴 +1.73 kB
assets/CloudForgotPasswordView-CqbjZlSZ.js (removed) 5.61 kB 🟢 -5.61 kB 🟢 -1.96 kB 🟢 -1.75 kB
assets/CloudAuthTimeoutView-BNXUuLR9.js (removed) 4.96 kB 🟢 -4.96 kB 🟢 -1.79 kB 🟢 -1.57 kB
assets/CloudAuthTimeoutView-nDfUX-Kg.js (new) 4.96 kB 🔴 +4.96 kB 🔴 +1.79 kB 🔴 +1.56 kB
assets/CloudSubscriptionRedirectView-D0ywmgni.js (new) 4.76 kB 🔴 +4.76 kB 🔴 +1.8 kB 🔴 +1.59 kB
assets/CloudSubscriptionRedirectView-uUkSW1Gm.js (removed) 4.76 kB 🟢 -4.76 kB 🟢 -1.8 kB 🟢 -1.59 kB
assets/UserSelectView-Bruzmf77.js (new) 4.46 kB 🔴 +4.46 kB 🔴 +1.62 kB 🔴 +1.46 kB
assets/UserSelectView-SHW8t_Tu.js (removed) 4.46 kB 🟢 -4.46 kB 🟢 -1.62 kB 🟢 -1.45 kB
assets/CloudSorryContactSupportView-CnbSE1aL.js 1.02 kB 1.02 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/layout-BN-ntRG8.js 296 B 296 B ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 9 added / 9 removed

Panels & Settings — 427 kB (baseline 427 kB) • ⚪ 0 B

Configuration panels, inspectors, and settings screens

File Before After Δ Raw Δ Gzip Δ Brotli
assets/SecretsPanel-CoaeQO2w.js (removed) 21.5 kB 🟢 -21.5 kB 🟢 -5.29 kB 🟢 -4.63 kB
assets/SecretsPanel-DIBJlEPW.js (new) 21.5 kB 🔴 +21.5 kB 🔴 +5.29 kB 🔴 +4.63 kB
assets/LegacyCreditsPanel-5MrW8D7N.js (new) 20.7 kB 🔴 +20.7 kB 🔴 +5.59 kB 🔴 +4.91 kB
assets/LegacyCreditsPanel-LG8q37G-.js (removed) 20.7 kB 🟢 -20.7 kB 🟢 -5.59 kB 🟢 -4.91 kB
assets/SubscriptionPanel-_53aybBI.js (removed) 18.7 kB 🟢 -18.7 kB 🟢 -4.73 kB 🟢 -4.2 kB
assets/SubscriptionPanel-LLv3diJo.js (new) 18.7 kB 🔴 +18.7 kB 🔴 +4.73 kB 🔴 +4.18 kB
assets/KeybindingPanel-B8L_1dwu.js (new) 12.4 kB 🔴 +12.4 kB 🔴 +3.59 kB 🔴 +3.19 kB
assets/KeybindingPanel-BpppPVaj.js (removed) 12.4 kB 🟢 -12.4 kB 🟢 -3.6 kB 🟢 -3.19 kB
assets/ExtensionPanel-D3zXea73.js (new) 9.43 kB 🔴 +9.43 kB 🔴 +2.67 kB 🔴 +2.37 kB
assets/ExtensionPanel-D8-2ApDh.js (removed) 9.43 kB 🟢 -9.43 kB 🟢 -2.68 kB 🟢 -2.37 kB
assets/AboutPanel-BMqYYs0W.js (new) 8.49 kB 🔴 +8.49 kB 🔴 +2.43 kB 🔴 +2.18 kB
assets/AboutPanel-rxUgzD8Q.js (removed) 8.49 kB 🟢 -8.49 kB 🟢 -2.43 kB 🟢 -2.18 kB
assets/ServerConfigPanel-CbbyjosB.js (new) 6.5 kB 🔴 +6.5 kB 🔴 +2.13 kB 🔴 +1.91 kB
assets/ServerConfigPanel-SL8H6x6E.js (removed) 6.5 kB 🟢 -6.5 kB 🟢 -2.13 kB 🟢 -1.94 kB
assets/UserPanel-ChyW243S.js (removed) 6.21 kB 🟢 -6.21 kB 🟢 -2.02 kB 🟢 -1.76 kB
assets/UserPanel-DFG5radm.js (new) 6.21 kB 🔴 +6.21 kB 🔴 +2.02 kB 🔴 +1.76 kB
assets/cloudRemoteConfig-C5w8qMm4.js (removed) 1.49 kB 🟢 -1.49 kB 🟢 -732 B 🟢 -630 B
assets/cloudRemoteConfig-DFUi0Pam.js (new) 1.49 kB 🔴 +1.49 kB 🔴 +730 B 🔴 +630 B
assets/refreshRemoteConfig-ByVkUIJt.js (new) 1.14 kB 🔴 +1.14 kB 🔴 +521 B 🔴 +459 B
assets/refreshRemoteConfig-DjjXNcoP.js (removed) 1.14 kB 🟢 -1.14 kB 🟢 -520 B 🟢 -456 B
assets/config-CepyQFhC.js 996 B 996 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-8z66fa9o.js 29.2 kB 29.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-B_EruZyQ.js 27.1 kB 27.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-BPuOKZZg.js 23.9 kB 23.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-C5NycgSh.js 31.6 kB 31.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-CF6cmuWq.js 37.6 kB 37.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-CMSM0-YP.js 28.1 kB 28.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-Djbh331J.js 29.8 kB 29.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-emoCO0AT.js 27.3 kB 27.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-H0rWARzj.js 23.3 kB 23.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-HiOqkizv.js 28 kB 28 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-ohqijv3i.js 33.3 kB 33.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 10 added / 10 removed

User & Accounts — 16.1 kB (baseline 16.1 kB) • ⚪ 0 B

Authentication, profile, and account management bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/auth-C3VuSxTJ.js (new) 3.4 kB 🔴 +3.4 kB 🔴 +1.18 kB 🔴 +992 B
assets/auth-DDlx1Uue.js (removed) 3.4 kB 🟢 -3.4 kB 🟢 -1.18 kB 🟢 -989 B
assets/SignUpForm-CCi-Rn6H.js (new) 3.01 kB 🔴 +3.01 kB 🔴 +1.23 kB 🔴 +1.09 kB
assets/SignUpForm-Cv6_Z_Rl.js (removed) 3.01 kB 🟢 -3.01 kB 🟢 -1.23 kB 🟢 -1.09 kB
assets/UpdatePasswordContent-B7fkOjTt.js (removed) 2.42 kB 🟢 -2.42 kB 🟢 -1.09 kB 🟢 -961 B
assets/UpdatePasswordContent-DAJcB4vp.js (new) 2.42 kB 🔴 +2.42 kB 🔴 +1.09 kB 🔴 +960 B
assets/firebaseAuthStore-BrKFmNVr.js (removed) 837 B 🟢 -837 B 🟢 -417 B 🟢 -366 B
assets/firebaseAuthStore-ePg5tVNE.js (new) 837 B 🔴 +837 B 🔴 +414 B 🔴 +371 B
assets/auth-D0b3BgID.js (removed) 317 B 🟢 -317 B 🟢 -206 B 🟢 -195 B
assets/auth-Ds3sZZL5.js (new) 317 B 🔴 +317 B 🔴 +208 B 🔴 +196 B
assets/PasswordFields-CdUdjtQy.js 4.51 kB 4.51 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WorkspaceProfilePic-BQO-2kig.js 1.57 kB 1.57 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 5 added / 5 removed

Editors & Dialogs — 785 B (baseline 785 B) • ⚪ 0 B

Modals, dialogs, drawers, and in-app editors

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useSubscriptionDialog-D5ZE7vem.js (removed) 785 B 🟢 -785 B 🟢 -404 B 🟢 -348 B
assets/useSubscriptionDialog-D7YVmf57.js (new) 785 B 🔴 +785 B 🔴 +402 B 🔴 +346 B

Status: 1 added / 1 removed

UI Components — 36.6 kB (baseline 36.6 kB) • ⚪ 0 B

Reusable component library chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useTerminalTabs-k0HByM9s.js (new) 9.89 kB 🔴 +9.89 kB 🔴 +3.42 kB 🔴 +3.02 kB
assets/useTerminalTabs-TrW1IJVS.js (removed) 9.89 kB 🟢 -9.89 kB 🟢 -3.42 kB 🟢 -3.02 kB
assets/ComfyQueueButton-C0jx-z49.js (removed) 7.17 kB 🟢 -7.17 kB 🟢 -2.31 kB 🟢 -2.07 kB
assets/ComfyQueueButton-Cgu7oCHg.js (new) 7.17 kB 🔴 +7.17 kB 🔴 +2.32 kB 🔴 +2.07 kB
assets/SubscribeButton-C6MKnjzf.js (new) 2.35 kB 🔴 +2.35 kB 🔴 +1.02 kB 🔴 +890 B
assets/SubscribeButton-DRlV7y4y.js (removed) 2.35 kB 🟢 -2.35 kB 🟢 -1.02 kB 🟢 -887 B
assets/cloudFeedbackTopbarButton-Dr7tNoMU.js (removed) 1.64 kB 🟢 -1.64 kB 🟢 -880 B 🟢 -750 B
assets/cloudFeedbackTopbarButton-sEy6_OeT.js (new) 1.64 kB 🔴 +1.64 kB 🔴 +877 B 🔴 +774 B
assets/ComfyQueueButton-CulQtv99.js (removed) 842 B 🟢 -842 B 🟢 -418 B 🟢 -369 B
assets/ComfyQueueButton-CW1teNoU.js (new) 842 B 🔴 +842 B 🔴 +414 B 🔴 +373 B
assets/Button-BlbRDbqy.js 2.98 kB 2.98 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/CloudBadge-hxJOdoys.js 1.24 kB 1.24 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/TopbarBadge-Ds7IqP5Z.js 7.45 kB 7.45 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/UserAvatar-DrH_EiZZ.js 1.17 kB 1.17 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetButton-DgRwIURU.js 1.84 kB 1.84 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 5 added / 5 removed

Data & Services — 2.15 MB (baseline 2.15 MB) • 🟢 -66 B

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/dialogService-COfXCPpi.js (removed) 1.38 MB 🟢 -1.38 MB 🟢 -310 kB 🟢 -239 kB
assets/dialogService-DPsElC30.js (new) 1.38 MB 🔴 +1.38 MB 🔴 +309 kB 🔴 +239 kB
assets/api-BpKNvJW_.js (new) 646 kB 🔴 +646 kB 🔴 +146 kB 🔴 +116 kB
assets/api-DM91a_D4.js (removed) 646 kB 🟢 -646 kB 🟢 -146 kB 🟢 -116 kB
assets/load3dService-CUfsU4jT.js (new) 91 kB 🔴 +91 kB 🔴 +19.1 kB 🔴 +16.4 kB
assets/load3dService-iSJtmA8J.js (removed) 91 kB 🟢 -91 kB 🟢 -19.1 kB 🟢 -16.4 kB
assets/systemStatsStore-Bw5QI-Qx.js (removed) 12.2 kB 🟢 -12.2 kB 🟢 -4.27 kB 🟢 -3.74 kB
assets/systemStatsStore-C3UkNgyj.js (new) 12.2 kB 🔴 +12.2 kB 🔴 +4.27 kB 🔴 +3.75 kB
assets/releaseStore-Bh3dCLFU.js (new) 7.96 kB 🔴 +7.96 kB 🔴 +2.22 kB 🔴 +1.95 kB
assets/releaseStore-rjBD-H_l.js (removed) 7.96 kB 🟢 -7.96 kB 🟢 -2.22 kB 🟢 -1.95 kB
assets/keybindingService-DH4NGyRQ.js (removed) 6.57 kB 🟢 -6.57 kB 🟢 -1.73 kB 🟢 -1.49 kB
assets/keybindingService-ebmx2Lxn.js (new) 6.57 kB 🔴 +6.57 kB 🔴 +1.72 kB 🔴 +1.49 kB
assets/bootstrapStore-0NlPdXUg.js (removed) 2.08 kB 🟢 -2.08 kB 🟢 -877 B 🟢 -796 B
assets/bootstrapStore-B4SYX5m_.js (new) 2.08 kB 🔴 +2.08 kB 🔴 +875 B 🔴 +796 B
assets/userStore-CFfyOLbg.js (new) 1.85 kB 🔴 +1.85 kB 🔴 +719 B 🔴 +672 B
assets/userStore-grr_5GFG.js (removed) 1.85 kB 🟢 -1.85 kB 🟢 -721 B 🟢 -634 B
assets/audioService-CiJfvQl6.js (removed) 1.73 kB 🟢 -1.73 kB 🟢 -849 B 🟢 -725 B
assets/audioService-CUz316_G.js (new) 1.73 kB 🔴 +1.73 kB 🔴 +851 B 🔴 +727 B
assets/releaseStore-CrkJ5DRI.js (new) 809 B 🔴 +809 B 🔴 +407 B 🔴 +357 B
assets/releaseStore-CuhRqYgf.js (removed) 809 B 🟢 -809 B 🟢 -408 B 🟢 -357 B
assets/workflowDraftStore-CehTg4em.js (new) 785 B 🔴 +785 B 🔴 +402 B 🔴 +352 B
assets/workflowDraftStore-Dq2TFDJb.js (removed) 785 B 🟢 -785 B 🟢 -403 B 🟢 -350 B
assets/dialogService-BSoJCSOQ.js (removed) 774 B 🟢 -774 B 🟢 -396 B 🟢 -347 B
assets/dialogService-Djl_9bRz.js (new) 774 B 🔴 +774 B 🔴 +394 B 🔴 +347 B
assets/dialogStore-D5Kfd1UD.js 4.1 kB 4.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/serverConfigStore-CRmy-NJp.js 2.32 kB 2.32 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 12 added / 12 removed

Utilities & Hooks — 237 kB (baseline 237 kB) • ⚪ 0 B

Helpers, composables, and utility bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useConflictDetection-BjmAcF_N.js (removed) 178 kB 🟢 -178 kB 🟢 -39.4 kB 🟢 -32.7 kB
assets/useConflictDetection-C3VvO5eR.js (new) 178 kB 🔴 +178 kB 🔴 +39.4 kB 🔴 +32.8 kB
assets/useLoad3d-BBeaXtsO.js (removed) 14.6 kB 🟢 -14.6 kB 🟢 -3.63 kB 🟢 -3.21 kB
assets/useLoad3d-D7EiGroW.js (new) 14.6 kB 🔴 +14.6 kB 🔴 +3.63 kB 🔴 +3.21 kB
assets/useLoad3dViewer-CkbVH53I.js (new) 14.1 kB 🔴 +14.1 kB 🔴 +3.15 kB 🔴 +2.8 kB
assets/useLoad3dViewer-D1Okxrrk.js (removed) 14.1 kB 🟢 -14.1 kB 🟢 -3.15 kB 🟢 -2.8 kB
assets/useFeatureFlags-CMv4I8Y-.js (removed) 3.32 kB 🟢 -3.32 kB 🟢 -1.04 kB 🟢 -898 B
assets/useFeatureFlags-Co7moHId.js (new) 3.32 kB 🔴 +3.32 kB 🔴 +1.04 kB 🔴 +897 B
assets/useWorkspaceUI-CIgVGrQ_.js (new) 3 kB 🔴 +3 kB 🔴 +822 B 🔴 +705 B
assets/useWorkspaceUI-JbOwee2I.js (removed) 3 kB 🟢 -3 kB 🟢 -821 B 🟢 -700 B
assets/useSubscriptionCredits-CCtRUKBY.js (removed) 2.75 kB 🟢 -2.75 kB 🟢 -1.04 kB 🟢 -895 B
assets/useSubscriptionCredits-D618r79A.js (new) 2.75 kB 🔴 +2.75 kB 🔴 +1.04 kB 🔴 +900 B
assets/subscriptionCheckoutUtil-OAmflXGp.js (new) 2.53 kB 🔴 +2.53 kB 🔴 +1.06 kB 🔴 +962 B
assets/subscriptionCheckoutUtil-QORpWLhD.js (removed) 2.53 kB 🟢 -2.53 kB 🟢 -1.06 kB 🟢 -953 B
assets/useErrorHandling-CeTp4yLS.js (new) 1.34 kB 🔴 +1.34 kB 🔴 +555 B 🔴 +509 B
assets/useErrorHandling-DYBD8ZZz.js (removed) 1.34 kB 🟢 -1.34 kB 🟢 -555 B 🟢 -477 B
assets/useWorkspaceSwitch-CEHO3ye1.js (removed) 1.25 kB 🟢 -1.25 kB 🟢 -543 B 🟢 -488 B
assets/useWorkspaceSwitch-HwtejwBm.js (new) 1.25 kB 🔴 +1.25 kB 🔴 +543 B 🔴 +480 B
assets/useLoad3d-CuhwElrC.js (new) 908 B 🔴 +908 B 🔴 +447 B 🔴 +402 B
assets/useLoad3d-DKWmuida.js (removed) 908 B 🟢 -908 B 🟢 -447 B 🟢 -400 B
assets/useLoad3dViewer-C7ALR2UZ.js (new) 887 B 🔴 +887 B 🔴 +432 B 🔴 +388 B
assets/useLoad3dViewer-vLk9iQi3.js (removed) 887 B 🟢 -887 B 🟢 -433 B 🟢 -386 B
assets/audioUtils-CoLYj-lO.js (new) 858 B 🔴 +858 B 🔴 +499 B 🔴 +416 B
assets/audioUtils-dbUQQNNt.js (removed) 858 B 🟢 -858 B 🟢 -499 B 🟢 -420 B
assets/useCurrentUser-BHqabRRO.js (new) 771 B 🔴 +771 B 🔴 +397 B 🔴 +350 B
assets/useCurrentUser-DklJw2r7.js (removed) 771 B 🟢 -771 B 🟢 -398 B 🟢 -348 B
assets/_plugin-vue_export-helper-CY4XIWDa.js 315 B 315 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/colorUtil-BiqWg6CN.js 7 kB 7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/envUtil-BHmbpOtd.js 466 B 466 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/markdownRendererUtil-DKmelI5u.js 1.56 kB 1.56 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/SkeletonUtils-BputJAFn.js 133 B 133 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/useCopyToClipboard-g_l_VTR-.js 1.57 kB 1.57 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/useExternalLink-BW7ksmwd.js 1.66 kB 1.66 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 13 added / 13 removed

Vendor & Third-Party — 8.69 MB (baseline 8.69 MB) • ⚪ 0 B

External libraries and shared vendor chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/vendor-axios-C4mPrLmU.js 70.3 kB 70.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-chart-BxkFiWzp.js 399 kB 399 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-firebase-BvMr43CG.js 836 kB 836 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-i18n-BxsQv-KC.js 131 kB 131 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-markdown-uorjc_FY.js 102 kB 102 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-other-CON5ZIHM.js 1.52 MB 1.52 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-primevue-Bd8j9uVq.js 1.73 MB 1.73 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-reka-ui-B82zTENX.js 255 kB 255 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-sentry-SQwstEKc.js 182 kB 182 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-three-LBLOE6BD.js 1.8 MB 1.8 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-tiptap-Bi_34iZD.js 625 kB 625 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-vue-core-BjA-tjXK.js 311 kB 311 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-vueuse-DcEOrMQz.js 112 kB 112 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-xterm-Yc0APIKH.js 374 kB 374 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-yjs-CBmk8HiD.js 143 kB 143 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-zod-DcCUUPIi.js 109 kB 109 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
Other — 7.31 MB (baseline 7.31 MB) • ⚪ 0 B

Bundles that do not match a named category

File Before After Δ Raw Δ Gzip Δ Brotli
assets/core-Cypw0y03.js (new) 72.4 kB 🔴 +72.4 kB 🔴 +18.6 kB 🔴 +16 kB
assets/core-nQaG3Vpk.js (removed) 72.4 kB 🟢 -72.4 kB 🟢 -18.6 kB 🟢 -16 kB
assets/groupNode-BLpM2ZMc.js (removed) 72.1 kB 🟢 -72.1 kB 🟢 -17.7 kB 🟢 -15.6 kB
assets/groupNode-BpDWh-r7.js (new) 72.1 kB 🔴 +72.1 kB 🔴 +17.7 kB 🔴 +15.6 kB
assets/WidgetSelect-CQMk9AWE.js (removed) 57.8 kB 🟢 -57.8 kB 🟢 -12.3 kB 🟢 -10.6 kB
assets/WidgetSelect-DqMVXVF9.js (new) 57.8 kB 🔴 +57.8 kB 🔴 +12.3 kB 🔴 +10.6 kB
assets/SubscriptionRequiredDialogContentWorkspace-CKqw5L6r.js (removed) 45.9 kB 🟢 -45.9 kB 🟢 -8.59 kB 🟢 -7.43 kB
assets/SubscriptionRequiredDialogContentWorkspace-DmezVcDG.js (new) 45.9 kB 🔴 +45.9 kB 🔴 +8.59 kB 🔴 +7.44 kB
assets/Load3DControls-CvE2PwbP.js (removed) 30.9 kB 🟢 -30.9 kB 🟢 -5.34 kB 🟢 -4.65 kB
assets/Load3DControls-DrGFSXEs.js (new) 30.9 kB 🔴 +30.9 kB 🔴 +5.34 kB 🔴 +4.65 kB
assets/WorkspacePanelContent-BC_uj0cH.js (removed) 29.3 kB 🟢 -29.3 kB 🟢 -6.13 kB 🟢 -5.39 kB
assets/WorkspacePanelContent-Dd2g_k8c.js (new) 29.3 kB 🔴 +29.3 kB 🔴 +6.13 kB 🔴 +5.39 kB
assets/SubscriptionRequiredDialogContent-B4mliHR5.js (new) 26.2 kB 🔴 +26.2 kB 🔴 +6.6 kB 🔴 +5.8 kB
assets/SubscriptionRequiredDialogContent-byMbm_6B.js (removed) 26.2 kB 🟢 -26.2 kB 🟢 -6.6 kB 🟢 -5.8 kB
assets/Load3dViewerContent-Ddl1nQW5.js (removed) 23.1 kB 🟢 -23.1 kB 🟢 -5.2 kB 🟢 -4.5 kB
assets/Load3dViewerContent-DmvVQ_O-.js (new) 23.1 kB 🔴 +23.1 kB 🔴 +5.2 kB 🔴 +4.5 kB
assets/WidgetImageCrop-BtULHqyh.js (new) 22.4 kB 🔴 +22.4 kB 🔴 +5.54 kB 🔴 +4.86 kB
assets/WidgetImageCrop-CL-NTCjh.js (removed) 22.4 kB 🟢 -22.4 kB 🟢 -5.54 kB 🟢 -4.86 kB
assets/SubscriptionPanelContentWorkspace-CmZzJ9DU.js (removed) 21.6 kB 🟢 -21.6 kB 🟢 -5.02 kB 🟢 -4.43 kB
assets/SubscriptionPanelContentWorkspace-Cp9mZy3I.js (new) 21.6 kB 🔴 +21.6 kB 🔴 +5.02 kB 🔴 +4.43 kB
assets/CurrentUserPopoverWorkspace-DIwyx3eW.js (new) 19.9 kB 🔴 +19.9 kB 🔴 +4.88 kB 🔴 +4.35 kB
assets/CurrentUserPopoverWorkspace-MfGcK0Kn.js (removed) 19.9 kB 🟢 -19.9 kB 🟢 -4.89 kB 🟢 -4.36 kB
assets/SignInContent-CXSjK_Mb.js (new) 19 kB 🔴 +19 kB 🔴 +4.81 kB 🔴 +4.21 kB
assets/SignInContent-Dv-mUDO7.js (removed) 19 kB 🟢 -19 kB 🟢 -4.81 kB 🟢 -4.21 kB
assets/WidgetRecordAudio-CW7wz3Nd.js (new) 17.4 kB 🔴 +17.4 kB 🔴 +4.97 kB 🔴 +4.44 kB
assets/WidgetRecordAudio-H3-VbbUl.js (removed) 17.4 kB 🟢 -17.4 kB 🟢 -4.97 kB 🟢 -4.44 kB
assets/MissingModelsWarning-CWR-sLUR.js (removed) 17.2 kB 🟢 -17.2 kB 🟢 -4.71 kB 🟢 -4.17 kB
assets/MissingModelsWarning-DGKH2auF.js (new) 17.2 kB 🔴 +17.2 kB 🔴 +4.7 kB 🔴 +4.17 kB
assets/Load3D-9USmHzbG.js (removed) 16.2 kB 🟢 -16.2 kB 🟢 -4.04 kB 🟢 -3.53 kB
assets/Load3D-CAU80fTM.js (new) 16.2 kB 🔴 +16.2 kB 🔴 +4.04 kB 🔴 +3.53 kB
assets/WidgetInputNumber-D75-HCal.js (removed) 15.8 kB 🟢 -15.8 kB 🟢 -4.26 kB 🟢 -3.8 kB
assets/WidgetInputNumber-DKsxGoKT.js (new) 15.8 kB 🔴 +15.8 kB 🔴 +4.26 kB 🔴 +3.81 kB
assets/load3d-B2kgIM3z.js (new) 14.8 kB 🔴 +14.8 kB 🔴 +4.21 kB 🔴 +3.64 kB
assets/load3d-Br0abtAN.js (removed) 14.8 kB 🟢 -14.8 kB 🟢 -4.21 kB 🟢 -3.64 kB
assets/AudioPreviewPlayer-D53YDzop.js (new) 10.9 kB 🔴 +10.9 kB 🔴 +3.22 kB 🔴 +2.88 kB
assets/AudioPreviewPlayer-D97fMUUj.js (removed) 10.9 kB 🟢 -10.9 kB 🟢 -3.21 kB 🟢 -2.88 kB
assets/NodeConflictDialogContent-BGCFmGCN.js (removed) 10.5 kB 🟢 -10.5 kB 🟢 -2.36 kB 🟢 -2.07 kB
assets/NodeConflictDialogContent-DNG60JDt.js (new) 10.5 kB 🔴 +10.5 kB 🔴 +2.37 kB 🔴 +2.09 kB
assets/changeTracker-BkefQWMS.js (removed) 9.38 kB 🟢 -9.38 kB 🟢 -2.89 kB 🟢 -2.54 kB
assets/changeTracker-DdkMVXi4.js (new) 9.38 kB 🔴 +9.38 kB 🔴 +2.89 kB 🔴 +2.54 kB
assets/nodeTemplates-95fa6GNi.js (removed) 9.35 kB 🟢 -9.35 kB 🟢 -3.28 kB 🟢 -2.88 kB
assets/nodeTemplates-DOqoWOwM.js (new) 9.35 kB 🔴 +9.35 kB 🔴 +3.28 kB 🔴 +2.88 kB
assets/InviteMemberDialogContent-DxEtAUzA.js (new) 7.44 kB 🔴 +7.44 kB 🔴 +2.31 kB 🔴 +2.02 kB
assets/InviteMemberDialogContent-ydOwQRmo.js (removed) 7.44 kB 🟢 -7.44 kB 🟢 -2.31 kB 🟢 -2.02 kB
assets/WidgetWithControl-CjDHV-z0.js (new) 7.08 kB 🔴 +7.08 kB 🔴 +2.65 kB 🔴 +2.37 kB
assets/WidgetWithControl-v_6nvlg8.js (removed) 7.08 kB 🟢 -7.08 kB 🟢 -2.65 kB 🟢 -2.36 kB
assets/MissingNodesFooter-Cw2xq1kM.js (new) 6.75 kB 🔴 +6.75 kB 🔴 +2.3 kB 🔴 +2.06 kB
assets/MissingNodesFooter-ZcQw2OQN.js (removed) 6.75 kB 🟢 -6.75 kB 🟢 -2.3 kB 🟢 -2.05 kB
assets/Load3DConfiguration-eSm5vNcv.js (new) 6.27 kB 🔴 +6.27 kB 🔴 +1.91 kB 🔴 +1.68 kB
assets/Load3DConfiguration-iXV-ymbs.js (removed) 6.27 kB 🟢 -6.27 kB 🟢 -1.91 kB 🟢 -1.68 kB
assets/MissingNodesContent-CLJ4k1uj.js (removed) 6.18 kB 🟢 -6.18 kB 🟢 -2.1 kB 🟢 -1.87 kB
assets/MissingNodesContent-DKfOgiBx.js (new) 6.18 kB 🔴 +6.18 kB 🔴 +2.1 kB 🔴 +1.87 kB
assets/CreateWorkspaceDialogContent-Bwu5WSyd.js (new) 5.58 kB 🔴 +5.58 kB 🔴 +2.01 kB 🔴 +1.76 kB
assets/CreateWorkspaceDialogContent-DxUlD8XI.js (removed) 5.58 kB 🟢 -5.58 kB 🟢 -2.01 kB 🟢 -1.75 kB
assets/EditWorkspaceDialogContent-CTPpLDlJ.js (removed) 5.38 kB 🟢 -5.38 kB 🟢 -1.97 kB 🟢 -1.72 kB
assets/EditWorkspaceDialogContent-CZCA8ben.js (new) 5.38 kB 🔴 +5.38 kB 🔴 +1.97 kB 🔴 +1.71 kB
assets/ValueControlPopover-AXOkVHnP.js (new) 4.97 kB 🔴 +4.97 kB 🔴 +1.79 kB 🔴 +1.61 kB
assets/ValueControlPopover-I8FlYoIn.js (removed) 4.97 kB 🟢 -4.97 kB 🟢 -1.79 kB 🟢 -1.6 kB
assets/Preview3d-BbdiU-65.js (removed) 4.86 kB 🟢 -4.86 kB 🟢 -1.59 kB 🟢 -1.39 kB
assets/Preview3d-BivCRr06.js (new) 4.86 kB 🔴 +4.86 kB 🔴 +1.59 kB 🔴 +1.39 kB
assets/CancelSubscriptionDialogContent-CWyqjyXl.js (new) 4.85 kB 🔴 +4.85 kB 🔴 +1.8 kB 🔴 +1.58 kB
assets/CancelSubscriptionDialogContent-GeP5waU2.js (removed) 4.85 kB 🟢 -4.85 kB 🟢 -1.8 kB 🟢 -1.58 kB
assets/DeleteWorkspaceDialogContent-Bs910rhx.js (removed) 4.29 kB 🟢 -4.29 kB 🟢 -1.65 kB 🟢 -1.44 kB
assets/DeleteWorkspaceDialogContent-DTHluwlJ.js (new) 4.29 kB 🔴 +4.29 kB 🔴 +1.65 kB 🔴 +1.44 kB
assets/LeaveWorkspaceDialogContent-BG8ejWIK.js (new) 4.12 kB 🔴 +4.12 kB 🔴 +1.6 kB 🔴 +1.39 kB
assets/LeaveWorkspaceDialogContent-IP3vkBb7.js (removed) 4.12 kB 🟢 -4.12 kB 🟢 -1.6 kB 🟢 -1.39 kB
assets/RemoveMemberDialogContent-8i_h0s0H.js (removed) 4.1 kB 🟢 -4.1 kB 🟢 -1.55 kB 🟢 -1.35 kB
assets/RemoveMemberDialogContent-B3L5Ch_H.js (new) 4.1 kB 🔴 +4.1 kB 🔴 +1.55 kB 🔴 +1.35 kB
assets/RevokeInviteDialogContent-167z4KiZ.js (new) 4.01 kB 🔴 +4.01 kB 🔴 +1.56 kB 🔴 +1.37 kB
assets/RevokeInviteDialogContent-BVRDjfgR.js (removed) 4.01 kB 🟢 -4.01 kB 🟢 -1.57 kB 🟢 -1.37 kB
assets/InviteMemberUpsellDialogContent-BIxjTlM1.js (removed) 3.88 kB 🟢 -3.88 kB 🟢 -1.42 kB 🟢 -1.25 kB
assets/InviteMemberUpsellDialogContent-yBbb7ejh.js (new) 3.88 kB 🔴 +3.88 kB 🔴 +1.42 kB 🔴 +1.25 kB
assets/saveMesh-BiwvEQ0V.js (removed) 3.43 kB 🟢 -3.43 kB 🟢 -1.48 kB 🟢 -1.33 kB
assets/saveMesh-bleW29mP.js (new) 3.43 kB 🔴 +3.43 kB 🔴 +1.48 kB 🔴 +1.31 kB
assets/cloudSessionCookie-D_plE6JH.js (new) 3.15 kB 🔴 +3.15 kB 🔴 +1.11 kB 🔴 +966 B
assets/cloudSessionCookie-SHoucsz1.js (removed) 3.15 kB 🟢 -3.15 kB 🟢 -1.11 kB 🟢 -993 B
assets/GlobalToast-Dj06SQmC.js (removed) 2.91 kB 🟢 -2.91 kB 🟢 -1.21 kB 🟢 -1.03 kB
assets/GlobalToast-WGiXYwN5.js (new) 2.91 kB 🔴 +2.91 kB 🔴 +1.21 kB 🔴 +1.03 kB
assets/SubscribeToRun-Bz7g8SAX.js (removed) 2.2 kB 🟢 -2.2 kB 🟢 -1.01 kB 🟢 -895 B
assets/SubscribeToRun-D9-o9_Sc.js (new) 2.2 kB 🔴 +2.2 kB 🔴 +1.01 kB 🔴 +890 B
assets/CloudRunButtonWrapper-CQK4ve20.js (new) 1.72 kB 🔴 +1.72 kB 🔴 +804 B 🔴 +729 B
assets/CloudRunButtonWrapper-igqBGqFU.js (removed) 1.72 kB 🟢 -1.72 kB 🟢 -807 B 🟢 -717 B
assets/cloudBadges-BpCZWrVj.js (removed) 1.42 kB 🟢 -1.42 kB 🟢 -728 B 🟢 -624 B
assets/cloudBadges-vqL1fN6X.js (new) 1.42 kB 🔴 +1.42 kB 🔴 +727 B 🔴 +628 B
assets/cloudSubscription-D28QMdQm.js (removed) 1.38 kB 🟢 -1.38 kB 🟢 -682 B 🟢 -586 B
assets/cloudSubscription-Uehldf-Y.js (new) 1.38 kB 🔴 +1.38 kB 🔴 +677 B 🔴 +584 B
assets/Load3D-CoLNxwGR.js (removed) 1.12 kB 🟢 -1.12 kB 🟢 -522 B 🟢 -464 B
assets/Load3D-n6xeBGRl.js (new) 1.12 kB 🔴 +1.12 kB 🔴 +522 B 🔴 +464 B
assets/nightlyBadges-C9mxelK4.js (new) 1.05 kB 🔴 +1.05 kB 🔴 +556 B 🔴 +493 B
assets/nightlyBadges-CCyk4g8j.js (removed) 1.05 kB 🟢 -1.05 kB 🟢 -560 B 🟢 -490 B
assets/Load3dViewerContent-BcgyHe83.js (removed) 1.04 kB 🟢 -1.04 kB 🟢 -493 B 🟢 -432 B
assets/Load3dViewerContent-BJQDu1ex.js (new) 1.04 kB 🔴 +1.04 kB 🔴 +492 B 🔴 +433 B
assets/SubscriptionPanelContentWorkspace-CibhSHC_.js (removed) 979 B 🟢 -979 B 🟢 -460 B 🟢 -404 B
assets/SubscriptionPanelContentWorkspace-CiDVG4xD.js (new) 979 B 🔴 +979 B 🔴 +460 B 🔴 +399 B
assets/changeTracker-B63hrD1o.js (removed) 806 B 🟢 -806 B 🟢 -410 B 🟢 -354 B
assets/changeTracker-CaybiTF_.js (new) 806 B 🔴 +806 B 🔴 +407 B 🔴 +358 B
assets/WidgetLegacy-Ce1W9RRq.js (removed) 794 B 🟢 -794 B 🟢 -408 B 🟢 -352 B
assets/WidgetLegacy-JtVLcQ_P.js (new) 794 B 🔴 +794 B 🔴 +407 B 🔴 +356 B
assets/graphHasMissingNodes-BiEpCA8i.js (removed) 761 B 🟢 -761 B 🟢 -373 B 🟢 -319 B
assets/graphHasMissingNodes-BOwbx7J3.js (new) 761 B 🔴 +761 B 🔴 +374 B 🔴 +321 B
assets/WidgetInputNumber-BGrd1GYG.js (removed) 392 B 🟢 -392 B 🟢 -231 B 🟢 -198 B
assets/WidgetInputNumber-DuFKigBS.js (new) 392 B 🔴 +392 B 🔴 +232 B 🔴 +221 B
assets/AnimationControls-C2PN8K_8.js 4.61 kB 4.61 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/ApiNodesSignInContent-DxP_ywVH.js 2.69 kB 2.69 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/auto-BTnZwrs2.js 1.7 kB 1.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/BaseViewTemplate-D1Wkn_Pz.js 1.78 kB 1.78 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/comfy-logo-single-IINhk7dd.js 198 B 198 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/ComfyOrgHeader-DAYiT6Xw.js 910 B 910 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BA_pLDIO.js 14.7 kB 14.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BhzDZEGT.js 15.7 kB 15.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BNvNJ49l.js 15.8 kB 15.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BrjHW_IV.js 18.4 kB 18.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BuCfvdT4.js 17.1 kB 17.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BumftKwc.js 15.8 kB 15.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-Cq5uT6l1.js 16.6 kB 16.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CxH3xT8b.js 14.9 kB 14.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-D_Nd488H.js 16.3 kB 16.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-D1Ii1DEp.js 17.2 kB 17.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-uLreJTDW.js 15.5 kB 15.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/constants-fZH7ZM7u.js 579 B 579 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/i18n-D7oDc9A5.js 495 kB 495 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/i18n-Dkin6cXj.js 199 B 199 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/ImportFailedNodeContent-CNb288kC.js 2.48 kB 2.48 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/ImportFailedNodeFooter-D7x-tpBl.js 1.88 kB 1.88 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/ImportFailedNodeHeader-LMkGR62F.js 1.08 kB 1.08 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/LazyImage-DR-0-yTy.js 12.3 kB 12.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-B2rqO4ok.js 136 kB 136 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-B7zbjYoC.js 154 kB 154 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-Be3mUkOG.js 118 kB 118 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BHvPYFxt.js 161 kB 161 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CL3WdXR2.js 118 kB 118 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CLfqZq3_.js 187 kB 187 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CUXerpeP.js 133 kB 133 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-D8_6_IyP.js 134 kB 134 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DiuZUyLe.js 167 kB 167 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-NSLXfI7X.js 138 kB 138 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-UlVmKY0W.js 141 kB 141 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/Media3DTop-CHdzdEY0.js 1.82 kB 1.82 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaAudioTop-aTfN9fO4.js 1.43 kB 1.43 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaImageTop-DwcJSZ5v.js 1.75 kB 1.75 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaVideoTop-C7I_Nivi.js 2.23 kB 2.23 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MissingNodesHeader-BAZcszup.js 1.09 kB 1.09 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/NodeConflictFooter-UR8--yb_.js 2.37 kB 2.37 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/NodeConflictHeader-Dw3rwJjr.js 1.09 kB 1.09 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-3cab5KeM.js 415 kB 415 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-aLMm0gZm.js 362 kB 362 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-BkRL-oJ_.js 454 kB 454 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-BNE1oPUr.js 337 kB 337 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-BXPcnYpT.js 369 kB 369 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CD0BvEYx.js 370 kB 370 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CiYiQ6D5.js 416 kB 416 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DcpehiUU.js 340 kB 340 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DyWG6Iir.js 366 kB 366 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-hyXgxlxY.js 384 kB 384 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-TCrvxtjI.js 373 kB 373 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/OBJLoader2WorkerModule-DTMpvldF.js 109 kB 109 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/previousFullPath-DEaITebJ.js 665 B 665 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/rolldown-runtime-DLICfi3-.js 1.97 kB 1.97 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/SelectValue-CdzHv1VF.js 8.94 kB 8.94 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/signInSchema-B_w46prb.js 1.53 kB 1.53 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/Slider-B-nteaB9.js 3.52 kB 3.52 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/src--CSlktKB.js 251 B 251 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/telemetry-Db2yG1o2.js 226 B 226 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/types-DT3N7am7.js 204 B 204 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/widget-BhHc6T04.js 445 B 445 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetBoundingBox-05_iDuzU.js 131 B 131 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetBoundingBox-JezhrbLj.js 3.91 kB 3.91 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetChart-B1i-QEjC.js 2.21 kB 2.21 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetColorPicker-BUNId5TS.js 2.9 kB 2.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetGalleria-DhRGcwZO.js 3.61 kB 3.61 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetImageCompare-CV8eZwv_.js 3.1 kB 3.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetInputText-Ww-Tpbsi.js 1.86 kB 1.86 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetLayoutField-CLaC3IDH.js 1.95 kB 1.95 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetMarkdown-CnTGrGUn.js 2.88 kB 2.88 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/widgetPropFilter-Cd0O5LPR.js 1.1 kB 1.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetTextarea-bavVor9x.js 3.18 kB 3.18 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetToggleSwitch-CYFSDGXH.js 2.5 kB 2.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/widgetTypes-Cp8f93Pk.js 393 B 393 B ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 51 added / 51 removed

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Fix all issues with AI agents
In `@src/components/dialog/content/ConfirmationDialogContent.test.ts`:
- Around line 22-34: The mountComponent helper accepts an untyped props
parameter; change its signature to type props using ComponentProps so tests are
type-safe. Import ComponentProps from 'vue' and update mountComponent(props = {}
as Partial<ComponentProps<typeof ConfirmationDialogContent>>) (or similar
Partial<> wrapper) so the default spread and overrides remain valid; update any
related usages if necessary. This targets the mountComponent function and the
ConfirmationDialogContent component type.

In `@src/components/dialog/content/ConfirmationDialogContent.vue`:
- Around line 132-136: Remove the scoped <style> block that defines
.prompt-dialog-content and instead apply Tailwind classes on the section element
that uses that class; replace the CSS rules white-space: pre-wrap and
overflow-wrap: break-word by adding whitespace-pre-wrap and break-words to the
section's class list (replace or remove "prompt-dialog-content" usage in the
template and use the Tailwind utilities directly).

christian-byrne and others added 3 commits February 8, 2026 13:57
…obile

Add max-h-[70vh] to the dialog section and wrap message content in a
scrollable container with overflow-y-auto, keeping the button row
pinned with shrink-0. This ensures buttons remain in viewport even
when long unbreakable text fills the dialog on small screens.

Also applies formatter to the Playwright test file.

Amp-Thread-ID: https://ampcode.com/threads/T-019c3f6e-3eb3-725c-bf54-0183361abe1d
@dosubot dosubot bot added size:L This PR changes 100-499 lines, ignoring generated files. and removed size:M This PR changes 30-99 lines, ignoring generated files. labels Feb 8, 2026
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@src/components/dialog/content/ConfirmationDialogContent.vue`:
- Around line 2-6: The scroll container in ConfirmationDialogContent.vue
currently uses the div with class "flex-1 overflow-y-auto" which can fail to
shrink in flex columns; update that element (the div containing the message) to
include min-h-0 (e.g., change its class to include "min-h-0") so the
overflow-y-auto container can shrink reliably and allow scrolling without
pushing action buttons off-screen.

Comment on lines 2 to 6
<section
class="m-2 mt-4 flex max-h-[70vh] flex-col gap-6 whitespace-pre-wrap break-words"
>
<div class="flex-1 overflow-y-auto">
<span>{{ message }}</span>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

cat -n src/components/dialog/content/ConfirmationDialogContent.vue

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 4784


🏁 Script executed:

rg "overflow-y-auto" src/components --type vue -A 2 -B 2

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 97


🏁 Script executed:

rg "overflow-y-auto" src/components -A 2 -B 2

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 9356


Add min-h-0 to ensure the scroll container shrinks reliably in flex columns.

Without min-h-0, flex children with overflow-y-auto may not shrink below their content size in all browsers, preventing the scrollable area from functioning properly and allowing long content to push the action buttons off-screen. This pattern is consistently applied throughout the codebase (e.g., BaseModalLayout.vue, MembersPanelContent.vue).

✅ Suggested fix
-    <div class="flex-1 overflow-y-auto">
+    <div class="min-h-0 flex-1 overflow-y-auto">
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<section
class="m-2 mt-4 flex max-h-[70vh] flex-col gap-6 whitespace-pre-wrap break-words"
>
<div class="flex-1 overflow-y-auto">
<span>{{ message }}</span>
<section
class="m-2 mt-4 flex max-h-[70vh] flex-col gap-6 whitespace-pre-wrap break-words"
>
<div class="min-h-0 flex-1 overflow-y-auto">
<span>{{ message }}</span>
🤖 Prompt for AI Agents
In `@src/components/dialog/content/ConfirmationDialogContent.vue` around lines 2 -
6, The scroll container in ConfirmationDialogContent.vue currently uses the div
with class "flex-1 overflow-y-auto" which can fail to shrink in flex columns;
update that element (the div containing the message) to include min-h-0 (e.g.,
change its class to include "min-h-0") so the overflow-y-auto container can
shrink reliably and allow scrolling without pushing action buttons off-screen.

@christian-byrne christian-byrne force-pushed the fix/mobile/confirm-dialog-textbreak branch 4 times, most recently from a3ad458 to 37d7095 Compare February 14, 2026 03:10
@christian-byrne christian-byrne force-pushed the fix/mobile/confirm-dialog-textbreak branch from ce93292 to 9b89c9c Compare February 14, 2026 03:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:mobile size:L This PR changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants