Skip to content

Conversation

@pythongosssss
Copy link
Member

@pythongosssss pythongosssss commented Feb 10, 2026

Summary

Adds autopanning so the canvas moves when you drag a node/link to the side of the canvas

Changes

  • What:
  • adds autopan controller that runs on animation frame timer to check autopan speed
  • extracts updateNodePositions for reuse
  • specific handling for vue vs litegraph modes
  • adds max speed setting, allowing user to set 0 for disabling

Screenshots (if applicable)

edge.panning.mp4

┆Issue is synchronized with this Notion page by Unito

@github-actions
Copy link

github-actions bot commented Feb 10, 2026

🎨 Storybook Build Status

Build completed successfully!

⏰ Completed at: 02/11/2026, 11:40:23 AM UTC

🔗 Links


🎉 Your Storybook is ready for review!

@github-actions
Copy link

github-actions bot commented Feb 10, 2026

Playwright: ✅ 527 passed, 0 failed

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

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 10, 2026

📝 Walkthrough

Walkthrough

Adds an AutoPanController and integrates edge-triggered auto-panning across link, slot, and node drag flows, updates canvas offset via RAF-driven ticks, wires lifecycle start/update/stop into drag handlers, adds unit tests, and exposes a user setting to control auto-pan speed.

Changes

Cohort / File(s) Summary
Auto-Pan Core Implementation
src/renderer/core/canvas/useAutoPan.ts, src/renderer/core/canvas/useAutoPan.test.ts
New calculateEdgePanSpeed() and exported AutoPanController (RAF-driven). Computes per-axis pan velocity from pointer proximity and scale, updates ds.offset, and invokes onPan. Tests cover speed ramps, zoom scaling, lifecycle, and stop behavior.
LGraphCanvas Link Drag Integration
src/lib/litegraph/src/LGraphCanvas.ts, src/lib/litegraph/src/LGraphCanvas.linkDragAutoPan.test.ts
Integrates AutoPanController into link-drag lifecycle: create/start/updatePointer/stop, ensures graph_mouse and ds.offset stay consistent, marks canvas dirty on pan, and includes link-drag auto-pan tests.
Slot Link Interaction Integration
src/renderer/extensions/vueNodes/composables/useSlotLinkInteraction.ts, src/renderer/extensions/vueNodes/composables/useSlotLinkInteraction.autoPan.test.ts
Wires AutoPanController into slot link drags: starts controller on drag, forwards pointer updates, converts onPan to canvas coords to update snapLinksPos, marks canvas dirty, and stops on cleanup. Tests validate pointer forwarding and onPan effects.
Node Drag Integration
src/renderer/extensions/vueNodes/layout/useNodeDrag.ts, src/renderer/extensions/vueNodes/layout/useNodeDrag.test.ts
Adds auto-pan integration and delta-based position updates for dragged nodes, multi-selection, and groups; introduces throttled/frame-based updates, pointer tracking, and ensures auto-pan pointer updates and cleanup. Tests exercise multi-node moves, pointer updates, and end-of-drag safety.
Settings & Localization
src/platform/settings/constants/coreSettings.ts, src/platform/settings/composables/useLitegraphSettings.ts, src/locales/en/settings.json, src/schemas/apiSchema.ts
Adds Comfy.Graph.AutoPanSpeed setting (slider, default 15) and localization Comfy_Graph_AutoPanSpeed; syncs canvas.auto_pan_speed with setting and updates schema/type.
Browser & Litegraph Tests
browser_tests/tests/*.spec.ts, src/lib/litegraph/src/LGraphCanvas.linkDragAutoPan.test.ts
Minor test changes to disable auto-pan in some browser tests and new litegraph link-drag auto-pan tests using mocked canvas/context and fake timers.

Sequence Diagram

sequenceDiagram
    participant User as User/Pointer
    participant DragHandler as Drag Handler\n(Node/Link/Slot)
    participant AutoPan as AutoPanController
    participant Canvas as Canvas / DS
    participant UpdateLogic as Position Update\nLogic

    User->>DragHandler: Pointer Down (start drag)
    DragHandler->>AutoPan: new AutoPanController(onPan)
    DragHandler->>AutoPan: start()

    User->>DragHandler: Pointer Move (near edge)
    DragHandler->>AutoPan: updatePointer(screenX, screenY)

    loop RAF tick
        AutoPan->>AutoPan: calculateEdgePanSpeed(pointerPos)
        AutoPan->>Canvas: Update ds.offset (dx,dy)
        AutoPan->>DragHandler: onPan(dx,dy)
        DragHandler->>UpdateLogic: apply pan delta to nodes/links/snap pos
    end

    User->>DragHandler: Pointer Up (end drag)
    DragHandler->>AutoPan: stop()
    DragHandler->>UpdateLogic: Finalize/cleanup
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐰 I hop along the canvas rim and peer,
When pointers press the edge I nudge it near,
I whisper dx, dy into the view,
So nodes and links can follow safely too,
A tiny rabbit pan — quick, gentle cheer!

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 18.18% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Autopan canvas when dragging nodes/links to edges' directly and clearly summarizes the main feature added in the changeset.
Description check ✅ Passed PR description covers the main changes (autopan controller, updateNodePositions extraction, mode-specific handling, speed setting) and includes a demo video, but lacks detailed implementation context and design rationale.

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

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch pysssss/autopan

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 and usage tips.

@github-actions
Copy link

github-actions bot commented Feb 10, 2026

Bundle Size Report

Summary

  • Raw size: 19.8 MB baseline 19.8 MB — 🔴 +5.28 kB
  • Gzip: 4.23 MB baseline 4.22 MB — 🔴 +1.35 kB
  • Brotli: 3.28 MB baseline 3.28 MB — 🔴 +1.18 kB
  • Bundles: 235 current • 235 baseline • 119 added / 119 removed

Category Glance
Data & Services 🔴 +3.59 kB (2.11 MB) · Graph Workspace 🔴 +1.48 kB (874 kB) · Other 🔴 +204 B (7.29 MB) · Vendor & Third-Party ⚪ 0 B (8.67 MB) · Panels & Settings ⚪ 0 B (454 kB) · Utilities & Hooks ⚪ 0 B (237 kB) · + 5 more

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

Main entry bundles and manifests

File Before After Δ Raw Δ Gzip Δ Brotli
assets/index-DRHj_W6Q.js (new) 22 kB 🔴 +22 kB 🔴 +7.18 kB 🔴 +6.25 kB
assets/index-V7bdu_Km.js (removed) 22 kB 🟢 -22 kB 🟢 -7.18 kB 🟢 -6.23 kB

Status: 1 added / 1 removed

Graph Workspace — 874 kB (baseline 872 kB) • 🔴 +1.48 kB

Graph editor runtime, canvas, workflow orchestration

File Before After Δ Raw Δ Gzip Δ Brotli
assets/GraphView-9yUXozcW.js (new) 874 kB 🔴 +874 kB 🔴 +188 kB 🔴 +144 kB
assets/GraphView-A57kvgat.js (removed) 872 kB 🟢 -872 kB 🟢 -188 kB 🟢 -143 kB

Status: 1 added / 1 removed

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

Top-level views, pages, and routed surfaces

File Before After Δ Raw Δ Gzip Δ Brotli
assets/CloudSurveyView-C8Q1_OA_.js (new) 15.4 kB 🔴 +15.4 kB 🔴 +3.31 kB 🔴 +2.82 kB
assets/CloudSurveyView-DfCk8kkc.js (removed) 15.4 kB 🟢 -15.4 kB 🟢 -3.31 kB 🟢 -2.81 kB
assets/CloudLoginView-DMO1yw9j.js (removed) 10.1 kB 🟢 -10.1 kB 🟢 -2.94 kB 🟢 -2.58 kB
assets/CloudLoginView-DOLAxVDd.js (new) 10.1 kB 🔴 +10.1 kB 🔴 +2.94 kB 🔴 +2.58 kB
assets/UserCheckView-BVdO2wNX.js (new) 8.38 kB 🔴 +8.38 kB 🔴 +2.21 kB 🔴 +1.93 kB
assets/UserCheckView-Ca2fmBPF.js (removed) 8.38 kB 🟢 -8.38 kB 🟢 -2.21 kB 🟢 -1.92 kB
assets/CloudSignupView-CIjffCgE.js (new) 7.46 kB 🔴 +7.46 kB 🔴 +2.35 kB 🔴 +2.06 kB
assets/CloudSignupView-rIAszV0B.js (removed) 7.46 kB 🟢 -7.46 kB 🟢 -2.35 kB 🟢 -2.06 kB
assets/CloudLayoutView-Cdr-p3Wx.js (removed) 6.45 kB 🟢 -6.45 kB 🟢 -2.11 kB 🟢 -1.83 kB
assets/CloudLayoutView-MJdhLtpX.js (new) 6.45 kB 🔴 +6.45 kB 🔴 +2.11 kB 🔴 +1.83 kB
assets/CloudForgotPasswordView-BrzahPbu.js (removed) 5.57 kB 🟢 -5.57 kB 🟢 -1.94 kB 🟢 -1.73 kB
assets/CloudForgotPasswordView-D5agUrZF.js (new) 5.57 kB 🔴 +5.57 kB 🔴 +1.95 kB 🔴 +1.72 kB
assets/CloudAuthTimeoutView-BhK1NRWo.js (new) 4.92 kB 🔴 +4.92 kB 🔴 +1.78 kB 🔴 +1.56 kB
assets/CloudAuthTimeoutView-CA-SGZyI.js (removed) 4.92 kB 🟢 -4.92 kB 🟢 -1.78 kB 🟢 -1.56 kB
assets/CloudSubscriptionRedirectView-BG-KSmHR.js (removed) 4.72 kB 🟢 -4.72 kB 🟢 -1.79 kB 🟢 -1.58 kB
assets/CloudSubscriptionRedirectView-DyoT6ZKL.js (new) 4.72 kB 🔴 +4.72 kB 🔴 +1.79 kB 🔴 +1.58 kB
assets/UserSelectView-BLJUrTh8.js (removed) 4.46 kB 🟢 -4.46 kB 🟢 -1.62 kB 🟢 -1.45 kB
assets/UserSelectView-CQBxdEqo.js (new) 4.46 kB 🔴 +4.46 kB 🔴 +1.62 kB 🔴 +1.46 kB
assets/CloudSorryContactSupportView-SQIXD_6I.js 1.02 kB 1.02 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/layout-DymeLvkK.js 296 B 296 B ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 9 added / 9 removed

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

Configuration panels, inspectors, and settings screens

File Before After Δ Raw Δ Gzip Δ Brotli
assets/WorkspacePanel-B0eUnEMx.js (removed) 26.8 kB 🟢 -26.8 kB 🟢 -5.62 kB 🟢 -4.92 kB
assets/WorkspacePanel-CoYQcTb3.js (new) 26.8 kB 🔴 +26.8 kB 🔴 +5.62 kB 🔴 +4.95 kB
assets/SecretsPanel-CISxbO6D.js (removed) 21.5 kB 🟢 -21.5 kB 🟢 -5.29 kB 🟢 -4.65 kB
assets/SecretsPanel-DPAJIMX6.js (new) 21.5 kB 🔴 +21.5 kB 🔴 +5.29 kB 🔴 +4.64 kB
assets/LegacyCreditsPanel-DwuGiXqG.js (new) 20.8 kB 🔴 +20.8 kB 🔴 +5.61 kB 🔴 +4.92 kB
assets/LegacyCreditsPanel-m7-0EQcI.js (removed) 20.8 kB 🟢 -20.8 kB 🟢 -5.61 kB 🟢 -4.93 kB
assets/SubscriptionPanel-DERMfLAm.js (removed) 18.7 kB 🟢 -18.7 kB 🟢 -4.75 kB 🟢 -4.22 kB
assets/SubscriptionPanel-is_Pne9A.js (new) 18.7 kB 🔴 +18.7 kB 🔴 +4.75 kB 🔴 +4.21 kB
assets/KeybindingPanel-DeNSMMOy.js (removed) 12.6 kB 🟢 -12.6 kB 🟢 -3.63 kB 🟢 -3.22 kB
assets/KeybindingPanel-wM6byj-f.js (new) 12.6 kB 🔴 +12.6 kB 🔴 +3.63 kB 🔴 +3.21 kB
assets/ExtensionPanel-CZTDof-_.js (new) 9.51 kB 🔴 +9.51 kB 🔴 +2.69 kB 🔴 +2.38 kB
assets/ExtensionPanel-IB75vdvp.js (removed) 9.51 kB 🟢 -9.51 kB 🟢 -2.69 kB 🟢 -2.4 kB
assets/AboutPanel-CCUBklL2.js (removed) 8.62 kB 🟢 -8.62 kB 🟢 -2.45 kB 🟢 -2.21 kB
assets/AboutPanel-DcRDTNpM.js (new) 8.62 kB 🔴 +8.62 kB 🔴 +2.45 kB 🔴 +2.21 kB
assets/ServerConfigPanel-C3TS02zu.js (new) 6.65 kB 🔴 +6.65 kB 🔴 +2.16 kB 🔴 +1.95 kB
assets/ServerConfigPanel-t6J_qt-a.js (removed) 6.65 kB 🟢 -6.65 kB 🟢 -2.16 kB 🟢 -1.94 kB
assets/UserPanel-DIdL5Nl7.js (removed) 6.29 kB 🟢 -6.29 kB 🟢 -2.03 kB 🟢 -1.78 kB
assets/UserPanel-sb8vSYFF.js (new) 6.29 kB 🔴 +6.29 kB 🔴 +2.03 kB 🔴 +1.79 kB
assets/cloudRemoteConfig-C7aefSzv.js (removed) 1.45 kB 🟢 -1.45 kB 🟢 -717 B 🟢 -623 B
assets/cloudRemoteConfig-CyYwCgnu.js (new) 1.45 kB 🔴 +1.45 kB 🔴 +717 B 🔴 +624 B
assets/refreshRemoteConfig-BRWJGIPU.js (new) 1.14 kB 🔴 +1.14 kB 🔴 +522 B 🔴 +459 B
assets/refreshRemoteConfig-DikSFZEo.js (removed) 1.14 kB 🟢 -1.14 kB 🟢 -518 B 🟢 -470 B
assets/config-DTkEo7Es.js 996 B 996 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-B9-DRLUq.js 33.3 kB 33.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-BBhF1Ra7.js 23.9 kB 23.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-BPmk7MJq.js 28 kB 28 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-C6ThYRJH.js 27.1 kB 27.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-CDls4Tnk.js 29.2 kB 29.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-CXVW-KKN.js 27.3 kB 27.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-CZBqKC2c.js 28.1 kB 28.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-CzQJLe5j.js 29.8 kB 29.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-IyjFFWib.js 31.6 kB 31.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-LLMHzl4C.js 37.6 kB 37.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-XT2QcP7J.js 23.3 kB 23.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 11 added / 11 removed

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

Authentication, profile, and account management bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/auth-BBMOCGEM.js (new) 3.4 kB 🔴 +3.4 kB 🔴 +1.18 kB 🔴 +993 B
assets/auth-rmJDMUla.js (removed) 3.4 kB 🟢 -3.4 kB 🟢 -1.18 kB 🟢 -991 B
assets/SignUpForm-17TdRXFU.js (removed) 3.01 kB 🟢 -3.01 kB 🟢 -1.23 kB 🟢 -1.09 kB
assets/SignUpForm-3HqZN-0q.js (new) 3.01 kB 🔴 +3.01 kB 🔴 +1.23 kB 🔴 +1.1 kB
assets/UpdatePasswordContent-B_3vqxlD.js (removed) 2.38 kB 🟢 -2.38 kB 🟢 -1.08 kB 🟢 -948 B
assets/UpdatePasswordContent-BmheWTCB.js (new) 2.38 kB 🔴 +2.38 kB 🔴 +1.08 kB 🔴 +952 B
assets/firebaseAuthStore-BG_EZmjC.js (new) 803 B 🔴 +803 B 🔴 +399 B 🔴 +364 B
assets/firebaseAuthStore-CMDIFC-W.js (removed) 803 B 🟢 -803 B 🟢 -397 B 🟢 -389 B
assets/auth-DmNLn78W.js (removed) 317 B 🟢 -317 B 🟢 -203 B 🟢 -194 B
assets/auth-DXUT5e4U.js (new) 317 B 🔴 +317 B 🔴 +204 B 🔴 +176 B
assets/PasswordFields-Dz_bXydQ.js 4.51 kB 4.51 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WorkspaceProfilePic-D2K-asRs.js 1.57 kB 1.57 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 5 added / 5 removed

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

Modals, dialogs, drawers, and in-app editors

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useSubscriptionDialog-Dr_-G-27.js (new) 751 B 🔴 +751 B 🔴 +389 B 🔴 +344 B
assets/useSubscriptionDialog-vZ22_Pa1.js (removed) 751 B 🟢 -751 B 🟢 -388 B 🟢 -336 B

Status: 1 added / 1 removed

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

Reusable component library chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useTerminalTabs-Bxvqoe8k.js (removed) 9.86 kB 🟢 -9.86 kB 🟢 -3.41 kB 🟢 -3 kB
assets/useTerminalTabs-ClyDR7ff.js (new) 9.86 kB 🔴 +9.86 kB 🔴 +3.41 kB 🔴 +3 kB
assets/ComfyQueueButton-BcAJojIY.js (removed) 7.17 kB 🟢 -7.17 kB 🟢 -2.32 kB 🟢 -2.07 kB
assets/ComfyQueueButton-DGMJuFLo.js (new) 7.17 kB 🔴 +7.17 kB 🔴 +2.32 kB 🔴 +2.07 kB
assets/SubscribeButton-Bw0QEMi3.js (new) 2.35 kB 🔴 +2.35 kB 🔴 +1.02 kB 🔴 +891 B
assets/SubscribeButton-Drw0muQO.js (removed) 2.35 kB 🟢 -2.35 kB 🟢 -1.02 kB 🟢 -890 B
assets/cloudFeedbackTopbarButton-ChYW1xbQ.js (new) 1.61 kB 🔴 +1.61 kB 🔴 +867 B 🔴 +770 B
assets/cloudFeedbackTopbarButton-CJzo0G3c.js (removed) 1.61 kB 🟢 -1.61 kB 🟢 -867 B 🟢 -768 B
assets/ComfyQueueButton-BphwQytR.js (removed) 808 B 🟢 -808 B 🟢 -402 B 🟢 -362 B
assets/ComfyQueueButton-CF1rsTKI.js (new) 808 B 🔴 +808 B 🔴 +403 B 🔴 +364 B
assets/Button-DJ97zW2s.js 3 kB 3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/CloudBadge-bwJLQpsu.js 1.24 kB 1.24 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/TopbarBadge-C7EnSn9A.js 7.45 kB 7.45 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/UserAvatar-ki0RgWjr.js 1.17 kB 1.17 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetButton-C5FBfFE1.js 1.84 kB 1.84 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 5 added / 5 removed

Data & Services — 2.11 MB (baseline 2.1 MB) • 🔴 +3.59 kB

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/dialogService-UuadQDDU.js (new) 1.33 MB 🔴 +1.33 MB 🔴 +298 kB 🔴 +231 kB
assets/dialogService-D6hhB0Lx.js (removed) 1.33 MB 🟢 -1.33 MB 🟢 -298 kB 🟢 -231 kB
assets/api-ClYYEcN5.js (new) 649 kB 🔴 +649 kB 🔴 +146 kB 🔴 +117 kB
assets/api-Dlji_Qtd.js (removed) 647 kB 🟢 -647 kB 🟢 -146 kB 🟢 -116 kB
assets/load3dService-CovtWWDN.js (removed) 91 kB 🟢 -91 kB 🟢 -19 kB 🟢 -16.4 kB
assets/load3dService-qalYQqvV.js (new) 91 kB 🔴 +91 kB 🔴 +19 kB 🔴 +16.4 kB
assets/systemStatsStore-B6LwYYl9.js (removed) 12.2 kB 🟢 -12.2 kB 🟢 -4.26 kB 🟢 -3.74 kB
assets/systemStatsStore-DpJ3_X0Y.js (new) 12.2 kB 🔴 +12.2 kB 🔴 +4.27 kB 🔴 +3.75 kB
assets/releaseStore-CXwy8W71.js (removed) 7.96 kB 🟢 -7.96 kB 🟢 -2.22 kB 🟢 -1.95 kB
assets/releaseStore-CZr-AKuR.js (new) 7.96 kB 🔴 +7.96 kB 🔴 +2.22 kB 🔴 +1.95 kB
assets/keybindingService-dpYxec0G.js (new) 6.57 kB 🔴 +6.57 kB 🔴 +1.72 kB 🔴 +1.49 kB
assets/keybindingService-DzFOjW04.js (removed) 6.57 kB 🟢 -6.57 kB 🟢 -1.72 kB 🟢 -1.49 kB
assets/bootstrapStore-D2uJUmmf.js (new) 2.08 kB 🔴 +2.08 kB 🔴 +876 B 🔴 +793 B
assets/bootstrapStore-YiXGtUxC.js (removed) 2.08 kB 🟢 -2.08 kB 🟢 -873 B 🟢 -791 B
assets/userStore-DfysXOxa.js (removed) 1.85 kB 🟢 -1.85 kB 🟢 -716 B 🟢 -632 B
assets/userStore-DYkvXhm8.js (new) 1.85 kB 🔴 +1.85 kB 🔴 +721 B 🔴 +674 B
assets/audioService-B_BnGvrp.js (new) 1.73 kB 🔴 +1.73 kB 🔴 +844 B 🔴 +729 B
assets/audioService-BVsSv8XX.js (removed) 1.73 kB 🟢 -1.73 kB 🟢 -845 B 🟢 -726 B
assets/releaseStore-BZsY7nr9.js (removed) 775 B 🟢 -775 B 🟢 -393 B 🟢 -347 B
assets/releaseStore-de6wM2X-.js (new) 775 B 🔴 +775 B 🔴 +394 B 🔴 +348 B
assets/workflowDraftStore-COan9Pif.js (new) 751 B 🔴 +751 B 🔴 +389 B 🔴 +346 B
assets/workflowDraftStore-M8dZK_fX.js (removed) 751 B 🟢 -751 B 🟢 -388 B 🟢 -340 B
assets/dialogService-BrvxjWvV.js (removed) 740 B 🟢 -740 B 🟢 -377 B 🟢 -338 B
assets/dialogService-D7By3RtL.js (new) 740 B 🔴 +740 B 🔴 +380 B 🔴 +342 B
assets/dialogStore-SMYg02Jv.js 4.1 kB 4.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/serverConfigStore-De5AGM62.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--qATbIfa.js (new) 178 kB 🔴 +178 kB 🔴 +39.4 kB 🔴 +32.8 kB
assets/useConflictDetection-DJWQieMK.js (removed) 178 kB 🟢 -178 kB 🟢 -39.4 kB 🟢 -32.8 kB
assets/useLoad3d-D57blWNy.js (new) 14.6 kB 🔴 +14.6 kB 🔴 +3.63 kB 🔴 +3.21 kB
assets/useLoad3d-DKXZ_r3w.js (removed) 14.6 kB 🟢 -14.6 kB 🟢 -3.63 kB 🟢 -3.21 kB
assets/useLoad3dViewer-D4o0qEpT.js (removed) 14.1 kB 🟢 -14.1 kB 🟢 -3.15 kB 🟢 -2.8 kB
assets/useLoad3dViewer-DQnL-yQg.js (new) 14.1 kB 🔴 +14.1 kB 🔴 +3.15 kB 🔴 +2.79 kB
assets/useFeatureFlags-CFq__JHo.js (removed) 3.32 kB 🟢 -3.32 kB 🟢 -1.04 kB 🟢 -902 B
assets/useFeatureFlags-ChPB1O5f.js (new) 3.32 kB 🔴 +3.32 kB 🔴 +1.04 kB 🔴 +900 B
assets/useWorkspaceUI-BXJEDbKv.js (removed) 3.15 kB 🟢 -3.15 kB 🟢 -890 B 🟢 -764 B
assets/useWorkspaceUI-CBkApoyo.js (new) 3.15 kB 🔴 +3.15 kB 🔴 +888 B 🔴 +762 B
assets/useSubscriptionCredits-DiGC524H.js (removed) 2.75 kB 🟢 -2.75 kB 🟢 -1.04 kB 🟢 -898 B
assets/useSubscriptionCredits-DojLI4g7.js (new) 2.75 kB 🔴 +2.75 kB 🔴 +1.04 kB 🔴 +899 B
assets/subscriptionCheckoutUtil-BLjrlCm3.js (new) 2.53 kB 🔴 +2.53 kB 🔴 +1.06 kB 🔴 +958 B
assets/subscriptionCheckoutUtil-uHBHeoTf.js (removed) 2.53 kB 🟢 -2.53 kB 🟢 -1.06 kB 🟢 -954 B
assets/useExternalLink-CBYd7PkX.js (removed) 1.66 kB 🟢 -1.66 kB 🟢 -772 B 🟢 -681 B
assets/useExternalLink-FJdoiSdB.js (new) 1.66 kB 🔴 +1.66 kB 🔴 +770 B 🔴 +683 B
assets/useCopyToClipboard-D66G3b2I.js (new) 1.57 kB 🔴 +1.57 kB 🔴 +669 B 🔴 +557 B
assets/useCopyToClipboard-JE-7X_Eb.js (removed) 1.57 kB 🟢 -1.57 kB 🟢 -671 B 🟢 -562 B
assets/useErrorHandling-BZCAR13L.js (new) 1.34 kB 🔴 +1.34 kB 🔴 +556 B 🔴 +473 B
assets/useErrorHandling-DsXLNDT8.js (removed) 1.34 kB 🟢 -1.34 kB 🟢 -555 B 🟢 -503 B
assets/useLoad3d-BxvLeO9R.js (new) 874 B 🔴 +874 B 🔴 +435 B 🔴 +388 B
assets/useLoad3d-CcIjjn1E.js (removed) 874 B 🟢 -874 B 🟢 -432 B 🟢 -391 B
assets/audioUtils-1J8Zz8ro.js (removed) 858 B 🟢 -858 B 🟢 -501 B 🟢 -404 B
assets/audioUtils-DNz-DWMV.js (new) 858 B 🔴 +858 B 🔴 +500 B 🔴 +404 B
assets/useLoad3dViewer-B1bdEzpx.js (new) 853 B 🔴 +853 B 🔴 +420 B 🔴 +380 B
assets/useLoad3dViewer-Dt-0CxRH.js (removed) 853 B 🟢 -853 B 🟢 -417 B 🟢 -377 B
assets/useCurrentUser-_5npv5la.js (new) 737 B 🔴 +737 B 🔴 +384 B 🔴 +345 B
assets/useCurrentUser-CpA--Vy_.js (removed) 737 B 🟢 -737 B 🟢 -379 B 🟢 -336 B
assets/_plugin-vue_export-helper-BYZQdlgo.js 315 B 315 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/colorUtil-C8II5OEy.js 7 kB 7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/envUtil-DiXnWsaz.js 466 B 466 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/markdownRendererUtil-CULTZH1z.js 1.56 kB 1.56 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/networkUtil-BSvcILBc.js 1.05 kB 1.05 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/SkeletonUtils-BputJAFn.js 133 B 133 B ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 14 added / 14 removed

Vendor & Third-Party — 8.67 MB (baseline 8.67 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-kbZC6x-r.js 102 kB 102 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-other-LLCBDOBp.js 1.52 MB 1.52 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-primevue-B2JBnlqj.js 1.73 MB 1.73 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-reka-ui-C2SvlJE-.js 240 kB 240 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-BSO55ms7.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-Bg1iMAgF.js 111 kB 111 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-xterm-BGMLTxLX.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.29 MB (baseline 7.29 MB) • 🔴 +204 B

Bundles that do not match a named category

File Before After Δ Raw Δ Gzip Δ Brotli
assets/i18n-DIAzGneL.js (new) 492 kB 🔴 +492 kB 🔴 +94.2 kB 🔴 +73.5 kB
assets/i18n-BBmGB05k.js (removed) 492 kB 🟢 -492 kB 🟢 -94.2 kB 🟢 -73.4 kB
assets/core-ohJ7NhOG.js (removed) 72.3 kB 🟢 -72.3 kB 🟢 -18.6 kB 🟢 -16 kB
assets/core-osyz55Ch.js (new) 72.3 kB 🔴 +72.3 kB 🔴 +18.6 kB 🔴 +16 kB
assets/groupNode-BVINPJZm.js (removed) 72.1 kB 🟢 -72.1 kB 🟢 -17.7 kB 🟢 -15.6 kB
assets/groupNode-DZSNHO0G.js (new) 72.1 kB 🔴 +72.1 kB 🔴 +17.8 kB 🔴 +15.6 kB
assets/WidgetSelect-BDiQbCv8.js (new) 57.5 kB 🔴 +57.5 kB 🔴 +12.2 kB 🔴 +10.6 kB
assets/WidgetSelect-BPcrZDtq.js (removed) 57.5 kB 🟢 -57.5 kB 🟢 -12.2 kB 🟢 -10.5 kB
assets/SubscriptionRequiredDialogContentWorkspace-Cb4isQba.js (new) 46 kB 🔴 +46 kB 🔴 +8.6 kB 🔴 +7.46 kB
assets/SubscriptionRequiredDialogContentWorkspace-CFEhOZ-s.js (removed) 46 kB 🟢 -46 kB 🟢 -8.6 kB 🟢 -7.43 kB
assets/SettingDialogContent-Dimm122m.js (removed) 31.9 kB 🟢 -31.9 kB 🟢 -8.33 kB 🟢 -7.32 kB
assets/SettingDialogContent-kIvIM7o7.js (new) 31.9 kB 🔴 +31.9 kB 🔴 +8.33 kB 🔴 +7.33 kB
assets/Load3DControls-ByO7J8SC.js (removed) 30.9 kB 🟢 -30.9 kB 🟢 -5.34 kB 🟢 -4.65 kB
assets/Load3DControls-D2Nh4xab.js (new) 30.9 kB 🔴 +30.9 kB 🔴 +5.34 kB 🔴 +4.64 kB
assets/SubscriptionRequiredDialogContent-DRLbMCjg.js (removed) 26.2 kB 🟢 -26.2 kB 🟢 -6.59 kB 🟢 -5.79 kB
assets/SubscriptionRequiredDialogContent-XgGCDcLq.js (new) 26.2 kB 🔴 +26.2 kB 🔴 +6.59 kB 🔴 +5.79 kB
assets/Load3dViewerContent-C_3iDI3a.js (removed) 23.1 kB 🟢 -23.1 kB 🟢 -5.19 kB 🟢 -4.5 kB
assets/Load3dViewerContent-DYMLVehw.js (new) 23.1 kB 🔴 +23.1 kB 🔴 +5.19 kB 🔴 +4.5 kB
assets/WidgetImageCrop-BGnMujaN.js (new) 22.3 kB 🔴 +22.3 kB 🔴 +5.52 kB 🔴 +4.86 kB
assets/WidgetImageCrop-ea2qUXZ1.js (removed) 22.3 kB 🟢 -22.3 kB 🟢 -5.52 kB 🟢 -4.86 kB
assets/SubscriptionPanelContentWorkspace-D0QCV1pj.js (new) 21.8 kB 🔴 +21.8 kB 🔴 +5.18 kB 🔴 +4.58 kB
assets/SubscriptionPanelContentWorkspace-iiMcyfko.js (removed) 21.8 kB 🟢 -21.8 kB 🟢 -5.17 kB 🟢 -4.58 kB
assets/CurrentUserPopoverWorkspace-ByWzB_KV.js (new) 20.6 kB 🔴 +20.6 kB 🔴 +5.08 kB 🔴 +4.51 kB
assets/CurrentUserPopoverWorkspace-DrKvucq_.js (removed) 20.6 kB 🟢 -20.6 kB 🟢 -5.08 kB 🟢 -4.52 kB
assets/FormItem-BZViIIUk.js (removed) 20.2 kB 🟢 -20.2 kB 🟢 -4.86 kB 🟢 -4.25 kB
assets/FormItem-CRwEtO-S.js (new) 20.2 kB 🔴 +20.2 kB 🔴 +4.86 kB 🔴 +4.25 kB
assets/SignInContent-CX2XiUV8.js (new) 19 kB 🔴 +19 kB 🔴 +4.82 kB 🔴 +4.22 kB
assets/SignInContent-DL6uOIcZ.js (removed) 19 kB 🟢 -19 kB 🟢 -4.82 kB 🟢 -4.21 kB
assets/WidgetRecordAudio-BJLTWOm7.js (removed) 17.3 kB 🟢 -17.3 kB 🟢 -4.95 kB 🟢 -4.44 kB
assets/WidgetRecordAudio-CTiCbT-5.js (new) 17.3 kB 🔴 +17.3 kB 🔴 +4.95 kB 🔴 +4.43 kB
assets/MissingModelsWarning-Cu4F-nDM.js (removed) 17.2 kB 🟢 -17.2 kB 🟢 -4.69 kB 🟢 -4.16 kB
assets/MissingModelsWarning-sc0mz3_P.js (new) 17.2 kB 🔴 +17.2 kB 🔴 +4.69 kB 🔴 +4.17 kB
assets/Load3D-9KRl94XU.js (new) 16.2 kB 🔴 +16.2 kB 🔴 +4.04 kB 🔴 +3.52 kB
assets/Load3D-BXPV-52M.js (removed) 16.2 kB 🟢 -16.2 kB 🟢 -4.04 kB 🟢 -3.52 kB
assets/WidgetInputNumber-3LakxiCa.js (new) 15.8 kB 🔴 +15.8 kB 🔴 +4.26 kB 🔴 +3.8 kB
assets/WidgetInputNumber-Bk8SFxEQ.js (removed) 15.8 kB 🟢 -15.8 kB 🟢 -4.26 kB 🟢 -3.8 kB
assets/load3d-DeRfBP2r.js (removed) 14.8 kB 🟢 -14.8 kB 🟢 -4.2 kB 🟢 -3.63 kB
assets/load3d-DJtZqRKb.js (new) 14.8 kB 🔴 +14.8 kB 🔴 +4.2 kB 🔴 +3.63 kB
assets/AudioPreviewPlayer-BTAAsXKK.js (removed) 10.9 kB 🟢 -10.9 kB 🟢 -3.21 kB 🟢 -2.87 kB
assets/AudioPreviewPlayer-CL-VwsMR.js (new) 10.9 kB 🔴 +10.9 kB 🔴 +3.21 kB 🔴 +2.87 kB
assets/NodeConflictDialogContent-DllIvlNm.js (new) 10.5 kB 🔴 +10.5 kB 🔴 +2.35 kB 🔴 +2.08 kB
assets/NodeConflictDialogContent-rxK4SakW.js (removed) 10.5 kB 🟢 -10.5 kB 🟢 -2.35 kB 🟢 -2.07 kB
assets/changeTracker-CPG1W1-Y.js (new) 9.38 kB 🔴 +9.38 kB 🔴 +2.89 kB 🔴 +2.55 kB
assets/changeTracker-L6VsS-Y7.js (removed) 9.38 kB 🟢 -9.38 kB 🟢 -2.89 kB 🟢 -2.55 kB
assets/nodeTemplates-C4-qtRGP.js (removed) 9.31 kB 🟢 -9.31 kB 🟢 -3.27 kB 🟢 -2.87 kB
assets/nodeTemplates-DTcxP4vu.js (new) 9.31 kB 🔴 +9.31 kB 🔴 +3.27 kB 🔴 +2.87 kB
assets/InviteMemberDialogContent-DFiqNTup.js (new) 7.92 kB 🔴 +7.92 kB 🔴 +2.56 kB 🔴 +2.23 kB
assets/InviteMemberDialogContent-dV5t5Dt-.js (removed) 7.92 kB 🟢 -7.92 kB 🟢 -2.56 kB 🟢 -2.24 kB
assets/WidgetWithControl-Bf1t-UKE.js (removed) 7.04 kB 🟢 -7.04 kB 🟢 -2.63 kB 🟢 -2.35 kB
assets/WidgetWithControl-UljF2v6X.js (new) 7.04 kB 🔴 +7.04 kB 🔴 +2.63 kB 🔴 +2.35 kB
assets/MissingNodesFooter-BZnMV0Co.js (new) 6.73 kB 🔴 +6.73 kB 🔴 +2.29 kB 🔴 +2.04 kB
assets/MissingNodesFooter-Crv0dCWw.js (removed) 6.73 kB 🟢 -6.73 kB 🟢 -2.29 kB 🟢 -2.04 kB
assets/Load3DConfiguration-DHhaJn53.js (new) 6.27 kB 🔴 +6.27 kB 🔴 +1.91 kB 🔴 +1.68 kB
assets/Load3DConfiguration-qH1jQzjG.js (removed) 6.27 kB 🟢 -6.27 kB 🟢 -1.92 kB 🟢 -1.68 kB
assets/MissingNodesContent-CAAFYud9.js (removed) 6.15 kB 🟢 -6.15 kB 🟢 -2.09 kB 🟢 -1.86 kB
assets/MissingNodesContent-oEryVMXr.js (new) 6.15 kB 🔴 +6.15 kB 🔴 +2.09 kB 🔴 +1.86 kB
assets/CreateWorkspaceDialogContent-BMzCkxXU.js (removed) 5.55 kB 🟢 -5.55 kB 🟢 -2 kB 🟢 -1.75 kB
assets/CreateWorkspaceDialogContent-BV6Bi0EM.js (new) 5.55 kB 🔴 +5.55 kB 🔴 +2 kB 🔴 +1.75 kB
assets/EditWorkspaceDialogContent-ePLqwXY3.js (new) 5.35 kB 🔴 +5.35 kB 🔴 +1.96 kB 🔴 +1.7 kB
assets/EditWorkspaceDialogContent-yKEx-B18.js (removed) 5.35 kB 🟢 -5.35 kB 🟢 -1.95 kB 🟢 -1.71 kB
assets/ValueControlPopover-Bis7RZFj.js (removed) 4.93 kB 🟢 -4.93 kB 🟢 -1.78 kB 🟢 -1.59 kB
assets/ValueControlPopover-CJBwJ4w_.js (new) 4.93 kB 🔴 +4.93 kB 🔴 +1.78 kB 🔴 +1.59 kB
assets/Preview3d-BiwM2zgD.js (removed) 4.83 kB 🟢 -4.83 kB 🟢 -1.58 kB 🟢 -1.38 kB
assets/Preview3d-CbNSYt96.js (new) 4.83 kB 🔴 +4.83 kB 🔴 +1.58 kB 🔴 +1.38 kB
assets/CancelSubscriptionDialogContent-CgOFWfGg.js (removed) 4.81 kB 🟢 -4.81 kB 🟢 -1.79 kB 🟢 -1.57 kB
assets/CancelSubscriptionDialogContent-CwQPEMAg.js (new) 4.81 kB 🔴 +4.81 kB 🔴 +1.79 kB 🔴 +1.57 kB
assets/DeleteWorkspaceDialogContent-86qvI7w6.js (new) 4.25 kB 🔴 +4.25 kB 🔴 +1.64 kB 🔴 +1.43 kB
assets/DeleteWorkspaceDialogContent-IDy501pr.js (removed) 4.25 kB 🟢 -4.25 kB 🟢 -1.64 kB 🟢 -1.42 kB
assets/LeaveWorkspaceDialogContent-BAuM-FyZ.js (removed) 4.08 kB 🟢 -4.08 kB 🟢 -1.59 kB 🟢 -1.38 kB
assets/LeaveWorkspaceDialogContent-D0uC0r27.js (new) 4.08 kB 🔴 +4.08 kB 🔴 +1.59 kB 🔴 +1.38 kB
assets/RemoveMemberDialogContent-Bsj4RXYO.js (removed) 4.06 kB 🟢 -4.06 kB 🟢 -1.53 kB 🟢 -1.34 kB
assets/RemoveMemberDialogContent-Rf2qrSS8.js (new) 4.06 kB 🔴 +4.06 kB 🔴 +1.54 kB 🔴 +1.34 kB
assets/RevokeInviteDialogContent-CzgYaqUM.js (new) 3.98 kB 🔴 +3.98 kB 🔴 +1.55 kB 🔴 +1.36 kB
assets/RevokeInviteDialogContent-DHp2K47Q.js (removed) 3.98 kB 🟢 -3.98 kB 🟢 -1.55 kB 🟢 -1.36 kB
assets/saveMesh-CMOBaMWz.js (removed) 3.4 kB 🟢 -3.4 kB 🟢 -1.47 kB 🟢 -1.32 kB
assets/saveMesh-Dt3LAXyW.js (new) 3.4 kB 🔴 +3.4 kB 🔴 +1.47 kB 🔴 +1.31 kB
assets/cloudSessionCookie-DEUUGEze.js (removed) 3.12 kB 🟢 -3.12 kB 🟢 -1.1 kB 🟢 -1 kB
assets/cloudSessionCookie-v-AG6XB8.js (new) 3.12 kB 🔴 +3.12 kB 🔴 +1.1 kB 🔴 +993 B
assets/GlobalToast-B1gzY_Ks.js (new) 2.91 kB 🔴 +2.91 kB 🔴 +1.21 kB 🔴 +1.03 kB
assets/GlobalToast-BsLsgzvt.js (removed) 2.91 kB 🟢 -2.91 kB 🟢 -1.21 kB 🟢 -1.03 kB
assets/ApiNodesSignInContent-DTyiF6u-.js (removed) 2.69 kB 🟢 -2.69 kB 🟢 -1.05 kB 🟢 -950 B
assets/ApiNodesSignInContent-Sarhn2Kg.js (new) 2.69 kB 🔴 +2.69 kB 🔴 +1.05 kB 🔴 +923 B
assets/NodeConflictFooter-C7WLy5Sh.js (removed) 2.37 kB 🟢 -2.37 kB 🟢 -1.03 kB 🟢 -908 B
assets/NodeConflictFooter-CXr2Cb-b.js (new) 2.37 kB 🔴 +2.37 kB 🔴 +1.03 kB 🔴 +908 B
assets/SubscribeToRun-BS2eYX73.js (removed) 2.2 kB 🟢 -2.2 kB 🟢 -1.01 kB 🟢 -897 B
assets/SubscribeToRun-DQxEFy3o.js (new) 2.2 kB 🔴 +2.2 kB 🔴 +1.01 kB 🔴 +892 B
assets/ImportFailedNodeFooter-BLxnbMAJ.js (new) 1.88 kB 🔴 +1.88 kB 🔴 +869 B 🔴 +758 B
assets/ImportFailedNodeFooter-BVBaLbVz.js (removed) 1.88 kB 🟢 -1.88 kB 🟢 -868 B 🟢 -757 B
assets/SettingDialogHeader-BpNEjl_8.js (new) 1.8 kB 🔴 +1.8 kB 🔴 +893 B 🔴 +805 B
assets/SettingDialogHeader-Cwi7Zpx7.js (removed) 1.8 kB 🟢 -1.8 kB 🟢 -891 B 🟢 -796 B
assets/CloudRunButtonWrapper-0HUReKVx.js (new) 1.69 kB 🔴 +1.69 kB 🔴 +796 B 🔴 +718 B
assets/CloudRunButtonWrapper-CwGtCDv7.js (removed) 1.69 kB 🟢 -1.69 kB 🟢 -795 B 🟢 -723 B
assets/signInSchema-Bqlb_LYM.js (removed) 1.53 kB 🟢 -1.53 kB 🟢 -564 B 🟢 -511 B
assets/signInSchema-D7JSoX5h.js (new) 1.53 kB 🔴 +1.53 kB 🔴 +563 B 🔴 +515 B
assets/cloudBadges-9GdW8iRy.js (removed) 1.38 kB 🟢 -1.38 kB 🟢 -716 B 🟢 -622 B
assets/cloudBadges-BmfS49wa.js (new) 1.38 kB 🔴 +1.38 kB 🔴 +717 B 🔴 +621 B
assets/cloudSubscription-BnZiYCKS.js (removed) 1.34 kB 🟢 -1.34 kB 🟢 -670 B 🟢 -577 B
assets/cloudSubscription-BwEXVtwe.js (new) 1.34 kB 🔴 +1.34 kB 🔴 +670 B 🔴 +577 B
assets/Load3D-BS95yi-A.js (removed) 1.09 kB 🟢 -1.09 kB 🟢 -505 B 🟢 -453 B
assets/Load3D-DQnZtPJD.js (new) 1.09 kB 🔴 +1.09 kB 🔴 +510 B 🔴 +456 B
assets/nightlyBadges-B_W5VL7v.js (new) 1.02 kB 🔴 +1.02 kB 🔴 +545 B 🔴 +479 B
assets/nightlyBadges-DEbV8tiC.js (removed) 1.02 kB 🟢 -1.02 kB 🟢 -544 B 🟢 -483 B
assets/Load3dViewerContent-CtqwqiUd.js (removed) 1.01 kB 🟢 -1.01 kB 🟢 -476 B 🟢 -430 B
assets/Load3dViewerContent-DxRMXguK.js (new) 1.01 kB 🔴 +1.01 kB 🔴 +478 B 🔴 +426 B
assets/SubscriptionPanelContentWorkspace-C1mxBx9w.js (removed) 945 B 🟢 -945 B 🟢 -444 B 🟢 -387 B
assets/SubscriptionPanelContentWorkspace-DZqfR9mm.js (new) 945 B 🔴 +945 B 🔴 +447 B 🔴 +392 B
assets/SettingDialogContent-DHS1jqvT.js (removed) 887 B 🟢 -887 B 🟢 -429 B 🟢 -380 B
assets/SettingDialogContent-DyTDaUQR.js (new) 887 B 🔴 +887 B 🔴 +431 B 🔴 +382 B
assets/changeTracker-CyXlv9mi.js (removed) 772 B 🟢 -772 B 🟢 -391 B 🟢 -342 B
assets/changeTracker-GDjfl4mH.js (new) 772 B 🔴 +772 B 🔴 +395 B 🔴 +346 B
assets/graphHasMissingNodes-DLT3zrbl.js (removed) 761 B 🟢 -761 B 🟢 -371 B 🟢 -316 B
assets/graphHasMissingNodes-mMI06yil.js (new) 761 B 🔴 +761 B 🔴 +374 B 🔴 +329 B
assets/WidgetLegacy-3A6B2ILA.js (new) 760 B 🔴 +760 B 🔴 +394 B 🔴 +349 B
assets/WidgetLegacy-CBfIP8UB.js (removed) 760 B 🟢 -760 B 🟢 -394 B 🟢 -373 B
assets/WidgetInputNumber-C6y4b6td.js (removed) 392 B 🟢 -392 B 🟢 -231 B 🟢 -217 B
assets/WidgetInputNumber-DokUTm3p.js (new) 392 B 🔴 +392 B 🔴 +231 B 🔴 +199 B
assets/SettingDialogHeader-B4TIxAph.js (removed) 345 B 🟢 -345 B 🟢 -207 B 🟢 -202 B
assets/SettingDialogHeader-Dd2ErkpS.js (new) 345 B 🔴 +345 B 🔴 +208 B 🔴 +200 B
assets/i18n-BT4gcSgP.js (removed) 199 B 🟢 -199 B 🟢 -160 B 🟢 -137 B
assets/i18n-Bu2SDLCH.js (new) 199 B 🔴 +199 B 🔴 +159 B 🔴 +138 B
assets/AnimationControls-BsWySN5_.js 4.61 kB 4.61 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-BhZHTUKb.js 1.78 kB 1.78 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/comfy-logo-single-CzGozBag.js 198 B 198 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/ComfyOrgHeader-Gbby8E71.js 910 B 910 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BaWekgk-.js 14.7 kB 14.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BDDnqSnY.js 15.8 kB 15.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BoYLZfP6.js 15.7 kB 15.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BQBGh0Ya.js 15.5 kB 15.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BRoxhQgK.js 15.8 kB 15.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-C_sqX4RY.js 14.9 kB 14.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-Cd2uuEbd.js 17.1 kB 17.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CXPUqoOz.js 16.6 kB 16.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-ijoJFfEv.js 16.3 kB 16.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-UTYbUnOi.js 17.2 kB 17.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-YFdvkJDc.js 18.4 kB 18.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/constants-BQ60oUwg.js 579 B 579 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/ImportFailedNodeContent-CuQpbxoK.js 2.48 kB 2.48 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/ImportFailedNodeHeader-C5wjxnXc.js 1.08 kB 1.08 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/LazyImage-V1y3sy9h.js 12.3 kB 12.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-Bk7Ph3VS.js 140 kB 140 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BsU_fTOy.js 118 kB 118 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BYY1tCjz.js 153 kB 153 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BzI-1UKY.js 117 kB 117 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-ciwZVtD5.js 133 kB 133 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CjTKnSQT.js 135 kB 135 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-ClVfAHiD.js 185 kB 185 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DtZZaQoT.js 137 kB 137 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DY5snELF.js 160 kB 160 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-Q_yKaq1U.js 166 kB 166 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-XVEzvvBB.js 132 kB 132 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/Media3DTop-5HQboIyx.js 1.82 kB 1.82 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaAudioTop-Di0bN8lA.js 1.43 kB 1.43 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaImageTop-ByvcQ9C2.js 1.75 kB 1.75 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaVideoTop-D1667gDz.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/NodeConflictHeader-CQeNaRiZ.js 1.09 kB 1.09 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-BbE7kmki.js 413 kB 413 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-C4Vr6-Ih.js 367 kB 367 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CeGNv9ZW.js 450 kB 450 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CgbjMWnR.js 360 kB 360 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-Cj0eoGwS.js 371 kB 371 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CjZ27bLt.js 412 kB 412 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CPZbmaZd.js 367 kB 367 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-Cz-81naW.js 335 kB 335 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DknKGYI5.js 364 kB 364 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-elNKIbDk.js 381 kB 381 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-VAK4vMLf.js 338 kB 338 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/OBJLoader2WorkerModule-DTMpvldF.js 109 kB 109 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/PanelTemplate-B9lPSLJe.js 1.2 kB 1.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/previousFullPath-B7BRzEeG.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-DBHUo1Qx.js 8.94 kB 8.94 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/Slider-eqGfZlVo.js 3.52 kB 3.52 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/src-C3JCjcCo.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-BlGCEirp.js 2.21 kB 2.21 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetColorPicker-B6bpqk2C.js 2.9 kB 2.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetGalleria-BTV9zowW.js 3.61 kB 3.61 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetImageCompare-DTyqdFue.js 3.1 kB 3.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetInputText-DN2pTx0v.js 1.86 kB 1.86 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetLayoutField-1P4YwNzh.js 1.95 kB 1.95 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetMarkdown-DaTQe8EX.js 2.88 kB 2.88 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/widgetPropFilter-C6ZYch5M.js 1.1 kB 1.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetTextarea-BGDTDBYo.js 3.14 kB 3.14 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetToggleSwitch-TeVzKTow.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: 60 added / 60 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/lib/litegraph/src/LGraphCanvas.ts`:
- Around line 2055-2077: The auto-pan can continue running if
linkConnector.reset() is invoked while the pointer is still down; fix this by
stopping and clearing the AutoPanController when links are reset: update
linkConnector.reset(...) (or its caller) to call thisOwner._autoPan?.stop() and
set thisOwner._autoPan = null (where thisOwner is the LGraphCanvas instance that
created the AutoPanController), so AutoPanController (class AutoPanController)
is stopped and cleared whenever linkConnector.reset(...) is invoked.

In
`@src/renderer/extensions/vueNodes/composables/useSlotLinkInteraction.autoPan.test.ts`:
- Line 236: The test uses Object.keys(capturedHandlers).forEach((k) => delete
capturedHandlers[k]) which returns a value from the forEach callback (the
boolean from delete) and triggers Biome's useIterableCallbackReturn lint;
replace this pattern with an explicit loop (e.g., for (const k of
Object.keys(capturedHandlers)) { /* delete */ }) to perform deletion without
returning a value from the iterator callback and update the line referencing
capturedHandlers accordingly.
🧹 Nitpick comments (1)
src/renderer/extensions/vueNodes/layout/useNodeDrag.ts (1)

267-275: Consider stopping autopan before nulling drag state for defensive ordering.

Currently dragStartPos is nulled on line 267, then autoPan is stopped on line 274. While this is safe because: (1) no RAF can fire mid-synchronous-block, and (2) the onPan callback has null guards — stopping autoPan first would make the intent clearer and be more robust against future refactoring.

Suggested reordering
+    // Stop auto-pan
+    autoPan?.stop()
+    autoPan = null
+
     dragStartPos = null
     dragStartMouse = null
     otherSelectedNodesStartPositions = null
     selectedGroups = null
     lastCanvasDelta = null
 
-    // Stop auto-pan
-    autoPan?.stop()
-    autoPan = null
-
     // Stop tracking shift key state

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/lib/litegraph/src/LGraphCanvas.ts`:
- Line 674: Change the _autoPan field to use undefined as the sentinel instead
of null: update its declaration (private _autoPan: AutoPanController | undefined
= undefined) and any places that set or clear it (e.g., assignments, checks, and
resets) to use undefined rather than null; also adjust any null comparisons to
=== undefined or ternary guards referencing _autoPan in the LGraphCanvas class
so type and runtime behavior are consistent with the litegraph guideline.
🧹 Nitpick comments (2)
src/lib/litegraph/src/LGraphCanvas.ts (1)

3583-3603: Add defensive cleanup for auto-pan on pointer cancel.

While the current code is protected by pointer.finally callbacks configured during AutoPanController initialization (at lines 2058 and 3573), adding explicit cleanup in processMouseCancel() improves robustness and code clarity, preventing edge cases in future changes.

🛠️ Suggested fix
 processMouseCancel(): void {
   console.warn('Pointer cancel!')
   this.pointer.reset()
+  this._autoPan?.stop()
+  this._autoPan = null
 }
src/renderer/extensions/vueNodes/composables/useSlotLinkInteraction.autoPan.test.ts (1)

177-183: useEventListener mock assumes the target-less overload.

The mock signature (event, handler) only works if the composable calls the 2-arg form (implicit window target). If useSlotLinkInteraction ever switches to the 3-arg form useEventListener(element, 'pointermove', handler), this mock will silently capture the wrong values. Consider making the mock handle both overloads for resilience.

Suggested defensive mock
-  useEventListener: (event: string, handler: (...args: unknown[]) => void) => {
-    capturedHandlers[event] = handler
-    return vi.fn()
-  },
+  useEventListener: (...args: unknown[]) => {
+    const [event, handler] =
+      typeof args[0] === 'string'
+        ? [args[0] as string, args[1] as (...a: unknown[]) => void]
+        : [args[1] as string, args[2] as (...a: unknown[]) => void]
+    capturedHandlers[event] = handler
+    return vi.fn()
+  },

@pythongosssss pythongosssss added the New Browser Test Expectations New browser test screenshot should be set by github action label Feb 10, 2026
@github-actions
Copy link

Updating Playwright Expectations

@github-actions github-actions bot removed the New Browser Test Expectations New browser test screenshot should be set by github action label Feb 10, 2026
@pythongosssss pythongosssss added the New Browser Test Expectations New browser test screenshot should be set by github action label Feb 10, 2026
@github-actions github-actions bot removed the New Browser Test Expectations New browser test screenshot should be set by github action label Feb 10, 2026
@pythongosssss pythongosssss marked this pull request as ready for review February 11, 2026 11:45
@pythongosssss pythongosssss requested review from a team as code owners February 11, 2026 11:45
@dosubot dosubot bot added the size:XXL This PR changes 1000+ lines, ignoring generated files. label Feb 11, 2026
@pythongosssss pythongosssss enabled auto-merge (squash) February 11, 2026 11:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL This PR changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant