Skip to content

Conversation

@maludwig
Copy link

@maludwig maludwig commented Nov 3, 2025

Summary

Original PR and discussion: Comfy-Org/litegraph.js#1082

Original Example HTML to visually describe the issue: https://github.com/Comfy-Org/litegraph.js/blob/8e5c4452cd67ccd91146ba79514bb001c470900a/public/mousemoving_example_with_blur.html

The ordering of mouseup and mousemove events is not defined. So there may be a mouseup event before the next mousemove event where buttons=0, but there may also be a mouseup immediately after.

The original code was designed to handle the case where a user click and drags, then tabs out. It turns out, you still get mousemove events in that case, so we can reset the CanvasPointer the moment it happens, as opposed to attempting to detect if it did happen in the past. The original code was designed under the assumption that if there was no mouseup, and then there was a mousemove with buttons=0, then we must have lost the focus at some point. Unfortunately, on some computers (notably my Macbook M2) this has the side effect of making it so that if your mouse pointer was even slightly moving when releasing the mouse button, it would reset and not connect the graph nodes. Extremely frustrating.

Changes

  • What: Window blur reset handling.
  • Breaking: Nothing.
  • Dependencies: Nothing.

Review Focus

To replicate this, use a high pixel density display and a sensitive mouse device, such as a Retina Display and a macbook touchpad. This also happens in low resolution displays with less sensitive mouse devices, but the race condition is much harder to create, because you need to move at least 1 pixel during the release of the mouse button. If you want to replicate the bug, and you're on a non-Retina display or you have a basic USB mouse, you'll need to move your mouse rather vigorously. If you're on a macbook M2, just use the computer normally.

┆Issue is synchronized with this Notion page by Unito

@dosubot dosubot bot added the size:XS This PR changes 0-9 lines, ignoring generated files. label Nov 3, 2025
@github-actions
Copy link

github-actions bot commented Nov 3, 2025

🎭 Playwright Test Results

⚠️ Tests passed with flaky tests

⏰ Completed at: 11/03/2025, 05:02:18 AM UTC

📈 Summary

  • Total Tests: 500
  • Passed: 468 ✅
  • Failed: 0
  • Flaky: 2 ⚠️
  • Skipped: 30 ⏭️

📊 Test Reports by Browser

  • chromium: View Report • ✅ 459 / ❌ 0 / ⚠️ 2 / ⏭️ 30
  • chromium-2x: View Report • ✅ 2 / ❌ 0 / ⚠️ 0 / ⏭️ 0
  • chromium-0.5x: View Report • ✅ 1 / ❌ 0 / ⚠️ 0 / ⏭️ 0
  • mobile-chrome: View Report • ✅ 6 / ❌ 0 / ⚠️ 0 / ⏭️ 0

🎉 Click on the links above to view detailed test results for each browser configuration.

@github-actions
Copy link

github-actions bot commented Nov 3, 2025

🎨 Storybook Build Status

loading Build is starting...

⏰ Started at: 11/03/2025, 03:38:59 AM UTC

🚀 Building Storybook

  • 📦 Installing dependencies...
  • 🔧 Building Storybook components...
  • 🌐 Preparing deployment to Cloudflare Pages...

⏱️ Please wait while the Storybook build is in progress...

@github-actions
Copy link

github-actions bot commented Nov 3, 2025

Bundle Size Report

Summary

  • Raw size: 12.2 MB baseline 12.2 MB — 🔴 +853 B
  • Gzip: 2.48 MB baseline 2.48 MB — 🔴 +182 B
  • Brotli: 1.95 MB baseline 1.95 MB — 🔴 +88 B
  • Bundles: 58 current • 58 baseline • 13 added / 13 removed

Category Glance
Data & Services 🔴 +1 kB (11.4 kB) · UI Components 🟢 -111 B (12.5 kB) · Graph Workspace 🟢 -24 B (725 kB) · App Entry Points 🟢 -15 B (3.27 MB) · Vendor & Third-Party ⚪ 0 B (5.32 MB) · Other ⚪ 0 B (2.55 MB) · + 3 more

Per-category breakdown
App Entry Points — 3.27 MB (baseline 3.27 MB) • 🟢 -15 B

Main entry bundles and manifests

File Before After Δ Raw Δ Gzip Δ Brotli
assets/index-CueuJcbN.js (new) 2.89 MB 🔴 +2.89 MB 🔴 +597 kB 🔴 +451 kB
assets/index-DoRSRY3L.js (removed) 2.89 MB 🟢 -2.89 MB 🟢 -597 kB 🟢 -451 kB
assets/index-K3aYY2vi.js (removed) 382 kB 🟢 -382 kB 🟢 -76.6 kB 🟢 -62.1 kB
assets/index-1UJ61uwA.js (new) 381 kB 🔴 +381 kB 🔴 +76.6 kB 🔴 +62.1 kB
assets/index-opiIE5I-.js (new) 1.75 kB 🔴 +1.75 kB 🔴 +575 B 🔴 +485 B
assets/index-ttZPki58.js (removed) 1.75 kB 🟢 -1.75 kB 🟢 -576 B 🟢 -490 B

Status: 3 added / 3 removed

Graph Workspace — 725 kB (baseline 725 kB) • 🟢 -24 B

Graph editor runtime, canvas, workflow orchestration

File Before After Δ Raw Δ Gzip Δ Brotli
assets/GraphView-CbDUY5xW.js (removed) 725 kB 🟢 -725 kB 🟢 -142 kB 🟢 -109 kB
assets/GraphView-DpwGqEgq.js (new) 725 kB 🔴 +725 kB 🔴 +142 kB 🔴 +109 kB

Status: 1 added / 1 removed

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

Top-level views, pages, and routed surfaces

File Before After Δ Raw Δ Gzip Δ Brotli
assets/UserSelectView-BUKPRrel.js (new) 8.18 kB 🔴 +8.18 kB 🔴 +2.48 kB 🔴 +2.17 kB
assets/UserSelectView-BzRL0rM7.js (removed) 8.18 kB 🟢 -8.18 kB 🟢 -2.48 kB 🟢 -2.17 kB

Status: 1 added / 1 removed

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

Configuration panels, inspectors, and settings screens

File Before After Δ Raw Δ Gzip Δ Brotli
assets/CreditsPanel-BRX4tMUE.js (removed) 22.9 kB 🟢 -22.9 kB 🟢 -5.45 kB 🟢 -4.76 kB
assets/CreditsPanel-ew7gq34O.js (new) 22.9 kB 🔴 +22.9 kB 🔴 +5.45 kB 🔴 +4.76 kB
assets/KeybindingPanel-CyzRI6kr.js (new) 15.3 kB 🔴 +15.3 kB 🔴 +3.78 kB 🔴 +3.33 kB
assets/KeybindingPanel-T5r0EHYz.js (removed) 15.3 kB 🟢 -15.3 kB 🟢 -3.78 kB 🟢 -3.33 kB
assets/ExtensionPanel-Bm5SjccX.js (new) 12.1 kB 🔴 +12.1 kB 🔴 +2.84 kB 🔴 +2.49 kB
assets/ExtensionPanel-Ch1OWEYP.js (removed) 12.1 kB 🟢 -12.1 kB 🟢 -2.84 kB 🟢 -2.49 kB
assets/AboutPanel-CX2tJpW5.js (new) 10.3 kB 🔴 +10.3 kB 🔴 +2.67 kB 🔴 +2.34 kB
assets/AboutPanel-DxAr03k6.js (removed) 10.3 kB 🟢 -10.3 kB 🟢 -2.68 kB 🟢 -2.34 kB
assets/ServerConfigPanel-BbfV10tQ.js (new) 8.23 kB 🔴 +8.23 kB 🔴 +2.17 kB 🔴 +1.91 kB
assets/ServerConfigPanel-BDc7SXmC.js (removed) 8.23 kB 🟢 -8.23 kB 🟢 -2.18 kB 🟢 -1.91 kB
assets/UserPanel-CHob7oaI.js (removed) 7.94 kB 🟢 -7.94 kB 🟢 -2.07 kB 🟢 -1.81 kB
assets/UserPanel-EPDD0t6m.js (new) 7.94 kB 🔴 +7.94 kB 🔴 +2.07 kB 🔴 +1.8 kB
assets/settings-0O6mq5to.js 24.3 kB 24.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-BYaBy7dC.js 20.4 kB 20.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-C3vygQN4.js 25.7 kB 25.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-CbKYXyH0.js 22.7 kB 22.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-CCholIsI.js 25 kB 25 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DFX7vRkK.js 19.8 kB 19.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-INJLrcmT.js 31.3 kB 31.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-iR6BKRXe.js 23.7 kB 23.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-YjQmudNE.js 23.5 kB 23.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 6 added / 6 removed

UI Components — 12.5 kB (baseline 12.6 kB) • 🟢 -111 B

Reusable component library chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/ComfyQueueButton-BtyPuAsN.js (removed) 11.3 kB 🟢 -11.3 kB 🟢 -2.83 kB 🟢 -2.52 kB
assets/ComfyQueueButton-CHkVdUPx.js (new) 11.2 kB 🔴 +11.2 kB 🔴 +2.78 kB 🔴 +2.46 kB
assets/UserAvatar.vue_vue_type_script_setup_true_lang-CY-Afo9h.js 1.29 kB 1.29 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 1 added / 1 removed

Data & Services — 11.4 kB (baseline 10.4 kB) • 🔴 +1 kB

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/keybindingService-DoEw9fLm.js (new) 8.61 kB 🔴 +8.61 kB 🔴 +2.08 kB 🔴 +1.78 kB
assets/keybindingService-DpPd4rs-.js (removed) 7.6 kB 🟢 -7.6 kB 🟢 -1.84 kB 🟢 -1.59 kB
assets/serverConfigStore-BXxesUPS.js 2.79 kB 2.79 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 1 added / 1 removed

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

Helpers, composables, and utility bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/mathUtil-CTARWQ-l.js 1.07 kB 1.07 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
Vendor & Third-Party — 5.32 MB (baseline 5.32 MB) • ⚪ 0 B

External libraries and shared vendor chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/vendor-other-DTJaZ2wB.js 3.22 MB 3.22 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-primevue-PESgPnbc.js 517 B 517 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-three-JDoAqkQm.js 1.37 MB 1.37 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-tiptap-BovKm-bo.js 232 kB 232 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-vue-CE9hyBb0.js 92.4 kB 92.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-xterm-BZLod3g9.js 407 kB 407 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
Other — 2.55 MB (baseline 2.55 MB) • ⚪ 0 B

Bundles that do not match a named category

File Before After Δ Raw Δ Gzip Δ Brotli
assets/commands-B2KZRBmX.js 15.1 kB 15.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-Bw-ckyga.js 13.9 kB 13.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-C_NmM85I.js 13.8 kB 13.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CuozCW4W.js 14 kB 14 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-DGfVUJCR.js 16.2 kB 16.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-dOJNDogK.js 14.5 kB 14.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-DwiE551e.js 14.7 kB 14.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-Fw7mvqSy.js 13.1 kB 13.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-FXnO1W4Q.js 13.2 kB 13.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-B2H4r1yK.js 70.7 kB 70.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BfrcYvru.js 59.4 kB 59.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BhRi1J0e.js 68.4 kB 68.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BUG9wuyt.js 80.3 kB 80.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-C0hL5eRA.js 76.4 kB 76.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CkKZCT7r.js 58.7 kB 58.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-D1RQ0Vb_.js 66.3 kB 66.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DdyfZOXg.js 67.6 kB 67.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DPE2NqRw.js 92.9 kB 92.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-3I1vPgv4.js 181 kB 181 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-B2huPGKQ.js 190 kB 190 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-BWugyUzd.js 215 kB 215 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-bXqu6Stq.js 194 kB 194 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CtB2M3sY.js 229 kB 229 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-D-rCrn-T.js 200 kB 200 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-D38DSnl1.js 179 kB 179 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DAsU52ON.js 192 kB 192 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DnGONaA_.js 196 kB 196 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XS This PR changes 0-9 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant