Repository navigation
Description
Summary
On Windows, enabling Settings → Notifications → Desktop alerts fails with the red notice
"Desktop notifications are blocked for Buzz" and the switch reverts. Nothing on the machine is blocking
notifications. This is an upstream tauri-plugin-notification bug that makes Notification.permission report
"denied" on Windows regardless of the real state — but Buzz amplifies it by re-deriving desktopEnabled from that
value on every launch, so there is no way for a user to work around it.
Upstream issue: tauri-apps/plugins-workspace#3557
Environment
- Buzz 0.5.20, unsigned installer, per-user install at
%LOCALAPPDATA%\Buzz - Windows 11 Pro 10.0.22631
- WebView2 Runtime 151.0.4129.107 (Evergreen, system-wide)
tauri-plugin-notification2.3.3,wry0.55.1,webview2-com0.38.2
What is NOT the cause (all verified)
- Start Menu shortcut has a correct AppUserModelID.
Buzz.lnkproperty store holds FMTID
{9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}PID5=xyz.block.buzz.app. - WebView2 profile has no stored denial.
%LOCALAPPDATA%\xyz.block.buzz.app\EBWebView\Default\Preferences→
content_settings.exceptions.notificationsis{}, and there is no non-default
default_content_setting_values. - No blocking registry values, and no Edge/WebView2 notification policies under
HKCU/HKLM\SOFTWARE\Policies. - Windows global toast switch is on.
- The native toast path works end to end — a test notification was delivered and Buzz was registered under
HKCU\...\Notifications\Settings\xyz.block.buzz.appwithPeriodicNotificationCount: 1.
Actual behaviour
tauri-plugin-notification's init script sets window.Notification.permission = "denied" at startup on Windows
without querying the backend, while the backend returns granted. Verified in a live Buzz webview:
Notification.permission => "denied"
raw backend: is_permission_granted => true
raw backend: request_permission => "granted"
await Notification.requestPermission() => "granted"
Notification.permission => "granted"
With permission corrected to "granted", the Desktop alerts toggle turns on normally and the setting is written to
localStorage:
key: buzz-notification-settings.v2:<account-key>
value: {"desktopEnabled":true,"homeBadgeEnabled":true,"notifyWhileViewing":true,...}
But the setting does not survive a restart. On the next cold start, with no workaround applied:
Notification.permission (fresh boot) => "denied"
desktopEnabled => false
full setting object => {"desktopEnabled":false,"homeBadgeEnabled":true,"notifyWhileViewing":true}
Note that homeBadgeEnabled and notifyWhileViewing both survive — only desktopEnabled is reset. So this is not a
general settings reset; desktopEnabled is specifically re-derived from Notification.permission during boot and
forced off.
Because Buzz's own code runs after the plugin's init script, a user cannot correct this from devtools either: by
the time requestPermission() can be called, desktopEnabled has already been overwritten. The result is that
desktop notifications are permanently unreachable on Windows for this version.
Suggested change
Two things, either of which unblocks users:
- Don't force
desktopEnabledoff from a cached permission value. Treat an explicit user opt-in as
authoritative and let the send path fail loudly if it ever actually fails. At minimum, don't silently rewrite a
persisted user setting during boot. - Call
await Notification.requestPermission()before readingNotification.permissionon Windows. This
round-trips to the Tauri backend and returns the true value ("granted"), sidestepping the upstream bug until
the fixed plugin version ships.
Impact
Desktop toast notifications are unusable on Windows in 0.5.20. In-app indicators still work — homeBadgeEnabled
is unaffected because it does not go through the Notification API.
Activity
ranjank2alpha commentedon Aug 31, 2026
We hit this exact bug, and #6876 fixes it. Your diagnosis is right: the plugin's init script latches
Notification.permissionto"denied"on Windows without asking the backend, and Buzz then re-derivesdesktopEnabledfrom that on every boot, so the toggle can't stay on.The PR queries
plugin:notification|is_permission_granteddirectly on Windows ingetDesktopNotificationPermissionState()instead of trusting the shim's cached value, so permission reads the true"granted"and the toggle stops being force-reset. That's the same fix as your suggestion #2, applied inside Buzz rather than as a workaround.It also adds the native WinRT toast path that was missing entirely: a process-wide COM MTA so the WinRT calls don't fail with
CO_E_NOTINITIALIZED(silently, in a release build), AUMID plus Start Menu shortcut registration so Windows lists Buzz and routes toasts to the Action Center, and click-to-open on the toast.Would appreciate a look if you're able to build the branch.
wpfleger96 commentedon Oct 9, 2026
🤖 fixed by #5600, which ships in the next desktop release. on Windows the notification plugin reported permission as
deniedat startup without asking the backend, so Buzz refused to turn Desktop alerts on and also saved the setting as off on every launch. #5600 repairs that reading, so the toggle turns on and stays on across restarts. if yours was already forced off, turn Desktop alerts on once after updating. thanks for the report