ai onboarding: Copyedit the whole flow (#34916)

Danilo Leal and Katie Geer created

Release Notes:

- N/A

Co-authored-by: Katie Geer <katie@zed.dev>

Change summary

crates/ai_onboarding/src/agent_api_keys_onboarding.rs |  4 
crates/ai_onboarding/src/ai_onboarding.rs             | 41 +++++-------
crates/ai_onboarding/src/young_account_banner.rs      |  2 
3 files changed, 19 insertions(+), 28 deletions(-)

Detailed changes

crates/ai_onboarding/src/agent_api_keys_onboarding.rs 🔗

@@ -93,7 +93,7 @@ impl Render for ApiKeysWithProviders {
                                 div()
                                     .w_full()
                                     .child(
-                                        Label::new("Or start now using API keys from your environment for the following providers:")
+                                        Label::new("Start now using API keys from your environment for the following providers:")
                                             .color(Color::Muted)
                                     )
                             )
@@ -129,7 +129,7 @@ impl RenderOnce for ApiKeysWithoutProviders {
                     .child(Divider::horizontal()),
             )
             .child(List::new().child(BulletItem::new(
-                "You can also use AI in Zed by bringing your own API keys",
+                "Add your own keys to use AI without signing in.",
             )))
             .child(
                 Button::new("configure-providers", "Configure Providers")

crates/ai_onboarding/src/ai_onboarding.rs 🔗

@@ -141,22 +141,18 @@ impl ZedAiOnboarding {
             )
             .child(
                 List::new()
+                    .child(BulletItem::new("50 prompts per month with Claude models"))
                     .child(BulletItem::new(
-                        "50 prompts per month with the Claude models",
-                    ))
-                    .child(BulletItem::new(
-                        "2000 accepted edit predictions using our open-source Zeta model",
+                        "2,000 accepted edit predictions with Zeta, our open-source model",
                     )),
             )
     }
 
     fn pro_trial_definition(&self) -> impl IntoElement {
         List::new()
+            .child(BulletItem::new("150 prompts with Claude models"))
             .child(BulletItem::new(
-                "150 prompts per month with the Claude models",
-            ))
-            .child(BulletItem::new(
-                "Unlimited accepted edit predictions using our open-source Zeta model",
+                "Unlimited accepted edit predictions with Zeta, our open-source model",
             ))
     }
 
@@ -178,12 +174,12 @@ impl ZedAiOnboarding {
                     List::new()
                         .child(BulletItem::new("500 prompts per month with Claude models"))
                         .child(BulletItem::new(
-                            "Unlimited accepted edit predictions using our open-source Zeta model",
+                            "Unlimited accepted edit predictions with Zeta, our open-source model",
                         ))
-                        .child(BulletItem::new("USD $20 per month")),
+                        .child(BulletItem::new("$20 USD per month")),
                 )
                 .child(
-                    Button::new("pro", "Start with Pro")
+                    Button::new("pro", "Get Started")
                         .full_width()
                         .style(ButtonStyle::Tinted(ui::TintColor::Accent))
                         .on_click(move |_, _window, cx| {
@@ -206,11 +202,11 @@ impl ZedAiOnboarding {
                     List::new()
                         .child(self.pro_trial_definition())
                         .child(BulletItem::new(
-                            "Try it out for 14 days with no charge and no credit card required",
+                            "Try it out for 14 days for free, no credit card required",
                         )),
                 )
                 .child(
-                    Button::new("pro", "Start Pro Trial")
+                    Button::new("pro", "Start Free Trial")
                         .full_width()
                         .style(ButtonStyle::Tinted(ui::TintColor::Accent))
                         .on_click(move |_, _window, cx| {
@@ -225,14 +221,14 @@ impl ZedAiOnboarding {
         v_flex()
             .gap_1()
             .w_full()
-            .child(Headline::new("Before starting…"))
+            .child(Headline::new("Accept Terms of Service"))
             .child(
-                Label::new("Make sure you have read and accepted Zed AI's terms of service.")
+                Label::new("We don’t sell your data, track you across the web, or compromise your privacy.")
                     .color(Color::Muted)
                     .mb_2(),
             )
             .child(
-                Button::new("terms_of_service", "View and Read the Terms of Service")
+                Button::new("terms_of_service", "Review Terms of Service")
                     .full_width()
                     .style(ButtonStyle::Outlined)
                     .icon(IconName::ArrowUpRight)
@@ -241,7 +237,7 @@ impl ZedAiOnboarding {
                     .on_click(move |_, _window, cx| cx.open_url(&zed_urls::terms_of_service(cx))),
             )
             .child(
-                Button::new("accept_terms", "I've read it and accept it")
+                Button::new("accept_terms", "Accept")
                     .full_width()
                     .style(ButtonStyle::Tinted(TintColor::Accent))
                     .on_click({
@@ -259,13 +255,13 @@ impl ZedAiOnboarding {
             .gap_1()
             .child(Headline::new("Welcome to Zed AI"))
             .child(
-                Label::new("Sign in to start using AI in Zed with a free trial of the Pro plan, which includes:")
+                Label::new("Sign in to try Zed Pro for 14 days, no credit card required.")
                     .color(Color::Muted)
                     .mb_2(),
             )
             .child(self.pro_trial_definition())
             .child(
-                Button::new("sign_in", "Sign in to Start Trial")
+                Button::new("sign_in", "Try Zed Pro for Free")
                     .disabled(signing_in)
                     .full_width()
                     .style(ButtonStyle::Tinted(ui::TintColor::Accent))
@@ -284,11 +280,6 @@ impl ZedAiOnboarding {
             .relative()
             .gap_1()
             .child(Headline::new("Welcome to Zed AI"))
-            .child(
-                Label::new("Choose how you want to start.")
-                    .color(Color::Muted)
-                    .mb_2(),
-            )
             .map(|this| {
                 if self.account_too_young {
                     this.child(young_account_banner)
@@ -318,7 +309,7 @@ impl ZedAiOnboarding {
         v_flex()
             .relative()
             .gap_1()
-            .child(Headline::new("Welcome to the Zed Pro free trial"))
+            .child(Headline::new("Welcome to the Zed Pro Trial"))
             .child(
                 Label::new("Here's what you get for the next 14 days:")
                     .color(Color::Muted)

crates/ai_onboarding/src/young_account_banner.rs 🔗

@@ -6,7 +6,7 @@ pub struct YoungAccountBanner;
 
 impl RenderOnce for YoungAccountBanner {
     fn render(self, _window: &mut Window, cx: &mut App) -> impl IntoElement {
-        const YOUNG_ACCOUNT_DISCLAIMER: &str = "To prevent abuse of our service, we cannot offer plans to GitHub accounts created fewer than 30 days ago. To request an exception, reach out to billing@zed.dev.";
+        const YOUNG_ACCOUNT_DISCLAIMER: &str = "To prevent abuse of our service, we cannot offer plans to GitHub accounts created fewer than 30 days ago. To request an exception, reach out to billing-support@zed.dev.";
 
         let label = div()
             .w_full()