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-06 19:08:31 +08:00
2026-06-06 18:27:00 +08:00
2026-06-04 00:37:14 +08:00
2026-06-07 14:59:46 +08:00
2026-06-07 14:59:46 +08:00
2026-06-06 18:58:39 +08:00
2026-06-05 12:29:19 +08:00
2026-06-05 12:29:19 +08:00
2026-06-07 14:59:46 +08:00
2026-06-04 00:37:14 +08:00
2026-06-04 00:37:14 +08:00
2026-06-05 16:17:22 +08:00
2026-06-05 12:29:19 +08:00
2026-06-05 01:40:08 +08:00
2026-06-04 00:37:14 +08:00
2026-06-07 15:28:37 +08:00
2026-06-06 02:39:29 +08:00
2026-06-05 12:37:25 +08:00
2026-06-04 00:37:14 +08:00
2026-06-05 17:31:18 +08:00
2026-06-07 00:15:34 +08:00
2026-06-05 12:37:25 +08:00
2026-06-05 12:29:19 +08:00
2026-06-04 19:44:28 +08:00
2026-06-05 07:33:10 +08:00
2026-06-04 00:37:14 +08:00
2026-06-03 05:27:20 +08:00
2026-06-04 03:28:32 +08:00
2026-06-04 00:37:14 +08:00
2026-06-05 12:37:25 +08:00
2026-06-05 00:48:12 +08:00
2026-06-05 17:31:18 +08:00
2026-06-04 00:37:14 +08:00
2026-06-04 03:36:44 +08:00
2026-06-04 00:37:14 +08:00