From 1feb76d00982ed2bfba189144730ac390aad9902 Mon Sep 17 00:00:00 2001 From: Karstein Phobic Nyvold Kvistad Date: Mon, 11 May 2026 17:27:15 +0200 Subject: [PATCH] fix(scripts): raw-string PROJECT_FILE_PATH in new device tools The scan_network_devices, verify_device_reachable, and rebind_device_to_scan templates used plain "..." strings for PROJECT_FILE_PATH. With a UNC path like \\files\... the rendered Python source had "\\files\..." which Python's source parser collapses to "\files\..." (one backslash). ensure_project_open then saw the mangled path as different from the (correctly-opened) primary, CLOSED the primary project, and failed to reopen the corrupted path. Other scripts use r"..." to bypass source-level escaping. Applying the same to the three new ones. Also bumps to 0.9.5. --- package-lock.json | 4 ++-- package.json | 2 +- src/scripts/rebind_device_to_scan.py | 8 ++++---- src/scripts/scan_network_devices.py | 2 +- src/scripts/verify_device_reachable.py | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8db8d7b..abcf674 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "codesys-mcp-sp21-plus", - "version": "0.9.4", + "version": "0.9.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "codesys-mcp-sp21-plus", - "version": "0.9.4", + "version": "0.9.5", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.26.0", diff --git a/package.json b/package.json index 6a59e8e..1e5e656 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "codesys-mcp-sp21-plus", - "version": "0.9.4", + "version": "0.9.5", "description": "Codesys-MCP-SP21+ -- fork of luke-harriman/Codesys-MCP carrying CODESYS V3.5 SP22 Patch 1 fixes (and forward-compat with later SPs): script-engine API drift, online/runtime tool auto-login, dual-SHA release classifier, set_pou_code omitted-decl wipe fix, add_library managed-overload, etc. MCP server for CODESYS with persistent UI instance and file-based IPC.", "main": "dist/server.js", "bin": { diff --git a/src/scripts/rebind_device_to_scan.py b/src/scripts/rebind_device_to_scan.py index b95ce9c..b0e29ec 100644 --- a/src/scripts/rebind_device_to_scan.py +++ b/src/scripts/rebind_device_to_scan.py @@ -14,10 +14,10 @@ import sys, scriptengine as script_engine, os, traceback, json -PROJECT_FILE_PATH = "{PROJECT_FILE_PATH}" -MATCH_NAME = "{MATCH_NAME}" # optional override -MATCH_DEVICE_ID = "{MATCH_DEVICE_ID}" # optional override -MATCH_ADDRESS = "{MATCH_ADDRESS}" # optional override -- skip scan match +PROJECT_FILE_PATH = r"{PROJECT_FILE_PATH}" +MATCH_NAME = r"{MATCH_NAME}" # optional override +MATCH_DEVICE_ID = r"{MATCH_DEVICE_ID}" # optional override +MATCH_ADDRESS = r"{MATCH_ADDRESS}" # optional override -- skip scan match def _find_gateway(target_device): diff --git a/src/scripts/scan_network_devices.py b/src/scripts/scan_network_devices.py index eede9e9..3ca7c16 100644 --- a/src/scripts/scan_network_devices.py +++ b/src/scripts/scan_network_devices.py @@ -18,7 +18,7 @@ import sys, scriptengine as script_engine, os, traceback, json -PROJECT_FILE_PATH = "{PROJECT_FILE_PATH}" +PROJECT_FILE_PATH = r"{PROJECT_FILE_PATH}" USE_CACHE = "{USE_CACHE}" == '1' diff --git a/src/scripts/verify_device_reachable.py b/src/scripts/verify_device_reachable.py index 60d75a0..494733d 100644 --- a/src/scripts/verify_device_reachable.py +++ b/src/scripts/verify_device_reachable.py @@ -13,7 +13,7 @@ import sys, scriptengine as script_engine, os, traceback, json -PROJECT_FILE_PATH = "{PROJECT_FILE_PATH}" +PROJECT_FILE_PATH = r"{PROJECT_FILE_PATH}" def _find_gateway(target_device):