Commit Graph

5104 Commits (bdd1f6e1d202070f4f7a678dd2bc8173617cfb49)

Author SHA1 Message Date
Kazuhito Yokoi cc1662ab5c Fix status node to retrieve status from all nodes 2026-01-04 16:17:16 +09:00
Kazuhito Yokoi bcbd364ddd Add tooltip to delete button 2026-01-03 17:04:01 +09:00
Kazuhito Yokoi 8c594ac627 Decrement count of http requests after error 2026-01-03 14:31:46 +09:00
Piotr Bogun d8f9139d2e Add check for junction node type in the quick add menu 2026-01-02 16:15:40 -06:00
Piotr Bogun 957f701035 Add focus class to new selected label after removing focus class from previously selected label 2026-01-02 15:19:04 -06:00
Kazuhito Yokoi 187ce3bea4 Fix invalid node size in quick add dialog 2026-01-02 14:37:30 +09:00
Noley Holland 0689306569 Add new line at end of file 2025-12-30 11:13:44 -08:00
Noley Holland a55aa17939 Fix search dialog to preserve flow/subflow name casing & add unit tests 2025-12-30 11:13:10 -08:00
Kazuhito Yokoi 01ae461911 Expand folder to avoid error in library 2025-12-30 01:01:51 +09:00
Kazuhito Yokoi a401ea9216 Stricter validator for flow file name in project feature 2025-12-30 00:47:11 +09:00
Kazuhito Yokoi a2fdb198d6 Fix list size in Git config UI 2025-12-29 23:30:02 +09:00
Kazuhito Yokoi 811aaa9df4 Fix scrolling issue in Git config UI 2025-12-29 22:25:57 +09:00
Dennis-SEG f1b56dc6fa refactor: remove unused getHeaderValue() function 2025-12-24 00:46:07 +01:00
Dennis-SEG 2355709040 fix(http-request): prevent uncaught exceptions in async hooks
This PR fixes several issues that can cause uncaught exceptions and crash Node-RED:

1. Fixed typo: `toLowercase()` -> `toLowerCase()` in getHeaderValue()
2. Added try-catch to beforeRequest hook
3. Added try-catch to beforeRedirect hook
4. Added try-catch to afterResponse hook (digest auth)
5. Added input validation to extractCookies() with array check
6. Added input validation to buildDigestHeader() for nonce/realm

These changes ensure that malformed responses or invalid data from servers
don't crash the entire Node-RED runtime.

Fixes: Uncaught exceptions in HTTP request node
2025-12-23 21:32:49 +01:00
Dave Conway-Jones 6c39735051
add burst mode to delay node
and tests
2025-12-21 19:36:58 +00:00
Dave Conway-Jones 1a8a747955
add some translations
(from Google)
2025-12-18 11:24:22 +00:00
Dave Conway-Jones 3fa7ad9d3a
Add Paused label to footer to make it more obvious 2025-12-18 11:05:40 +00:00
Dave Conway-Jones 183326a685
Add pause button to debug sidebar 2025-12-17 19:31:42 +00:00
Nick O'Leary 34fe8c1057
Checkpoint 2025-12-15 13:39:43 +00:00
Dave Conway-Jones 636089b586
Fix flushing when in variable delay mode
to close #5381
2025-12-12 22:42:46 +00:00
Nick O'Leary c37f352531
Update for beta.1 2025-12-12 17:00:01 +00:00
Nick O'Leary 6c6be000eb
Rollup all the changes 2025-12-12 16:46:19 +00:00
Nick O'Leary ef0e67e65f
Checkpoint 2025-12-10 13:34:43 +00:00
Nick O'Leary e95fdb7fa6
Checkpoint 2025-12-09 18:05:09 +00:00
Ben Hardill 55d08ba79e
Move localfiles checkbox 2025-12-08 17:39:25 +00:00
Nick O'Leary 04f7c8dc9f
Checkpoint 2025-12-08 16:27:33 +00:00
Nick O'Leary 48b8659ddb
Show overflow button when not enough space in tab bar 2025-12-08 11:10:46 +00:00
Ben Hardill c17b6bfde8
Add TLS certs/keys from Env Vars 2025-12-07 12:48:33 +00:00
GogoVega 2c7a15ecb2
Move the logic to the right place 2025-12-07 12:04:59 +01:00
Kazuhito Yokoi 4b906734c9 Fix debug tab to copy displayed value 2025-12-06 00:21:16 +09:00
Nick O'Leary 97729cc68a
Merge branch 'master' into rel500b0 2025-12-05 10:57:54 +00:00
Nick O'Leary d5558dd6da
Merge pull request #4907 from node-red/Add-pfxp12-to-tls-options
Add ability to use pfx or p12 file for TLS connection settings option
2025-12-04 17:33:24 +00:00
Nick O'Leary 192a863ba6
Merge branch 'dev' into 5317-sidebar-panels 2025-12-04 14:41:06 +00:00
Nick O'Leary ea5cc1f53c
Fix touchmove event handling for panning workspace 2025-12-04 14:35:22 +00:00
Nick O'Leary 81ab7d7e0a
Update tour with sidebar details 2025-12-04 14:09:06 +00:00
Nick O'Leary 9e1fc2d289
Merge branch 'dev' into 5317-sidebar-panels 2025-12-04 13:49:14 +00:00
Nick O'Leary 108b861ae0
Merge pull request #5370 from node-red/beta-tour
Update tour for 5-beta
2025-12-04 13:48:56 +00:00
Nick O'Leary 4409732af6
Merge branch 'dev' into 5317-sidebar-panels 2025-12-04 13:41:07 +00:00
Nick O'Leary ebc079730d
Merge pull request #5312 from node-red/pan-zoom
Workspace pan/zoom updates
2025-12-04 13:40:20 +00:00
Nick O'Leary 39dc8073d3
Update tour for 5-beta 2025-12-04 13:37:44 +00:00
Nick O'Leary 503fe7377b
Fix linting 2025-12-04 13:37:23 +00:00
Nick O'Leary 9e9fa2b92d
Improve styling 2025-12-04 13:33:44 +00:00
Gerrit Riessen aef90576eb
Reveal node in search results with mouseover
This highlights nodes in the search results using a mouseover trigger.

See forum https://discourse.nodered.org/t/highlight-nodes-in-search-results-list/99747 for a discussion.
2025-12-04 13:01:59 +01:00
Nick O'Leary 78c1b7c3b1
Merge branch 'dev' into 5317-sidebar-panels 2025-12-03 16:58:26 +00:00
Nick O'Leary cab7ce247b
Prep dev branch for beta releases 2025-12-03 16:51:19 +00:00
Nick O'Leary 892bda813c
Bump for 4.1.2 2025-12-03 15:50:47 +00:00
Nick O'Leary fd1f534b56
Merge pull request #5352 from GogoVega/fix-5347-history
Fix invalid `dirty` state during redo after deployment
2025-12-03 14:39:15 +00:00
Nick O'Leary 8cf1e73a02
Merge pull request #5276 from GogoVega/fix-plugins-getConfig
Handle plugin name in `plugins.getConfig`
2025-12-03 13:58:27 +00:00
Ben Hardill ddff7c3170
Bump to 4.22.1 2025-12-02 19:57:52 +00:00
Ben Hardill 724eafe2d3
Make runtime version match 2025-12-02 11:38:02 +00:00
Ben Hardill e200576d08
Update express version
Update to pick up new version with CVE fixes

CVE: cve-2024-51999
2025-12-02 11:33:16 +00:00
GogoVega 49b85e3f73
Allow actions show-next-tab and previous to loop 2025-11-17 09:52:18 +01:00
GogoVega 2b65cf02b1
`markAllDirty` also needs to modify the redo list 2025-11-12 10:28:28 +01:00
Nick O'Leary 7b6c838e7e
Reshow scrollbars and disable navigator temporary show 2025-10-31 11:29:37 +00:00
Nick O'Leary 351d25a7d6
Fix nls message name 2025-10-31 11:29:37 +00:00
Nick O'Leary ccf8772dc0
Merge branch 'master' into pan-zoom 2025-10-30 14:18:51 +00:00
Nick O'Leary 096bafb75c
Update info tab sidebar 2025-10-30 14:15:59 +00:00
Nick O'Leary 56b2439511
Ensure tab button is visible when sorting 2025-10-30 11:50:18 +00:00
Nick O'Leary 8b0f926856
Improve styling for info sidebar on LH side 2025-10-30 11:50:09 +00:00
Nick O'Leary 9d019e25c2
Fix up port event cancelling on node-select 2025-10-29 17:50:50 +00:00
Nick O'Leary 603a6f0c11
Merge pull request #5337 from node-red/selection-to-subflow-menu
Add selection-to-subflow context menu item
2025-10-29 17:40:26 +00:00
Nick O'Leary ea5c134866
Merge pull request #5315 from stoprocent/master
Fix race condition in projects initialization by returning gitTools.init() promise
2025-10-29 17:32:20 +00:00
Nick O'Leary 18f2285a48
Add selection-to-subflow context menu item 2025-10-29 17:31:23 +00:00
Nick O'Leary c015645c03
Merge pull request #5325 from node-red/5319-subflow-port-fixes
Show subflow input label on virtual port
2025-10-29 17:16:27 +00:00
Nick O'Leary e9fa3f0a2b
Merge pull request #5323 from node-red/5244-clear-suggestions
Clear suggestions on node/port mouse down
2025-10-29 17:16:17 +00:00
Nick O'Leary bd8a1eda90
Make sidebar separators a bit narrower 2025-10-29 16:14:55 +00:00
Nick O'Leary 6924b399cc
Fix lock icon for read-only user 2025-10-29 15:29:35 +00:00
Nick O'Leary f690fcb295
Apply default layout 2025-10-29 11:01:13 +00:00
Nick O'Leary 41ed5c94b6
Don't squash buttons when resizing window 2025-10-29 10:51:31 +00:00
Nick O'Leary 858cf75670
Update palette sidebar icon to custom svg 2025-10-29 10:41:15 +00:00
Nick O'Leary d5a28ce5e7
Fix sidebar menu to include all options
Needed to reorder initialisation as sidebars were adding before the
menu component was initialised, meaning their menu entries didn't get
added
2025-10-29 10:40:21 +00:00
Nick O'Leary b6367bbb44
Track sidebar state 2025-10-29 10:40:02 +00:00
Nick O'Leary 6c36f789bd
Fix login display 2025-10-28 14:41:19 +00:00
Nick O'Leary 6ffa23a44e
Fix sidebar sortable for touch events 2025-10-27 16:28:40 +00:00
Nick O'Leary b23d455ad5
Fix tray positioning 2025-10-27 10:06:44 +00:00
Nick O'Leary 0ead2d815c
Update sidebar tab ux 2025-10-24 17:35:00 +01:00
Nick O'Leary 2e777db80c
Handle resizing and shade on separators 2025-10-24 11:40:56 +01:00
Nick O'Leary c90f93ec56
Fix sidebar apis for dual sidebars 2025-10-23 17:24:15 +01:00
Nick O'Leary fe4d40a776
Show subflow input label on virtual port 2025-10-23 15:37:07 +01:00
Nick O'Leary 6bb32775ba
Clear suggestions on node/port mouse down
Closes #5244
2025-10-23 13:52:44 +01:00
Nick O'Leary 6e264084e7
Fix z ordering of palette nodes 2025-10-22 11:39:13 +01:00
Nick O'Leary 4bcec3741d
Move palette footer to sidebar toolbar 2025-10-21 18:54:33 +01:00
Nick O'Leary b0cafda496
Reimplement Palette as Sidebar component 2025-10-21 17:46:59 +01:00
Nick O'Leary c9e0aaf34e
Make zoom scale 1 sticky to make it easier to get to 2025-10-21 09:24:58 +01:00
Nick O'Leary fa05811b08
Fix linting 2025-10-20 13:20:30 +01:00
Nick O'Leary 6813f373c6
Fix issues with navigator show/hide lifecycle 2025-10-20 13:15:52 +01:00
Nick O'Leary 3bbdc77300
Fix up space-to-pan event handling 2025-10-20 13:15:37 +01:00
Nick O'Leary 9cedcd0a78
Add nls message for zoom to fit 2025-10-20 13:15:09 +01:00
Marek Serafin 25e92c3501 Fix race condition in projects initialization
Add missing return statement for gitTools.init() promise to ensure
activeProject is set before getFlows() is called during startup.

Fixes intermittent 'No active project' warnings when projects feature
is enabled.
2025-10-18 18:04:06 +02:00
GogoVega ced0b30632
Fixe a typo in the variable name 2025-10-16 17:06:05 +02:00
dimitrieh 1638fa927b
Fix mouse wheel zoom sensitivity by detecting input device type
Mouse wheel events were being treated as trackpad input, causing excessive zoom jumps. Added delta magnitude detection (threshold: 50) to distinguish between mouse wheel (large deltas) and trackpad (small deltas), applying appropriate zoom calculation for each device.
2025-10-14 10:04:35 +01:00
dimitrieh 1ff980d190
Increase maximum zoom level to 2.0 2025-10-14 10:04:35 +01:00
dimitrieh 250f7ab897
Add minimap auto-show on flow startup and workspace changes
Shows minimap briefly when:
- Flow initially loads (if nodes exist)
- Switching between workspace tabs
- Continuing to show during zoom/pan navigation

Implementation:
- Listen to workspace:change events
- Check for active workspace with nodes before showing
- Use 100ms delay to ensure nodes are rendered
- Reuse existing showTemporary() for consistent behavior
2025-10-14 10:04:35 +01:00
dimitrieh d308bc7763
Remove debug console logs and update documentation 2025-10-14 10:04:35 +01:00
dimitrieh 79581bf51f
Refresh active nodes before zoom-to-fit to work immediately 2025-10-14 10:04:35 +01:00
dimitrieh f831df70ce
Fix zoom-to-fit to properly center nodes in viewport 2025-10-14 10:04:35 +01:00
dimitrieh 34d356230b
Set maximum zoom level to 1.0 2025-10-14 10:04:34 +01:00
dimitrieh 37a4440a5a
Make zoom animation duration relative to maintain consistent velocity 2025-10-14 10:04:34 +01:00
dimitrieh f22915e1b9
Add grabbing cursor for middle-click pan mode 2025-10-14 10:04:34 +01:00
dimitrieh 775d6181c9
Add grab/grabbing cursor for spacebar pan mode
- Show grab cursor (open hand) when spacebar is pressed
- Show grabbing cursor (closed hand) when actively panning with spacebar+drag
- Revert to grab cursor on mouse release if spacebar still held
- Clear cursor when spacebar is released
- Apply cursor to SVG element (outer) where mouse events occur
- Handle edge cases: window blur, canvas blur, spacebar release outside canvas
2025-10-14 10:04:34 +01:00
dimitrieh 47026ec744
Add minimap auto-show for zoom button/hotkey interactions
- Emit view:navigate event in animatedZoomView onStart callback
- Minimap now appears when using zoom buttons (in/out/reset/fit)
- Minimap now appears when using zoom hotkeys (Ctrl+/-/0/1)
- Auto-hides after 2 seconds as expected
- Applies to all animated zoom operations consistently
2025-10-14 10:04:34 +01:00
dimitrieh 79918f0187
Add focal point locking for sequential button/hotkey zooms
- Store workspace center on first button/hotkey zoom operation
- Maintain same focal point for sequential zooms within 1 second timeout
- Pass workspace center directly to animatedZoomView to prevent recalculation
- Focal point always at viewport center with consistent workspace point
- Works correctly at canvas edges where viewport may shift
- Does not interfere with wheel/pinch zoom which provide explicit focal points
2025-10-14 10:04:34 +01:00
dimitrieh 95b750060f
Fix zoom button animation and improve performance
- Fixed viewport jump to 0,0 by preventing click event from being passed as focal point
- Added smooth animation to zoom buttons and keyboard shortcuts (animatedZoomView)
- Doubled zoom step from 0.1 to 0.2 for faster zooming
- Optimized animation performance by only updating transforms during animation frames
- Fixed undefined variable issue (vis/gridScale -> eventLayer/outer)
- Full redraw only happens once at end of animation, eliminating jarring experience
2025-10-14 10:04:33 +01:00
dimitrieh 324ca52516
Fix zoom center calculation to use oldScaleFactor consistently 2025-10-14 10:04:33 +01:00
dimitrieh a1854806af
Fix viewport drift when using zoom buttons without focal point 2025-10-14 10:04:33 +01:00
dimitrieh 8286ec8131
Remove animation from zoom buttons for instant, smooth zooming
Replace animatedZoomView() with direct zoomView() calls for zoom
buttons and keyboard shortcuts to eliminate jagged animation caused
by redraw() being called on every frame.

- Change zoomIn/zoomOut/zoomZero to use instant zoom like trackpad
- Single redraw per zoom step instead of 8-10 redraws during animation
- Makes all zoom methods (buttons, keyboard, trackpad) feel consistent
- Keep animatedZoomView() only for zoomToFitAll() where animation helps

Fixes stuttering when zooming with buttons or Ctrl+/-/0 shortcuts.
2025-10-14 10:04:33 +01:00
dimitrieh f74beb6a92
Add Ctrl+1/Cmd+1 keyboard shortcut for zoom-to-fit 2025-10-14 10:04:33 +01:00
dimitrieh f6decfd589
Revert "Move zoom-to-fit button between reset and zoom-in"
This reverts commit e46cfc9479b2db429d4f73c981e1886b6c0cbbca.
2025-10-14 10:04:33 +01:00
dimitrieh 269cab2e9c
Move zoom-to-fit button between reset and zoom-in 2025-10-14 10:04:32 +01:00
dimitrieh e2a6a1b52d
Fix zoom button handlers - zoom in/out were reversed 2025-10-14 10:04:32 +01:00
dimitrieh c5209d8ea2
Add zoom-to-fit button to show all nodes at once
Add fourth zoom button that calculates bounding box of all active nodes
and zooms out to fit them all in viewport with padding.

- Add compress icon button to zoom controls in footer
- Implement zoomToFitAll() function with bounding box calculation
- Add 80px padding around nodes for visual breathing room
- Respect dynamic minimum zoom limit
- Center viewport on bounding box after zoom animation
- Register core:zoom-fit action for keyboard shortcut support
- Update documentation with new zoom-to-fit feature
2025-10-14 10:04:32 +01:00
dimitrieh 48b6fb353d
Fix grey padding at canvas bottom by resetting SVG margins
Remove 5px grey space that appeared at bottom of canvas when scrolled
to maximum position. The viewport scrollHeight was 8005px instead of
8000px due to default browser SVG margins.

- Add explicit padding and margin resets to workspace chart container
- Set SVG to display:block with zero margin/padding to prevent spacing
- Ensures scrollable area exactly matches 8000px canvas dimensions
2025-10-14 10:04:32 +01:00
dimitrieh f718069b46
Fix minimap viewport position at non-1.0 zoom levels
The minimap was treating scroll position as workspace coordinates,
but scrollLeft/scrollTop are actually in scaled canvas pixels.

At zoom levels other than 1.0, this caused the viewport rectangle
to appear in the wrong position. For example, at 2x zoom viewing
workspace position (500, 500), the scroll position would be 1000px,
and the minimap would incorrectly show it at workspace position 1000.

Fixed by converting scroll position to workspace coordinates first:
position = scrollPos / scaleFactor / nav_scale

The viewport rectangle now accurately reflects the actual visible
area at all zoom levels.
2025-10-14 10:04:32 +01:00
dimitrieh cdde99b9ab
Add scroll spacer to fix scrollable area at minimum zoom
When at minimum zoom with "cover" behavior, the SVG canvas may be
smaller than the viewport in one dimension. This causes the browser's
scrollWidth/scrollHeight to be limited by the SVG size rather than
the full canvas extent.

Added an invisible spacer div that matches the scaled canvas dimensions,
ensuring the scrollable area always reflects the actual canvas size.
This allows proper scrolling to reach all canvas edges without going
beyond canvas boundaries.
2025-10-14 10:04:32 +01:00
dimitrieh f132867a31
Add stable focal point tracking to Alt/Space scroll zoom
Alt+scroll and Space+scroll zoom now maintain a fixed focal point
like trackpad pinch zoom. Previously, the zoom point would drift
during continuous scrolling.

Implemented gesture session tracking that:
- Stores focal point in workspace coordinates for stability
- Locks focal point during continuous scroll events (< 100ms apart)
- Ends gesture after 500ms of inactivity
- Converts focal point back to screen coordinates for each zoom step

This makes all zoom methods (pinch, Alt+scroll, Space+scroll) behave
consistently with stable, cursor-centered zooming.
2025-10-14 10:04:31 +01:00
dimitrieh c07cce4fb0
Make Alt/Space scroll zoom speed match trackpad pinch zoom
Alt+scroll and Space+scroll were using fixed zoom steps (0.06/0.08),
making them zoom much faster than trackpad pinch zoom which uses
proportional scaling (0.005 * delta).

Changed to use trackpad-style proportional zoom for consistent feel
across all zoom input methods.
2025-10-14 10:04:31 +01:00
dimitrieh 45f3b01125
Fix spacebar hold causing unwanted canvas scrolling
When holding spacebar, browsers fire repeated keydown events. The
previous implementation only prevented default on the first keydown,
allowing subsequent events to trigger browser's space-scroll behavior.

Moved preventDefault() outside conditional to block all spacebar events.
2025-10-14 10:04:31 +01:00
dimitrieh 3bef2d6481
Improve minimap auto-show behavior
- Remove view:selection-changed listener to prevent minimap showing on node selection
- Remove view:navigate emissions from pan mode entry points (no longer shows when starting pan)
- Add view:navigate emission to touchpad scroll handler for consistent behavior
- Minimap now only appears during actual panning and zooming actions

The minimap previously showed when selecting nodes or just starting a pan gesture,
causing unnecessary flashing. Now it only appears during actual navigation (pan/zoom)
and fades after 2 seconds of inactivity.
2025-10-14 10:04:31 +01:00
dimitrieh 08a5d04df6
Enable diagonal trackpad panning
- Prevent browser's native axis-locked scroll behavior
- Manually handle both deltaX and deltaY in wheel event handler
- Update touch-action CSS from pan-x pan-y to manipulation
- Add documentation of fix to CANVAS_INTERACTION.md

Fixes issue where trackpad scrolling was restricted to horizontal
or vertical movement only, not both simultaneously.
2025-10-14 10:04:31 +01:00
Dimitrie Hoekstra 6725fd6426
Hide scrollbars and add auto-show/hide minimap on navigation
- Hide scrollbars on canvas while keeping it scrollable
- Add minimap auto-show functionality that triggers on zoom and pan
- Minimap appears for 2 seconds during navigation then fades out
- Add smooth fade in/out animations for minimap visibility
- Emit view:navigate events for all zoom and pan operations
- Minimap stays visible if manually toggled with button
2025-10-14 10:04:31 +01:00
Dimitrie Hoekstra 7dca55fdb8
Add dynamic minimum zoom recalculation on viewport resize
- Recalculate minimum zoom when window resizes to ensure canvas fits properly
- Automatically adjust zoom if current level falls below new minimum after resize
- Ensures canvas boundaries remain appropriate for different viewport sizes
2025-10-14 10:04:30 +01:00
Dimitrie Hoekstra b4c3faf034
Implement dynamic zoom limits to match canvas boundaries
- Add calculateMinZoom() function to dynamically compute minimum zoom based on viewport size
- Ensure canvas always covers the entire viewport (no empty space visible)
- Use 'cover' behavior: zoom limited so canvas fills viewport completely
- Update all zoom methods (buttons, wheel, trackpad, touch) to use calculated minimum
- Prevent zooming out beyond what's needed to fill the viewport with canvas content
2025-10-14 10:04:30 +01:00
Dimitrie Hoekstra 4938833227
Fix zoom gesture detection after two-finger panning
Clear touchStartTime timeout when entering two-finger pan mode to prevent
interference with subsequent zoom gestures. The timeout was being used for
long-press detection but wasn't cleared during pan, causing the next
gesture to incorrectly maintain the old touch state.
2025-10-14 10:04:30 +01:00
Dimitrie Hoekstra bf73261ecb
Prevent UI pinch-to-zoom while keeping canvas zoomable
- Add touch-action CSS to prevent pinch-zoom on UI elements
- Apply touch-action: pan-x pan-y to html, body, and editor
- Apply touch-action: none to canvas for custom gestures
- Add JavaScript prevention for touchpad pinch on non-canvas areas
- Block Ctrl+wheel events outside the workspace chart
2025-10-14 10:04:30 +01:00
Dimitrie Hoekstra 3e2fb85821
Add two-finger panning and spacebar+click panning
- Implement spacebar+left-click panning for desktop
- Add two-finger pan gesture for touch devices
- Use mode locking to prevent laggy gesture switching
- Lock into pan or zoom mode based on initial movement
- Fix focal point regression caused by pan/zoom interaction
- Improve gesture detection with better thresholds (10px for zoom, 5px for pan)
2025-10-14 10:04:30 +01:00
Dimitrie Hoekstra 541977312e
Improve zoom smoothness and control
- Make mouse wheel zoom smooth without jarring animations
- Reduce zoom acceleration from 2x to 1.2x max
- Slow down zoom velocity by 40-50% for better control
- Add asymmetric zoom speeds (zoom out slower than zoom in)
- Reduce acceleration range to 0.7-1.1 for gentler transitions
- Disable legacy mousewheel handler in favor of modern wheel event
2025-10-14 10:04:30 +01:00
Dimitrie Hoekstra 782821b590
Fix zoom focal point stability at canvas edges
- Store focal point in workspace coordinates instead of screen coordinates
- Prevents focal point drift when scroll changes due to canvas boundaries
- Maintains consistent zoom focus even when view shifts at edges
- Add early return in zoomView() to prevent unnecessary updates at zoom limits
- Improve gesture state management for both trackpad and touch gestures
2025-10-14 10:04:30 +01:00
Dimitrie Hoekstra 49222c5737
Fix trackpad zoom direction - spreading fingers now zooms in
- Inverted deltaY value for trackpad pinch gestures
- Matches standard macOS trackpad behavior
- Spreading fingers (negative deltaY) zooms in
- Pinching fingers (positive deltaY) zooms out
2025-10-14 10:04:29 +01:00
Dimitrie Hoekstra eaf68815fd
Implement smooth zoom functionality with pinch-to-zoom support
- Add smooth zoom animation with 125ms duration and easing curves
- Implement space+scroll zoom mode alongside existing Alt+scroll
- Fix pinch-to-zoom with proper ratio-based scaling and fixed focal point
- Add gesture state management for consistent zoom behavior
- Enhance spacebar handling to prevent scroll artifacts
- Fix zoom button layout (correct zoom in/out direction)
- Add zoom animation utilities (view-zoom-animator.js)
- Add zoom configuration constants (view-zoom-constants.js)
- Fix scale lock issues with improved tolerance handling
- Update Gruntfile to include new zoom modules in build

Features implemented:
- Smooth animated zoom transitions (125ms with ease-out)
- Space+scroll for zoom mode
- Fixed focal point during pinch gestures
- No scroll artifacts when pressing space
- Proper state management when cursor leaves canvas
- Natural acceleration/deceleration curves

Known issue: Trackpad pinch-to-zoom needs additional work on macOS
2025-10-14 10:04:29 +01:00
claude[bot] bd51b0c153
feat: Add enhanced zoom and scroll features
- Added space+scroll zoom functionality
- Implemented cursor-centered zoom (focuses on cursor position)
- Enhanced pinch-to-zoom with trackpad support (Ctrl+wheel)
- Added momentum scrolling with edge bounce animation
- Improved touch pinch gesture handling with proper center tracking

Co-authored-by: Dimitrie Hoekstra <dimitrieh@users.noreply.github.com>
2025-10-14 10:04:28 +01:00
Nick O'Leary 2f2199e71b
Bump for 4.1.1 release 2025-10-13 11:37:18 +01:00
Nick O'Leary c9b7263e21
Merge pull request #5300 from node-red/5287-fix-httpin-middleware-handling
Do not assume rawBody middleware is last in stack when moving it
2025-10-13 11:17:20 +01:00
Nick O'Leary 2c1fe60d25
Merge pull request #5307 from GogoVega/5245-filter-suggestions-for-disabled-set
Filter suggestions to ensure only enabled set are shown
2025-10-13 11:12:12 +01:00
Nick O'Leary b5edcf6ac9
Update packages/node_modules/@node-red/editor-client/src/js/ui/view.js 2025-10-13 11:06:30 +01:00
Nick O'Leary 6d1fd0b616
Show all catalog items if small enough and no search time provided 2025-10-13 10:56:40 +01:00
GogoVega c1cd5d9593
Filter suggestions to ensure only enabled set are shown 2025-10-10 18:16:25 +02:00
Nick O'Leary 5427d43a98
Merge pull request #5306 from node-red/5244-redraw-after-clearing-suggestion
Force a redraw after clearing suggested flow on mouse down
2025-10-10 16:03:36 +01:00
Nick O'Leary f4cbebca66
Merge pull request #5299 from joebordes/i18n_003
i18n(NodeRed) update ES translation files to latest code base
2025-10-10 15:50:48 +01:00
Nick O'Leary 4173e9a71b
Force a redraw after clearing suggested flow on mouse down 2025-10-10 15:47:31 +01:00
Nick O'Leary e85476b925
Merge pull request #5301 from node-red/5245-filter-suggestions-for-known-types
Filter suggestions to ensure only known types are shown
2025-10-10 15:06:00 +01:00
GogoVega 7c1505eeaf
Use the action label if provided 2025-10-10 13:38:03 +02:00
Nick O'Leary 00b879f855
Filter suggestions to ensure only known types are shown 2025-10-10 12:02:36 +01:00
Nick O'Leary 471f0d8bea
Do not assume rawBody middleware is last in stack when moving it 2025-10-10 11:35:27 +01:00
Nick O'Leary 0e8b403ec8
Merge branch 'master' into 5264-fix-sfpath-envvar 2025-10-10 11:20:06 +01:00
Joe Bordes fd4e78089b i18n(NodeRed) update ES translation files to latest code base 2025-10-09 17:12:38 +02:00
Nick O'Leary 0519b94786
Fix jsonata error reporting in Inject node
Fixes #5270
2025-10-09 14:50:52 +01:00
Nick O'Leary 34c59a58e5
Ensure flow property is set on sf instance nodes so NR_SUBFLOW_PATH can be evaluated 2025-10-09 14:42:27 +01:00
Nick O'Leary f60f12cf47
Merge pull request #5296 from node-red/5242-fix-subflow-quickadd
Handle subflow virtual port nodes when generating quick-add context
2025-10-09 14:10:14 +01:00
Nick O'Leary 39975fd46a
Handle subflow virtual port nodes when generating quick-add context 2025-10-09 13:56:19 +01:00
Nick O'Leary 947feb09b3
Ignore disabled nodes when checking for dependency modules 2025-10-09 13:15:49 +01:00
Nick O'Leary b0485b1229
Merge pull request #5293 from GogoVega/fix-5286
Prevents label from taking up all the space for env autocomplete
2025-10-09 11:26:36 +01:00
Nick O'Leary e5ebf5029c
Merge pull request #5292 from GogoVega/fix-5289
Fix env autocomplete result if searchKey starts with `${`
2025-10-09 11:25:59 +01:00
Nick O'Leary 1813a5791d
Merge pull request #5290 from node-red/5283-fix-ui-lockup-for-typed-arrays
Fix UI lock-up when typed arrays are expanded in debug window
2025-10-09 11:24:43 +01:00
Nick O'Leary 42d53c1cc5
Merge pull request #5281 from olivierpelet/master
Fix config node resolution in packaged subflow within subflow
2025-10-09 11:05:12 +01:00
Nick O'Leary 11feee3294
Merge pull request #5278 from GogoVega/fix-5275
Fix undo node output changes inside a Subflow
2025-10-09 10:18:46 +01:00
Nick O'Leary 762631e813
Merge pull request #5277 from GogoVega/notify-plugin-added
Notify installed plugins from the Palette Manager
2025-10-09 10:12:39 +01:00
Nick O'Leary 75e6ba209c
Merge pull request #5266 from node-red/fix-monaco-uncaught-promise-canceled
Fix uncaught Monaco error
2025-10-09 10:09:45 +01:00
Nick O'Leary 17fe94d368
Merge pull request #5265 from node-red/add-url-types-to-server-side-fn
Add 'url' module to default server-side types in Monaco editor
2025-10-09 10:07:28 +01:00
Nick O'Leary 6ffe5700b7
Merge pull request #5263 from hardillb/catch-red-comms-subscribe-error
Catch errors from RED.comms.subscribe callback
2025-10-09 10:07:05 +01:00
Nick O'Leary 7ae2f03ef3
Merge pull request #5257 from node-red/fix-range-nodes-escapes
Fix rounding errors for range node when using float inputs and intege…
2025-10-09 10:05:54 +01:00
GogoVega ebf5ae0ef3
Prevents label from taking up all the space for env autocomplete 2025-10-08 15:27:07 +02:00
GogoVega 90d5776f79
Fix env autocomplete result if searchKey starts with `${` 2025-10-08 14:41:20 +02:00
Stephen McLaughlin 963de93780
Merge branch 'master' into 5283-fix-ui-lockup-for-typed-arrays 2025-10-05 12:25:12 +01:00
Steve-Mcl 36f98133bf Fix UI lock-up when typed arrays are expanded in debug window
closes #5283
2025-10-05 12:18:18 +01:00
GogoVega b93582fc38
Splits the logic into two routes 2025-09-30 18:42:46 +02:00
olivierpelet c7f671a971
Merge branch 'master' into master 2025-09-24 09:52:00 +02:00
GogoVega cad105bbd1
Fix undo node output changes if instances exist 2025-09-22 10:33:22 +02:00
GogoVega 83df61018f
Fix undo node output changes inside a Subflow 2025-09-22 09:53:09 +02:00
GogoVega dc318b5477
Notify installed plugins from the Palette Manager 2025-09-21 21:14:21 +02:00
GogoVega 045011581c
Handle plugin name in `plugins.getConfig` 2025-09-21 21:00:51 +02:00
Mauricio Bonani 21f93eac09 Remove empty if block
Fixes #5272
2025-09-17 14:24:43 -04:00
Steve-Mcl b074b67ed1 Fix uncaught error, update monaco, update types 2025-09-07 20:51:17 +01:00
Steve-Mcl dfb19b2636 add 'url' module to default server-side types in Monaco editor 2025-09-07 20:43:56 +01:00
Ben Hardill d35b31cbef
Catch errors from RED.comms.subscribe callback
fixes #5262
2025-09-05 14:25:37 +01:00
Dave Conway-Jones 4ae8fcbc45
Fix range node to handle input min > max
and add tests
and add pin hover to show confiog
2025-08-29 15:08:23 +01:00
Dave Conway-Jones 7b51f30d11
Fix rounding errors for range node when using float inputs and integer outputs
And add extra tests
2025-08-28 15:18:02 +01:00
Nick O'Leary 9ad329e5a1
Merge pull request #5237 from GogoVega/fix-node-docs-icon
Fix node documentation icon for long catalog loading
2025-08-28 13:53:02 +01:00
Nick O'Leary 65785be169
Merge pull request #5241 from kazuhitoyokoi/master-fixhttprequest
Show requesting status correctly in http request node when multiple processes are working
2025-08-28 13:52:30 +01:00
Nick O'Leary 9b472180a8
Merge pull request #5239 from kazuhitoyokoi/addtooltip
Add tooltip for event log view
2025-08-28 13:51:49 +01:00
Ben Hardill 54849e9e62
fix test 2025-08-20 19:12:09 +01:00
Ben Hardill b7cef0bce7
Update packages/node_modules/@node-red/nodes/core/sequence/17-split.js 2025-08-20 18:45:26 +01:00
Ben Hardill 22a3f47060
Speed up split node
fixes #5251

The code changed from 4.0.x to 4.1.x

This change to to prevent making changes to the orginial input `msg`
object incase any values were stored in context (pass by refernce).

The change meant that for every output message the whole original
input `msg` was being cloned, which could be huge, causing a big
performance regresion.

This fix ensures the clone of the orginial `msg` is only done once
and the much smaller output message is then cloned again to update
`msg.parts` object for each output. This results in lots of small
clones rather than lots of very large clones.
2025-08-20 18:40:19 +01:00
olivierpelet d58b802160
Fix config node resolution in packaged subflows when instancied in a subflow 2025-08-13 15:22:47 +02:00
Kazuhito Yokoi f70770a63d Show requesting status correctly in http request node when multiple processes are working 2025-08-03 14:23:23 +09:00
Kazuhito Yokoi a7491b0227 Add tooltip for event log view 2025-08-03 09:43:56 +09:00
GogoVega addec16001
Fix the node docs icon for long catalog loading 2025-07-31 11:26:09 +02:00
Nick O'Leary ab1f1a284e
Update for 4.1.0 release 2025-07-29 15:55:04 +01:00
Debadutta Panda f57d7d9382 Improve raw body parser to handle skipped parsing and ended streams 2025-07-26 02:44:31 +05:30
Nick O'Leary b4ff0c7824
Bump dependencies 2025-07-22 10:04:03 +01:00
Nick O'Leary 432884f84a
Merge pull request #5223 from node-red/5219-fix-undo-splice-in-group
Add splice history events to original add event
2025-07-21 17:47:49 +01:00
Nick O'Leary 2b5fa37b70
Add splice history events to original add event 2025-07-21 17:26:34 +01:00
Nick O'Leary 412f4465c7
Merge branch 'master' into dev 2025-07-21 16:29:52 +01:00
Nick O'Leary 1749ef7ac0
Support cjs files 2025-07-21 16:19:11 +01:00
Nick O'Leary 9b4acba82e
Merge pull request #5202 from node-red/5198-monaco-esc-handling
Better Monaco `esc` key bubbling
2025-07-21 15:24:12 +01:00
Nick O'Leary 0845811671
Merge pull request #5207 from node-red/node24-support
Updates for Node 24
2025-07-21 15:14:24 +01:00
Stephen McLaughlin 7b4cb442e1
Merge branch 'dev' into multiple-suggestions 2025-07-14 16:34:38 +01:00
Nick O'Leary e97e307fed
Add typeSearch context when adding nodes 2025-07-14 15:20:53 +01:00
Nick O'Leary c0b9fb5eac
Handle applying suggestion without having selected one 2025-07-14 14:28:04 +01:00
Nick O'Leary be47aac3ef
Add got to runtime package 2025-07-11 16:17:50 +01:00
Nick O'Leary 8380c06a19
Support multiple suggestions at once 2025-07-11 09:32:51 +01:00