mirivlad
45cfe1b0a6
fix: финальный cleanup Lua plugin lifecycle
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 плагины активируются
2026-06-07 22:58:26 +08:00
..
2026-06-02 11:08:29 +08:00
2026-06-06 18:23:47 +08:00
2026-06-07 14:59:46 +08:00
2026-06-06 18:27:00 +08:00
2026-06-07 15:28:37 +08:00
2026-06-06 18:23:47 +08:00
2026-06-06 18:23:47 +08:00
2026-06-02 15:43:40 +08:00
2026-06-07 22:58:26 +08:00
2026-06-06 02:39:29 +08:00
2026-06-06 18:27:00 +08:00
2026-06-03 09:16:38 +08:00
2026-06-02 12:47:06 +08:00
2026-05-30 18:58:47 +08:00
2026-05-30 18:58:47 +08:00
2026-06-07 14:59:46 +08:00
2026-06-05 00:48:12 +08:00
2026-05-30 18:42:19 +08:00
2026-06-03 02:05:53 +08:00