From 442b8637fb006fa3f6eed261dbb15b66dc4eebc5 Mon Sep 17 00:00:00 2001 From: Dallin Romney Date: Mon, 20 Jan 2025 15:16:50 -0800 Subject: [PATCH 01/12] free trial logic fixes --- core/config/onboarding.ts | 2 +- extensions/vscode/package-lock.json | 4 ++-- gui/src/components/Layout.tsx | 6 +----- gui/src/pages/gui/Chat.tsx | 27 ++++++++++++--------------- 4 files changed, 16 insertions(+), 23 deletions(-) diff --git a/core/config/onboarding.ts b/core/config/onboarding.ts index 426a7a4ba8..f0a506fdf5 100644 --- a/core/config/onboarding.ts +++ b/core/config/onboarding.ts @@ -9,7 +9,7 @@ export const LOCAL_ONBOARDING_CHAT_MODEL = "llama3.1:8b"; export const LOCAL_ONBOARDING_CHAT_TITLE = "Llama 3.1 8B"; /** - * We set the "best" chat + autocopmlete models by default + * We set the "best" chat + autocomplete models by default * whenever a user doesn't have a config.json */ export function setupBestConfig( diff --git a/extensions/vscode/package-lock.json b/extensions/vscode/package-lock.json index 31f06cbb14..cf132e7bae 100644 --- a/extensions/vscode/package-lock.json +++ b/extensions/vscode/package-lock.json @@ -1,12 +1,12 @@ { "name": "continue", - "version": "0.9.252", + "version": "0.9.253", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "continue", - "version": "0.9.252", + "version": "0.9.253", "license": "Apache-2.0", "dependencies": { "@continuedev/fetch": "^1.0.3", diff --git a/gui/src/components/Layout.tsx b/gui/src/components/Layout.tsx index e8a0deb129..b4fb5fd8a4 100644 --- a/gui/src/components/Layout.tsx +++ b/gui/src/components/Layout.tsx @@ -151,11 +151,7 @@ const Layout = () => { "incrementFtc", async () => { const u = getLocalStorage("ftc"); - if (u) { - setLocalStorage("ftc", u + 1); - } else { - setLocalStorage("ftc", 1); - } + setLocalStorage("ftc", (u ?? 0) + 1); }, [], ); diff --git a/gui/src/pages/gui/Chat.tsx b/gui/src/pages/gui/Chat.tsx index 3f36adcef8..49a4b5f31d 100644 --- a/gui/src/pages/gui/Chat.tsx +++ b/gui/src/pages/gui/Chat.tsx @@ -247,21 +247,18 @@ export function Chat() { editorToClearOnSend?: Editor, ) => { if (defaultModel?.provider === "free-trial") { - const u = getLocalStorage("ftc"); - if (u) { - setLocalStorage("ftc", u + 1); - - if (u >= FREE_TRIAL_LIMIT_REQUESTS) { - onboardingCard.open("Best"); - posthog?.capture("ftc_reached"); - ideMessenger.ide.showToast( - "info", - "You've reached the free trial limit. Please configure a model to continue.", - ); - return; - } - } else { - setLocalStorage("ftc", 1); + const u = getLocalStorage("ftc") ?? 0; + setLocalStorage("ftc", u + 1); + if (u === FREE_TRIAL_LIMIT_REQUESTS) { + posthog?.capture("ftc_reached"); + } + if (u >= FREE_TRIAL_LIMIT_REQUESTS) { + onboardingCard.open("Best"); + ideMessenger.ide.showToast( + "info", + "You've reached the free trial limit. Please configure a model to continue.", + ); + return; } } From 79213304c1b5b3a4f9b33c5fbd595b089009ad96 Mon Sep 17 00:00:00 2001 From: Dallin Romney Date: Mon, 20 Jan 2025 21:26:12 -0800 Subject: [PATCH 02/12] free trial over --- .../dialogs/FreeTrialOverDialog.tsx | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 gui/src/components/dialogs/FreeTrialOverDialog.tsx diff --git a/gui/src/components/dialogs/FreeTrialOverDialog.tsx b/gui/src/components/dialogs/FreeTrialOverDialog.tsx new file mode 100644 index 0000000000..4bf68a7702 --- /dev/null +++ b/gui/src/components/dialogs/FreeTrialOverDialog.tsx @@ -0,0 +1,54 @@ +import { useDispatch } from "react-redux"; +import styled from "styled-components"; +import { Button, SecondaryButton } from ".."; +import { setDialogMessage, setShowDialog } from "../../redux/slices/uiSlice"; + +interface FreeTrialOverDialogProps { + onConfirm: () => void; + onCancel?: () => void; + text: string; + title?: string; + hideCancelButton?: boolean; + confirmText?: string; +} + +function FreeTrialOverDialog(props: FreeTrialOverDialogProps) { + const dispatch = useDispatch(); + + return ( +
+

+ {props.title ?? "Confirmation"} +

+

+ {props.text} +

+ +
+ {!!props.hideCancelButton || ( + { + dispatch(setShowDialog(false)); + dispatch(setDialogMessage(undefined)); + props.onCancel?.(); + }} + > + Cancel + + )} + +
+
+ ); +} + +export default FreeTrialOverDialog; From 498a43fb7971b2a61baa0b81222bcaccf25bf1f7 Mon Sep 17 00:00:00 2001 From: Dallin Romney Date: Tue, 21 Jan 2025 10:21:52 -0800 Subject: [PATCH 03/12] dialog onboarding --- extensions/vscode/package-lock.json | 4 ++-- .../OnboardingCard/components/OllamaStatus.tsx | 13 +++++++++---- .../platform/PlatformOnboardingCard.tsx | 12 ++++++++++++ gui/src/components/dialogs/FreeTrialOverDialog.tsx | 10 ++++++++++ gui/src/components/dialogs/index.tsx | 2 +- gui/src/pages/gui/Chat.tsx | 7 +++++++ 6 files changed, 41 insertions(+), 7 deletions(-) diff --git a/extensions/vscode/package-lock.json b/extensions/vscode/package-lock.json index cf132e7bae..31f06cbb14 100644 --- a/extensions/vscode/package-lock.json +++ b/extensions/vscode/package-lock.json @@ -1,12 +1,12 @@ { "name": "continue", - "version": "0.9.253", + "version": "0.9.252", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "continue", - "version": "0.9.253", + "version": "0.9.252", "license": "Apache-2.0", "dependencies": { "@continuedev/fetch": "^1.0.3", diff --git a/gui/src/components/OnboardingCard/components/OllamaStatus.tsx b/gui/src/components/OnboardingCard/components/OllamaStatus.tsx index 15132518ed..24a9f511d9 100644 --- a/gui/src/components/OnboardingCard/components/OllamaStatus.tsx +++ b/gui/src/components/OnboardingCard/components/OllamaStatus.tsx @@ -2,7 +2,7 @@ import { ArrowPathIcon, ArrowTopRightOnSquareIcon, } from "@heroicons/react/24/outline"; -import { useState, useContext } from "react"; +import { useState, useContext, useEffect } from "react"; import { IdeMessengerContext } from "../../../context/IdeMessenger"; import { providers } from "../../../pages/AddNewModel/configs/providers"; import { StyledActionButton } from "../.."; @@ -19,10 +19,15 @@ export function OllamaStatus({ isOllamaConnected }: OllamaStatusProps) { const ideMessenger = useContext(IdeMessengerContext); const [status, setStatus] = useState( - isOllamaConnected - ? OllamaConnectionStatuses.Connected - : OllamaConnectionStatuses.WaitingToDownload, + OllamaConnectionStatuses.WaitingToDownload, ); + useEffect(() => { + if (isOllamaConnected) { + setStatus(OllamaConnectionStatuses.Connected); + } else if (status !== OllamaConnectionStatuses.Downloading) { + setStatus(OllamaConnectionStatuses.WaitingToDownload); + } + }, [status, isOllamaConnected]); function onClickDownload() { ideMessenger.post("openUrl", downloadUrl); diff --git a/gui/src/components/OnboardingCard/platform/PlatformOnboardingCard.tsx b/gui/src/components/OnboardingCard/platform/PlatformOnboardingCard.tsx index 360282e4a7..6b7eced1b0 100644 --- a/gui/src/components/OnboardingCard/platform/PlatformOnboardingCard.tsx +++ b/gui/src/components/OnboardingCard/platform/PlatformOnboardingCard.tsx @@ -8,6 +8,8 @@ import { TabTitle } from "../components/OnboardingCardTabs"; import { useOnboardingCard } from "../hooks"; import OnboardingLocalTab from "../tabs/OnboardingLocalTab"; import MainTab from "./tabs/main"; +import { hasPassedFTL } from "../../../util/freeTrial"; +import { useAppSelector } from "../../../redux/hooks"; const StyledCard = styled.div` margin: auto; @@ -30,8 +32,18 @@ export function PlatformOnboardingCard() { setLocalStorage("onboardingStatus", "Started"); } + const isPastFreeTrialLimit = hasPassedFTL(); + const isShowingDialog = useAppSelector((store) => store.ui.showDialog); + const [currentTab, setCurrentTab] = useState<"main" | "local">("main"); + // A version of this pops up in a dialog + // so that history doesn't disappear or jump + // If free trial limit is reached mid-chat + if (isPastFreeTrialLimit && isShowingDialog) { + return null; + } + return ( diff --git a/gui/src/components/dialogs/FreeTrialOverDialog.tsx b/gui/src/components/dialogs/FreeTrialOverDialog.tsx index 4bf68a7702..c5e0e9745e 100644 --- a/gui/src/components/dialogs/FreeTrialOverDialog.tsx +++ b/gui/src/components/dialogs/FreeTrialOverDialog.tsx @@ -2,6 +2,8 @@ import { useDispatch } from "react-redux"; import styled from "styled-components"; import { Button, SecondaryButton } from ".."; import { setDialogMessage, setShowDialog } from "../../redux/slices/uiSlice"; +import { useAppSelector } from "../../redux/hooks"; +import { useEffect } from "react"; interface FreeTrialOverDialogProps { onConfirm: () => void; @@ -14,6 +16,14 @@ interface FreeTrialOverDialogProps { function FreeTrialOverDialog(props: FreeTrialOverDialogProps) { const dispatch = useDispatch(); + const history = useAppSelector((store) => store.session.history); + + useEffect(() => { + if (history.length === 0) { + dispatch(setShowDialog(false)); + dispatch(setDialogMessage(undefined)); + } + }, [history]); return (
diff --git a/gui/src/components/dialogs/index.tsx b/gui/src/components/dialogs/index.tsx index 9e515d6cb0..1cf0567eeb 100644 --- a/gui/src/components/dialogs/index.tsx +++ b/gui/src/components/dialogs/index.tsx @@ -78,7 +78,7 @@ const TextDialog = (props: TextDialogProps) => { > - + {typeof props.message === "string" ? ( diff --git a/gui/src/pages/gui/Chat.tsx b/gui/src/pages/gui/Chat.tsx index 49a4b5f31d..81dbf268c1 100644 --- a/gui/src/pages/gui/Chat.tsx +++ b/gui/src/pages/gui/Chat.tsx @@ -247,12 +247,18 @@ export function Chat() { editorToClearOnSend?: Editor, ) => { if (defaultModel?.provider === "free-trial") { + dispatch(setDialogMessage()); + dispatch(setShowDialog(true)); + return; const u = getLocalStorage("ftc") ?? 0; setLocalStorage("ftc", u + 1); if (u === FREE_TRIAL_LIMIT_REQUESTS) { posthog?.capture("ftc_reached"); } if (u >= FREE_TRIAL_LIMIT_REQUESTS) { + if (usePlatform) { + } else { + } onboardingCard.open("Best"); ideMessenger.ide.showToast( "info", @@ -298,6 +304,7 @@ export function Chat() { streamResponse, isSingleRangeEditOrInsertion, codeToEdit, + usePlatform, ], ); From e971c393b6931db731e3e38ad7d29ccc2fe86781 Mon Sep 17 00:00:00 2001 From: Dallin Romney Date: Tue, 21 Jan 2025 11:32:20 -0800 Subject: [PATCH 04/12] free trial over dialog --- gui/src/components/Footer.tsx | 3 +- gui/src/components/Layout.tsx | 5 +- .../OnboardingCard/OnboardingCard.tsx | 14 +++-- .../platform/PlatformOnboardingCard.tsx | 14 +++-- .../dialogs/FreeTrialOverDialog.tsx | 56 ++++--------------- gui/src/pages/gui/Chat.tsx | 33 ++++++----- gui/src/util/freeTrial.ts | 12 ++-- 7 files changed, 57 insertions(+), 80 deletions(-) diff --git a/gui/src/components/Footer.tsx b/gui/src/components/Footer.tsx index 9b5a6840c9..b2efd221c9 100644 --- a/gui/src/components/Footer.tsx +++ b/gui/src/components/Footer.tsx @@ -1,6 +1,7 @@ import { useAppSelector } from "../redux/hooks"; import { selectDefaultModel } from "../redux/slices/configSlice"; import { FREE_TRIAL_LIMIT_REQUESTS } from "../util/freeTrial"; +import { getLocalStorage } from "../util/localStorage"; import FreeTrialProgressBar from "./loaders/FreeTrialProgressBar"; function Footer() { @@ -10,7 +11,7 @@ function Footer() { return (
diff --git a/gui/src/components/Layout.tsx b/gui/src/components/Layout.tsx index b4fb5fd8a4..cadaa5830e 100644 --- a/gui/src/components/Layout.tsx +++ b/gui/src/components/Layout.tsx @@ -13,7 +13,6 @@ import { newSession, } from "../redux/slices/sessionSlice"; import { getFontSize, isMetaEquivalentKeyPressed } from "../util"; -import { getLocalStorage, setLocalStorage } from "../util/localStorage"; import { ROUTES } from "../util/navigation"; import TextDialog from "./dialogs"; import Footer from "./Footer"; @@ -23,6 +22,7 @@ import AccountDialog from "./AccountDialog"; import { AuthProvider } from "../context/Auth"; import { exitEditMode } from "../redux/thunks"; import { loadLastSession, saveCurrentSession } from "../redux/thunks/session"; +import { incrementFreeTrialCount } from "../util/freeTrial"; const LayoutTopDiv = styled(CustomScrollbarDiv)` height: 100%; @@ -150,8 +150,7 @@ const Layout = () => { useWebviewListener( "incrementFtc", async () => { - const u = getLocalStorage("ftc"); - setLocalStorage("ftc", (u ?? 0) + 1); + incrementFreeTrialCount(); }, [], ); diff --git a/gui/src/components/OnboardingCard/OnboardingCard.tsx b/gui/src/components/OnboardingCard/OnboardingCard.tsx index 78caa4b5b2..ed6bbe75b1 100644 --- a/gui/src/components/OnboardingCard/OnboardingCard.tsx +++ b/gui/src/components/OnboardingCard/OnboardingCard.tsx @@ -20,7 +20,11 @@ export interface OnboardingCardState { activeTab?: TabTitle; } -export function OnboardingCard() { +interface OnboardingCardProps { + isDialog?: boolean; +} + +export function OnboardingCard({ isDialog }: OnboardingCardProps) { const onboardingCard = useOnboardingCard(); function renderTabContent() { @@ -49,9 +53,11 @@ export function OnboardingCard() { activeTab={onboardingCard.activeTab || "Best"} onTabClick={onboardingCard.setActiveTab} /> - - - + {!isDialog && ( + + + + )}
{renderTabContent()}
); diff --git a/gui/src/components/OnboardingCard/platform/PlatformOnboardingCard.tsx b/gui/src/components/OnboardingCard/platform/PlatformOnboardingCard.tsx index 6b7eced1b0..f6b142ab84 100644 --- a/gui/src/components/OnboardingCard/platform/PlatformOnboardingCard.tsx +++ b/gui/src/components/OnboardingCard/platform/PlatformOnboardingCard.tsx @@ -25,7 +25,11 @@ export interface OnboardingCardState { activeTab?: TabTitle; } -export function PlatformOnboardingCard() { +interface OnboardingCardProps { + isDialog?: boolean; +} + +export function PlatformOnboardingCard({ isDialog }: OnboardingCardProps) { const onboardingCard = useOnboardingCard(); if (getLocalStorage("onboardingStatus") === undefined) { @@ -46,9 +50,11 @@ export function PlatformOnboardingCard() { return ( - - - + {!isDialog && ( + + + + )}
{currentTab === "main" ? ( diff --git a/gui/src/components/dialogs/FreeTrialOverDialog.tsx b/gui/src/components/dialogs/FreeTrialOverDialog.tsx index c5e0e9745e..c3718ccc9a 100644 --- a/gui/src/components/dialogs/FreeTrialOverDialog.tsx +++ b/gui/src/components/dialogs/FreeTrialOverDialog.tsx @@ -1,22 +1,15 @@ import { useDispatch } from "react-redux"; -import styled from "styled-components"; -import { Button, SecondaryButton } from ".."; import { setDialogMessage, setShowDialog } from "../../redux/slices/uiSlice"; import { useAppSelector } from "../../redux/hooks"; import { useEffect } from "react"; +import { selectUsePlatform } from "../../redux/selectors"; +import { PlatformOnboardingCard } from "../OnboardingCard/platform/PlatformOnboardingCard"; +import { OnboardingCard } from "../OnboardingCard"; -interface FreeTrialOverDialogProps { - onConfirm: () => void; - onCancel?: () => void; - text: string; - title?: string; - hideCancelButton?: boolean; - confirmText?: string; -} - -function FreeTrialOverDialog(props: FreeTrialOverDialogProps) { +function FreeTrialOverDialog() { const dispatch = useDispatch(); const history = useAppSelector((store) => store.session.history); + const usePlatform = useAppSelector(selectUsePlatform); useEffect(() => { if (history.length === 0) { @@ -25,40 +18,11 @@ function FreeTrialOverDialog(props: FreeTrialOverDialogProps) { } }, [history]); - return ( -
-

- {props.title ?? "Confirmation"} -

-

- {props.text} -

- -
- {!!props.hideCancelButton || ( - { - dispatch(setShowDialog(false)); - dispatch(setDialogMessage(undefined)); - props.onCancel?.(); - }} - > - Cancel - - )} - -
-
- ); + if (usePlatform) { + return ; + } else { + return ; + } } export default FreeTrialOverDialog; diff --git a/gui/src/pages/gui/Chat.tsx b/gui/src/pages/gui/Chat.tsx index 81dbf268c1..5c3a18c9a9 100644 --- a/gui/src/pages/gui/Chat.tsx +++ b/gui/src/pages/gui/Chat.tsx @@ -66,13 +66,17 @@ import { getMetaKeyLabel, isMetaEquivalentKeyPressed, } from "../../util"; -import { FREE_TRIAL_LIMIT_REQUESTS } from "../../util/freeTrial"; +import { + FREE_TRIAL_LIMIT_REQUESTS, + incrementFreeTrialCount, +} from "../../util/freeTrial"; import getMultifileEditPrompt from "../../util/getMultifileEditPrompt"; import { getLocalStorage, setLocalStorage } from "../../util/localStorage"; import ConfigErrorIndicator from "./ConfigError"; import { ToolCallDiv } from "./ToolCallDiv"; import { ToolCallButtons } from "./ToolCallDiv/ToolCallButtonsDiv"; import ToolOutput from "./ToolCallDiv/ToolOutput"; +import FreeTrialOverDialog from "../../components/dialogs/FreeTrialOverDialog"; const StopButton = styled.div` background-color: ${vscBackground}; @@ -247,24 +251,20 @@ export function Chat() { editorToClearOnSend?: Editor, ) => { if (defaultModel?.provider === "free-trial") { - dispatch(setDialogMessage()); - dispatch(setShowDialog(true)); - return; - const u = getLocalStorage("ftc") ?? 0; - setLocalStorage("ftc", u + 1); - if (u === FREE_TRIAL_LIMIT_REQUESTS) { + const newCount = incrementFreeTrialCount(); + + if (newCount === FREE_TRIAL_LIMIT_REQUESTS) { posthog?.capture("ftc_reached"); } - if (u >= FREE_TRIAL_LIMIT_REQUESTS) { - if (usePlatform) { - } else { + if (newCount >= FREE_TRIAL_LIMIT_REQUESTS) { + // Card in chat will only show if no history + onboardingCard.open("Quickstart"); + + // If history, show the dialog, which will automatically close if there is not history + if (history.length) { + dispatch(setDialogMessage()); + dispatch(setShowDialog(true)); } - onboardingCard.open("Best"); - ideMessenger.ide.showToast( - "info", - "You've reached the free trial limit. Please configure a model to continue.", - ); - return; } } @@ -304,7 +304,6 @@ export function Chat() { streamResponse, isSingleRangeEditOrInsertion, codeToEdit, - usePlatform, ], ); diff --git a/gui/src/util/freeTrial.ts b/gui/src/util/freeTrial.ts index 83e9ea510f..1961fb358f 100644 --- a/gui/src/util/freeTrial.ts +++ b/gui/src/util/freeTrial.ts @@ -1,11 +1,13 @@ -import { getLocalStorage } from "./localStorage"; +import { getLocalStorage, setLocalStorage } from "./localStorage"; export const FREE_TRIAL_LIMIT_REQUESTS = 50; -/** - * - * @returns {boolean} true if the user has passed the free trial limit, false otherwise. - */ export function hasPassedFTL(): boolean { return (getLocalStorage("ftc") ?? 0) > FREE_TRIAL_LIMIT_REQUESTS; } + +export function incrementFreeTrialCount(): number { + const u = getLocalStorage("ftc") ?? 0; + setLocalStorage("ftc", u + 1); + return u + 1; +} From efced3206c1aeed542a0b3ac6e8d798ee4be24f4 Mon Sep 17 00:00:00 2001 From: Dallin Romney Date: Tue, 21 Jan 2025 12:00:03 -0800 Subject: [PATCH 05/12] cleanup --- .../OnboardingCard/platform/tabs/main.tsx | 63 +++++++++++++------ gui/src/pages/gui/Chat.tsx | 11 +++- 2 files changed, 55 insertions(+), 19 deletions(-) diff --git a/gui/src/components/OnboardingCard/platform/tabs/main.tsx b/gui/src/components/OnboardingCard/platform/tabs/main.tsx index f6a14cb939..50e7c99c49 100644 --- a/gui/src/components/OnboardingCard/platform/tabs/main.tsx +++ b/gui/src/components/OnboardingCard/platform/tabs/main.tsx @@ -3,12 +3,16 @@ import { Button, ButtonSubtext } from "../../.."; import { useAuth } from "../../../../context/Auth"; import ContinueLogo from "../../../gui/ContinueLogo"; import { useOnboardingCard } from "../../hooks"; +import { hasPassedFTL } from "../../../../util/freeTrial"; +import { useContext } from "react"; +import { IdeMessengerContext } from "../../../../context/IdeMessenger"; export default function MainTab({ onRemainLocal, }: { onRemainLocal: () => void; }) { + const ideMessenger = useContext(IdeMessengerContext); const onboardingCard = useOnboardingCard(); const auth = useAuth(); @@ -20,30 +24,53 @@ export default function MainTab({ }); } + function openPastFreeTrialOnboarding() { + // NATE TODO - add custom onboarding process handling here + ideMessenger.post("openUrl", "app.continue.dev/onboard?freeTrialStatus=1"); + } + + const pastFreeTrialLimit = hasPassedFTL(); + return (
-

- Log in to quickly build your first custom AI code assistant -

- -
- - -
- Or, remain local - -
-
-
+ {pastFreeTrialLimit ? ( + <> +

+ You've reached the free trial limit. Visit the Continue Platform to + select a Coding Assistant. +

+ + + ) : ( + <> +

+ Log in to quickly build your first custom AI code assistant +

+ + + + )} + + +
+ Or, remain local + +
+
); } diff --git a/gui/src/pages/gui/Chat.tsx b/gui/src/pages/gui/Chat.tsx index 5c3a18c9a9..51d06ad7a9 100644 --- a/gui/src/pages/gui/Chat.tsx +++ b/gui/src/pages/gui/Chat.tsx @@ -257,14 +257,23 @@ export function Chat() { posthog?.capture("ftc_reached"); } if (newCount >= FREE_TRIAL_LIMIT_REQUESTS) { + // Show this message whether using platform or not + // So that something happens if in new chat + ideMessenger.ide.showToast( + "error", + "You've reached the free trial limit. Please configure a model to continue.", + ); + // Card in chat will only show if no history - onboardingCard.open("Quickstart"); + // Also, note that platform card ignore the "Best", always opens to main tab + onboardingCard.open("Best"); // If history, show the dialog, which will automatically close if there is not history if (history.length) { dispatch(setDialogMessage()); dispatch(setShowDialog(true)); } + return; } } From 4215559c63f4e990ab018f31e4213877e605126f Mon Sep 17 00:00:00 2001 From: Dallin Romney Date: Tue, 21 Jan 2025 12:08:17 -0800 Subject: [PATCH 06/12] fix dialog styling --- .../components/OnboardingCard/OnboardingCard.tsx | 2 +- .../OnboardingCard/hooks/useOnboardingCard.ts | 8 -------- .../platform/PlatformOnboardingCard.tsx | 12 ------------ gui/src/components/dialogs/FreeTrialOverDialog.tsx | 14 +++++++++----- 4 files changed, 10 insertions(+), 26 deletions(-) diff --git a/gui/src/components/OnboardingCard/OnboardingCard.tsx b/gui/src/components/OnboardingCard/OnboardingCard.tsx index ed6bbe75b1..d6ae03845e 100644 --- a/gui/src/components/OnboardingCard/OnboardingCard.tsx +++ b/gui/src/components/OnboardingCard/OnboardingCard.tsx @@ -46,7 +46,7 @@ export function OnboardingCard({ isDialog }: OnboardingCardProps) { return ( store.ui.showDialog); - const [currentTab, setCurrentTab] = useState<"main" | "local">("main"); - // A version of this pops up in a dialog - // so that history doesn't disappear or jump - // If free trial limit is reached mid-chat - if (isPastFreeTrialLimit && isShowingDialog) { - return null; - } - return ( {!isDialog && ( diff --git a/gui/src/components/dialogs/FreeTrialOverDialog.tsx b/gui/src/components/dialogs/FreeTrialOverDialog.tsx index c3718ccc9a..d8666b1b20 100644 --- a/gui/src/components/dialogs/FreeTrialOverDialog.tsx +++ b/gui/src/components/dialogs/FreeTrialOverDialog.tsx @@ -18,11 +18,15 @@ function FreeTrialOverDialog() { } }, [history]); - if (usePlatform) { - return ; - } else { - return ; - } + return ( +
+ {usePlatform ? ( + + ) : ( + + )} +
+ ); } export default FreeTrialOverDialog; From 89df3f6e0ec3cdd82716ec9f7839c71e0824985a Mon Sep 17 00:00:00 2001 From: Dallin Romney Date: Tue, 21 Jan 2025 12:10:15 -0800 Subject: [PATCH 07/12] cleanup onboarding dialog --- core/config/onboarding.ts | 2 +- .../components/OnboardingCard/OnboardingCard.tsx | 2 +- .../OnboardingCard/components/OllamaStatus.tsx | 13 ++++--------- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/core/config/onboarding.ts b/core/config/onboarding.ts index f0a506fdf5..426a7a4ba8 100644 --- a/core/config/onboarding.ts +++ b/core/config/onboarding.ts @@ -9,7 +9,7 @@ export const LOCAL_ONBOARDING_CHAT_MODEL = "llama3.1:8b"; export const LOCAL_ONBOARDING_CHAT_TITLE = "Llama 3.1 8B"; /** - * We set the "best" chat + autocomplete models by default + * We set the "best" chat + autocopmlete models by default * whenever a user doesn't have a config.json */ export function setupBestConfig( diff --git a/gui/src/components/OnboardingCard/OnboardingCard.tsx b/gui/src/components/OnboardingCard/OnboardingCard.tsx index d6ae03845e..ed6bbe75b1 100644 --- a/gui/src/components/OnboardingCard/OnboardingCard.tsx +++ b/gui/src/components/OnboardingCard/OnboardingCard.tsx @@ -46,7 +46,7 @@ export function OnboardingCard({ isDialog }: OnboardingCardProps) { return ( ( - OllamaConnectionStatuses.WaitingToDownload, + isOllamaConnected + ? OllamaConnectionStatuses.Connected + : OllamaConnectionStatuses.WaitingToDownload, ); - useEffect(() => { - if (isOllamaConnected) { - setStatus(OllamaConnectionStatuses.Connected); - } else if (status !== OllamaConnectionStatuses.Downloading) { - setStatus(OllamaConnectionStatuses.WaitingToDownload); - } - }, [status, isOllamaConnected]); function onClickDownload() { ideMessenger.post("openUrl", downloadUrl); From f67eae4c9d62f335aac70c0c2e52fee30838810a Mon Sep 17 00:00:00 2001 From: Dallin Romney Date: Tue, 21 Jan 2025 12:30:29 -0800 Subject: [PATCH 08/12] close dialog on submit onboarding --- extensions/vscode/package-lock.json | 4 ++-- .../components/OnboardingCard/OnboardingCard.tsx | 2 +- .../components/QuickStartSubmitButton.tsx | 8 ++++++-- .../OnboardingCard/hooks/useOnboardingCard.ts | 14 +++++++++++--- .../OnboardingCard/hooks/useSubmitOnboarding.ts | 4 ++-- .../platform/PlatformOnboardingCard.tsx | 11 +++++++---- .../OnboardingCard/platform/tabs/main.tsx | 5 ++++- .../OnboardingCard/tabs/OnboardingBestTab.tsx | 8 ++++++-- .../OnboardingCard/tabs/OnboardingLocalTab.tsx | 13 ++++++++++++- .../tabs/OnboardingQuickstartTab.tsx | 8 ++++++-- 10 files changed, 57 insertions(+), 20 deletions(-) diff --git a/extensions/vscode/package-lock.json b/extensions/vscode/package-lock.json index 31f06cbb14..cf132e7bae 100644 --- a/extensions/vscode/package-lock.json +++ b/extensions/vscode/package-lock.json @@ -1,12 +1,12 @@ { "name": "continue", - "version": "0.9.252", + "version": "0.9.253", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "continue", - "version": "0.9.252", + "version": "0.9.253", "license": "Apache-2.0", "dependencies": { "@continuedev/fetch": "^1.0.3", diff --git a/gui/src/components/OnboardingCard/OnboardingCard.tsx b/gui/src/components/OnboardingCard/OnboardingCard.tsx index ed6bbe75b1..eebbfb2bc9 100644 --- a/gui/src/components/OnboardingCard/OnboardingCard.tsx +++ b/gui/src/components/OnboardingCard/OnboardingCard.tsx @@ -54,7 +54,7 @@ export function OnboardingCard({ isDialog }: OnboardingCardProps) { onTabClick={onboardingCard.setActiveTab} /> {!isDialog && ( - + onboardingCard.close()}> )} diff --git a/gui/src/components/OnboardingCard/components/QuickStartSubmitButton.tsx b/gui/src/components/OnboardingCard/components/QuickStartSubmitButton.tsx index 04eabf345c..00d0702c3c 100644 --- a/gui/src/components/OnboardingCard/components/QuickStartSubmitButton.tsx +++ b/gui/src/components/OnboardingCard/components/QuickStartSubmitButton.tsx @@ -9,11 +9,15 @@ import { useSubmitOnboarding } from "../hooks"; import JetBrainsFetchGitHubTokenDialog from "./JetBrainsFetchGitHubTokenDialog"; import { setDefaultModel } from "../../../redux/slices/configSlice"; -function QuickstartSubmitButton() { +interface QuickstartSubmitButtonProps { + isDialog?: boolean; +} + +function QuickstartSubmitButton({ isDialog }: QuickstartSubmitButtonProps) { const ideMessenger = useContext(IdeMessengerContext); const dispatch = useDispatch(); - const { submitOnboarding } = useSubmitOnboarding("Quickstart"); + const { submitOnboarding } = useSubmitOnboarding("Quickstart", isDialog); function onComplete() { submitOnboarding(); diff --git a/gui/src/components/OnboardingCard/hooks/useOnboardingCard.ts b/gui/src/components/OnboardingCard/hooks/useOnboardingCard.ts index dfc02f65ba..9622754c41 100644 --- a/gui/src/components/OnboardingCard/hooks/useOnboardingCard.ts +++ b/gui/src/components/OnboardingCard/hooks/useOnboardingCard.ts @@ -1,7 +1,11 @@ import { useDispatch } from "react-redux"; import { useNavigate } from "react-router-dom"; import { TabTitle } from "../components/OnboardingCardTabs"; -import { setOnboardingCard } from "../../../redux/slices/uiSlice"; +import { + setDialogMessage, + setOnboardingCard, + setShowDialog, +} from "../../../redux/slices/uiSlice"; import { OnboardingCardState } from ".."; import { getLocalStorage, setLocalStorage } from "../../../util/localStorage"; import { useAppDispatch, useAppSelector } from "../../../redux/hooks"; @@ -12,7 +16,7 @@ export interface UseOnboardingCard { activeTab: OnboardingCardState["activeTab"]; setActiveTab: (tab: TabTitle) => void; open: (tab: TabTitle) => void; - close: () => void; + close: (isDialog?: boolean) => void; } export function useOnboardingCard(): UseOnboardingCard { @@ -41,9 +45,13 @@ export function useOnboardingCard(): UseOnboardingCard { dispatch(setOnboardingCard({ show: true, activeTab: tab })); } - function close() { + function close(isDialog = false) { setLocalStorage("hasDismissedOnboardingCard", true); dispatch(setOnboardingCard({ show: false })); + if (isDialog) { + dispatch(setDialogMessage(undefined)); + dispatch(setShowDialog(false)); + } } function setActiveTab(tab: TabTitle) { diff --git a/gui/src/components/OnboardingCard/hooks/useSubmitOnboarding.ts b/gui/src/components/OnboardingCard/hooks/useSubmitOnboarding.ts index a0407c171b..93b24ea91a 100644 --- a/gui/src/components/OnboardingCard/hooks/useSubmitOnboarding.ts +++ b/gui/src/components/OnboardingCard/hooks/useSubmitOnboarding.ts @@ -6,7 +6,7 @@ import { OnboardingModes } from "core/protocol/core"; import { useTutorialCard } from "../../../hooks/useTutorialCard"; import { useOnboardingCard } from "./useOnboardingCard"; -export function useSubmitOnboarding(mode: OnboardingModes) { +export function useSubmitOnboarding(mode: OnboardingModes, isDialog = false) { const posthog = usePostHog(); const ideMessenger = useContext(IdeMessengerContext); const { openTutorialCard } = useTutorialCard(); @@ -16,7 +16,7 @@ export function useSubmitOnboarding(mode: OnboardingModes) { const onboardingStatus = getLocalStorage("onboardingStatus"); // Always close the onboarding card and update config.json - closeOnboardingCard(); + closeOnboardingCard(isDialog); ideMessenger.post("completeOnboarding", { mode, }); diff --git a/gui/src/components/OnboardingCard/platform/PlatformOnboardingCard.tsx b/gui/src/components/OnboardingCard/platform/PlatformOnboardingCard.tsx index 2c2a2993a4..ede9295b3b 100644 --- a/gui/src/components/OnboardingCard/platform/PlatformOnboardingCard.tsx +++ b/gui/src/components/OnboardingCard/platform/PlatformOnboardingCard.tsx @@ -24,7 +24,7 @@ export interface OnboardingCardState { } interface OnboardingCardProps { - isDialog?: boolean; + isDialog: boolean; } export function PlatformOnboardingCard({ isDialog }: OnboardingCardProps) { @@ -39,14 +39,17 @@ export function PlatformOnboardingCard({ isDialog }: OnboardingCardProps) { return ( {!isDialog && ( - + onboardingCard.close()}> )}
{currentTab === "main" ? ( - setCurrentTab("local")} /> + setCurrentTab("local")} + isDialog={isDialog} + /> ) : (
@@ -59,7 +62,7 @@ export function PlatformOnboardingCard({ isDialog }: OnboardingCardProps) { - +
)}
diff --git a/gui/src/components/OnboardingCard/platform/tabs/main.tsx b/gui/src/components/OnboardingCard/platform/tabs/main.tsx index 50e7c99c49..e67e0b9905 100644 --- a/gui/src/components/OnboardingCard/platform/tabs/main.tsx +++ b/gui/src/components/OnboardingCard/platform/tabs/main.tsx @@ -9,8 +9,10 @@ import { IdeMessengerContext } from "../../../../context/IdeMessenger"; export default function MainTab({ onRemainLocal, + isDialog, }: { onRemainLocal: () => void; + isDialog: boolean; }) { const ideMessenger = useContext(IdeMessengerContext); const onboardingCard = useOnboardingCard(); @@ -19,7 +21,7 @@ export default function MainTab({ function onGetStarted() { auth.login(true).then((success) => { if (success) { - onboardingCard.close(); + onboardingCard.close(isDialog); } }); } @@ -27,6 +29,7 @@ export default function MainTab({ function openPastFreeTrialOnboarding() { // NATE TODO - add custom onboarding process handling here ideMessenger.post("openUrl", "app.continue.dev/onboard?freeTrialStatus=1"); + onboardingCard.close(isDialog); } const pastFreeTrialLimit = hasPassedFTL(); diff --git a/gui/src/components/OnboardingCard/tabs/OnboardingBestTab.tsx b/gui/src/components/OnboardingCard/tabs/OnboardingBestTab.tsx index f4c02cefda..17d2ead001 100644 --- a/gui/src/components/OnboardingCard/tabs/OnboardingBestTab.tsx +++ b/gui/src/components/OnboardingCard/tabs/OnboardingBestTab.tsx @@ -2,8 +2,12 @@ import BestExperienceConfigForm from "../components/BestExperienceConfigForm"; import ProviderAlert from "../components/ProviderAlert"; import { useSubmitOnboarding } from "../hooks"; -function OnboardingBestTab() { - const { submitOnboarding } = useSubmitOnboarding("Best"); +interface OnboardingBestTabProps { + isDialog?: boolean; +} + +function OnboardingBestTab({ isDialog }: OnboardingBestTabProps) { + const { submitOnboarding } = useSubmitOnboarding("Best", isDialog); return (
diff --git a/gui/src/components/OnboardingCard/tabs/OnboardingLocalTab.tsx b/gui/src/components/OnboardingCard/tabs/OnboardingLocalTab.tsx index 71b4a13acf..76ba5bf5c8 100644 --- a/gui/src/components/OnboardingCard/tabs/OnboardingLocalTab.tsx +++ b/gui/src/components/OnboardingCard/tabs/OnboardingLocalTab.tsx @@ -14,14 +14,20 @@ import OllamaModelDownload from "../components/OllamaModelDownload"; import { OllamaStatus } from "../components/OllamaStatus"; import { useSubmitOnboarding } from "../hooks"; import { setDefaultModel } from "../../../redux/slices/configSlice"; +import { setDialogMessage, setShowDialog } from "../../../redux/slices/uiSlice"; const OLLAMA_CHECK_INTERVAL_MS = 3000; -function OnboardingLocalTab() { +interface OnboardingLocalTabProps { + isDialog?: boolean; +} + +function OnboardingLocalTab({ isDialog }: OnboardingLocalTabProps) { const dispatch = useDispatch(); const ideMessenger = useContext(IdeMessengerContext); const { submitOnboarding } = useSubmitOnboarding( hasPassedFTL() ? "LocalAfterFreeTrial" : "Local", + isDialog, ); const [hasLoadedChatModel, setHasLoadedChatModel] = useState(false); const [downloadedOllamaModels, setDownloadedOllamaModels] = useState< @@ -117,6 +123,11 @@ function OnboardingLocalTab() { onClick={() => { submitOnboarding(); + if (isDialog) { + dispatch(setDialogMessage(undefined)); + dispatch(setShowDialog(false)); + } + // Set the selected model to the local chat model dispatch( setDefaultModel({ diff --git a/gui/src/components/OnboardingCard/tabs/OnboardingQuickstartTab.tsx b/gui/src/components/OnboardingCard/tabs/OnboardingQuickstartTab.tsx index 326fd32e21..f291cf7c88 100644 --- a/gui/src/components/OnboardingCard/tabs/OnboardingQuickstartTab.tsx +++ b/gui/src/components/OnboardingCard/tabs/OnboardingQuickstartTab.tsx @@ -1,7 +1,11 @@ import ContinueLogo from "../../gui/ContinueLogo"; import QuickStartSubmitButton from "../components/QuickStartSubmitButton"; -function OnboardingQuickstartTab() { +interface OnboardingQuickstartTabProps { + isDialog?: boolean; +} + +function OnboardingQuickstartTab({ isDialog }: OnboardingQuickstartTabProps) { return (
@@ -18,7 +22,7 @@ function OnboardingQuickstartTab() { To prevent abuse, we'll ask you to sign in to GitHub.

- +
); From ec9702be9945288b90b01dbbf28efa9fd9a82b1f Mon Sep 17 00:00:00 2001 From: Dallin Romney Date: Tue, 21 Jan 2025 12:41:02 -0800 Subject: [PATCH 09/12] clean up onboarding tabs --- extensions/vscode/package-lock.json | 6 ++--- .../OnboardingCard/platform/tabs/local.tsx | 26 ------------------- 2 files changed, 3 insertions(+), 29 deletions(-) delete mode 100644 gui/src/components/OnboardingCard/platform/tabs/local.tsx diff --git a/extensions/vscode/package-lock.json b/extensions/vscode/package-lock.json index cf132e7bae..38d0db7c80 100644 --- a/extensions/vscode/package-lock.json +++ b/extensions/vscode/package-lock.json @@ -1,12 +1,12 @@ { "name": "continue", - "version": "0.9.253", + "version": "0.9.254", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "continue", - "version": "0.9.253", + "version": "0.9.254", "license": "Apache-2.0", "dependencies": { "@continuedev/fetch": "^1.0.3", @@ -106,7 +106,7 @@ "@aws-sdk/client-sagemaker-runtime": "^3.621.0", "@aws-sdk/credential-providers": "^3.620.1", "@continuedev/config-types": "^1.0.13", - "@continuedev/config-yaml": "^1.0.11", + "@continuedev/config-yaml": "^1.0.16", "@continuedev/fetch": "^1.0.4", "@continuedev/llm-info": "^1.0.2", "@continuedev/openai-adapters": "^1.0.10", diff --git a/gui/src/components/OnboardingCard/platform/tabs/local.tsx b/gui/src/components/OnboardingCard/platform/tabs/local.tsx deleted file mode 100644 index ae30085ecc..0000000000 --- a/gui/src/components/OnboardingCard/platform/tabs/local.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import { useAuth } from "../../../../context/Auth"; -import ContinueLogo from "../../../gui/ContinueLogo"; -import { useOnboardingCard } from "../../hooks"; - -export default function LocalTab() { - const onboardingCard = useOnboardingCard(); - const auth = useAuth(); - - return ( -
-
- -
- -

- Log in to quickly build your first custom AI code assistant -

- - {/*

- To prevent abuse, we'll ask you to sign in to GitHub. -

*/} - -
-
- ); -} From 1c299dad18ae9e70834070420f2dd77476146db8 Mon Sep 17 00:00:00 2001 From: Dallin Romney Date: Tue, 21 Jan 2025 13:03:35 -0800 Subject: [PATCH 10/12] controlPlane/openUrl message --- core/core.ts | 8 ++++++++ core/protocol/core.ts | 1 + core/protocol/passThrough.ts | 1 + .../continueintellijextension/constants/MessageTypes.kt | 1 + extensions/vscode/package-lock.json | 6 +++--- gui/src/components/OnboardingCard/platform/tabs/main.tsx | 5 +++-- .../modelSelection/platform/AssistantSelect.tsx | 4 +++- 7 files changed, 20 insertions(+), 6 deletions(-) diff --git a/core/core.ts b/core/core.ts index c74f2e539d..88f4807534 100644 --- a/core/core.ts +++ b/core/core.ts @@ -55,6 +55,7 @@ import { import { usePlatform } from "./control-plane/flags"; import type { FromCoreProtocol, ToCoreProtocol } from "./protocol"; import type { IMessenger, Message } from "./protocol/messenger"; +import { controlPlaneEnv } from "./control-plane/env"; export class Core { // implements IMessenger @@ -294,6 +295,13 @@ export class Core { addContextProvider(msg.data); }); + on("controlPlane/openUrl", async (msg) => { + await this.messenger.request( + "openUrl", + `${controlPlaneEnv.APP_URL}${msg.data.path}`, + ); + }); + // Context providers on("context/addDocs", async (msg) => { void this.docsService.indexAndAdd(msg.data); diff --git a/core/protocol/core.ts b/core/protocol/core.ts index b48b113989..52cffb0279 100644 --- a/core/protocol/core.ts +++ b/core/protocol/core.ts @@ -191,4 +191,5 @@ export type ToCoreFromIdeOrWebviewProtocol = { { contextItems: ContextItem[] }, ]; "clipboardCache/add": [{ content: string }, void]; + "controlPlane/openUrl": [{ path: string }, void]; }; diff --git a/core/protocol/passThrough.ts b/core/protocol/passThrough.ts index a638eafb47..3d871c42aa 100644 --- a/core/protocol/passThrough.ts +++ b/core/protocol/passThrough.ts @@ -58,6 +58,7 @@ export const WEBVIEW_TO_CORE_PASS_THROUGH: (keyof ToCoreFromWebviewProtocol)[] = "profiles/switch", "didChangeSelectedProfile", "tools/call", + "controlPlane/openUrl", ]; // Message types to pass through from core to webview diff --git a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/constants/MessageTypes.kt b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/constants/MessageTypes.kt index cf7af5f7c8..4b685806b6 100644 --- a/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/constants/MessageTypes.kt +++ b/extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/constants/MessageTypes.kt @@ -123,6 +123,7 @@ class MessageTypes { "profiles/switch", "didChangeSelectedProfile", "tools/call", + "controlPlane/openUrl" ) } } \ No newline at end of file diff --git a/extensions/vscode/package-lock.json b/extensions/vscode/package-lock.json index 38d0db7c80..cf132e7bae 100644 --- a/extensions/vscode/package-lock.json +++ b/extensions/vscode/package-lock.json @@ -1,12 +1,12 @@ { "name": "continue", - "version": "0.9.254", + "version": "0.9.253", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "continue", - "version": "0.9.254", + "version": "0.9.253", "license": "Apache-2.0", "dependencies": { "@continuedev/fetch": "^1.0.3", @@ -106,7 +106,7 @@ "@aws-sdk/client-sagemaker-runtime": "^3.621.0", "@aws-sdk/credential-providers": "^3.620.1", "@continuedev/config-types": "^1.0.13", - "@continuedev/config-yaml": "^1.0.16", + "@continuedev/config-yaml": "^1.0.11", "@continuedev/fetch": "^1.0.4", "@continuedev/llm-info": "^1.0.2", "@continuedev/openai-adapters": "^1.0.10", diff --git a/gui/src/components/OnboardingCard/platform/tabs/main.tsx b/gui/src/components/OnboardingCard/platform/tabs/main.tsx index e67e0b9905..94e3c0de0c 100644 --- a/gui/src/components/OnboardingCard/platform/tabs/main.tsx +++ b/gui/src/components/OnboardingCard/platform/tabs/main.tsx @@ -27,8 +27,9 @@ export default function MainTab({ } function openPastFreeTrialOnboarding() { - // NATE TODO - add custom onboarding process handling here - ideMessenger.post("openUrl", "app.continue.dev/onboard?freeTrialStatus=1"); + ideMessenger.post("controlPlane/openUrl", { + path: "setup-models", + }); onboardingCard.close(isDialog); } diff --git a/gui/src/components/modelSelection/platform/AssistantSelect.tsx b/gui/src/components/modelSelection/platform/AssistantSelect.tsx index 383c50f1ef..972dd27827 100644 --- a/gui/src/components/modelSelection/platform/AssistantSelect.tsx +++ b/gui/src/components/modelSelection/platform/AssistantSelect.tsx @@ -25,7 +25,9 @@ export function AssistantSelect(props: AssistantSelectProps) { const dispatch = useAppDispatch(); function onNewAssistant() { - ideMessenger.post("openUrl", "https://app-test.continue.dev/new"); + ideMessenger.post("controlPlane/openUrl", { + path: "new", + }); } return ( From 87c0f343850325b15ae3953c45fb948bcd6e29a5 Mon Sep 17 00:00:00 2001 From: Dallin Romney Date: Tue, 21 Jan 2025 13:06:01 -0800 Subject: [PATCH 11/12] revert package lock --- extensions/vscode/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/extensions/vscode/package-lock.json b/extensions/vscode/package-lock.json index cf132e7bae..38d0db7c80 100644 --- a/extensions/vscode/package-lock.json +++ b/extensions/vscode/package-lock.json @@ -1,12 +1,12 @@ { "name": "continue", - "version": "0.9.253", + "version": "0.9.254", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "continue", - "version": "0.9.253", + "version": "0.9.254", "license": "Apache-2.0", "dependencies": { "@continuedev/fetch": "^1.0.3", @@ -106,7 +106,7 @@ "@aws-sdk/client-sagemaker-runtime": "^3.621.0", "@aws-sdk/credential-providers": "^3.620.1", "@continuedev/config-types": "^1.0.13", - "@continuedev/config-yaml": "^1.0.11", + "@continuedev/config-yaml": "^1.0.16", "@continuedev/fetch": "^1.0.4", "@continuedev/llm-info": "^1.0.2", "@continuedev/openai-adapters": "^1.0.10", From e2a9b9956b6bf786c7fef3d613515e663f2329ab Mon Sep 17 00:00:00 2001 From: Dallin Romney Date: Wed, 22 Jan 2025 18:12:10 -0800 Subject: [PATCH 12/12] pass isdialog to chat card --- gui/src/pages/gui/Chat.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gui/src/pages/gui/Chat.tsx b/gui/src/pages/gui/Chat.tsx index 51d06ad7a9..119ee56c6c 100644 --- a/gui/src/pages/gui/Chat.tsx +++ b/gui/src/pages/gui/Chat.tsx @@ -555,9 +555,9 @@ export function Chat() { {onboardingCard.show && (
{usePlatform ? ( - + ) : ( - + )}
)}