summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNate Sesti <sestinj@gmail.com>2023-07-06 00:25:41 -0700
committerNate Sesti <sestinj@gmail.com>2023-07-06 00:25:41 -0700
commit1f4878f89549e6c9ccc3483a47b9f3a95c6ee9f4 (patch)
tree8b5e973a31e95009f975e8fadf1521d044c6ac27
parent9371b7da2122ad3525b00f377ecf829b0d904b47 (diff)
downloadsncontinue-1f4878f89549e6c9ccc3483a47b9f3a95c6ee9f4.tar.gz
sncontinue-1f4878f89549e6c9ccc3483a47b9f3a95c6ee9f4.tar.bz2
sncontinue-1f4878f89549e6c9ccc3483a47b9f3a95c6ee9f4.zip
fixing command history and dropdown
-rw-r--r--extension/package-lock.json4
-rw-r--r--extension/package.json2
-rw-r--r--extension/react-app/src/components/ComboBox.tsx53
-rw-r--r--extension/react-app/src/components/StepContainer.tsx2
-rw-r--r--extension/react-app/src/tabs/gui.tsx11
5 files changed, 44 insertions, 28 deletions
diff --git a/extension/package-lock.json b/extension/package-lock.json
index b322acb7..b34d1c61 100644
--- a/extension/package-lock.json
+++ b/extension/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "continue",
- "version": "0.0.113",
+ "version": "0.0.114",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "continue",
- "version": "0.0.113",
+ "version": "0.0.114",
"license": "Apache-2.0",
"dependencies": {
"@electron/rebuild": "^3.2.10",
diff --git a/extension/package.json b/extension/package.json
index 09703da4..4c972e86 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.113",
+ "version": "0.0.114",
"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 7ee5dc24..af673b42 100644
--- a/extension/react-app/src/components/ComboBox.tsx
+++ b/extension/react-app/src/components/ComboBox.tsx
@@ -79,7 +79,7 @@ const MainTextInput = styled.textarea`
}
`;
-const UlMaxHeight = 400;
+const UlMaxHeight = 300;
const Ul = styled.ul<{
hidden: boolean;
showAbove: boolean;
@@ -94,13 +94,20 @@ const Ul = styled.ul<{
background-color: ${secondaryDark};
color: white;
max-height: ${UlMaxHeight}px;
- overflow: scroll;
+ overflow-y: scroll;
+ overflow-x: hidden;
padding: 0;
${({ hidden }) => hidden && "display: none;"}
border-radius: ${defaultBorderRadius};
- overflow: hidden;
border: 0.5px solid gray;
z-index: 2;
+ // Get rid of scrollbar and its padding
+ scrollbar-width: none;
+ -ms-overflow-style: none;
+ &::-webkit-scrollbar {
+ width: 0px;
+ background: transparent; /* make scrollbar transparent */
+ }
`;
const Li = styled.li<{
@@ -108,7 +115,7 @@ const Li = styled.li<{
selected: boolean;
isLastItem: boolean;
}>`
- ${({ highlighted }) => highlighted && "background: #aa0000;"}
+ ${({ highlighted }) => highlighted && "background: #ff000066;"}
${({ selected }) => selected && "font-weight: bold;"}
padding: 0.5rem 0.75rem;
display: flex;
@@ -272,6 +279,12 @@ const ComboBox = React.forwardRef((props: ComboBoxProps, ref) => {
event.key === "Enter" &&
(!isOpen || items.length === 0)
) {
+ setInputValue("");
+ const value = event.currentTarget.value;
+ if (value !== "") {
+ setPositionInHistory(history.length + 1);
+ setHistory([...history, value]);
+ }
// Prevent Downshift's default 'Enter' behavior.
(event.nativeEvent as any).preventDownshiftDefault = true;
@@ -280,33 +293,28 @@ const ComboBox = React.forwardRef((props: ComboBoxProps, ref) => {
event.currentTarget.value = `/edit ${event.currentTarget.value}`;
}
if (props.onEnter) props.onEnter(event);
- setInputValue("");
- const value = event.currentTarget.value;
- if (value !== "") {
- setPositionInHistory(history.length + 1);
- setHistory([...history, value]);
- }
} else if (event.key === "Tab" && items.length > 0) {
setInputValue(items[0].name);
event.preventDefault();
} else if (
- event.key === "ArrowUp" ||
- (event.key === "ArrowDown" &&
- event.currentTarget.value.split("\n").length > 1)
- ) {
- (event.nativeEvent as any).preventDownshiftDefault = true;
- } else if (
- event.key === "ArrowUp" &&
+ (event.key === "ArrowUp" || event.key === "ArrowDown") &&
event.currentTarget.value.split("\n").length > 1
) {
+ (event.nativeEvent as any).preventDownshiftDefault = true;
+ } else if (event.key === "ArrowUp") {
+ console.log("OWJFOIJO");
if (positionInHistory == 0) return;
+ else if (
+ positionInHistory == history.length &&
+ (history.length === 0 ||
+ history[history.length - 1] !== event.currentTarget.value)
+ ) {
+ setHistory([...history, event.currentTarget.value]);
+ }
setInputValue(history[positionInHistory - 1]);
setPositionInHistory((prev) => prev - 1);
- } else if (
- event.key === "ArrowDown" &&
- event.currentTarget.value.split("\n").length > 1
- ) {
- if (positionInHistory < history.length - 1) {
+ } else if (event.key === "ArrowDown") {
+ if (positionInHistory < history.length) {
setInputValue(history[positionInHistory + 1]);
}
setPositionInHistory((prev) =>
@@ -327,6 +335,7 @@ const ComboBox = React.forwardRef((props: ComboBoxProps, ref) => {
{isOpen &&
items.map((item, index) => (
<Li
+ style={{ borderTop: index === 0 ? "none" : undefined }}
key={`${item.name}${index}`}
{...getItemProps({ item, index })}
highlighted={highlightedIndex === index}
diff --git a/extension/react-app/src/components/StepContainer.tsx b/extension/react-app/src/components/StepContainer.tsx
index 91d7b8ef..590b1166 100644
--- a/extension/react-app/src/components/StepContainer.tsx
+++ b/extension/react-app/src/components/StepContainer.tsx
@@ -206,7 +206,7 @@ function StepContainer(props: StepContainerProps) {
e.stopPropagation();
props.onDelete();
}}
- text={props.historyNode.active ? "Stop" : "Delete"}
+ text={props.historyNode.active ? "Stop (⌘⌫)" : "Delete"}
>
{props.historyNode.active ? (
<StopCircle size="1.6em" onClick={props.onDelete} />
diff --git a/extension/react-app/src/tabs/gui.tsx b/extension/react-app/src/tabs/gui.tsx
index 3cce30de..ca369547 100644
--- a/extension/react-app/src/tabs/gui.tsx
+++ b/extension/react-app/src/tabs/gui.tsx
@@ -139,9 +139,16 @@ function GUI(props: GUIProps) {
useEffect(() => {
const listener = (e: any) => {
- // Cmd + J to toggle fast model
+ // Cmd + i to toggle fast model
if (e.key === "i" && e.metaKey && e.shiftKey) {
setUsingFastModel((prev) => !prev);
+ // Cmd + backspace to stop currently running step
+ } else if (
+ e.key === "Backspace" &&
+ e.metaKey &&
+ typeof history?.current_index !== "undefined"
+ ) {
+ client?.deleteAtIndex(history.current_index);
}
};
window.addEventListener("keydown", listener);
@@ -149,7 +156,7 @@ function GUI(props: GUIProps) {
return () => {
window.removeEventListener("keydown", listener);
};
- }, []);
+ }, [client, history]);
useEffect(() => {
client?.onStateUpdate((state: FullState) => {