mirivlad
e99ff984b1
feat: plugin install/uninstall lifecycle + UI buttons
- AppConfig: add InstalledPlugins []string
- Manager.Discover(): no config dependency, all plugins start inactive
- Manager.SyncConfig(): apply installed/enabled state from AppConfig
- Manager.Enable(): works for plugins without on_install hook
- Manager.Install/Uninstall(): run on_install/on_uninstall hooks
- ActivatePlugin: skip if HasInstall && !Installed
- ReloadPlugins: Discover → SyncConfig → InitRuntimes
- Bindings: InstallPlugin, UninstallPlugin
- SettingsPlugins: install/uninstall buttons, toggle only after install
- Calendar: migration moved from on_init to on_install, on_uninstall drops tables
- Tests: all 12 pass (manager + runtime + calendar)
2026-06-07 15:28:37 +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 15:28:37 +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