<ul><li><strong>MEDIUM FIX — checkNotificationSettingsByAcctID():</strong> itemid and enable_devices keys were never set for items with no existing settings record (default status=1). In JS, v.itemid rendered as undefined string, breaking device checkbox IDs, data-settingid attributes, and the entire device settings sub-toggle for first-time users. Fixed: itemid=null and enable_devices=[] are now always initialized before the conditional branch.</li><li><strong>MEDIUM SPEED/N+1 FIX — notificationSettings():</strong> Was executing 31+ individual getNotificationSettingsByAcctID queries (one per item) plus N getEnableDeviceType queries per device type per item with a record. Replaced with 2 bulk pre-cache queries: getAllNotificationSettingsByAcctID (keyed by notif_websiteid_fk) and getAllEnableDeviceTypesByAcctID (keyed by notif_id_per_acct and type). Reduced from 33+ queries to 11 queries per call. checkNotificationSettingsByAcctID updated to accept optional cache params with live-query fallback for backward compatibility.</li><li><strong>LOW FIX — Missing AJAX error handlers:</strong> updateEnableDeviceSettings, updateNotifSettingsByAcct, and onStoreSettingAccount AJAX calls had no error handler. Added error: function(xhr, status, error) handlers with console.error logging to all three. Added null guard on res in onStoreSettingAccount success handler.</li><li><strong>LOW FIX — Loading spinner stuck on AJAX failure:</strong> If notificationSettings AJAX call errored (network/server issue), the loading spinner stayed stuck forever with no user feedback. Fixed: error handler now replaces spinner with a user-visible error message.</li><li><strong>NEW METHODS — Notification.class.php:</strong> Added getAllNotificationSettingsByAcctID() and getAllEnableDeviceTypesByAcctID() bulk pre-cache methods for N+1 elimination. Added getEnableDeviceTypeFromCache() in NotificationsController for resolving device types from pre-cached arrays.</li><li>CRUD VERIFIED: 8 modules / 31 items loaded. toggle off/on, device enable/disable, onStoreSettingAccount all return correct JSON. 0 PHP errors in logs.</li></ul>