Is your feature request related to a problem? Please describe.
design.md defines in-process hooks (article.beforePublish, article.afterPublish, etc.), but the server only dispatches webhooks. There is no HookService, no plugins/{id}/plugin.json loader, and no way to intercept or transform data inside the CMS.
Describe the solution you'd like
- Add
server/src/modules/hook/ with applyFilters / doAction
- Wire hooks into article, comment, and setting services
- Ship a sample plugin (
plugins/seo-basic) using article.beforePublish
Describe alternatives you've considered
- Webhooks only — works for external sync, but cannot block publish, rewrite fields, or run spam filters in-process
- Fork server — possible for one site, not viable for a plugin ecosystem
Additional context
Priority: P0 · Blocks the plugin system · Evidence: article.service.ts → webhookService.dispatch('article.published') only
Is your feature request related to a problem? Please describe.
design.mddefines in-process hooks (article.beforePublish,article.afterPublish, etc.), but the server only dispatches webhooks. There is noHookService, noplugins/{id}/plugin.jsonloader, and no way to intercept or transform data inside the CMS.Describe the solution you'd like
server/src/modules/hook/withapplyFilters/doActionplugins/seo-basic) usingarticle.beforePublishDescribe alternatives you've considered
Additional context
Priority: P0 · Blocks the plugin system · Evidence:
article.service.ts→webhookService.dispatch('article.published')only