Files
90-RED-ComfyUI-LinkRouter/web/ui-policy.js
T
90-RED 8246479bee v1.2.0 — Adaptive drag modes, Heavy Deferred, large-workflow performance
Major features:
- Adaptive drag mode with 5 fixed modes (Normal, Freeze+Check, Freeze, Hide, Heavy Deferred)
- Heavy Deferred for lag-free dragging in large workflows (250+ nodes)
- Three drag phases: moving → held → released, with priority-based re-routing during pause
- Node hard-obstacle avoidance — links can never pass through nodes

Performance:
- Progressive routing with frame-budgeted progressive batches
- Fast graph signature for geometry-change detection
- OVG rebuild deferred during large drags
- Collision re-check limited to affected links only

Fixes:
- Hover no longer triggers full-workflow redraw
- Krea2 / Ultimate SD Upscale link disappearance during drag
- Stale sticky paths now validated before reuse
- Drag-endpoint dogleg for straight-line links

New modules: adaptive-policy, drag-policy, draw-policy, profiler, progressive, ui-policy
Tests: 39 automated tests covering routing, adaptive, drag, profiler
Floating bar: Adaptive 🧠 toggle, 5 fixed-mode buttons, debug row, Nodes 2.0 switch
2026-07-13 03:34:42 +08:00

17 lines
658 B
JavaScript

export const FIXED_DRAG_MODES = [
{ emoji: "🔓", name: "Normal", value: "none" },
{ emoji: "🧊", name: "Freeze+Check", value: "freeze-others" },
{ emoji: "🥶", name: "Freeze", value: "freeze-others-strict" },
{ emoji: "👻", name: "Hide", value: "hide-self" },
{ emoji: "🐘", name: "Heavy Deferred", value: "heavy-deferred" },
];
export function isFixedDragMode(value) {
return FIXED_DRAG_MODES.some((mode) => mode.value === value);
}
export function adaptiveToggleTarget(currentMode, lastManualMode) {
if (currentMode !== "adaptive") return "adaptive";
return isFixedDragMode(lastManualMode) ? lastManualMode : "freeze-others";
}