Compare commits

..

21 Commits
v1.5 ... v1.6

Author SHA1 Message Date
Yifei Zhang
7f3cbaa064 Merge pull request #100 from iSource/fix-docker-access-code
fix: docker access code setting missing
2023-03-28 18:52:46 +08:00
iSource
eb72c83b7e fix: docker access code setting missing 2023-03-28 17:55:03 +08:00
Yifei Zhang
e93ea0fa97 Update README.md 2023-03-28 17:21:27 +08:00
Yifei Zhang
3b6f93afdf feat: add one-key setup script 2023-03-28 16:51:23 +08:00
Yifei Zhang
4597a2286a Update README.md 2023-03-28 14:53:07 +08:00
Yifei Zhang
780968979d Update README.md 2023-03-28 13:36:08 +08:00
Yifei Zhang
adc0db4c74 Merge pull request #76 from xiaotianxt/main
feat: CmdEnter config for submitkey, bug fix for auto scrolling
2023-03-28 13:35:36 +08:00
Yifei Zhang
f0dd95a2a3 Merge pull request #87 from Yidadaa/bugfix-0328
fix: light theme code highlight
2023-03-28 13:34:39 +08:00
Yifei Zhang
6155a190ac fix: light theme code highlight 2023-03-28 05:24:51 +00:00
xiaotianxt
493aa8c591 refactor: refocus textarea after btn clicked 2023-03-28 13:02:49 +08:00
xiaotianxt
6c82f804ae fix: Enter key bug 2023-03-28 12:56:36 +08:00
xiaotianxt
a2807c9815 fix(scroll): scroll after click submit button
The behavior of SubmitKey and SubmitButton should be the same
2023-03-28 12:56:36 +08:00
xiaotianxt
d822f333c2 feat(SubmitKey): add MetaEnter option
Add another option for MacOS user who prefer Cmd+Enter
or Linux user who prefer Meta+Enter.
2023-03-28 12:56:36 +08:00
Yifei Zhang
8f498075b9 Merge pull request #81 from iSource/fix-code-copy-button
fix: code copy button position
2023-03-28 11:57:03 +08:00
Yifei Zhang
c4bf6a6383 Merge pull request #84 from iSource/add-robots-txt
feat: add robots.txt
2023-03-28 11:56:47 +08:00
Yifei Zhang
939402b2d9 Merge pull request #85 from AprilNEA/fix-mobile
fix: fix #82, close sidebar after new session
2023-03-28 11:56:29 +08:00
AprilNEA
684a3c41ef fix: fix #82, close sidebar after new session 2023-03-28 11:51:36 +08:00
iSource
306f0850e9 feat: add robots.txt 2023-03-28 11:25:47 +08:00
iSource
55f37248f7 fix: code copy button position 2023-03-28 10:50:50 +08:00
Yifei Zhang
c93a46a02f Update README.md 2023-03-28 02:15:52 +08:00
Yifei Zhang
77a3fdea5f Update README.md 2023-03-27 23:02:39 +08:00
9 changed files with 118 additions and 45 deletions

View File

@@ -7,7 +7,7 @@
One-Click to deploy your own ChatGPT web UI.
[演示 Demo](https://chat-gpt-next-web.vercel.app/) / [反馈 Issues](https://github.com/Yidadaa/ChatGPT-Next-Web/issues) / [加入 Discord](https://discord.gg/zrhvHCr79N) / [微信](https://user-images.githubusercontent.com/16968934/227772522-b3ba3713-9206-4c8d-a81f-22300b7c313a.jpg) / [打赏开发者](https://user-images.githubusercontent.com/16968934/227772541-5bcd52d8-61b7-488c-a203-0330d8006e2b.jpg)
[演示 Demo](https://chat-gpt-next-web.vercel.app/) / [反馈 Issues](https://github.com/Yidadaa/ChatGPT-Next-Web/issues) / [加入 Discord](https://discord.gg/zrhvHCr79N) / [QQ ](https://user-images.githubusercontent.com/16968934/228190818-7dd00845-e9b9-4363-97e5-44c507ac76da.jpeg) / [打赏开发者](https://user-images.githubusercontent.com/16968934/227772541-5bcd52d8-61b7-488c-a203-0330d8006e2b.jpg)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FYidadaa%2FChatGPT-Next-Web&env=OPENAI_API_KEY&project-name=chatgpt-next-web&repository-name=ChatGPT-Next-Web)
@@ -116,25 +116,17 @@ OPENAI_API_KEY=<your api key here>
2. 执行 `yarn install && yarn dev` 即可。
### 本地部署 Local Deployment
请直接询问 ChatGPT使用下列 Prompt
```
如何使用 pm2 和 yarn 部署 nextjs 项目到 ubuntu 服务器上,项目编译命令为 yarn build启动命令为 yarn start启动时需要设置环境变量为 OPENAI_API_KEY端口为 3000使用 ngnix 做反向代理
```shell
bash <(curl -s https://raw.githubusercontent.com/Yidadaa/ChatGPT-Next-Web/main/scripts/setup.sh)
```
Please ask ChatGPT with prompt:
```
how to deploy nextjs project with pm2 and yarn on my ubuntu server, the build command is `yarn build`, the start command is `yarn start`, the project must start with env var named `OPENAI_API_KEY`, the port is 3000, use ngnix
```
### 容器部署 Docker Deployment
```shell
docker pull yidadaa/chatgpt-next-web
docker run -d -p 3000:3000 -e OPEN_API_KEY="" -e CODE="" aprilnea/chatgpt-next-web
docker run -d -p 3000:3000 -e OPENAI_API_KEY="" -e CODE="" yidadaa/chatgpt-next-web
```
## 截图 Screenshots
@@ -159,10 +151,14 @@ If you would like to contribute your API key, you can email it to the author and
[@mushan0x0](https://github.com/mushan0x0)
[@ClarenceDan](https://github.com/ClarenceDan)
[@zhangjia](https://github.com/zhangjia)
### 贡献者 Contributor
[@AprilNEA](https://github.com/AprilNEA)
[@iSource](https://github.com/iSource)
[@iFwu](https://github.com/iFwu)
[@xiaotianxt](https://github.com/xiaotianxt)
## LICENSE

View File

@@ -14,3 +14,4 @@ export function getAccessCodes(): Set<string> {
}
export const ACCESS_CODES = getAccessCodes();
export const IS_IN_DOCKER = process.env.DOCKER;

View File

@@ -131,10 +131,12 @@ function useSubmitHandler() {
(config.submitKey === SubmitKey.AltEnter && e.altKey) ||
(config.submitKey === SubmitKey.CtrlEnter && e.ctrlKey) ||
(config.submitKey === SubmitKey.ShiftEnter && e.shiftKey) ||
(config.submitKey === SubmitKey.MetaEnter && e.metaKey) ||
(config.submitKey === SubmitKey.Enter &&
!e.altKey &&
!e.ctrlKey &&
!e.shiftKey)
!e.shiftKey &&
!e.metaKey)
);
};
@@ -163,6 +165,7 @@ export function Chat(props: { showSideBar?: () => void }) {
setIsLoading(true);
onUserInput(userInput).then(() => setIsLoading(false));
setUserInput("");
inputRef.current?.focus();
};
// stop response
@@ -203,6 +206,7 @@ export function Chat(props: { showSideBar?: () => void }) {
// for auto-scroll
const latestMessageRef = useRef<HTMLDivElement>(null);
const inputRef = useRef<HTMLTextAreaElement>(null);
// wont scroll while hovering messages
const [autoScroll, setAutoScroll] = useState(false);
@@ -371,6 +375,7 @@ export function Chat(props: { showSideBar?: () => void }) {
<div className={styles["chat-input-panel"]}>
<div className={styles["chat-input-panel-inner"]}>
<textarea
ref={inputRef}
className={styles["chat-input"]}
placeholder={Locale.Chat.Input(submitKey)}
rows={3}
@@ -561,7 +566,10 @@ export function Home() {
<IconButton
icon={<AddIcon />}
text={Locale.Home.NewChat}
onClick={createNewSession}
onClick={()=>{
createNewSession();
setShowSideBar(false);
}}
/>
</div>
</div>

View File

@@ -3,7 +3,7 @@ import "./styles/globals.scss";
import "./styles/markdown.scss";
import "./styles/prism.scss";
import process from "child_process";
import { ACCESS_CODES } from "./api/access";
import { ACCESS_CODES, IS_IN_DOCKER } from "./api/access";
let COMMIT_ID: string | undefined;
try {
@@ -28,7 +28,7 @@ export const metadata = {
function Meta() {
const metas = {
version: COMMIT_ID ?? "unknown",
access: ACCESS_CODES.size > 0 ? "enabled" : "disabled",
access: (ACCESS_CODES.size > 0 || IS_IN_DOCKER) ? "enabled" : "disabled",
};
return (

View File

@@ -21,6 +21,7 @@ export enum SubmitKey {
CtrlEnter = "Ctrl + Enter",
ShiftEnter = "Shift + Enter",
AltEnter = "Alt + Enter",
MetaEnter = "Meta + Enter",
}
export enum Theme {

View File

@@ -839,21 +839,20 @@
.markdown-body .highlight pre,
.markdown-body pre {
padding: 16px;
padding: 16px 16px 8px 16px;
overflow: auto;
font-size: 85%;
line-height: 1.45;
background-color: var(--color-canvas-subtle);
border-radius: 6px;
}
.markdown-body pre code,
.markdown-body pre tt {
display: inline;
max-width: auto;
display: inline-block;
max-width: 100%;
padding: 0;
margin: 0;
overflow: visible;
overflow-x: scroll;
line-height: inherit;
word-wrap: normal;
background-color: transparent;

View File

@@ -121,32 +121,32 @@
}
}
// @mixin light {
// .markdown-body pre[class*="language-"] {
// filter: invert(1) hue-rotate(50deg) brightness(1.3);
// }
// }
@mixin light {
.markdown-body pre {
filter: invert(1) hue-rotate(90deg) brightness(1.3);
}
}
// @mixin dark {
// .markdown-body pre[class*="language-"] {
// filter: none;
// }
// }
@mixin dark {
.markdown-body pre {
filter: none;
}
}
// :root {
// @include light();
// }
:root {
@include light();
}
// .light {
// @include light();
// }
.light {
@include light();
}
// .dark {
// @include dark();
// }
.dark {
@include dark();
}
// @media (prefers-color-scheme: dark) {
// :root {
// @include dark();
// }
// }
@media (prefers-color-scheme: dark) {
:root {
@include dark();
}
}

4
public/robots.txt Normal file
View File

@@ -0,0 +1,4 @@
User-agent: *
Disallow: /
User-agent: vitals.vercel-insights.com
Allow: /

64
scripts/setup.sh Normal file
View File

@@ -0,0 +1,64 @@
#!/bin/bash
# Check if running on a supported system
case "$(uname -s)" in
Linux)
if [[ -f "/etc/lsb-release" ]]; then
. /etc/lsb-release
if [[ "$DISTRIB_ID" != "Ubuntu" ]]; then
echo "This script only works on Ubuntu, not $DISTRIB_ID."
exit 1
fi
else
if [[ ! "$(cat /etc/*-release | grep '^ID=')" =~ ^(ID=\"ubuntu\")|(ID=\"centos\")|(ID=\"arch\")$ ]]; then
echo "Unsupported Linux distribution."
exit 1
fi
fi
;;
Darwin)
echo "Running on MacOS."
;;
*)
echo "Unsupported operating system."
exit 1
;;
esac
# Check if needed dependencies are installed and install if necessary
if ! command -v node >/dev/null || ! command -v git >/dev/null || ! command -v yarn >/dev/null; then
case "$(uname -s)" in
Linux)
if [[ "$(cat /etc/*-release | grep '^ID=')" = "ID=\"ubuntu\"" ]]; then
sudo apt-get update
sudo apt-get -y install nodejs git yarn
elif [[ "$(cat /etc/*-release | grep '^ID=')" = "ID=\"centos\"" ]]; then
sudo yum -y install epel-release
sudo yum -y install nodejs git yarn
elif [[ "$(cat /etc/*-release | grep '^ID=')" = "ID=\"arch\"" ]]; then
sudo pacman -Syu -y
sudo pacman -S -y nodejs git yarn
else
echo "Unsupported Linux distribution"
exit 1
fi
;;
Darwin)
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install node git yarn
;;
esac
fi
# Clone the repository and install dependencies
git clone https://github.com/Yidadaa/ChatGPT-Next-Web
cd ChatGPT-Next-Web
yarn install
# Prompt user for environment variables
read -p "Enter OPENAI_API_KEY: " OPENAI_API_KEY
read -p "Enter CODE: " CODE
read -p "Enter PORT: " PORT
# Build and run the project using the environment variables
OPENAI_API_KEY=$OPENAI_API_KEY CODE=$CODE PORT=$PORT yarn build && OPENAI_API_KEY=$OPENAI_API_KEY CODE=$CODE PORT=$PORT yarn start