= 4}>
{
>
{topMessages[counter]}
-
![{topMessages[counter]}]({`https://github.com/continuedev/continue/blob/main/media/${gifs[counter]}.gif?raw=true`})
+ {loading && (
+
+
+
+ )}
+ {counter % 2 === 0 ? (
+
![{topMessages[counter]}]({`https://github.com/continuedev/continue/blob/main/media/${gifs[counter]}.gif?raw=true`})
{
+ setLoading(false);
+ }}
+ style={{ zIndex: 1 }}
+ />
+ ) : (
+
![{topMessages[counter]}]({`https://github.com/continuedev/continue/blob/main/media/${gifs[counter]}.gif?raw=true`})
{
+ setLoading(false);
+ }}
+ style={{ zIndex: 1 }}
+ />
+ )}
{bottomMessages[counter]}
{
{" | "}
setCounter((prev) => prev + 1)}>
- Click to {counter === 3 || "learn how to"} use Continue{" "}
+ {counter === 0
+ ? "Click to learn how to use Continue"
+ : counter === 3
+ ? "Get Started"
+ : "Next"}{" "}
diff --git a/extension/src/activation/activate.ts b/extension/src/activation/activate.ts
index 2c5ba58c..c46d6362 100644
--- a/extension/src/activation/activate.ts
+++ b/extension/src/activation/activate.ts
@@ -15,7 +15,7 @@ import fetch from "node-fetch";
// import { CapturedTerminal } from "../terminal/terminalEmulator";
const PACKAGE_JSON_RAW_GITHUB_URL =
- "https://raw.githubusercontent.com/continuedev/continue/main/extension/package.json";
+ "https://raw.githubusercontent.com/continuedev/continue/HEAD/extension/package.json";
export let extensionContext: vscode.ExtensionContext | undefined = undefined;
--
cgit v1.2.3-70-g09d2
From f6c71a6cfe746ee4bb97c4cbe86827679a199ade Mon Sep 17 00:00:00 2001
From: Nate Sesti
Date: Wed, 12 Jul 2023 15:52:18 -0700
Subject: smaller fixes
---
continuedev/src/continuedev/steps/core/core.py | 2 +-
extension/package.json | 7 +--
.../react-app/src/components/LoadingCover.tsx | 50 ----------------------
extension/react-app/src/components/Onboarding.tsx | 4 +-
extension/react-app/src/pages/gui.tsx | 24 +++++------
5 files changed, 14 insertions(+), 73 deletions(-)
delete mode 100644 extension/react-app/src/components/LoadingCover.tsx
(limited to 'extension/react-app/src/components/Onboarding.tsx')
diff --git a/continuedev/src/continuedev/steps/core/core.py b/continuedev/src/continuedev/steps/core/core.py
index 9eddc03f..5ea95104 100644
--- a/continuedev/src/continuedev/steps/core/core.py
+++ b/continuedev/src/continuedev/steps/core/core.py
@@ -355,7 +355,7 @@ Please output the code to be inserted at the cursor in order to fulfill the user
lines_to_display = contents_lines[rewritten_lines:]
new_file_contents = "\n".join(
- full_prefix_lines) + "\n" + completion + "\n" + "\n".join(lines_to_display) + "\n" + "\n".join(full_suffix_lines)
+ full_prefix_lines) + "\n" + completion + "\n" + ("\n".join(lines_to_display) + "\n" if len(lines_to_display) > 0 else "") + "\n".join(full_suffix_lines)
step_index = sdk.history.current_index
diff --git a/extension/package.json b/extension/package.json
index 69792ea2..6f64ee60 100644
--- a/extension/package.json
+++ b/extension/package.json
@@ -44,18 +44,13 @@
"configuration": {
"title": "Continue",
"properties": {
- "continue.automode": {
- "type": "boolean",
- "default": true,
- "description": "Automatically find relevant code and suggest a fix whenever a traceback is found."
- },
"continue.serverUrl": {
"type": "string",
"default": "http://localhost:65432",
"description": "The URL of the Continue server to use."
},
"continue.OPENAI_API_KEY": {
- "type": "password",
+ "type": "string",
"default": null,
"description": "The OpenAI API key to use for code generation."
},
diff --git a/extension/react-app/src/components/LoadingCover.tsx b/extension/react-app/src/components/LoadingCover.tsx
deleted file mode 100644
index a0f8f7a2..00000000
--- a/extension/react-app/src/components/LoadingCover.tsx
+++ /dev/null
@@ -1,50 +0,0 @@
-import React from "react";
-import styled from "styled-components";
-
-const StyledDiv = styled.div`
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100vh;
- background: linear-gradient(
- 101.79deg,
- #12887a 0%,
- #87245c 32%,
- #e12637 63%,
- #ffb215 100%
- );
- display: flex;
- justify-content: center;
- align-items: center;
- flex-direction: column;
- z-index: 10;
-`;
-
-const StyledImg = styled.img`
- /* add your styles here */
-`;
-
-const StyledDiv2 = styled.div`
- width: 50%;
- height: 5px;
- background: white;
- margin-top: 20px;
-`;
-
-interface LoadingCoverProps {
- message: string;
- hidden?: boolean;
-}
-
-const LoadingCover = (props: LoadingCoverProps) => {
- return (
-
-
-
- {props.message}
-
- );
-};
-
-export default LoadingCover;
diff --git a/extension/react-app/src/components/Onboarding.tsx b/extension/react-app/src/components/Onboarding.tsx
index 776ad460..7772a25e 100644
--- a/extension/react-app/src/components/Onboarding.tsx
+++ b/extension/react-app/src/components/Onboarding.tsx
@@ -26,7 +26,7 @@ const StyledSpan = styled.span`
const Onboarding = () => {
const [counter, setCounter] = useState(4);
- const gifs = ["intro", "explain", "edit", "generate"];
+ const gifs = ["intro", "explain", "edit", "generate", "intro"];
const topMessages = [
"Welcome to Continue!",
"Answer coding questions",
@@ -42,7 +42,7 @@ const Onboarding = () => {
useEffect(() => {
const hasVisited = localStorage.getItem("hasVisited");
- if (hasVisited && false) {
+ if (hasVisited) {
setCounter(4);
} else {
setCounter(0);
diff --git a/extension/react-app/src/pages/gui.tsx b/extension/react-app/src/pages/gui.tsx
index b6a18dc8..b9382bd1 100644
--- a/extension/react-app/src/pages/gui.tsx
+++ b/extension/react-app/src/pages/gui.tsx
@@ -20,7 +20,6 @@ import ReactSwitch from "react-switch";
import { usePostHog } from "posthog-js/react";
import { useSelector } from "react-redux";
import { RootStore } from "../redux/store";
-import LoadingCover from "../components/LoadingCover";
import { postVscMessage } from "../vscode";
import UserInputContainer from "../components/UserInputContainer";
import Onboarding from "../components/Onboarding";
@@ -270,19 +269,16 @@ function GUI(props: GUIProps) {
// const iterations = useSelector(selectIterations);
return (
<>
-
-
- {
- client?.sendMainInput(`/feedback ${text}`);
- setShowFeedbackDialog(false);
- }}
- onClose={() => {
- setShowFeedbackDialog(false);
- }}
- message={feedbackDialogMessage}
- >
+
+ {
+ client?.sendMainInput(`/feedback ${text}`);
+ setShowFeedbackDialog(false);
+ }}
+ onClose={() => {
+ setShowFeedbackDialog(false);
+ }}
+ message={feedbackDialogMessage} />
Date: Thu, 13 Jul 2023 22:20:40 -0700
Subject: new onboarding
---
extension/react-app/src/components/Onboarding.tsx | 17 +++++------------
1 file changed, 5 insertions(+), 12 deletions(-)
(limited to 'extension/react-app/src/components/Onboarding.tsx')
diff --git a/extension/react-app/src/components/Onboarding.tsx b/extension/react-app/src/components/Onboarding.tsx
index 7772a25e..e2dd6f57 100644
--- a/extension/react-app/src/components/Onboarding.tsx
+++ b/extension/react-app/src/components/Onboarding.tsx
@@ -26,18 +26,12 @@ const StyledSpan = styled.span`
const Onboarding = () => {
const [counter, setCounter] = useState(4);
- const gifs = ["intro", "explain", "edit", "generate", "intro"];
+ const gifs = ["intro", "highlight", "question", "help"];
const topMessages = [
- "Welcome to Continue!",
- "Answer coding questions",
- "Edit in natural language",
- "Generate files from scratch",
- ];
- const bottomMessages = [
- "",
- "Ask Continue about a part of your code to get another perspective",
- "Highlight a section of code and instruct Continue to refactor it",
- "Let Continue build the scaffolding of Python scripts, React components, and more",
+ "Welcome!",
+ "Highlight code",
+ "Ask a question",
+ "Use /help to learn more",
];
useEffect(() => {
@@ -107,7 +101,6 @@ const Onboarding = () => {
/>
)}
- {bottomMessages[counter]}
Date: Fri, 14 Jul 2023 02:30:45 -0700
Subject: fixed unique_id being asyncio.run property
---
continuedev/src/continuedev/server/ide.py | 22 +++++++++++-----------
continuedev/src/continuedev/server/ide_protocol.py | 5 +----
continuedev/src/continuedev/steps/help.py | 8 +++++---
extension/package-lock.json | 4 ++--
extension/package.json | 2 +-
extension/react-app/src/components/ComboBox.tsx | 17 ++---------------
extension/react-app/src/components/Onboarding.tsx | 1 +
7 files changed, 23 insertions(+), 36 deletions(-)
(limited to 'extension/react-app/src/components/Onboarding.tsx')
diff --git a/continuedev/src/continuedev/server/ide.py b/continuedev/src/continuedev/server/ide.py
index 12a21f19..73cce201 100644
--- a/continuedev/src/continuedev/server/ide.py
+++ b/continuedev/src/continuedev/server/ide.py
@@ -123,10 +123,12 @@ class IdeProtocolServer(AbstractIdeProtocolServer):
self.websocket = websocket
self.session_manager = session_manager
- workspace_directory: str
+ workspace_directory: str = None
+ unique_id: str = None
async def initialize(self) -> List[str]:
await self._send_json("workspaceDirectory", {})
+ await self._send_json("uniqueId", {})
other_msgs = []
while True:
msg_string = await self.websocket.receive_text()
@@ -137,9 +139,13 @@ class IdeProtocolServer(AbstractIdeProtocolServer):
data = message["data"]
if message_type == "workspaceDirectory":
self.workspace_directory = data["workspaceDirectory"]
- break
+ elif message_type == "uniqueId":
+ self.unique_id = data["uniqueId"]
else:
other_msgs.append(msg_string)
+
+ if self.workspace_directory is not None and self.unique_id is not None:
+ break
return other_msgs
async def _send_json(self, message_type: str, data: Any):
@@ -183,10 +189,12 @@ class IdeProtocolServer(AbstractIdeProtocolServer):
self.onMainUserInput(data["input"])
elif message_type == "deleteAtIndex":
self.onDeleteAtIndex(data["index"])
- elif message_type in ["highlightedCode", "openFiles", "visibleFiles", "readFile", "editFile", "getUserSecret", "runCommand", "uniqueId"]:
+ elif message_type in ["highlightedCode", "openFiles", "visibleFiles", "readFile", "editFile", "getUserSecret", "runCommand"]:
self.sub_queue.post(message_type, data)
elif message_type == "workspaceDirectory":
self.workspace_directory = data["workspaceDirectory"]
+ elif message_type == "uniqueId":
+ self.unique_id = data["uniqueId"]
else:
raise ValueError("Unknown message type", message_type)
@@ -311,14 +319,6 @@ class IdeProtocolServer(AbstractIdeProtocolServer):
resp = await self._send_and_receive_json({}, VisibleFilesResponse, "visibleFiles")
return resp.visibleFiles
- async def get_unique_id(self) -> str:
- resp = await self._send_and_receive_json({}, UniqueIdResponse, "uniqueId")
- return resp.uniqueId
-
- @cached_property_no_none
- def unique_id(self) -> str:
- return asyncio.run(self.get_unique_id())
-
async def getHighlightedCode(self) -> List[RangeInFile]:
resp = await self._send_and_receive_json({}, HighlightedCodeResponse, "highlightedCode")
return resp.highlightedCode
diff --git a/continuedev/src/continuedev/server/ide_protocol.py b/continuedev/src/continuedev/server/ide_protocol.py
index 2f78cf0e..d0fb0bf8 100644
--- a/continuedev/src/continuedev/server/ide_protocol.py
+++ b/continuedev/src/continuedev/server/ide_protocol.py
@@ -108,7 +108,4 @@ class AbstractIdeProtocolServer(ABC):
"""Show a diff"""
workspace_directory: str
-
- @abstractproperty
- def unique_id(self) -> str:
- """Get a unique ID for this IDE"""
+ unique_id: str
diff --git a/continuedev/src/continuedev/steps/help.py b/continuedev/src/continuedev/steps/help.py
index fdfb986f..2dc3647c 100644
--- a/continuedev/src/continuedev/steps/help.py
+++ b/continuedev/src/continuedev/steps/help.py
@@ -6,7 +6,7 @@ from ..libs.util.telemetry import capture_event
help = dedent("""\
Continue is an open-source coding autopilot. It is a VS Code extension that brings the power of ChatGPT to your IDE.
- It gathers context for you and stores your interactions automatically, so that you can avoid copy/paste now and benefit from a customized LLM later.
+ It gathers context for you and stores your interactions automatically, so that you can avoid copy/paste now and benefit from a customized Large Language Model (LLM) later.
Continue can be used to...
1. Edit chunks of code with specific instructions (e.g. "/edit migrate this digital ocean terraform file into one that works for GCP")
@@ -25,6 +25,7 @@ help = dedent("""\
If you have feedback, please use /feedback to let us know how you would like to use Continue. We are excited to hear from you!""")
+
class HelpStep(Step):
name: str = "Help"
@@ -41,7 +42,7 @@ class HelpStep(Step):
Information:
{help}""")
-
+
self.chat_context.append(ChatMessage(
role="user",
content=prompt,
@@ -54,4 +55,5 @@ class HelpStep(Step):
self.description += chunk["content"]
await sdk.update_ui()
- capture_event(sdk.ide.unique_id, "help", {"question": question, "answer": self.description})
\ No newline at end of file
+ capture_event(sdk.ide.unique_id, "help", {
+ "question": question, "answer": self.description})
diff --git a/extension/package-lock.json b/extension/package-lock.json
index 65fdab12..9d5c73e1 100644
--- a/extension/package-lock.json
+++ b/extension/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "continue",
- "version": "0.0.162",
+ "version": "0.0.163",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "continue",
- "version": "0.0.162",
+ "version": "0.0.163",
"license": "Apache-2.0",
"dependencies": {
"@electron/rebuild": "^3.2.10",
diff --git a/extension/package.json b/extension/package.json
index ef39582b..2b0f6b94 100644
--- a/extension/package.json
+++ b/extension/package.json
@@ -14,7 +14,7 @@
"displayName": "Continue",
"pricing": "Free",
"description": "The open-source coding autopilot",
- "version": "0.0.162",
+ "version": "0.0.163",
"publisher": "Continue",
"engines": {
"vscode": "^1.67.0"
diff --git a/extension/react-app/src/components/ComboBox.tsx b/extension/react-app/src/components/ComboBox.tsx
index 7d6541c7..73db33ca 100644
--- a/extension/react-app/src/components/ComboBox.tsx
+++ b/extension/react-app/src/components/ComboBox.tsx
@@ -1,29 +1,16 @@
-import React, {
- useCallback,
- useEffect,
- useImperativeHandle,
- useState,
-} from "react";
+import React, { useEffect, useImperativeHandle, useState } from "react";
import { useCombobox } from "downshift";
import styled from "styled-components";
import {
- buttonColor,
defaultBorderRadius,
lightGray,
secondaryDark,
vscBackground,
} from ".";
import CodeBlock from "./CodeBlock";
-import { RangeInFile } from "../../../src/client";
import PillButton from "./PillButton";
import HeaderButtonWithText from "./HeaderButtonWithText";
-import {
- Trash,
- LockClosed,
- LockOpen,
- Plus,
- DocumentPlus,
-} from "@styled-icons/heroicons-outline";
+import { DocumentPlus } from "@styled-icons/heroicons-outline";
import { HighlightedRangeContext } from "../../../schema/FullState";
// #region styled components
diff --git a/extension/react-app/src/components/Onboarding.tsx b/extension/react-app/src/components/Onboarding.tsx
index e2dd6f57..6bfb0ccd 100644
--- a/extension/react-app/src/components/Onboarding.tsx
+++ b/extension/react-app/src/components/Onboarding.tsx
@@ -22,6 +22,7 @@ const StyledSpan = styled.span`
&:hover {
background-color: #ffffff33;
}
+ white-space: nowrap;
`;
const Onboarding = () => {
--
cgit v1.2.3-70-g09d2
From 39cd2ef27d6ed439b00a9edec4a487343ff1c2c9 Mon Sep 17 00:00:00 2001
From: Nate Sesti
Date: Fri, 14 Jul 2023 03:24:46 -0700
Subject: warn of large highlighted ranges, cmd+k->m
---
continuedev/src/continuedev/core/policy.py | 2 +-
continuedev/src/continuedev/steps/help.py | 2 +-
extension/package-lock.json | 4 +-
extension/package.json | 6 +-
extension/react-app/src/components/ComboBox.tsx | 5 +
extension/react-app/src/components/Onboarding.tsx | 1 +
extension/react-app/src/components/PillButton.tsx | 167 +++++++++++++---------
extension/react-app/src/pages/gui.tsx | 27 ++--
extension/src/commands.ts | 17 ++-
extension/src/lang-server/codeLens.ts | 4 +-
10 files changed, 141 insertions(+), 94 deletions(-)
(limited to 'extension/react-app/src/components/Onboarding.tsx')
diff --git a/continuedev/src/continuedev/core/policy.py b/continuedev/src/continuedev/core/policy.py
index 59ea78b1..bc897357 100644
--- a/continuedev/src/continuedev/core/policy.py
+++ b/continuedev/src/continuedev/core/policy.py
@@ -59,7 +59,7 @@ class DemoPolicy(Policy):
return (
MessageStep(name="Welcome to Continue", message=dedent("""\
- Highlight code and ask a question or give instructions
- - Use `cmd+k` (Mac) / `ctrl+k` (Windows) to open Continue
+ - Use `cmd+m` (Mac) / `ctrl+m` (Windows) to open Continue
- Use `/help` to ask questions about how to use Continue""")) >>
WelcomeStep() >>
# SetupContinueWorkspaceStep() >>
diff --git a/continuedev/src/continuedev/steps/help.py b/continuedev/src/continuedev/steps/help.py
index 2dc3647c..ba1e6087 100644
--- a/continuedev/src/continuedev/steps/help.py
+++ b/continuedev/src/continuedev/steps/help.py
@@ -19,7 +19,7 @@ help = dedent("""\
Continue passes all of the sections of code you highlight, the code above and below the to-be edited highlighted code section, and all previous steps above input box as context to the LLM.
- You can use cmd+k (Mac) / ctrl+k (Windows) to open Continue. You can use cmd+shift+e / ctrl+shift+e to open file Explorer. You can add your own OpenAI API key to VS Code Settings with `cmd+,`
+ You can use cmd+m (Mac) / ctrl+m (Windows) to open Continue. You can use cmd+shift+e / ctrl+shift+e to open file Explorer. You can add your own OpenAI API key to VS Code Settings with `cmd+,`
If Continue is stuck loading, try using `cmd+shift+p` to open the command palette, search "Reload Window", and then select it. This will reload VS Code and Continue and often fixes issues.
diff --git a/extension/package-lock.json b/extension/package-lock.json
index 9d5c73e1..a79dd6b4 100644
--- a/extension/package-lock.json
+++ b/extension/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "continue",
- "version": "0.0.163",
+ "version": "0.0.164",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "continue",
- "version": "0.0.163",
+ "version": "0.0.164",
"license": "Apache-2.0",
"dependencies": {
"@electron/rebuild": "^3.2.10",
diff --git a/extension/package.json b/extension/package.json
index 2b0f6b94..de1f395d 100644
--- a/extension/package.json
+++ b/extension/package.json
@@ -14,7 +14,7 @@
"displayName": "Continue",
"pricing": "Free",
"description": "The open-source coding autopilot",
- "version": "0.0.163",
+ "version": "0.0.164",
"publisher": "Continue",
"engines": {
"vscode": "^1.67.0"
@@ -111,8 +111,8 @@
"keybindings": [
{
"command": "continue.focusContinueInput",
- "mac": "cmd+k",
- "key": "ctrl+k"
+ "mac": "cmd+m",
+ "key": "ctrl+m"
},
{
"command": "continue.suggestionDown",
diff --git a/extension/react-app/src/components/ComboBox.tsx b/extension/react-app/src/components/ComboBox.tsx
index 73db33ca..bd0d59b5 100644
--- a/extension/react-app/src/components/ComboBox.tsx
+++ b/extension/react-app/src/components/ComboBox.tsx
@@ -228,6 +228,11 @@ const ComboBox = React.forwardRef((props: ComboBoxProps, ref) => {
)} */}
{highlightedCodeSections.map((section, idx) => (
4000 && section.editing
+ ? "Editing such a large range may be slow"
+ : undefined
+ }
editing={section.editing}
pinned={section.pinned}
index={idx}
diff --git a/extension/react-app/src/components/Onboarding.tsx b/extension/react-app/src/components/Onboarding.tsx
index 6bfb0ccd..231c1e93 100644
--- a/extension/react-app/src/components/Onboarding.tsx
+++ b/extension/react-app/src/components/Onboarding.tsx
@@ -109,6 +109,7 @@ const Onboarding = () => {
paddingBottom: "50px",
textAlign: "center",
cursor: "pointer",
+ whiteSpace: "nowrap",
}}
>
`
}
`;
+const CircleDiv = styled.div`
+ position: absolute;
+ top: -10px;
+ right: -10px;
+ width: 20px;
+ height: 20px;
+ border-radius: 50%;
+ background-color: red;
+ color: white;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 2px;
+`;
+
interface PillButtonProps {
onHover?: (arg0: boolean) => void;
onDelete?: () => void;
@@ -55,6 +68,7 @@ interface PillButtonProps {
index: number;
editing: boolean;
pinned: boolean;
+ warning?: string;
}
const PillButton = (props: PillButtonProps) => {
@@ -63,75 +77,96 @@ const PillButton = (props: PillButtonProps) => {
return (
<>
-