Fix modifiers triggering key down checks for undo history
diff --git a/web/extensions/core/groupNode.js b/web/extensions/core/groupNode.js
index 4cf1f7621b..80b836b719 100644
--- a/web/extensions/core/groupNode.js
+++ b/web/extensions/core/groupNode.js
@@ -843,6 +843,7 @@ export class GroupNodeHandler {
 			const r = onDrawForeground?.apply?.(this, arguments);
 			if (+app.runningNodeId === this.id && this.runningInternalNodeId !== null) {
 				const n = groupData.nodes[this.runningInternalNodeId];
+				if(!n) return;
 				const message = `Running ${n.title || n.type} (${this.runningInternalNodeId}/${groupData.nodes.length})`;
 				ctx.save();
 				ctx.font = "12px sans-serif";
diff --git a/web/extensions/core/undoRedo.js b/web/extensions/core/undoRedo.js
index 3cb137520f..ff976c74c3 100644
--- a/web/extensions/core/undoRedo.js
+++ b/web/extensions/core/undoRedo.js
@@ -106,6 +106,7 @@ const bindInput = (activeEl) => {
 	}
 };
 
+let keyIgnored = false;
 window.addEventListener(
 	"keydown",
 	(e) => {
@@ -116,6 +117,9 @@ window.addEventListener(
 				return;
 			}
 
+			keyIgnored = e.key === "Control" || e.key === "Shift" || e.key === "Alt" || e.key === "Meta";
+			if (keyIgnored) return;
+
 			// Check if this is a ctrl+z ctrl+y
 			if (await undoRedo(e)) return;
 
@@ -127,6 +131,13 @@ window.addEventListener(
 	true
 );
 
+window.addEventListener("keyup", (e) => {
+	if (keyIgnored) {
+		keyIgnored = false;
+		checkState();
+	}
+});
+
 // Handle clicking DOM elements (e.g. widgets)
 window.addEventListener("mouseup", () => {
 	checkState();

Fixes modifier keys triggering multiple history entries, e.g. previously shift+drag/alt+drag and move node would store each position while it was being dragged rather than just the start/end of the drag events