From 1057aaf840e0a62e0f8121ee7e688a139894db2b Mon Sep 17 00:00:00 2001 From: Siddhant Khare Date: Tue, 17 Jun 2025 17:53:13 +0000 Subject: [PATCH 01/12] Add Ona banner to start page with compact and full versions --- .../dashboard/src/images/ona-application.webp | Bin 0 -> 94692 bytes components/dashboard/src/start/OnaBanner.tsx | 165 ++++++++++++++++++ components/dashboard/src/start/StartPage.tsx | 16 +- .../dashboard/src/workspaces/BlogBanners.tsx | 66 +++---- 4 files changed, 204 insertions(+), 43 deletions(-) create mode 100644 components/dashboard/src/images/ona-application.webp create mode 100644 components/dashboard/src/start/OnaBanner.tsx diff --git a/components/dashboard/src/images/ona-application.webp b/components/dashboard/src/images/ona-application.webp new file mode 100644 index 0000000000000000000000000000000000000000..a2ab9e8f6a9a6abe579b1135db98716788bdd339 GIT binary patch literal 94692 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� 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 literal 0 HcmV?d00001 diff --git a/components/dashboard/src/start/OnaBanner.tsx b/components/dashboard/src/start/OnaBanner.tsx new file mode 100644 index 00000000000000..cc2ee32c92fbab --- /dev/null +++ b/components/dashboard/src/start/OnaBanner.tsx @@ -0,0 +1,165 @@ +/** + * Copyright (c) 2024 Gitpod GmbH. All rights reserved. + * Licensed under the GNU Affero General Public License (AGPL). + * See License.AGPL.txt in the project root for license information. + */ + +import React, { useEffect, useState } from "react"; +import { trackEvent } from "../Analytics"; +import { useCurrentUser } from "../user-context"; +import { getPrimaryEmail } from "@gitpod/public-api-common/lib/user-utils"; +import { useToast } from "../components/toasts/Toasts"; +import onaWordmark from "../images/ona-wordmark.svg"; +import onaApplication from "../images/ona-application.webp"; + +const onaBanner = { + type: "Introducing", + title: "ONA", + subtitle: "The privacy-first software engineering agent.", + ctaText: "Get early access", + learnMoreText: "Learn more", + link: "https://ona.com/", +}; + +interface OnaBannerProps { + compact?: boolean; +} + +export const OnaBanner: React.FC = ({ compact = false }) => { + const [onaClicked, setOnaClicked] = useState(false); + const user = useCurrentUser(); + const { toast } = useToast(); + + useEffect(() => { + const storedOnaData = localStorage.getItem("ona-banner-data"); + + if (storedOnaData) { + const { clicked } = JSON.parse(storedOnaData); + setOnaClicked(clicked || false); + } + }, []); + + const handleOnaBannerClick = () => { + if (!onaClicked) { + // Track "Get early access" click + const userEmail = user ? getPrimaryEmail(user) || "" : ""; + trackEvent("waitlist_joined", { email: userEmail, feature: "Ona" }); + + setOnaClicked(true); + localStorage.setItem("ona-banner-data", JSON.stringify({ clicked: true })); + + // Show success toast + toast( +
+
You're on the waitlist
+
We'll reach out to you soon.
+
, + ); + } else { + // "Learn more" click - open link + window.open(onaBanner.link, "_blank", "noopener,noreferrer"); + } + }; + + if (compact) { + return ( +
+ {/* Compact layout */} +
+ {onaBanner.type} + ONA +
+ +

+ The privacy-first software engineering agent +

+ +

+ Delegate software tasks to Ona. It writes code, runs tests, and opens a pull request. Or jump in to + inspect output or pair program in your IDE. +
+
+ Ona runs inside your infrastructure (VPC), with full audit trails, zero data exposure, and support + for any LLM. +

+ + +
+ ); + } + + return ( +
+ {/* Left section - ONA branding and image */} +
+
+ {/* ONA Logo prominently displayed */} +
+ ONA +
+ + {/* Application screenshot */} +
+ Ona application preview +
+
+
+ + {/* Right section - Text content and CTA */} +
+
+ {/* Main title */} +

+ The privacy-first software engineering agent +

+ + {/* Description */} +
+

+ Delegate software tasks to Ona. It writes code, runs tests, and opens a pull request. Or + jump in to inspect output or pair program in your IDE. +

+

+ Ona runs inside your infrastructure (VPC), with full audit trails, zero data exposure, and + support for any LLM. +

+
+ + {/* CTA Button */} +
+ +
+
+
+
+ ); +}; diff --git a/components/dashboard/src/start/StartPage.tsx b/components/dashboard/src/start/StartPage.tsx index 5fcc96d4c9d877..0f8d8051e5f43c 100644 --- a/components/dashboard/src/start/StartPage.tsx +++ b/components/dashboard/src/start/StartPage.tsx @@ -15,6 +15,8 @@ import { useWorkspaceDefaultImageQuery } from "../data/workspaces/default-worksp import { GetWorkspaceDefaultImageResponse_Source } from "@gitpod/public-api/lib/gitpod/v1/workspace_pb"; import { ProductLogo } from "../components/ProductLogo"; import { useIsDataOps } from "../data/featureflag-query"; +import { isGitpodIo } from "../utils"; +import { OnaBanner } from "./OnaBanner"; export enum StartPhase { Checking = 0, @@ -99,8 +101,18 @@ export function StartPage(props: StartPageProps) { useDocumentTitle("Starting"); const isDataOps = useIsDataOps(); + // Check if workspace is running/ready - position OnaBanner differently + const isWorkspaceRunning = phase === StartPhase.IdeReady || phase === StartPhase.Running; + return ( -
+
+ {/* OnaBanner positioned on the side when workspace is running */} + {isWorkspaceRunning && isGitpodIo() && ( +
+ +
+ )} +
+ {/* OnaBanner positioned in main flow when workspace is not running */} + {!isWorkspaceRunning && isGitpodIo() && }
); diff --git a/components/dashboard/src/workspaces/BlogBanners.tsx b/components/dashboard/src/workspaces/BlogBanners.tsx index 810a084e352622..2538729af54683 100644 --- a/components/dashboard/src/workspaces/BlogBanners.tsx +++ b/components/dashboard/src/workspaces/BlogBanners.tsx @@ -21,7 +21,6 @@ const onaBanner = { }; export const OnaBanner: React.FC = () => { - const [showOnaBanner, setShowOnaBanner] = useState(true); const [onaClicked, setOnaClicked] = useState(false); const user = useCurrentUser(); const { toast } = useToast(); @@ -31,8 +30,7 @@ export const OnaBanner: React.FC = () => { // Check Ona banner state if (storedOnaData) { - const { dismissed, clicked } = JSON.parse(storedOnaData); - setShowOnaBanner(!dismissed); + const { clicked } = JSON.parse(storedOnaData); setOnaClicked(clicked || false); } @@ -47,7 +45,7 @@ export const OnaBanner: React.FC = () => { trackEvent("waitlist_joined", { email: userEmail, feature: "Ona" }); setOnaClicked(true); - localStorage.setItem("ona-banner-data", JSON.stringify({ dismissed: false, clicked: true })); + localStorage.setItem("ona-banner-data", JSON.stringify({ clicked: true })); // Show success toast toast( @@ -62,48 +60,32 @@ export const OnaBanner: React.FC = () => { } }; - const handleOnaBannerDismiss = () => { - setShowOnaBanner(false); - localStorage.setItem("ona-banner-data", JSON.stringify({ dismissed: true, clicked: onaClicked })); - }; - return (
- {showOnaBanner && ( -
- {/* Close button */} - - - {/* Content */} -
-
- {onaBanner.type} - ONA -
-
{onaBanner.subtitle}
+
+ {/* Content */} +
+
+ {onaBanner.type} + ONA
- - {/* CTA Button */} - +
{onaBanner.subtitle}
- )} + + {/* CTA Button */} + +
); }; From 7c214723c8faf1a1ed6d966f47131d75489f47cc Mon Sep 17 00:00:00 2001 From: Siddhant Khare Date: Wed, 18 Jun 2025 07:39:29 +0000 Subject: [PATCH 02/12] Login page - Ona right panel for waitlist sign-up and information for gitpod.io users only --- components/dashboard/src/Login.tsx | 156 ++++++++++++++++++--- components/dashboard/src/OnaRightPanel.tsx | 118 ++++++++++++++++ 2 files changed, 252 insertions(+), 22 deletions(-) create mode 100644 components/dashboard/src/OnaRightPanel.tsx diff --git a/components/dashboard/src/Login.tsx b/components/dashboard/src/Login.tsx index 5bf6fe3fc22824..60953adc616c76 100644 --- a/components/dashboard/src/Login.tsx +++ b/components/dashboard/src/Login.tsx @@ -23,9 +23,14 @@ import { cn } from "@podkit/lib/cn"; import { userClient } from "./service/public-api"; import { ProductLogo } from "./components/ProductLogo"; import { useIsDataOps } from "./data/featureflag-query"; -import GitpodClassicCard from "./images/gitpod-classic-card.png"; import { LoadingState } from "@podkit/loading/LoadingState"; import { isGitpodIo } from "./utils"; +import { trackEvent } from "./Analytics"; +import { useCurrentUser } from "./user-context"; +import { getPrimaryEmail } from "@gitpod/public-api-common/lib/user-utils"; +import { useToast } from "./components/toasts/Toasts"; +import onaWordmark from "./images/ona-wordmark.svg"; +import onaApplication from "./images/ona-application.webp"; export function markLoggedIn() { document.cookie = GitpodCookie.generateCookie(window.location.hostname); @@ -93,9 +98,15 @@ export const Login: FC = ({ onLoggedIn }) => { return (
{enterprise ? ( = ({ providerFromContext, repoPath
(undefined); + const enterprise = !!authProviders.data && authProviders.data.length === 0; + const updateUser = useCallback(async () => { await getGitpodService().reconnect(); const { user } = await userClient.getAuthenticatedUser({}); @@ -314,32 +327,131 @@ const LoginContent = ({
{errorMessage && } + + {/* Gitpod Classic sunset notice - only show for non-enterprise */} + {!enterprise && ( +
+

+ Gitpod classic is sunsetting fall 2025.{" "} + + Try the new Gitpod + {" "} + now (hosted compute coming soon) +

+
+ )}
); }; const RightProductDescriptionPanel = () => { - return ( -
+ const [email, setEmail] = useState(""); + const [isSubmitted, setIsSubmitted] = useState(false); + const user = useCurrentUser(); + const { toast } = useToast(); + + const handleEmailSubmit = (e: React.FormEvent) => { + e.preventDefault(); + if (!email.trim()) return; + + const userEmail = user ? getPrimaryEmail(user) || email : email; + trackEvent("waitlist_joined", { email: userEmail, feature: "Ona" }); + + setIsSubmitted(true); + + toast(
-
-

- Gitpod Classic +
You're on the waitlist
+
We'll reach out to you soon.
+

, + ); + }; + + const handleLearnMore = () => { + window.open("https://ona.com/", "_blank", "noopener,noreferrer"); + }; + + return ( +
+
+
+
+ ONA +
+
+ Ona application preview +
+
+ +
+

+ Meet Ona - the privacy-first software engineering agent.

-

- Automated, standardized development environments hosted by us in Gitpod’s infrastructure. Users - who joined before October 1, 2024 on non-Enterprise plans are considered Gitpod Classic users. -

-

- Gitpod Classic is sunsetting fall 2025.{" "} - - Try the new Gitpod - {" "} - now (hosted compute coming soon). -

+
+

+ Delegate software tasks to Ona. It writes code, runs tests, and opens a pull request. Or + jump in to inspect output or pair program in your IDE. +

+

+ Ona runs inside your infrastructure (VPC), with full audit trails, zero data exposure, and + support for any LLM. +

+
+ +
+ {!isSubmitted ? ( +
+
+ setEmail(e.target.value)} + placeholder="Enter your work email" + className="flex-1 px-4 py-2.5 rounded-lg bg-white/10 backdrop-blur-sm border border-white/20 text-white placeholder-white/60 focus:outline-none focus:ring-2 focus:ring-white/30 text-sm" + required + /> + +
+

+ By submitting this, you agree to our{" "} + + privacy policy + +

+
+ ) : ( + + )} +
- Gitpod Classic
); diff --git a/components/dashboard/src/OnaRightPanel.tsx b/components/dashboard/src/OnaRightPanel.tsx new file mode 100644 index 00000000000000..1c30bd0cb487bc --- /dev/null +++ b/components/dashboard/src/OnaRightPanel.tsx @@ -0,0 +1,118 @@ +/** + * Copyright (c) 2025 Gitpod GmbH. All rights reserved. + * Licensed under the GNU Affero General Public License (AGPL). + * See License.AGPL.txt in the project root for license information. + */ + +import React, { useState, useEffect } from "react"; +import { trackEvent } from "./Analytics"; +import { useCurrentUser } from "./user-context"; +import { getPrimaryEmail } from "@gitpod/public-api-common/lib/user-utils"; +import { useToast } from "./components/toasts/Toasts"; +import onaWordmark from "./images/ona-wordmark.svg"; +import onaApplication from "./images/ona-application.webp"; + +export const OnaRightPanel = () => { + const [email, setEmail] = useState(""); + const [isSubmitted, setIsSubmitted] = useState(false); + const user = useCurrentUser(); + const { toast } = useToast(); + + useEffect(() => { + const storedOnaData = localStorage.getItem("ona-waitlist-data"); + if (storedOnaData) { + const { submitted } = JSON.parse(storedOnaData); + setIsSubmitted(submitted || false); + } + }, []); + + const handleEmailSubmit = (e: React.FormEvent) => { + e.preventDefault(); + if (!email.trim()) return; + + const userEmail = user ? getPrimaryEmail(user) || email : email; + trackEvent("waitlist_joined", { email: userEmail, feature: "Ona" }); + + setIsSubmitted(true); + localStorage.setItem("ona-waitlist-data", JSON.stringify({ submitted: true })); + + toast( +
+
You're on the waitlist
+
We'll reach out to you soon.
+
, + ); + }; + + return ( +
+
+
+ ONA +
+ +
+ Ona application preview +
+ +
+

+ Meet Ona - the privacy-first software engineering agent. +

+ +
+

+ Delegate software tasks to Ona. It writes code, runs tests, and opens a pull request. Or + jump in to inspect output or pair program in your IDE. +

+

+ Ona runs inside your infrastructure (VPC), with full audit trails, zero data exposure, and + support for any LLM. +

+
+ +
+ {!isSubmitted ? ( +
+ setEmail(e.target.value)} + placeholder="Enter your work email" + className="w-full px-4 py-2.5 rounded-lg bg-white/10 backdrop-blur-sm border border-white/20 text-white placeholder-white/60 focus:outline-none focus:ring-2 focus:ring-white/30 text-sm" + required + /> + +
+ ) : ( + + )} +
+
+
+
+ ); +}; From 9d583eea798773dcb7feaf7482574e49063f1164 Mon Sep 17 00:00:00 2001 From: Siddhant Khare Date: Wed, 18 Jun 2025 07:55:32 +0000 Subject: [PATCH 03/12] only send email what user submitted --- components/dashboard/src/Login.tsx | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/components/dashboard/src/Login.tsx b/components/dashboard/src/Login.tsx index 60953adc616c76..b0dbe58ecdf0f4 100644 --- a/components/dashboard/src/Login.tsx +++ b/components/dashboard/src/Login.tsx @@ -26,8 +26,6 @@ import { useIsDataOps } from "./data/featureflag-query"; import { LoadingState } from "@podkit/loading/LoadingState"; import { isGitpodIo } from "./utils"; import { trackEvent } from "./Analytics"; -import { useCurrentUser } from "./user-context"; -import { getPrimaryEmail } from "@gitpod/public-api-common/lib/user-utils"; import { useToast } from "./components/toasts/Toasts"; import onaWordmark from "./images/ona-wordmark.svg"; import onaApplication from "./images/ona-application.webp"; @@ -352,15 +350,13 @@ const LoginContent = ({ const RightProductDescriptionPanel = () => { const [email, setEmail] = useState(""); const [isSubmitted, setIsSubmitted] = useState(false); - const user = useCurrentUser(); const { toast } = useToast(); const handleEmailSubmit = (e: React.FormEvent) => { e.preventDefault(); if (!email.trim()) return; - const userEmail = user ? getPrimaryEmail(user) || email : email; - trackEvent("waitlist_joined", { email: userEmail, feature: "Ona" }); + trackEvent("waitlist_joined", { email: email, feature: "Ona" }); setIsSubmitted(true); From eb686630bfa777c2efb0f64c6137aceac15d8921 Mon Sep 17 00:00:00 2001 From: Siddhant Khare Date: Wed, 18 Jun 2025 09:33:51 +0000 Subject: [PATCH 04/12] Refactor login component to use installation configuration for enterprise detection and update learn more button to a link --- components/dashboard/src/Login.tsx | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/components/dashboard/src/Login.tsx b/components/dashboard/src/Login.tsx index b0dbe58ecdf0f4..f80cbf5beb6747 100644 --- a/components/dashboard/src/Login.tsx +++ b/components/dashboard/src/Login.tsx @@ -17,6 +17,7 @@ import { SSOLoginForm } from "./login/SSOLoginForm"; import { useAuthProviderDescriptions } from "./data/auth-providers/auth-provider-descriptions-query"; import { SetupPending } from "./login/SetupPending"; import { useNeedsSetup } from "./dedicated-setup/use-needs-setup"; +import { useInstallationConfiguration } from "./data/installation/installation-config-query"; import { AuthProviderDescription } from "@gitpod/public-api/lib/gitpod/v1/authprovider_pb"; import { Button, ButtonProps } from "@podkit/buttons/Button"; import { cn } from "@podkit/lib/cn"; @@ -67,7 +68,8 @@ export const Login: FC = ({ onLoggedIn }) => { const [hostFromContext, setHostFromContext] = useState(); const [repoPathname, setRepoPathname] = useState(); - const enterprise = !!authProviders.data && authProviders.data.length === 0; + const { data: installationConfig } = useInstallationConfiguration(); + const enterprise = !!installationConfig?.isDedicatedInstallation; useEffect(() => { try { @@ -221,7 +223,8 @@ const LoginContent = ({ const authProviders = useAuthProviderDescriptions(); const [errorMessage, setErrorMessage] = useState(undefined); - const enterprise = !!authProviders.data && authProviders.data.length === 0; + const { data: installationConfig } = useInstallationConfiguration(); + const enterprise = !!installationConfig?.isDedicatedInstallation; const updateUser = useCallback(async () => { await getGitpodService().reconnect(); @@ -368,10 +371,6 @@ const RightProductDescriptionPanel = () => { ); }; - const handleLearnMore = () => { - window.open("https://ona.com/", "_blank", "noopener,noreferrer"); - }; - return (
@@ -438,13 +437,15 @@ const RightProductDescriptionPanel = () => {

) : ( - + )}
From 78eb8f8f8312dc2d6b8e9b18c87dc0ea4d7ded00 Mon Sep 17 00:00:00 2001 From: Siddhant Khare Date: Wed, 18 Jun 2025 10:03:36 +0000 Subject: [PATCH 05/12] improve login page --- components/dashboard/src/Login.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/components/dashboard/src/Login.tsx b/components/dashboard/src/Login.tsx index f80cbf5beb6747..f092112862607c 100644 --- a/components/dashboard/src/Login.tsx +++ b/components/dashboard/src/Login.tsx @@ -331,7 +331,7 @@ const LoginContent = ({ {/* Gitpod Classic sunset notice - only show for non-enterprise */} {!enterprise && ( -
+

Gitpod classic is sunsetting fall 2025.{" "} Try the new Gitpod {" "} - now (hosted compute coming soon) + now (hosted compute & SWE agents coming soon)

)} @@ -372,7 +372,7 @@ const RightProductDescriptionPanel = () => { }; return ( -
+
@@ -404,7 +404,7 @@ const RightProductDescriptionPanel = () => {

-
+
{!isSubmitted ? (
From aad7209c5cc067c9945bc715f25ba76131131877 Mon Sep 17 00:00:00 2001 From: Siddhant Khare Date: Wed, 18 Jun 2025 11:21:48 +0000 Subject: [PATCH 06/12] Update Ona banner links to point to Gitpod solutions and add dismiss functionality --- components/dashboard/src/Login.tsx | 2 +- components/dashboard/src/start/OnaBanner.tsx | 148 +++++++++++------- .../dashboard/src/workspaces/BlogBanners.tsx | 35 ++++- 3 files changed, 127 insertions(+), 58 deletions(-) diff --git a/components/dashboard/src/Login.tsx b/components/dashboard/src/Login.tsx index f092112862607c..69dbfdfc08f8a5 100644 --- a/components/dashboard/src/Login.tsx +++ b/components/dashboard/src/Login.tsx @@ -438,7 +438,7 @@ const RightProductDescriptionPanel = () => { ) : ( = ({ compact = false }) => { const [onaClicked, setOnaClicked] = useState(false); + const [isDismissed, setIsDismissed] = useState(false); const user = useCurrentUser(); const { toast } = useToast(); @@ -34,33 +35,39 @@ export const OnaBanner: React.FC = ({ compact = false }) => { const storedOnaData = localStorage.getItem("ona-banner-data"); if (storedOnaData) { - const { clicked } = JSON.parse(storedOnaData); + const { clicked, dismissed } = JSON.parse(storedOnaData); setOnaClicked(clicked || false); + setIsDismissed(dismissed || false); } }, []); const handleOnaBannerClick = () => { - if (!onaClicked) { - // Track "Get early access" click - const userEmail = user ? getPrimaryEmail(user) || "" : ""; - trackEvent("waitlist_joined", { email: userEmail, feature: "Ona" }); - - setOnaClicked(true); - localStorage.setItem("ona-banner-data", JSON.stringify({ clicked: true })); - - // Show success toast - toast( -
-
You're on the waitlist
-
We'll reach out to you soon.
-
, - ); - } else { - // "Learn more" click - open link - window.open(onaBanner.link, "_blank", "noopener,noreferrer"); - } + // Track "Get early access" click + const userEmail = user ? getPrimaryEmail(user) || "" : ""; + trackEvent("waitlist_joined", { email: userEmail, feature: "Ona" }); + + setOnaClicked(true); + localStorage.setItem("ona-banner-data", JSON.stringify({ clicked: true, dismissed: isDismissed })); + + // Show success toast + toast( +
+
You're on the waitlist
+
We'll reach out to you soon.
+
, + ); + }; + + const handleDismiss = () => { + setIsDismissed(true); + localStorage.setItem("ona-banner-data", JSON.stringify({ clicked: onaClicked, dismissed: true })); }; + // Don't render if dismissed + if (isDismissed) { + return null; + } + if (compact) { return (
= ({ compact = false }) => { "linear-gradient(340deg, #1F1329 0%, #333A75 20%, #556CA8 40%, #90A898 60%, #E2B15C 80%, #BEA462 100%)", }} > + {/* Close button */} + + {/* Compact layout */} - ); } return (
+ {/* Close button */} + + {/* Left section - ONA branding and image */} -
+
{/* ONA Logo prominently displayed */}
- ONA + ONA
{/* Application screenshot */} @@ -121,7 +149,7 @@ export const OnaBanner: React.FC = ({ compact = false }) => { Ona application preview
@@ -132,31 +160,43 @@ export const OnaBanner: React.FC = ({ compact = false }) => {
{/* Main title */} -

+

The privacy-first software engineering agent

{/* Description */}
-

+

Delegate software tasks to Ona. It writes code, runs tests, and opens a pull request. Or jump in to inspect output or pair program in your IDE.

-

+

Ona runs inside your infrastructure (VPC), with full audit trails, zero data exposure, and support for any LLM.

{/* CTA Button */} -
- +
+ {!onaClicked ? ( + + ) : ( + + {onaBanner.learnMoreText} + + + )}
diff --git a/components/dashboard/src/workspaces/BlogBanners.tsx b/components/dashboard/src/workspaces/BlogBanners.tsx index 2538729af54683..cb7c38d0289a2d 100644 --- a/components/dashboard/src/workspaces/BlogBanners.tsx +++ b/components/dashboard/src/workspaces/BlogBanners.tsx @@ -22,16 +22,18 @@ const onaBanner = { export const OnaBanner: React.FC = () => { const [onaClicked, setOnaClicked] = useState(false); + const [isDismissed, setIsDismissed] = useState(false); const user = useCurrentUser(); const { toast } = useToast(); useEffect(() => { - const storedOnaData = localStorage.getItem("ona-banner-data"); + const storedOnaData = localStorage.getItem("workspaces-ona-banner-data"); // Check Ona banner state if (storedOnaData) { - const { clicked } = JSON.parse(storedOnaData); + const { clicked, dismissed } = JSON.parse(storedOnaData); setOnaClicked(clicked || false); + setIsDismissed(dismissed || false); } // Clean up old blog banner data @@ -45,7 +47,15 @@ export const OnaBanner: React.FC = () => { trackEvent("waitlist_joined", { email: userEmail, feature: "Ona" }); setOnaClicked(true); - localStorage.setItem("ona-banner-data", JSON.stringify({ clicked: true })); + localStorage.setItem( + "workspaces-ona-banner-data", + JSON.stringify({ clicked: true, dismissed: isDismissed }), + ); + + // Also set the global ona-banner-data clicked state (preserve existing dismissed state) + const existingOnaData = localStorage.getItem("ona-banner-data"); + const existingDismissed = existingOnaData ? JSON.parse(existingOnaData).dismissed || false : false; + localStorage.setItem("ona-banner-data", JSON.stringify({ clicked: true, dismissed: existingDismissed })); // Show success toast toast( @@ -60,6 +70,16 @@ export const OnaBanner: React.FC = () => { } }; + const handleDismiss = () => { + setIsDismissed(true); + localStorage.setItem("workspaces-ona-banner-data", JSON.stringify({ clicked: onaClicked, dismissed: true })); + }; + + // Don't render if dismissed + if (isDismissed) { + return null; + } + return (
{ "linear-gradient(340deg, #1F1329 0%, #333A75 20%, #556CA8 40%, #90A898 60%, #E2B15C 80%, #BEA462 100%)", }} > + {/* Close button */} + + {/* Content */}
From f74d81e9677876db8336fd8208dbc4ed2c9cbf34 Mon Sep 17 00:00:00 2001 From: Siddhant Khare Date: Wed, 18 Jun 2025 11:25:52 +0000 Subject: [PATCH 07/12] improve login page --- components/dashboard/src/Login.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/dashboard/src/Login.tsx b/components/dashboard/src/Login.tsx index 69dbfdfc08f8a5..534f83ba443b62 100644 --- a/components/dashboard/src/Login.tsx +++ b/components/dashboard/src/Login.tsx @@ -158,7 +158,7 @@ const PAYGLoginWrapper: FC = ({ providerFromContext, repoPath
{ }; return ( -
+
From 6b26b40adeb288461e731b1f2a76d0722ce85834 Mon Sep 17 00:00:00 2001 From: Siddhant Khare Date: Wed, 18 Jun 2025 11:37:24 +0000 Subject: [PATCH 08/12] nice keyB --- components/dashboard/src/start/OnaBanner.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/dashboard/src/start/OnaBanner.tsx b/components/dashboard/src/start/OnaBanner.tsx index 71926513162851..d288505c234e80 100644 --- a/components/dashboard/src/start/OnaBanner.tsx +++ b/components/dashboard/src/start/OnaBanner.tsx @@ -87,7 +87,7 @@ export const OnaBanner: React.FC = ({ compact = false }) => { {/* Compact layout */} -
+
{onaBanner.type} ONA
From e785d7336b052f49ea07647149e26d02cd970540 Mon Sep 17 00:00:00 2001 From: Siddhant Khare Date: Wed, 18 Jun 2025 20:12:12 +0530 Subject: [PATCH 09/12] addressing review nit --- components/dashboard/src/Login.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/dashboard/src/Login.tsx b/components/dashboard/src/Login.tsx index 534f83ba443b62..b3f18926612f5a 100644 --- a/components/dashboard/src/Login.tsx +++ b/components/dashboard/src/Login.tsx @@ -98,7 +98,7 @@ export const Login: FC = ({ onLoggedIn }) => { return (
Date: Wed, 18 Jun 2025 17:18:48 +0000 Subject: [PATCH 10/12] Refactor OnaBanner and AppNotifications components for improved layout and dismiss functionality --- components/dashboard/src/AppNotifications.tsx | 3 +- components/dashboard/src/start/OnaBanner.tsx | 47 +++++-------------- 2 files changed, 13 insertions(+), 37 deletions(-) diff --git a/components/dashboard/src/AppNotifications.tsx b/components/dashboard/src/AppNotifications.tsx index 5561b6b474e51c..8132ed6ef8b6c2 100644 --- a/components/dashboard/src/AppNotifications.tsx +++ b/components/dashboard/src/AppNotifications.tsx @@ -132,7 +132,6 @@ const INVALID_BILLING_ADDRESS = (stripePortalUrl: string | undefined) => { const GITPOD_CLASSIC_SUNSET = { id: "gitpod-classic-sunset", type: "info" as AlertType, - preventDismiss: true, // This makes it so users can't dismiss the notification message: ( Meet Ona | the @@ -213,7 +212,7 @@ export function AppNotifications() { {topNotification && ( { if (!topNotification.preventDismiss) { dismissNotification(); diff --git a/components/dashboard/src/start/OnaBanner.tsx b/components/dashboard/src/start/OnaBanner.tsx index d288505c234e80..0d94504c95e3b8 100644 --- a/components/dashboard/src/start/OnaBanner.tsx +++ b/components/dashboard/src/start/OnaBanner.tsx @@ -10,7 +10,6 @@ import { useCurrentUser } from "../user-context"; import { getPrimaryEmail } from "@gitpod/public-api-common/lib/user-utils"; import { useToast } from "../components/toasts/Toasts"; import onaWordmark from "../images/ona-wordmark.svg"; -import onaApplication from "../images/ona-application.webp"; const onaBanner = { type: "Introducing", @@ -121,7 +120,7 @@ export const OnaBanner: React.FC = ({ compact = false }) => { return (
= ({ compact = false }) => { {/* Close button */} {/* Left section - ONA branding and image */} -
-
+
+
{/* ONA Logo prominently displayed */} -
- ONA -
- - {/* Application screenshot */} -
- Ona application preview +
+ ONA
{/* Right section - Text content and CTA */} -
-
+
+
{/* Main title */} -

+

The privacy-first software engineering agent

- {/* Description */} -
-

- Delegate software tasks to Ona. It writes code, runs tests, and opens a pull request. Or - jump in to inspect output or pair program in your IDE. -

-

- Ona runs inside your infrastructure (VPC), with full audit trails, zero data exposure, and - support for any LLM. -

-
- {/* CTA Button */} -
+
{!onaClicked ? (
-

+

The privacy-first software engineering agent

diff --git a/components/dashboard/src/start/StartPage.tsx b/components/dashboard/src/start/StartPage.tsx index 0f8d8051e5f43c..309dc99d924385 100644 --- a/components/dashboard/src/start/StartPage.tsx +++ b/components/dashboard/src/start/StartPage.tsx @@ -101,13 +101,10 @@ export function StartPage(props: StartPageProps) { useDocumentTitle("Starting"); const isDataOps = useIsDataOps(); - // Check if workspace is running/ready - position OnaBanner differently - const isWorkspaceRunning = phase === StartPhase.IdeReady || phase === StartPhase.Running; - return (
{/* OnaBanner positioned on the side when workspace is running */} - {isWorkspaceRunning && isGitpodIo() && ( + {isGitpodIo() && (
@@ -134,8 +131,6 @@ export function StartPage(props: StartPageProps) { showLatestIdeWarning={props.showLatestIdeWarning} error={props.error} /> - {/* OnaBanner positioned in main flow when workspace is not running */} - {!isWorkspaceRunning && isGitpodIo() && }
); From 5ef4b30552907f88a4dd208f34a0623b77129ca2 Mon Sep 17 00:00:00 2001 From: Siddhant Khare Date: Thu, 19 Jun 2025 12:56:15 +0000 Subject: [PATCH 12/12] minor improvements --- components/dashboard/src/AppNotifications.tsx | 80 +++++++++++++++---- components/dashboard/src/Login.tsx | 6 +- components/dashboard/src/OnaRightPanel.tsx | 4 +- components/dashboard/src/start/OnaBanner.tsx | 6 +- .../dashboard/src/workspaces/BlogBanners.tsx | 2 +- .../dashboard/src/workspaces/Workspaces.tsx | 5 +- 6 files changed, 78 insertions(+), 25 deletions(-) diff --git a/components/dashboard/src/AppNotifications.tsx b/components/dashboard/src/AppNotifications.tsx index 8132ed6ef8b6c2..14783a2b21340b 100644 --- a/components/dashboard/src/AppNotifications.tsx +++ b/components/dashboard/src/AppNotifications.tsx @@ -20,6 +20,8 @@ import { useOrgBillingMode } from "./data/billing-mode/org-billing-mode-query"; import { Organization } from "@gitpod/public-api/lib/gitpod/v1/organization_pb"; import { MaintenanceModeBanner } from "./org-admin/MaintenanceModeBanner"; import { MaintenanceNotificationBanner } from "./org-admin/MaintenanceNotificationBanner"; +import { useToast } from "./components/toasts/Toasts"; +import { getPrimaryEmail } from "@gitpod/public-api-common/lib/user-utils"; import onaWordmark from "./images/ona-wordmark.svg"; const KEY_APP_DISMISSED_NOTIFICATIONS = "gitpod-app-notifications-dismissed"; @@ -129,28 +131,76 @@ const INVALID_BILLING_ADDRESS = (stripePortalUrl: string | undefined) => { } as Notification; }; -const GITPOD_CLASSIC_SUNSET = { - id: "gitpod-classic-sunset", - type: "info" as AlertType, - message: ( - - Meet Ona | the - privacy-first software engineering agent |{" "} - - Get early access - - - ), -} as Notification; +const GITPOD_CLASSIC_SUNSET = ( + user: User | undefined, + toast: any, + onaClicked: boolean, + handleOnaBannerClick: () => void, +) => { + return { + id: "gitpod-classic-sunset", + type: "info" as AlertType, + message: ( + + Meet Ona | + the privacy-first software engineering agent |{" "} + {!onaClicked ? ( + + ) : ( + + Learn more + + )} + + ), + } as Notification; +}; export function AppNotifications() { const [topNotification, setTopNotification] = useState(undefined); + const [onaClicked, setOnaClicked] = useState(false); const { user, loading } = useUserLoader(); const { mutateAsync } = useUpdateCurrentUserMutation(); + const { toast } = useToast(); const currentOrg = useCurrentOrg().data; const { data: billingMode } = useOrgBillingMode(); + useEffect(() => { + const storedOnaData = localStorage.getItem("ona-banner-data"); + if (storedOnaData) { + const { clicked } = JSON.parse(storedOnaData); + setOnaClicked(clicked || false); + } + }, []); + + const handleOnaBannerClick = useCallback(() => { + const userEmail = user ? getPrimaryEmail(user) || "" : ""; + trackEvent("waitlist_joined", { email: userEmail, feature: "Ona" }); + + setOnaClicked(true); + const existingData = localStorage.getItem("ona-banner-data"); + const parsedData = existingData ? JSON.parse(existingData) : {}; + localStorage.setItem("ona-banner-data", JSON.stringify({ ...parsedData, clicked: true })); + + toast( +
+
You're on the waitlist
+
We'll reach out to you soon.
+
, + ); + }, [user, toast]); + useEffect(() => { let ignore = false; @@ -158,7 +208,7 @@ export function AppNotifications() { const notifications = []; if (!loading) { if (isGitpodIo()) { - notifications.push(GITPOD_CLASSIC_SUNSET); + notifications.push(GITPOD_CLASSIC_SUNSET(user, toast, onaClicked, handleOnaBannerClick)); } if ( @@ -192,7 +242,7 @@ export function AppNotifications() { return () => { ignore = true; }; - }, [loading, mutateAsync, user, currentOrg, billingMode]); + }, [loading, mutateAsync, user, currentOrg, billingMode, onaClicked, handleOnaBannerClick, toast]); const dismissNotification = useCallback(() => { if (!topNotification) { diff --git a/components/dashboard/src/Login.tsx b/components/dashboard/src/Login.tsx index b3f18926612f5a..d9ca1cda32b909 100644 --- a/components/dashboard/src/Login.tsx +++ b/components/dashboard/src/Login.tsx @@ -389,16 +389,16 @@ const RightProductDescriptionPanel = () => {
-

+

Meet Ona - the privacy-first software engineering agent.

-

+

Delegate software tasks to Ona. It writes code, runs tests, and opens a pull request. Or jump in to inspect output or pair program in your IDE.

-

+

Ona runs inside your infrastructure (VPC), with full audit trails, zero data exposure, and support for any LLM.

diff --git a/components/dashboard/src/OnaRightPanel.tsx b/components/dashboard/src/OnaRightPanel.tsx index 1c30bd0cb487bc..dab61ac0eb0958 100644 --- a/components/dashboard/src/OnaRightPanel.tsx +++ b/components/dashboard/src/OnaRightPanel.tsx @@ -103,7 +103,9 @@ export const OnaRightPanel = () => { ) : (
-

+

The privacy-first software engineering agent

{!onaClicked ? (
- + {/* Uncomment the following, if you need side banners in future */} + {/* */}
)}