v1.2.20: remaining Codex fixes — _op_results lock, advisory lock for scenarios, _ensure_schema logging, stale async generation token, validate-cfs explicit JSONDecodeError
This commit is contained in:
@@ -208,6 +208,9 @@ async function loadStepParams(idx) {
|
||||
const step = st.steps[idx];
|
||||
if (!step.operation) return;
|
||||
|
||||
// Запомнить поколение рендера на момент старта async-загрузки
|
||||
const renderGen = st._renderGen || 0;
|
||||
|
||||
const svcOpId = await resolveStepSvcOpId(idx);
|
||||
if (!svcOpId) return;
|
||||
step._svcOpId = svcOpId; // сохраняем для обратного маппинга при сохранении
|
||||
@@ -233,6 +236,8 @@ async function loadStepParams(idx) {
|
||||
// Рендер: клонируем def и подставляем сохранённые значения в defaultValue
|
||||
const container = document.getElementById('step-' + idx + '-params');
|
||||
if (!container) return;
|
||||
// Проверка: не перезаписывать DOM если уже был новый renderEditor()
|
||||
if (st._renderGen !== renderGen) return;
|
||||
let html = '';
|
||||
defs.forEach(p => {
|
||||
const clone = Object.assign({}, p); // shallow copy
|
||||
@@ -259,7 +264,10 @@ async function loadStepParams(idx) {
|
||||
function renderEditor() {
|
||||
snapshotAllParams(); // сохранить несохранённые правки перед перерисовкой
|
||||
const st = scenarioEditorState;
|
||||
|
||||
// Инкремент поколения — защита от stale async (loadStepParams может вернуться
|
||||
// уже после следующего renderEditor и перезаписать новый DOM старыми данными)
|
||||
st._renderGen = (st._renderGen || 0) + 1;
|
||||
const currentGen = st._renderGen;
|
||||
let html = '<div style="padding:20px;max-height:90vh;overflow-y:auto;">';
|
||||
|
||||
// Заголовок
|
||||
|
||||
Reference in New Issue
Block a user