Add managed plugins with lifecycle cleanup and editor extensions

This commit is contained in:
eezd committed 2026-10-20 11:53:29 +08:00
1 parent 9fd7e2a948
commit 8ce4a11b33
25 files changed
+1731 -73

No files matched your search

+10 -1
View File
@@ -40,7 +40,9 @@ type Server struct {
// OnSetup 在首次初始化完成后调用(用于删除启动码文件)
OnSetup func()
// ThemesDir 指向数据目录中的主题目录;为空时只有内置主题。
ThemesDir string
ThemesDir string
PluginsDir string
pluginsMu sync.Mutex
}
func New(v *vault.Vault, a *auth.Manager, st *store.Store, hub *events.Hub, index *search.Index) *Server {
@@ -91,6 +93,13 @@ func (s *Server) routes() []route {
{"GET /api/v1/settings", authed, s.getSettings},
{"PATCH /api/v1/settings", sessionOnly, s.patchSettings},
{"GET /api/v1/plugins", sessionOnly, s.listPlugins},
{"POST /api/v1/plugins", sessionOnly, s.installPlugin},
{"PATCH /api/v1/plugins/{id}", sessionOnly, s.togglePlugin},
{"DELETE /api/v1/plugins/{id}", sessionOnly, s.uninstallPlugin},
{"GET /api/v1/plugins/{id}/assets/{revision}/{path...}", sessionOnly, s.pluginAsset},
{"GET /api/v1/plugins/{id}/data", sessionOnly, s.getPluginData},
{"PUT /api/v1/plugins/{id}/data", sessionOnly, s.putPluginData},
{"GET /api/v1/themes", authed, s.listThemes},
{"GET /api/v1/themes/{id}", authed, s.getTheme},
{"GET /api/v1/shares", sessionOnly, s.listShares},