diff --git a/.gitignore b/.gitignore
index 2a6d0af623..3babb33198 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,4 +18,5 @@ coverage
# But don't ignore the coverage scripts in .github/scripts/
!.github/scripts/coverage/
-*evals.env
\ No newline at end of file
+*evals.env
+*.zip
diff --git a/webview-ui/src/App.tsx b/webview-ui/src/App.tsx
index 3306aa71cc..13b6e93b15 100644
--- a/webview-ui/src/App.tsx
+++ b/webview-ui/src/App.tsx
@@ -114,7 +114,7 @@ const AppContent = () => {
return (
<>
{showWelcomeLocal ? (
-
+
) : (
<>
{showSettings && }
diff --git a/webview-ui/src/assets/css/styles.css b/webview-ui/src/assets/css/styles.css
index 06ea9c0fb0..d334d1f956 100644
--- a/webview-ui/src/assets/css/styles.css
+++ b/webview-ui/src/assets/css/styles.css
@@ -142,42 +142,42 @@
}
.feature-icon-1 {
- background-image: url("../images/feature-icon-1.svg");
+ background-image: url("../images/rocket.svg");
background-size: contain;
background-repeat: no-repeat;
background-position: center;
}
.feature-icon-2 {
- background-image: url("../images/feature-icon-2.svg");
+ background-image: url("../images/rocket.svg");
background-size: contain;
background-repeat: no-repeat;
background-position: center;
}
.feature-icon-3 {
- background-image: url("../images/feature-icon-3.svg");
+ background-image: url("../images/play.svg");
background-size: contain;
background-repeat: no-repeat;
background-position: center;
}
.feature-icon-4 {
- background-image: url("../images/feature-icon-4.svg");
+ background-image: url("../images/rules.svg");
background-size: contain;
background-repeat: no-repeat;
background-position: center;
}
.action-icon-1 {
- background-image: url("../images/action-icon-1.svg");
+ background-image: url("../images/star-check.svg");
background-size: contain;
background-repeat: no-repeat;
background-position: center;
}
.action-icon-2 {
- background-image: url("../images/action-icon-2.svg");
+ background-image: url("../images/rocket.svg");
background-size: contain;
background-repeat: no-repeat;
background-position: center;
diff --git a/webview-ui/src/assets/images/vector-1.svg b/webview-ui/src/assets/images/check.svg
similarity index 100%
rename from webview-ui/src/assets/images/vector-1.svg
rename to webview-ui/src/assets/images/check.svg
diff --git a/webview-ui/src/assets/images/feature-image.png b/webview-ui/src/assets/images/cline-robot-shaded.png
similarity index 100%
rename from webview-ui/src/assets/images/feature-image.png
rename to webview-ui/src/assets/images/cline-robot-shaded.png
diff --git a/webview-ui/src/assets/images/feature-image.jpg b/webview-ui/src/assets/images/cline-robot.jpg
similarity index 100%
rename from webview-ui/src/assets/images/feature-image.jpg
rename to webview-ui/src/assets/images/cline-robot.jpg
diff --git a/webview-ui/src/assets/images/feature-icon-2.svg b/webview-ui/src/assets/images/diamond.svg
similarity index 100%
rename from webview-ui/src/assets/images/feature-icon-2.svg
rename to webview-ui/src/assets/images/diamond.svg
diff --git a/webview-ui/src/assets/images/feature-icon-1.svg b/webview-ui/src/assets/images/feature-icon-1.svg
deleted file mode 100644
index 0bdf581a48..0000000000
--- a/webview-ui/src/assets/images/feature-icon-1.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/webview-ui/src/assets/images/feature-bg.png b/webview-ui/src/assets/images/hero-image.png
similarity index 100%
rename from webview-ui/src/assets/images/feature-bg.png
rename to webview-ui/src/assets/images/hero-image.png
diff --git a/webview-ui/src/assets/images/vector.svg b/webview-ui/src/assets/images/logo.svg
similarity index 100%
rename from webview-ui/src/assets/images/vector.svg
rename to webview-ui/src/assets/images/logo.svg
diff --git a/webview-ui/src/assets/images/action-icon-2.svg b/webview-ui/src/assets/images/play.svg
similarity index 100%
rename from webview-ui/src/assets/images/action-icon-2.svg
rename to webview-ui/src/assets/images/play.svg
diff --git a/webview-ui/src/assets/images/action-icon-1.svg b/webview-ui/src/assets/images/rocket.svg
similarity index 100%
rename from webview-ui/src/assets/images/action-icon-1.svg
rename to webview-ui/src/assets/images/rocket.svg
diff --git a/webview-ui/src/assets/images/feature-icon-3.svg b/webview-ui/src/assets/images/rules.svg
similarity index 100%
rename from webview-ui/src/assets/images/feature-icon-3.svg
rename to webview-ui/src/assets/images/rules.svg
diff --git a/webview-ui/src/assets/images/feature-icon-4.svg b/webview-ui/src/assets/images/star-check.svg
similarity index 100%
rename from webview-ui/src/assets/images/feature-icon-4.svg
rename to webview-ui/src/assets/images/star-check.svg
diff --git a/webview-ui/src/components/welcome/WelcomeTabView.tsx b/webview-ui/src/components/welcome/WelcomeTabView.tsx
index 877a148fbe..036fa4dd78 100644
--- a/webview-ui/src/components/welcome/WelcomeTabView.tsx
+++ b/webview-ui/src/components/welcome/WelcomeTabView.tsx
@@ -1,43 +1,14 @@
import { useState, useRef, useEffect, memo, Dispatch, SetStateAction } from "react"
-import { VSCodeButton, VSCodeLink } from "@vscode/webview-ui-toolkit/react"
import { useExtensionState } from "@/context/ExtensionStateContext"
-import { vscode } from "@/utils/vscode"
import { AccountServiceClient } from "@/services/grpc-client"
import { EmptyRequest } from "@shared/proto/common"
import ClineLogoWhite from "@/assets/ClineLogoWhite"
-import ApiOptionsSection from "./ApiOptionsSection"
-
-// Import images
-import featureIcon1 from "@/assets/images/feature-icon-1.svg"
-import featureIcon2 from "@/assets/images/feature-icon-2.svg"
-import featureIcon3 from "@/assets/images/feature-icon-3.svg"
-import featureIcon4 from "@/assets/images/feature-icon-4.svg"
-import actionIcon1 from "@/assets/images/action-icon-1.svg"
-import actionIcon2 from "@/assets/images/action-icon-2.svg"
-import vector1 from "@/assets/images/vector-1.svg"
-import buttonIcon1 from "@/assets/images/button-icon-1.svg"
-import anthropicModel from "@/assets/images/anthropic-model.jpg"
-import googleModel from "@/assets/images/google-model.jpg"
-import metaModel from "@/assets/images/meta-model.jpg"
-import planLine from "@/assets/images/plan-line.svg"
-import actLine from "@/assets/images/act-line.svg"
-import disabledLine from "@/assets/images/disabled-line.svg"
-import featureImage from "@/assets/images/feature-image.jpg"
-import featureBg from "@/assets/images/feature-bg.png"
// Import CSS styles
import "@/assets/css/styles.css"
-import { WebviewType } from "@shared/WebviewMessage"
import { validateApiConfiguration } from "@/utils/validate" // Added import
-interface WelcomeTabViewProps {
- onToggleView?: () => void
- showApiOptions?: boolean
- setShowApiOptions?: Dispatch>
- webviewType: WebviewType
-}
-
-const WelcomeTabView = memo(({ onToggleView, showApiOptions, setShowApiOptions, webviewType }: WelcomeTabViewProps) => {
+const WelcomeTabView = ({ showWelcome }: { showWelcome: boolean }) => {
const { apiConfiguration } = useExtensionState()
const isApiConfigValid = validateApiConfiguration(apiConfiguration) === undefined
const [activeTab, setActiveTab] = useState("Key Features")
@@ -83,31 +54,6 @@ const WelcomeTabView = memo(({ onToggleView, showApiOptions, setShowApiOptions,
return (
- {/* Toggle button to switch between old and new welcome views */}
- {onToggleView && (
-
-
- Switch to Classic View
-
-
- )}
{/* Account Info */}
@@ -123,16 +69,9 @@ const WelcomeTabView = memo(({ onToggleView, showApiOptions, setShowApiOptions,
Let's Create your Account!
- {showApiOptions !== undefined && (
-
- )}
{/* Conditionally render features-container */}
- {!isApiConfigValid && !showApiOptions && (
+ {isApiConfigValid && !showWelcome ? (
> Read my code & suggest...
-
-
-
- {showPlaceholder &&
Type your prompt here...
}
- {!showPlaceholder && (
-
- )}
-
-
-
-
-
- Improve prompt
-
-
-
-
- Start construction
-
-
-
-
-
- {/* ... other content of features-container ... */}
- {/* Ensure the footer is also inside this conditional block if it's part of features-container */}
- )}
+ ) : null}
{/* End of conditional rendering for features-container */}
@@ -394,7 +276,7 @@ const WelcomeTabView = memo(({ onToggleView, showApiOptions, setShowApiOptions,
-
+
@@ -577,39 +459,12 @@ const WelcomeTabView = memo(({ onToggleView, showApiOptions, setShowApiOptions,
Add an MCP Server
-
+
)
-})
+}
export default WelcomeTabView
diff --git a/webview-ui/src/components/welcome/WelcomeWrapper.tsx b/webview-ui/src/components/welcome/WelcomeWrapper.tsx
index 946d6167a4..6ba81297e4 100644
--- a/webview-ui/src/components/welcome/WelcomeWrapper.tsx
+++ b/webview-ui/src/components/welcome/WelcomeWrapper.tsx
@@ -3,7 +3,7 @@ import { WebviewType } from "@shared/WebviewMessage"
import WelcomeView from "./WelcomeView"
import WelcomeTabView from "./WelcomeTabView"
-const WelcomeWrapper = memo(() => {
+const WelcomeWrapper = memo(({ showWelcome }: { showWelcome: boolean }) => {
const [showApiOptions, setShowApiOptions] = useState(false)
// Determine which welcome view to show based on webview type
@@ -14,7 +14,7 @@ const WelcomeWrapper = memo(() => {
{webviewType === "sidebar" ? (
) : (
-
+
)}
>
)