feat: add OS + in-app notification system

notify-rust for desktop notifications, NotificationCenter.svelte with
bell icon, unread badge, history (max 100), 6 notification types.
Extended notification store with history and type support.
This commit is contained in:
Hibryda 2026-03-12 04:57:29 +01:00
parent 7cb5cddc7c
commit 5dd7df03cb
6 changed files with 560 additions and 12 deletions

View file

@ -0,0 +1,8 @@
// Notification commands — desktop notification via notify-rust
use crate::notifications;
#[tauri::command]
pub fn notify_desktop(title: String, body: String, urgency: String) -> Result<(), String> {
notifications::send_desktop_notification(&title, &body, &urgency)
}

View file

@ -0,0 +1,31 @@
// Desktop notification support via notify-rust
use notify_rust::{Notification, Urgency};
/// Send an OS desktop notification.
/// Fails gracefully if the notification daemon is unavailable.
pub fn send_desktop_notification(
title: &str,
body: &str,
urgency: &str,
) -> Result<(), String> {
let urgency_level = match urgency {
"critical" => Urgency::Critical,
"low" => Urgency::Low,
_ => Urgency::Normal,
};
match Notification::new()
.summary(title)
.body(body)
.appname("BTerminal")
.urgency(urgency_level)
.show()
{
Ok(_) => Ok(()),
Err(e) => {
tracing::warn!("Desktop notification failed (daemon unavailable?): {e}");
Ok(()) // Graceful — don't propagate to frontend
}
}
}