From 1a873b8389b3772585842e051bac8a6df9930c1e Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Thu, 19 Jun 2025 15:17:56 +0100 Subject: [PATCH 1/2] Add event-log widget to status bar --- .../editor-client/src/js/ui/event-log.js | 34 ++++++++++++++++--- .../node_modules/@node-red/util/lib/exec.js | 2 +- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/event-log.js b/packages/node_modules/@node-red/editor-client/src/js/ui/event-log.js index 54ed0a27b..a641740f6 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/event-log.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/event-log.js @@ -15,11 +15,14 @@ **/ RED.eventLog = (function() { - var template = ''; + const template = ''; + + let eventLogEditor; + let backlog = []; + let shown = false; + + const activeLogs = new Set() - var eventLogEditor; - var backlog = []; - var shown = false; function appendLogLine(line) { backlog.push(line); @@ -38,6 +41,18 @@ RED.eventLog = (function() { init: function() { $(template).appendTo("#red-ui-editor-node-configs"); RED.actions.add("core:show-event-log",RED.eventLog.show); + + const statusWidget = $(''); + statusWidget.on("click", function(evt) { + RED.actions.invoke("core:show-event-log"); + }) + RED.statusBar.add({ + id: "red-ui-event-log-status", + align: "right", + element: statusWidget + }); + // RED.statusBar.hide("red-ui-event-log-status"); + }, show: function() { if (shown) { @@ -98,6 +113,12 @@ RED.eventLog = (function() { }, log: function(id,payload) { var ts = (new Date(payload.ts)).toISOString()+" "; + if (!payload.end) { + activeLogs.add(id) + } else { + activeLogs.delete(id); + } + if (payload.type) { ts += "["+payload.type+"] " } @@ -111,6 +132,11 @@ RED.eventLog = (function() { appendLogLine(ts+line); }) } + if (activeLogs.size > 0) { + RED.statusBar.show("red-ui-event-log-status"); + } else { + RED.statusBar.hide("red-ui-event-log-status"); + } }, startEvent: function(name) { backlog.push(""); diff --git a/packages/node_modules/@node-red/util/lib/exec.js b/packages/node_modules/@node-red/util/lib/exec.js index c7197ef65..15b81aa89 100644 --- a/packages/node_modules/@node-red/util/lib/exec.js +++ b/packages/node_modules/@node-red/util/lib/exec.js @@ -78,7 +78,7 @@ module.exports = { stdout: stdout, stderr: stderr } - emit && events.emit("event-log", {id:invocationId,payload:{ts: Date.now(),data:"rc="+code}}); + emit && events.emit("event-log", {id:invocationId,payload:{ts: Date.now(), data:"rc="+code, end: true}}); if (code === 0) { resolve(result) From 1036805b117b95a934beec53afb56f8a9e953de5 Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Wed, 25 Jun 2025 11:52:55 +0100 Subject: [PATCH 2/2] Prevent library leaking full local paths --- .../@node-red/runtime/lib/storage/localfilesystem/library.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/node_modules/@node-red/runtime/lib/storage/localfilesystem/library.js b/packages/node_modules/@node-red/runtime/lib/storage/localfilesystem/library.js index fbcb44e2f..d8d770677 100644 --- a/packages/node_modules/@node-red/runtime/lib/storage/localfilesystem/library.js +++ b/packages/node_modules/@node-red/runtime/lib/storage/localfilesystem/library.js @@ -135,7 +135,7 @@ function getLibraryEntry(type,path) { throw err; }); } else { - throw err; + throw new Error(`Library Entry not found ${path}`, { cause: err}); } }); }