@@ -131,6 +131,21 @@ const INVALID_BILLING_ADDRESS = (stripePortalUrl: string | undefined) => {
131
131
} as Notification ;
132
132
} ;
133
133
134
+ const GITPOD_CLASSIC_SUNSET = {
135
+ id : "gitpod-classic-sunset" ,
136
+ type : "info" as AlertType ,
137
+ preventDismiss : true , // This makes it so users can't dismiss the notification
138
+ message : (
139
+ < span className = "text-md" >
140
+ < b > Gitpod Classic is sunsetting fall 2025.</ b > { " " }
141
+ < a className = "text-kumquat-base font-bold" href = "https://app.gitpod.io" target = "_blank" rel = "noreferrer" >
142
+ Try the new Gitpod
143
+ </ a > { " " }
144
+ now (hosted compute coming soon)
145
+ </ span >
146
+ ) ,
147
+ } as Notification ;
148
+
134
149
export function AppNotifications ( ) {
135
150
const [ topNotification , setTopNotification ] = useState < Notification | undefined > ( undefined ) ;
136
151
const { user, loading } = useUserLoader ( ) ;
@@ -145,6 +160,10 @@ export function AppNotifications() {
145
160
const updateNotifications = async ( ) => {
146
161
const notifications = [ ] ;
147
162
if ( ! loading ) {
163
+ if ( isGitpodIo ( ) ) {
164
+ notifications . push ( GITPOD_CLASSIC_SUNSET ) ;
165
+ }
166
+
148
167
if (
149
168
isGitpodIo ( ) &&
150
169
( ! user ?. profile ?. acceptedPrivacyPolicyDate ||
@@ -197,7 +216,7 @@ export function AppNotifications() {
197
216
< div className = "app-container pt-2" >
198
217
< Alert
199
218
type = { topNotification . type }
200
- closable = { true }
219
+ closable = { topNotification . id !== "gitpod-classic-sunset" } // Only show close button if it's not the sunset notification
201
220
onClose = { ( ) => {
202
221
if ( ! topNotification . preventDismiss ) {
203
222
dismissNotification ( ) ;
0 commit comments