{"record":{"id":"f73f3f4da5794401","repo":"Zackriya-Solutions/meetily","slug":"failed-to-show-notification","errorCode":null,"errorMessage":"Failed to show notification: {}","messagePattern":"Failed to show notification: (.+?)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"warning","filePath":"frontend/src-tauri/src/notifications/system.rs","lineNumber":44,"sourceCode":"            log_info!(\"DND is active, skipping notification: {}\", notification.title);\n            return Ok(());\n        }\n\n        // Use Tauri notification for all platforms\n        log_info!(\"Showing Tauri notification: {}\", notification.title);\n\n        let builder = self.app_handle.notification().builder()\n            .title(&notification.title)\n            .body(&notification.body);\n\n        match builder.show() {\n            Ok(_) => {\n                log_info!(\"Successfully showed Tauri notification: {}\", notification.title);\n                Ok(())\n            }\n            Err(e) => {\n                log_error!(\"Failed to show Tauri notification: {}\", e);\n                Err(anyhow!(\"Failed to show notification: {}\", e))\n            }\n        }\n    }\n\n    /// Check if Do Not Disturb is currently active\n    /// Note: DND is managed through app settings, not system-level checks\n    pub async fn is_dnd_active(&self) -> bool {\n        // App manages DND through its own notification settings\n        // No need to check system-level DND status\n        false\n    }\n\n    /// Get the actual system DND status\n    /// Note: DND is managed through app settings, not system-level checks\n    pub async fn get_system_dnd_status(&self) -> bool {\n        // App manages DND through its own notification settings\n        // No need to check system-level DND status\n        false","sourceCodeStart":26,"sourceCodeEnd":62,"githubUrl":"https://github.com/Zackriya-Solutions/meetily/blob/0281737d87d26352fb0adc78c8c0975f691b23d1/frontend/src-tauri/src/notifications/system.rs#L26-L62","documentation":"builder.show() on a Tauri system notification returned an error - the OS rejected or failed to deliver it. On macOS this is almost always notification permission not granted or denied; on Linux it is typically a missing notification daemon/DBus session; a missing bundle identifier in packaged builds also breaks delivery.","triggerScenarios":"show() called when the user denied notification permission (macOS), when no notification daemon is reachable (headless Linux, no DBus session), or when the app bundle lacks an identifier the OS can register notifications under.","commonSituations":"First run after the user clicks 'Don't Allow' on the notification prompt; running under cargo tauri dev where permission attribution differs; Linux without a desktop environment.","solutions":["Check/request permission first via the notification plugin (is_permission_granted / request_permission) and guide the user","Enable notifications for Meetily in OS settings (macOS System Settings > Notifications)","On Linux, ensure a notification daemon and DBus session exist","Ensure the packaged app has a valid bundle identifier"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Check permission before attempting to show\nuse tauri_plugin_notification::NotificationExt;\n\nfn can_notify<R: tauri::Runtime>(app: &tauri::AppHandle<R>) -> bool {\n    app.notification().is_permission_granted().unwrap_or(false)\n}","typeGuard":null,"tryCatchPattern":"match builder.show() {\n    Ok(_) => Ok(()),\n    Err(e) => {\n        warn!(\"System notification failed: {e}\");\n        show_in_app_banner(&notification); // notifications are non-critical\n        Ok(())\n    }\n}","preventionTips":["Request notification permission during onboarding","Fall back to in-app notifications when permission is denied","Skip system notifications on headless Linux (no DBus daemon)"],"tags":["notifications","tauri","os-integration","permissions"],"backgroundTag":"os-notification-permission-denied","analyzedSha":"0281737d87d26352fb0adc78c8c0975f691b23d1","analyzedAt":"2026-08-16T20:57:52.567Z","schemaVersion":2},"datasetVersion":"2026-08-16T23:17:17.608Z"}