fix(lab-content-engine): phase 3 - устранён блокер ревью (loader не был подключён)

Два edit'а Фазы 3 не применились в fc1139f (упали по отступу), запушив
сломанное состояние: lab.html убрал eager sim-скрипты, но open остался
синхронным -> ReferenceError при клике на любую симуляцию кроме graph.

ИСПРАВЛЕНО:
- _register-all.js: open-обёртка LabLoader.ensure(id).then(rawOpen) + sync-фолбэк
- lab-init.js openSim: обработка Promise от open() (.then -> lucide, .catch -> log)

E2E vm-harness: click->ensure->load->rawOpen после загрузки; pendulum/stereo:cube/
molphys(4 файла)/alias magnetic — ALL PASS; node --check OK.
Независимое ревью поймало этот блокер.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-05-30 15:06:40 +03:00
parent 1fd7fcc3c8
commit 201e94ea81
2 changed files with 23 additions and 4 deletions
+11 -1
View File
@@ -82,7 +82,17 @@
desc: s.desc,
preview: s.preview, // уже готовая SVG-строка (P_* вычислены в SIMS)
theory: T[s.id] || null,
open: open
// Фаза 3: ленивая загрузка кода. LabLoader.ensure(id) подгружает файлы
// симуляции (+ three.js при необходимости), затем выполняется raw-open.
// Если LabLoader недоступен — открываем синхронно как раньше (фолбэк).
open: (function (rawOpen, simId) {
return function (c) {
if (window.LabLoader && window.LabLoader.ensure) {
return window.LabLoader.ensure(simId).then(function () { rawOpen(c); });
}
rawOpen(c);
};
})(open, s.id)
// stop/destroy: глобальный «дробовик» _pauseAllSims()/closeSim() — паритет
});
});