diff --git a/site/app.py b/site/app.py
index 2cdc414..d16a64c 100644
--- a/site/app.py
+++ b/site/app.py
@@ -32,7 +32,7 @@ from routes.api_scenario_defs import bp_defs as api_scenario_defs_bp
# Версия — показывается в топбаре UI. Меняется при КАЖДОМ изменении кода.
# Нужна для фильтрации истории (пользователь видит только записи своей версии).
-VERSION = "1.2.39"
+VERSION = "1.2.40"
# Flask-приложение с Jinja2-шаблонами из папки templates/
app = Flask(__name__, template_folder="templates", static_folder="static")
diff --git a/site/static/js/instances.js b/site/static/js/instances.js
index e6d3d38..a68df96 100644
--- a/site/static/js/instances.js
+++ b/site/static/js/instances.js
@@ -143,9 +143,13 @@ async function toggleInstance(iuid){
}
// Кнопки операций с цветовой маркировкой
- opsEl.innerHTML=ops.map(o=>
- ``
- ).join('');
+ // o.operation в onclick — JS-escape: \ → \\, ' → \'
+ // o.operation в тексте кнопки — HTML-escape через _esc()
+ opsEl.innerHTML=ops.map(o=>{
+ const escOp = _esc(o.operation);
+ const jsOp = o.operation.replace(/\\/g,'\\\\').replace(/'/g,"\\'");
+ return ``;
+ }).join('');
opsEl.classList.add('open');
}catch(e){
opsEl.innerHTML='Ошибка загрузки';