⚠️ MAJOR — notifyMentions() call path has no test coverage
⚠️ MAJOR — Several service method paths are untested
⚠️ MAJOR — Checkbox preference values are unreliable without JS
🔵 MINOR — debounceTimer not cleared on component destroy
🔵 MINOR — setTimeout(100) magic delay for deep-link scroll is flaky
🔵 MINOR — search_returnsAtMostTenResults does not assert the count
⚠️ MAJOR — No @RequirePermission on notification controller
⚠️ MAJOR — PATCH /api/notifications/{id}/read missing 401 test
⚠️ MAJOR — Notification failure can silently roll back the parent comment
Bug: actorName is never set — will always be null in every API response.
N+1: same issue as notifyReply — findById in a loop.
Avoid returning the Notification entity directly from the controller.
Layering violation: CommentService directly injects AppUserRepository.
Dead code: the List<Notification> overload is never called.
Hardcoded German strings bypass Paraglide.
href="#" scrolls the page to the top on click.