feat(native): Tier B — WinRT rich toasts (P5-41/35) + Focus Assist sync (P5-56)

- toast.rs: Windows.UI.Notifications rich toast (reply input + Send action);
  in-process Activated event → emit lotus-notification-activate {path} (click) /
  lotus-notification-reply {roomId,text}. Falls back to tauri-plugin-notification
  (WinRT error / non-Windows). The NOTIFICATION_BRIDGE now routes notifications
  carrying a roomId (tag) to show_rich_toast. Features: UI_Notifications,
  Data_Xml_Dom, Foundation_Collections.
- focus_assist.rs: SHQueryUserNotificationState poll thread → emit
  focus-assist-changed {active} on QUNS_QUIET_TIME/PRESENTATION/D3D_FULLSCREEN/BUSY.
  No new Cargo features.

CI Windows compile pending (no local Rust toolchain). Runtime caveat: WinRT toasts
need a Start-menu shortcut + matching AppUserModelID (org.lotusguild.lotus-chat);
without it CreateToastNotifier errors and the code falls back to the plugin.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-01 10:01:31 -04:00
parent 73d15b13d2
commit a923650d02
5 changed files with 367 additions and 5 deletions
+4 -1
View File
@@ -48,9 +48,12 @@ tauri-plugin-single-instance = "2"
webview2-com = "0.38"
window-vibrancy = "0.6"
windows = { version = "0.61", features = [
# WinRT namespaces (SMTC — P5-43)
# WinRT namespaces
"Data_Xml_Dom", # P5-41 toast XML
"Foundation",
"Foundation_Collections", # P5-41 toast UserInput IMap
"Media",
"UI_Notifications", # P5-41 WinRT toast notifications
# Win32 namespaces
"Win32_Foundation",
"Win32_Graphics_Gdi",