Can't edit ui-group and ui-page names

No, nothing generated by AI. Started this code a few years ago for another project, added and rearranged for various projects over the years. Last version ran on Windows, this one is moved to a Raspberry PI to avoid code bloat but is not fully functional yet. That is why there are so many odd nodes that are part of it, not just my code but various examples I've imported to copy.

You can see on Flow 1 a dashboard 2 ui node that worked when I first installed it this node-red stub. After importing the partially coded project it doesn't work. I wouldn't be surprised to find it is the xterm node that is messing us up, that one is quite invasive. And I don't really need it.

[
    {
        "id": "3225eef1a9099f8f",
        "type": "tab",
        "label": "Flow 1",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "3415502837f22417",
        "type": "tab",
        "label": "Controls",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "0a73c3f3d67e711e",
        "type": "tab",
        "label": "Programmer",
        "disabled": false,
        "info": "Using exec node to program chips\r\nChanges when platform is Windows\r\nRelies on box64 to be able to use\r\nSTM32Cube CLI on arch64 ARM devices\r\nSend msg.path to set path to code\r\nSend msg.STLink_SN to set serial number",
        "env": []
    },
    {
        "id": "0229b761f4bb7f20",
        "type": "tab",
        "label": "Database",
        "disabled": false,
        "info": "Using MariaDB. A server must exist at port 3306\r\nuser testset pwd testset\r\nInstalled using instructions here:\r\nhttps://raspberrytips.com/install-mariadb-raspberry-pi/",
        "env": []
    },
    {
        "id": "6810e17f724223cf",
        "type": "tab",
        "label": "Testset",
        "disabled": false,
        "info": "Pico processor for added serial ports\r\nand Sensor/Hub control\r\nSerial interface to power supply\r\nSerial interfaces to sensor and Hub\r\nls -l /dev/serial/by-id\r\ntotal 0\r\nlrwxrwxrwx 1 root root 13 Jul 10 09:54 usb-MicroPython_Board_in_FS_mode_e66180109f793b21-if00 -> ../../ttyACM1\r\nlrwxrwxrwx 1 root root 13 Jul 10 09:54 usb-Nuvoton_USB_Virtual_COM_00321AB40454-if00 -> ../../ttyACM0\r\nlrwxrwxrwx 1 root root 13 Jul 10 09:54 usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0 -> ../../ttyUSB0\r\nlrwxrwxrwx 1 root root 13 Jul 10 09:54 usb-STMicroelectronics_STLINK-V3_001F00233133510837363734-if01 -> ../../ttyACM2\r\nlrwxrwxrwx 1 root root 13 Jul 10 09:54 usb-STMicroelectronics_STLINK-V3_004C002E3033511735393935-if01 -> ../../ttyACM3\r\nInterpreted:\r\nPico            ttyACM1\r\nPower supply    ttyACM0\r\nCAN             ttyUSB0\r\nSTLink Sensor   ttyACM2\r\nSTLink Hub      ttyACM3",
        "env": []
    },
    {
        "id": "41ddc2224951a39f",
        "type": "tab",
        "label": "CAN",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "155c1f3020b36499",
        "type": "ui-base",
        "name": "My Dashboard",
        "path": "/dashboard",
        "appIcon": "",
        "includeClientData": true,
        "acceptsClientConfig": [
            "ui-notification",
            "ui-control"
        ],
        "showPathInSidebar": false,
        "headerContent": "page",
        "navigationStyle": "default",
        "titleBarStyle": "default",
        "showReconnectNotification": true,
        "notificationDisplayTime": 1,
        "showDisconnectNotification": true,
        "allowInstall": false
    },
    {
        "id": "6e3d65ac3e7797b6",
        "type": "ui-theme",
        "name": "Default Theme",
        "colors": {
            "surface": "#ffffff",
            "primary": "#0094CE",
            "bgPage": "#eeeeee",
            "groupBg": "#ffffff",
            "groupOutline": "#cccccc"
        },
        "sizes": {
            "density": "default",
            "pagePadding": "12px",
            "groupGap": "12px",
            "groupBorderRadius": "4px",
            "widgetGap": "12px"
        }
    },
    {
        "id": "8b9e9735f57c0821",
        "type": "ui-page",
        "name": "Test",
        "ui": "155c1f3020b36499",
        "path": "/page1",
        "icon": "home",
        "layout": "grid",
        "theme": "6e3d65ac3e7797b6",
        "breakpoints": [
            {
                "name": "Default",
                "px": "0",
                "cols": "3"
            },
            {
                "name": "Tablet",
                "px": "576",
                "cols": "6"
            },
            {
                "name": "Small Desktop",
                "px": "768",
                "cols": "9"
            },
            {
                "name": "Desktop",
                "px": "1024",
                "cols": "12"
            }
        ],
        "order": 1,
        "className": "",
        "visible": "true",
        "disabled": "false"
    },
    {
        "id": "d18dbf161d2ab1a3",
        "type": "ui-group",
        "name": "Test",
        "page": "8b9e9735f57c0821",
        "width": 6,
        "height": 1,
        "order": 1,
        "showTitle": true,
        "className": "",
        "visible": "true",
        "disabled": "false",
        "groupType": "default"
    },
    {
        "id": "c633a38ab96a4008",
        "type": "ui-theme",
        "name": "Default Theme",
        "colors": {
            "surface": "#ffffff",
            "primary": "#0094CE",
            "bgPage": "#eeeeee",
            "groupBg": "#ffffff",
            "groupOutline": "#cccccc"
        },
        "sizes": {
            "density": "default",
            "pagePadding": "12px",
            "groupGap": "12px",
            "groupBorderRadius": "4px",
            "widgetGap": "12px"
        }
    },
    {
        "id": "129e99574def90a3",
        "type": "ui-theme",
        "name": "Another Theme",
        "colors": {
            "surface": "#000000",
            "primary": "#ffd500",
            "bgPage": "#a1a1a1",
            "groupBg": "#b3b3b3",
            "groupOutline": "#ffffff"
        },
        "sizes": {
            "pagePadding": "9px",
            "groupGap": "12px",
            "groupBorderRadius": "9px",
            "widgetGap": "6px",
            "density": "default"
        }
    },
    {
        "id": "f1344150b4727bab",
        "type": "ui-page",
        "name": "Vermeer Test Set",
        "ui": "155c1f3020b36499",
        "path": "/page1",
        "icon": "home",
        "layout": "grid",
        "theme": "c633a38ab96a4008",
        "breakpoints": [
            {
                "name": "Default",
                "px": "0",
                "cols": "3"
            },
            {
                "name": "Tablet",
                "px": "576",
                "cols": "6"
            },
            {
                "name": "Small Desktop",
                "px": "768",
                "cols": "9"
            },
            {
                "name": "Desktop",
                "px": "1024",
                "cols": "12"
            }
        ],
        "order": 2,
        "className": "",
        "visible": true,
        "disabled": false
    },
    {
        "id": "c29f562cf6149454",
        "type": "ui-page",
        "name": "Utilities",
        "ui": "155c1f3020b36499",
        "path": "/page2",
        "icon": "home",
        "layout": "grid",
        "theme": "c633a38ab96a4008",
        "breakpoints": [
            {
                "name": "Default",
                "px": "0",
                "cols": "3"
            },
            {
                "name": "Tablet",
                "px": "576",
                "cols": "6"
            },
            {
                "name": "Small Desktop",
                "px": "768",
                "cols": "9"
            },
            {
                "name": "Desktop",
                "px": "1024",
                "cols": "12"
            }
        ],
        "order": 3,
        "className": "",
        "visible": true,
        "disabled": false
    },
    {
        "id": "0ae382e54a0dea68",
        "type": "ui-group",
        "name": "Controls",
        "page": "f1344150b4727bab",
        "width": "3",
        "height": "3",
        "order": 1,
        "showTitle": true,
        "className": "",
        "visible": "true",
        "disabled": "false",
        "groupType": "default"
    },
    {
        "id": "634787e0020596b1",
        "type": "ui-group",
        "name": "Results",
        "page": "f1344150b4727bab",
        "width": "6",
        "height": 1,
        "order": 2,
        "showTitle": true,
        "className": "",
        "visible": "true",
        "disabled": "false",
        "groupType": "default"
    },
    {
        "id": "eebe135f84b3df63",
        "type": "ui-group",
        "name": "Controls",
        "page": "c29f562cf6149454",
        "width": "4",
        "height": 1,
        "order": 1,
        "showTitle": true,
        "className": "",
        "visible": "true",
        "disabled": "false",
        "groupType": "default"
    },
    {
        "id": "9d8584ccc68e1b95",
        "type": "ui-page",
        "name": "Page Name",
        "ui": "155c1f3020b36499",
        "path": "/page3",
        "icon": "home",
        "layout": "grid",
        "theme": "c633a38ab96a4008",
        "breakpoints": [
            {
                "name": "Default",
                "px": "0",
                "cols": "3"
            },
            {
                "name": "Tablet",
                "px": "576",
                "cols": "6"
            },
            {
                "name": "Small Desktop",
                "px": "768",
                "cols": "9"
            },
            {
                "name": "Desktop",
                "px": "1024",
                "cols": "12"
            }
        ],
        "order": 4,
        "className": "",
        "visible": "true",
        "disabled": "false"
    },
    {
        "id": "b933814f3792f46b",
        "type": "ui-group",
        "name": "Page Name",
        "page": "9d8584ccc68e1b95",
        "width": 6,
        "height": 1,
        "order": 1,
        "showTitle": true,
        "className": "",
        "visible": "true",
        "disabled": "false",
        "groupType": "default"
    },
    {
        "id": "c1b8ecfb77d870c4",
        "type": "serial-port",
        "name": "Pico",
        "serialport": "/dev/ttyACM1",
        "serialbaud": "115200",
        "databits": "8",
        "parity": "none",
        "stopbits": "1",
        "waitfor": "",
        "dtr": "none",
        "rts": "none",
        "cts": "none",
        "dsr": "none",
        "newline": "\\n",
        "bin": "false",
        "out": "char",
        "addchar": "\\r",
        "responsetimeout": "10000"
    },
    {
        "id": "f67a1483e12098bf",
        "type": "serial-port",
        "name": "",
        "serialport": "/dev/ttyACM0",
        "serialbaud": "115200",
        "databits": "8",
        "parity": "none",
        "stopbits": "1",
        "waitfor": "",
        "dtr": "none",
        "rts": "none",
        "cts": "none",
        "dsr": "none",
        "newline": "30",
        "bin": "false",
        "out": "time",
        "addchar": "",
        "responsetimeout": "10000"
    },
    {
        "id": "b04b164ff1130859",
        "type": "xterm_config",
        "rows": 60,
        "columns": 120,
        "cursorStyle": "bar",
        "fastScrollModifier": "alt",
        "scrollSensitivity": 1,
        "fastScrollSensitivity": 1,
        "scrollback": 1000,
        "backgroundColor": "#000000",
        "foregroundColor": "#ffffff",
        "fontSize": 14,
        "cursorBlink": true,
        "drawBoldTextInBrightColors": true,
        "loggingEnabled": false,
        "name": "Page Name"
    },
    {
        "id": "2236dfd1.c909e",
        "type": "MySQLdatabase",
        "name": "",
        "host": "127.0.0.1",
        "port": "3306",
        "db": "VMTest",
        "tz": "",
        "charset": ""
    },
    {
        "id": "a7490b12c7168fb0",
        "type": "ui-button",
        "z": "3225eef1a9099f8f",
        "group": "d18dbf161d2ab1a3",
        "name": "",
        "label": "button",
        "order": 1,
        "width": 0,
        "height": 0,
        "emulateClick": false,
        "tooltip": "",
        "color": "",
        "bgcolor": "",
        "className": "",
        "icon": "",
        "iconPosition": "left",
        "payload": "",
        "payloadType": "str",
        "topic": "topic",
        "topicType": "msg",
        "buttonColor": "",
        "textColor": "",
        "iconColor": "",
        "enableClick": true,
        "enablePointerdown": false,
        "pointerdownPayload": "",
        "pointerdownPayloadType": "str",
        "enablePointerup": false,
        "pointerupPayload": "",
        "pointerupPayloadType": "str",
        "x": 390,
        "y": 400,
        "wires": [
            []
        ]
    },
    {
        "id": "0db4a8059f5a5f82",
        "type": "ui-table",
        "z": "0229b761f4bb7f20",
        "group": "b933814f3792f46b",
        "name": "Database",
        "label": "Database",
        "order": 1,
        "width": 0,
        "height": 0,
        "maxrows": 0,
        "passthru": false,
        "autocols": true,
        "showSearch": true,
        "deselect": true,
        "selectionType": "none",
        "columns": [],
        "mobileBreakpoint": "sm",
        "mobileBreakpointType": "defaults",
        "action": "append",
        "className": "",
        "x": 920,
        "y": 440,
        "wires": [
            []
        ]
    },
    {
        "id": "6c65be3fa48b8ae3",
        "type": "global-config",
        "env": [],
        "modules": {
            "@flowfuse/node-red-dashboard": "1.30.2",
            "node-red-node-serialport": "2.0.3",
            "node-red-contrib-xterm": "1.0.1",
            "node-red-node-mysql": "3.0.0"
        }
    }
]

Steve-Mcl - I tried the following:

Close and restart the port 1881 userdir
Refuse to install any palette nodes
Wipe out all the nodes except a ui-table
Assign the ui-table to a group and page
Success
Install xterm contributed palette node.
Strangely it has the same name as the ui-table node.
Ui-table node group and page cannot be changed.

Steps to resolve issue:
In a new node-red instance:

  1. Manually edit the flows.json saved file to remove the xterm configuration node and remove it from the list of nodes
  2. Import the saved file
  3. Allow node red to install all the palette nodes that are left
  4. Edit the ui-table node group and page
  5. Success!

Note - I only tried the xterm node because there was no convenient way to make a scrolling status screen from the output of the chip programming CLI from ST Micro. They insist on using ANSI escape codes to make a pretty colored screen on a terminal with a progress bar. But strangely I found an example from a Steve-Mcl A scrolling terminal display in dashboard 2 - Share Your Projects - Node-RED Forum

I was able to add colors to that using ansiUp and changing the terminal to accept HTML. So I don't need xterm and I'm glad to see it go if it is going to conflict with dashboard 2. Thanks, Steve-Mcl!

I can confirm that installing node-red-contrib-xterm does cause the problem as described.

It is not necessary to manually edit the files to remove xterm again.
In Configuration Nodes find the xterm config node (which is not marked as unused even though it isn't used, presumably because of a name conflict), select the xterm config node and hit Delete. Then you can uninstall the node in the Palette Manager.

Which name are you referring to?

The node installs it's own tab in the sidebar, I guess this is where the incompatibility arises.

Colin - the name that appears on the xterm config node when you open the configuration nodes pane. xterm hasn't been updated in four years. Probably should be deprecated.

The first thing to do would be to post an issue on the node's github page so that author can fix it if wants.