diff --git a/apps/desktop/src/renderer/src/components/update-notification.tsx b/apps/desktop/src/renderer/src/components/update-notification.tsx
index 4ef34c6d5..5b4fe0075 100644
--- a/apps/desktop/src/renderer/src/components/update-notification.tsx
+++ b/apps/desktop/src/renderer/src/components/update-notification.tsx
@@ -110,12 +110,25 @@ export function UpdateNotification() {
Restart to apply the update
-
+
+ {/* Secondary "See changes" — gives the user a reason to
+ restart by surfacing what they're about to get. Opens
+ in the default browser via the shared openExternal
+ bridge so the URL hits the same allow-list as every
+ other outbound link. */}
+
+
+
)}
diff --git a/packages/views/layout/app-sidebar.tsx b/packages/views/layout/app-sidebar.tsx
index 16fc90b04..308814241 100644
--- a/packages/views/layout/app-sidebar.tsx
+++ b/packages/views/layout/app-sidebar.tsx
@@ -28,6 +28,7 @@ import {
SquarePen,
CircleUser,
FolderKanban,
+ Sparkles,
X,
Zap,
} from "lucide-react";
@@ -415,6 +416,22 @@ export function AppSidebar({ topSlot, searchSlot, headerClassName, headerStyle }
)}
+ {/* Plain anchor with target=_blank works on both web
+ (new tab) and desktop (intercepted by the main
+ process's setWindowOpenHandler → openExternalSafely),
+ so the shared component doesn't need to branch. */}
+
+ }
+ >
+
+ What's new
+
Log out
@@ -599,6 +616,15 @@ export function AppSidebar({ topSlot, searchSlot, headerClassName, headerStyle }