Release 3.7
Mercure + ux-notify Removal
Retiring unused real-time notification infrastructure (-1,518 lines)
Overview
Mercure was installed in March 2023 as infrastructure for real-time notifications and wired into NotificationService in January 2024 ("add real-time notification"). No Mercure hub was ever deployed on any FTS environment - platform/preprod/candidate:8000 all return connection failure. Every $hub->publish() call has been silently failing for 16 months, caught by a try/catch that swallows the exception. The client-side EventSource subscription was also commented out. This release removes the entire stack cleanly.
No user-visible change. 1,518 fewer lines of code. One less phantom dependency.
What Changed
Packages Removed
symfony/mercure-bundlesymfony/ux-notify(depends on mercure-bundle; was itself unused in source)- Transitively removed:
symfony/mercure,symfony/mercure-notifier,lcobucci/jwt
Bundle Registrations
MercureBundleandNotifyBundleremoved fromapp/config/bundles.phpandordering/config/bundles.php.
Config & Env
app/config/packages/mercure.yaml+ordering/config/packages/mercure.yamldeleted.mercure_public_urlparameter removed from bothservices.yamlfiles.MERCURE_URL,MERCURE_PUBLIC_URL,MERCURE_JWT_SECRETremoved from all.envand.env.localfiles.- Also removed
Symfony/ux-notifyandmercure-turbo-streamentries fromcontrollers.json.
Code
NotificationServiceconstructor no longer takesHubInterfaceorParameterBagInterface.- Removed methods:
getNotificationPublicUrl,publishNotification,runNotifications,runOneNotification,setReadNotification(the last had pre-existing bugs and no callers). - Removed
runRealTimeNotificationendpoint fromNotificationController(both apps). jsConfigurationendpoint simplified: now returns justnotification_url, notpublic_url.DashboardControllerandNotificationManagercallers updated.- Dead
notification_public_urltemplate variable and hidden<div>removed from dashboard twigs.
JavaScript
public_urlremoved from autocomplete / notification localStorage cache incustom-ea.js.initializeRealtimeNotificationEvent()function signature dropped its unusedpublicUrlargument.- ~60 lines of commented-out
EventSource.onmessagehandler and the commented-out$.get('/api/notification/run-realtime-notification')call removed.
Retained
Notificationentity, CRUD controllers, DB persistence.- Notification dropdown UI (driven by
notificationUrl()only, DB-backed). jsConfigurationendpoint (frontend still uses it for the "View all messages" link).
Why the Removal Was Safe
- Mercure hub never deployed, so no realtime subscribers ever received anything.
try/catcharound$hub->publish()swallowed every failure silently.EventSourcesubscription commented out client-side.- Notification list + dropdown use DB polling and continue to work.
Stats
- 29 files changed
- +146 / −1,518 lines