src/notifications/events.js already emits resource change events for the solid-0.1 WebSocket channel, but the emitter isn't reachable from a plugin. LWS webhook notifications (and ActivityPub outbox fan-out, search indexing, type index #535, …) all need "tell me when a resource changes".
Fires after the write has committed, off the request path (setImmediate / queueMicrotask), so a slow listener can't delay the response.
Listener exceptions are caught and logged with the plugin id.
off() unsubscribes; deactivate() should call it, but the loader also drops all listeners registered by a plugin on close.
Mirrors what the WebSocket notifier consumes today — no new event source, just exposure.
Prior art: LwsNotificationListener in jeswr/LinkedWebStorage, which turns changes into Create/Update/Delete activities, matches recursive container topics, and re-checks read permission at delivery time.
Duplicate of #603 (api.events.onResourceChange), which I missed — it was filed in July from the lwsd experiment. Folding the LWS motivation in there. Note lwsd's CONFORMANCE.md C9: for storage the plugin owns, it doesn't need host events at all; #603 only matters for notifying on host-pod writes.
Activity
melvincarvalho commented on Oct 14, 2026
Duplicate of #603 (api.events.onResourceChange), which I missed — it was filed in July from the lwsd experiment. Folding the LWS motivation in there. Note lwsd's CONFORMANCE.md C9: for storage the plugin owns, it doesn't need host events at all; #603 only matters for notifying on host-pod writes.