1. ActivatePlugin → error return:
- Возвращает ошибки при создании VM, загрузке main.lua, scheduler setup
- on_init failure = non-fatal (logged, activation continues)
- SetPluginEnabled сохраняет EnabledPlugins в config ТОЛЬКО после успешной активации
- При ошибке активации — rollback (deactivate + не сохраняем в config)
2. CallPluginFunction fully thread-safe:
- Новый метод LuaVM.CallFunctionJSON(segments, paramsJSON)
- JSON→Lua conversion происходит под vm.mu (внутри lock)
- Убраны parseParamsToLua/goToLua из bindings_plugins.go
- goToLua перенесён в runtime.go (под lock)
3. PluginPage → CalendarPluginPage:
- Компонент явно календарный (get-events/create-event/update-event/delete-event)
- Переименован для ясности
- Console log префиксы обновлены
4. Тесты:
- TestSetPluginEnabled_ActivateFails_NoConfigSave: проверяет что при ошибке
активации плагин НЕ сохраняется в EnabledPlugins
- TestActivatePlugin_ErrorReturn: проверяет все режимы ошибок
- TestCallFunctionJSON_ThreadSafe: JSON object/array/empty params
- TestDeactivatePlugin_Idempotent: двойная деактивация = no-op
- TestInitRuntimes_SkipsDisabled: только Enabled плагины активируются
29 lines
988 B
HTML
29 lines
988 B
HTML
<!DOCTYPE html>
|
|
<html lang="ru">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<link rel="icon" type="image/png" sizes="16x16" href="/assets/app-icons/icon_16x16.png" />
|
|
<link rel="icon" type="image/png" sizes="32x32" href="/assets/app-icons/icon_32x32.png" />
|
|
<link rel="icon" type="image/png" sizes="64x64" href="/assets/app-icons/icon_64x64.png" />
|
|
<link rel="icon" type="image/png" sizes="128x128" href="/assets/app-icons/icon_128x128.png" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>Верстак</title>
|
|
<style>
|
|
/* Critical reset — no white borders, full viewport */
|
|
html, body, #app {
|
|
width: 100%;
|
|
height: 100%;
|
|
margin: 0;
|
|
padding: 0;
|
|
overflow: hidden;
|
|
background: #13131f;
|
|
}
|
|
</style>
|
|
<script type="module" crossorigin src="/assets/main-C2sdkP-s.js"></script>
|
|
<link rel="stylesheet" crossorigin href="/assets/main-Cjkp2F09.css">
|
|
</head>
|
|
<body>
|
|
<div id="app"></div>
|
|
</body>
|
|
</html>
|