@@ -131,6 +131,21 @@ const INVALID_BILLING_ADDRESS = (stripePortalUrl: string | undefined) => {
131131 } as Notification ;
132132} ;
133133
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+
134149export function AppNotifications ( ) {
135150 const [ topNotification , setTopNotification ] = useState < Notification | undefined > ( undefined ) ;
136151 const { user, loading } = useUserLoader ( ) ;
@@ -145,6 +160,10 @@ export function AppNotifications() {
145160 const updateNotifications = async ( ) => {
146161 const notifications = [ ] ;
147162 if ( ! loading ) {
163+ if ( isGitpodIo ( ) ) {
164+ notifications . push ( GITPOD_CLASSIC_SUNSET ) ;
165+ }
166+
148167 if (
149168 isGitpodIo ( ) &&
150169 ( ! user ?. profile ?. acceptedPrivacyPolicyDate ||
@@ -197,7 +216,7 @@ export function AppNotifications() {
197216 < div className = "app-container pt-2" >
198217 < Alert
199218 type = { topNotification . type }
200- closable = { true }
219+ closable = { topNotification . id !== "gitpod-classic-sunset" } // Only show close button if it's not the sunset notification
201220 onClose = { ( ) => {
202221 if ( ! topNotification . preventDismiss ) {
203222 dismissNotification ( ) ;
0 commit comments