Open Design runtime: SHA-256 verify + view-show serialization + stop race
Что изменилось
Три аудит-finding'а закрыты в runtime-слое embedded Open Design: per-file SHA-256 verify при каждом запуске, сериализация view-show вызовов и защита от race в stop().
- Per-file SHA-256 при launch:
RoxDesignRuntimeManagerверифицирует SHA-256 пяти security-perimeter entry points изMANIFEST.json.fileDigestsна каждом старте. Modify-after-install attack блокируется — malware не может подменить .js/.mjs файлы между install и launch. - view-show serialization:
ManagedRoxDesignViewотслеживает in-flightloadPromiseper-entry. Второй вызовshow()ждёт завершения первогоloadURL— больше нет race-condition, когда второй show прерывает первый mid-flight. - setBounds independent: setBounds применяется немедленно, не блокируется load-state — UI отзывчивость сохраняется.
- Stopping flag:
RoxDesignRuntimeManager.stopping = trueдо child.kill — handlerchild.once('exit')early-return'ит вместо emit'аsidecar-exitedIPC. Intentional shutdown больше не выглядит как crash. - Restart cycles работают:
stoppingreset'ится в false послеstopProcesses()— можно перезапускать без перезапуска приложения.
Где попробовать
Откройте Open Design, закройте его кнопкой в TopBar, откройте снова — без crash-banner. Если кто-то изменит .js файлы в resources/rox-design/ — runtime откажется стартовать с понятным error.