From d89a12aa0529b25d449f48cf04c847ab8dbfb1e0 Mon Sep 17 00:00:00 2001
From: DeanYao <138353356+Dean-YZG@users.noreply.github.com>
Date: Mon, 20 May 2024 19:02:46 +0800
Subject: [PATCH] Revert "Chat gpt"
---
app/api/common.ts | 20 +-
app/client/platforms/google.ts | 6 +-
app/components/auth.tsx | 54 +-
app/components/chat.tsx | 177 ++---
app/components/settings.tsx | 947 ++++++++++++++------------
app/components/sidebar.tsx | 65 +-
app/constant.ts | 2 +-
app/icons/diit.svg | 1 -
app/layout.tsx | 7 +-
app/locales/cn.ts | 2 +-
app/locales/index.ts | 30 +-
app/masks/index.ts | 8 +-
app/store/config.ts | 6 +-
app/store/sync.ts | 8 +-
package.json | 2 +-
public/android-chrome-192x192.png | Bin 9828 -> 16447 bytes
public/android-chrome-512x512.png | Bin 8820 -> 66831 bytes
public/apple-touch-icon.png | Bin 8655 -> 12762 bytes
public/favicon-16x16.png | Bin 633 -> 719 bytes
public/favicon-32x32.png | Bin 1249 -> 1596 bytes
public/favicon.ico | Bin 15406 -> 15406 bytes
public/macos.png | Bin 26127 -> 59228 bytes
src-tauri/icons/128x128.png | Bin 12367 -> 14062 bytes
src-tauri/icons/128x128@2x.png | Bin 25655 -> 38959 bytes
src-tauri/icons/32x32.png | Bin 1981 -> 2316 bytes
src-tauri/icons/Square107x107Logo.png | Bin 10348 -> 10892 bytes
src-tauri/icons/Square142x142Logo.png | Bin 13869 -> 16478 bytes
src-tauri/icons/Square150x150Logo.png | Bin 14828 -> 17934 bytes
src-tauri/icons/Square284x284Logo.png | Bin 29795 -> 46057 bytes
src-tauri/icons/Square30x30Logo.png | Bin 1861 -> 2195 bytes
src-tauri/icons/Square310x310Logo.png | Bin 33057 -> 53034 bytes
src-tauri/icons/Square44x44Logo.png | Bin 3122 -> 3377 bytes
src-tauri/icons/Square71x71Logo.png | Bin 5993 -> 6173 bytes
src-tauri/icons/Square89x89Logo.png | Bin 8002 -> 8355 bytes
src-tauri/icons/StoreLogo.png | Bin 3777 -> 3994 bytes
src-tauri/icons/icon.icns | Bin 271908 -> 635277 bytes
src-tauri/icons/icon.ico | Bin 41222 -> 54947 bytes
src-tauri/icons/icon.png | Bin 18550 -> 66831 bytes
38 files changed, 696 insertions(+), 639 deletions(-)
delete mode 100644 app/icons/diit.svg
diff --git a/app/api/common.ts b/app/api/common.ts
index fcb3d9236..a75f2de5c 100644
--- a/app/api/common.ts
+++ b/app/api/common.ts
@@ -112,16 +112,16 @@ export async function requestOpenai(req: NextRequest) {
try {
const res = await fetch(fetchUrl, fetchOptions);
- // Extract the OpenAI-Organization header from the response
- const openaiOrganizationHeader = res.headers.get("OpenAI-Organization");
+ // Extract the OpenAI-Organization header from the response
+ const openaiOrganizationHeader = res.headers.get("OpenAI-Organization");
- // Check if serverConfig.openaiOrgId is defined and not an empty string
- if (serverConfig.openaiOrgId && serverConfig.openaiOrgId.trim() !== "") {
- // If openaiOrganizationHeader is present, log it; otherwise, log that the header is not present
- console.log("[Org ID]", openaiOrganizationHeader);
- } else {
- console.log("[Org ID] is not set up.");
- }
+ // Check if serverConfig.openaiOrgId is defined and not an empty string
+ if (serverConfig.openaiOrgId && serverConfig.openaiOrgId.trim() !== "") {
+ // If openaiOrganizationHeader is present, log it; otherwise, log that the header is not present
+ console.log("[Org ID]", openaiOrganizationHeader);
+ } else {
+ console.log("[Org ID] is not set up.");
+ }
// to prevent browser prompt for credentials
const newHeaders = new Headers(res.headers);
@@ -129,6 +129,7 @@ export async function requestOpenai(req: NextRequest) {
// to disable nginx buffering
newHeaders.set("X-Accel-Buffering", "no");
+
// Conditionally delete the OpenAI-Organization header from the response if [Org ID] is undefined or empty (not setup in ENV)
// Also, this is to prevent the header from being sent to the client
if (!serverConfig.openaiOrgId || serverConfig.openaiOrgId.trim() === "") {
@@ -141,6 +142,7 @@ export async function requestOpenai(req: NextRequest) {
// The browser will try to decode the response with brotli and fail
newHeaders.delete("content-encoding");
+
return new Response(res.body, {
status: res.status,
statusText: res.statusText,
diff --git a/app/client/platforms/google.ts b/app/client/platforms/google.ts
index b6eb8d3df..a786f5275 100644
--- a/app/client/platforms/google.ts
+++ b/app/client/platforms/google.ts
@@ -120,9 +120,7 @@ export class GeminiProApi implements LLMApi {
if (!baseUrl) {
baseUrl = isApp
- ? DEFAULT_API_HOST +
- "/api/proxy/google/" +
- Google.ChatPath(modelConfig.model)
+ ? DEFAULT_API_HOST + "/api/proxy/google/" + Google.ChatPath(modelConfig.model)
: this.path(Google.ChatPath(modelConfig.model));
}
@@ -141,7 +139,7 @@ export class GeminiProApi implements LLMApi {
() => controller.abort(),
REQUEST_TIMEOUT_MS,
);
-
+
if (shouldStream) {
let responseText = "";
let remainText = "";
diff --git a/app/components/auth.tsx b/app/components/auth.tsx
index 5c8b4fc00..57118349b 100644
--- a/app/components/auth.tsx
+++ b/app/components/auth.tsx
@@ -50,33 +50,33 @@ export function AuthPage() {
);
}}
/>
- {/*{!accessStore.hideUserApiKey ? (*/}
- {/* <>*/}
- {/*
{Locale.Auth.SubTips}
*/}
- {/* {*/}
- {/* accessStore.update(*/}
- {/* (access) => (access.openaiApiKey = e.currentTarget.value),*/}
- {/* );*/}
- {/* }}*/}
- {/* />*/}
- {/* {*/}
- {/* accessStore.update(*/}
- {/* (access) => (access.googleApiKey = e.currentTarget.value),*/}
- {/* );*/}
- {/* }}*/}
- {/* />*/}
- {/* >*/}
- {/*) : null}*/}
+ {!accessStore.hideUserApiKey ? (
+ <>
+ {Locale.Auth.SubTips}
+ {
+ accessStore.update(
+ (access) => (access.openaiApiKey = e.currentTarget.value),
+ );
+ }}
+ />
+ {
+ accessStore.update(
+ (access) => (access.googleApiKey = e.currentTarget.value),
+ );
+ }}
+ />
+ >
+ ) : null}
- {/*{couldStop && (*/}
- {/* }*/}
- {/* />*/}
- {/*)}*/}
- {/*{!props.hitBottom && (*/}
- {/* }*/}
- {/* />*/}
- {/*)}*/}
- {/*{props.hitBottom && (*/}
- {/* }*/}
- {/* />*/}
- {/*)}*/}
+ {couldStop && (
+ }
+ />
+ )}
+ {!props.hitBottom && (
+ }
+ />
+ )}
+ {props.hitBottom && (
+ }
+ />
+ )}
- {/*{showUploadImage && (*/}
- {/* : }*/}
- {/* />*/}
- {/*)}*/}
- {/**/}
- {/* {theme === Theme.Auto ? (*/}
- {/* */}
- {/* ) : theme === Theme.Light ? (*/}
- {/* */}
- {/* ) : theme === Theme.Dark ? (*/}
- {/* */}
- {/* ) : null}*/}
- {/* >*/}
- {/* }*/}
- {/*/>*/}
+ {showUploadImage && (
+ : }
+ />
+ )}
+
+ {theme === Theme.Auto ? (
+
+ ) : theme === Theme.Light ? (
+
+ ) : theme === Theme.Dark ? (
+
+ ) : null}
+ >
+ }
+ />
- {/*}*/}
- {/*/>*/}
+ }
+ />
- {/* {*/}
- {/* navigate(Path.Masks);*/}
- {/* }}*/}
- {/* text={Locale.Chat.InputActions.Masks}*/}
- {/* icon={}*/}
- {/*/>*/}
+ {
+ navigate(Path.Masks);
+ }}
+ text={Locale.Chat.InputActions.Masks}
+ icon={}
+ />
- {/*}*/}
- {/* onClick={() => {*/}
- {/* chatStore.updateCurrentSession((session) => {*/}
- {/* if (session.clearContextIndex === session.messages.length) {*/}
- {/* session.clearContextIndex = undefined;*/}
- {/* } else {*/}
- {/* session.clearContextIndex = session.messages.length;*/}
- {/* session.memoryPrompt = ""; // will clear memory*/}
- {/* }*/}
- {/* });*/}
- {/* }}*/}
- {/*/>*/}
+ }
+ onClick={() => {
+ chatStore.updateCurrentSession((session) => {
+ if (session.clearContextIndex === session.messages.length) {
+ session.clearContextIndex = undefined;
+ } else {
+ session.clearContextIndex = session.messages.length;
+ session.memoryPrompt = ""; // will clear memory
+ }
+ });
+ }}
+ />
setShowModelSelector(true)}
@@ -1089,6 +1089,7 @@ function _Chat() {
if (payload.url) {
accessStore.update((access) => (access.openaiUrl = payload.url!));
}
+ accessStore.update((access) => (access.useCustomConfig = true));
});
}
} catch {
@@ -1233,25 +1234,25 @@ function _Chat() {
- {/*{!isMobileScreen && (*/}
- {/*
*/}
- {/* }*/}
- {/* bordered*/}
- {/* onClick={() => setIsEditingMessage(true)}*/}
- {/* />*/}
- {/*
*/}
- {/*)}*/}
- {/*
*/}
- {/* }*/}
- {/* bordered*/}
- {/* title={Locale.Chat.Actions.Export}*/}
- {/* onClick={() => {*/}
- {/* setShowExport(true);*/}
- {/* }}*/}
- {/* />*/}
- {/*
*/}
+ {!isMobileScreen && (
+
+ }
+ bordered
+ onClick={() => setIsEditingMessage(true)}
+ />
+
+ )}
+
+ }
+ bordered
+ title={Locale.Chat.Actions.Export}
+ onClick={() => {
+ setShowExport(true);
+ }}
+ />
+
{showMaxIcon && (
- {/**/}
- {/* {checkingUpdate ? (*/}
- {/* */}
- {/* ) : hasNewVersion ? (*/}
- {/* */}
- {/* {Locale.Settings.Update.GoToUpdate}*/}
- {/* */}
- {/* ) : (*/}
- {/* }*/}
- {/* text={Locale.Settings.Update.CheckUpdate}*/}
- {/* onClick={() => checkUpdate(true)}*/}
- {/* />*/}
- {/* )}*/}
- {/**/}
+
+ {checkingUpdate ? (
+
+ ) : hasNewVersion ? (
+
+ {Locale.Settings.Update.GoToUpdate}
+
+ ) : (
+ }
+ text={Locale.Settings.Update.CheckUpdate}
+ onClick={() => checkUpdate(true)}
+ />
+ )}
+
- {/**/}
- {/* */}
- {/**/}
+
+
+
- {/**/}
- {/* */}
- {/**/}
+
+
+
- {/**/}
- {/* */}
- {/**/}
+
+
+
- {/**/}
- {/* */}
- {/* updateConfig(*/}
- {/* (config) =>*/}
- {/* (config.enableAutoGenerateTitle = e.currentTarget.checked),*/}
- {/* )*/}
- {/* }*/}
- {/* >*/}
- {/**/}
+
+
+ updateConfig(
+ (config) =>
+ (config.enableAutoGenerateTitle = e.currentTarget.checked),
+ )
+ }
+ >
+
- {/**/}
- {/* */}
- {/* updateConfig(*/}
- {/* (config) =>*/}
- {/* (config.sendPreviewBubble = e.currentTarget.checked),*/}
- {/* )*/}
- {/* }*/}
- {/* >*/}
- {/**/}
+
+
+ updateConfig(
+ (config) =>
+ (config.sendPreviewBubble = e.currentTarget.checked),
+ )
+ }
+ >
+
- {/**/}
+
- {/**/}
- {/* */}
- {/* */}
- {/* updateConfig(*/}
- {/* (config) =>*/}
- {/* (config.dontShowMaskSplashScreen =*/}
- {/* !e.currentTarget.checked),*/}
- {/* )*/}
- {/* }*/}
- {/* >*/}
- {/* */}
+
+
+
+ updateConfig(
+ (config) =>
+ (config.dontShowMaskSplashScreen =
+ !e.currentTarget.checked),
+ )
+ }
+ >
+
- {/* */}
- {/* */}
- {/* updateConfig(*/}
- {/* (config) =>*/}
- {/* (config.hideBuiltinMasks = e.currentTarget.checked),*/}
- {/* )*/}
- {/* }*/}
- {/* >*/}
- {/* */}
- {/*
*/}
+
+
+ updateConfig(
+ (config) =>
+ (config.hideBuiltinMasks = e.currentTarget.checked),
+ )
+ }
+ >
+
+
- {/**/}
- {/* */}
- {/* */}
- {/* updateConfig(*/}
- {/* (config) =>*/}
- {/* (config.disablePromptHint = e.currentTarget.checked),*/}
- {/* )*/}
- {/* }*/}
- {/* >*/}
- {/* */}
+
+
+
+ updateConfig(
+ (config) =>
+ (config.disablePromptHint = e.currentTarget.checked),
+ )
+ }
+ >
+
- {/* */}
- {/* }*/}
- {/* text={Locale.Settings.Prompt.Edit}*/}
- {/* onClick={() => setShowPromptModal(true)}*/}
- {/* />*/}
- {/* */}
- {/*
*/}
+
+ }
+ text={Locale.Settings.Prompt.Edit}
+ onClick={() => setShowPromptModal(true)}
+ />
+
+
- {/**/}
- {/* {showAccessCode && (*/}
- {/* */}
- {/* {*/}
- {/* accessStore.update(*/}
- {/* (access) => (access.accessCode = e.currentTarget.value),*/}
- {/* );*/}
- {/* }}*/}
- {/* />*/}
- {/* */}
- {/* )}*/}
+
+ {showAccessCode && (
+
+ {
+ accessStore.update(
+ (access) => (access.accessCode = e.currentTarget.value),
+ );
+ }}
+ />
+
+ )}
- {/* {!accessStore.hideUserApiKey && (*/}
- {/* <>*/}
- {/* {*/}
- {/* // Conditionally render the following ListItem based on clientConfig.isApp*/}
- {/* !clientConfig?.isApp && ( // only show if isApp is false*/}
- {/* */}
- {/* */}
- {/* accessStore.update(*/}
- {/* (access) =>*/}
- {/* (access.useCustomConfig = e.currentTarget.checked),*/}
- {/* )*/}
- {/* }*/}
- {/* >*/}
- {/* */}
- {/* )*/}
- {/* }*/}
- {/* {accessStore.useCustomConfig && (*/}
- {/* <>*/}
- {/* */}
- {/* */}
- {/* */}
+ {!accessStore.hideUserApiKey && (
+ <>
+ {
+ // Conditionally render the following ListItem based on clientConfig.isApp
+ !clientConfig?.isApp && ( // only show if isApp is false
+
+
+ accessStore.update(
+ (access) =>
+ (access.useCustomConfig = e.currentTarget.checked),
+ )
+ }
+ >
+
+ )
+ }
+ {accessStore.useCustomConfig && (
+ <>
+
+
+
- {/* {accessStore.provider === "OpenAI" ? (*/}
- {/* <>*/}
- {/* */}
- {/* */}
- {/* accessStore.update(*/}
- {/* (access) =>*/}
- {/* (access.openaiUrl = e.currentTarget.value),*/}
- {/* )*/}
- {/* }*/}
- {/* >*/}
- {/* */}
- {/* */}
- {/* {*/}
- {/* accessStore.update(*/}
- {/* (access) =>*/}
- {/* (access.openaiApiKey = e.currentTarget.value),*/}
- {/* );*/}
- {/* }}*/}
- {/* />*/}
- {/* */}
- {/* >*/}
- {/* ) : accessStore.provider === "Azure" ? (*/}
- {/* <>*/}
- {/* */}
- {/* */}
- {/* accessStore.update(*/}
- {/* (access) =>*/}
- {/* (access.azureUrl = e.currentTarget.value),*/}
- {/* )*/}
- {/* }*/}
- {/* >*/}
- {/* */}
- {/* */}
- {/* {*/}
- {/* accessStore.update(*/}
- {/* (access) =>*/}
- {/* (access.azureApiKey = e.currentTarget.value),*/}
- {/* );*/}
- {/* }}*/}
- {/* />*/}
- {/* */}
- {/* */}
- {/* */}
- {/* accessStore.update(*/}
- {/* (access) =>*/}
- {/* (access.azureApiVersion =*/}
- {/* e.currentTarget.value),*/}
- {/* )*/}
- {/* }*/}
- {/* >*/}
- {/* */}
- {/* >*/}
- {/* ) : accessStore.provider === "Google" ? (*/}
- {/* <>*/}
- {/* */}
- {/* */}
- {/* accessStore.update(*/}
- {/* (access) =>*/}
- {/* (access.googleUrl = e.currentTarget.value),*/}
- {/* )*/}
- {/* }*/}
- {/* >*/}
- {/* */}
- {/* */}
- {/* {*/}
- {/* accessStore.update(*/}
- {/* (access) =>*/}
- {/* (access.googleApiKey = e.currentTarget.value),*/}
- {/* );*/}
- {/* }}*/}
- {/* />*/}
- {/* */}
- {/* */}
- {/* */}
- {/* accessStore.update(*/}
- {/* (access) =>*/}
- {/* (access.googleApiVersion =*/}
- {/* e.currentTarget.value),*/}
- {/* )*/}
- {/* }*/}
- {/* >*/}
- {/* */}
- {/* >*/}
- {/* ) : null}*/}
- {/* >*/}
- {/* )}*/}
- {/* >*/}
- {/* )}*/}
+ {accessStore.provider === ServiceProvider.OpenAI && (
+ <>
+
+
+ accessStore.update(
+ (access) =>
+ (access.openaiUrl = e.currentTarget.value),
+ )
+ }
+ >
+
+
+ {
+ accessStore.update(
+ (access) =>
+ (access.openaiApiKey = e.currentTarget.value),
+ );
+ }}
+ />
+
+ >
+ )}
+ {accessStore.provider === ServiceProvider.Azure && (
+ <>
+
+
+ accessStore.update(
+ (access) =>
+ (access.azureUrl = e.currentTarget.value),
+ )
+ }
+ >
+
+
+ {
+ accessStore.update(
+ (access) =>
+ (access.azureApiKey = e.currentTarget.value),
+ );
+ }}
+ />
+
+
+
+ accessStore.update(
+ (access) =>
+ (access.azureApiVersion =
+ e.currentTarget.value),
+ )
+ }
+ >
+
+ >
+ )}
+ {accessStore.provider === ServiceProvider.Google && (
+ <>
+
+
+ accessStore.update(
+ (access) =>
+ (access.googleUrl = e.currentTarget.value),
+ )
+ }
+ >
+
+
+ {
+ accessStore.update(
+ (access) =>
+ (access.googleApiKey = e.currentTarget.value),
+ );
+ }}
+ />
+
+
+
+ accessStore.update(
+ (access) =>
+ (access.googleApiVersion =
+ e.currentTarget.value),
+ )
+ }
+ >
+
+ >
+ )}
+ {accessStore.provider === ServiceProvider.Anthropic && (
+ <>
+
+
+ accessStore.update(
+ (access) =>
+ (access.anthropicUrl = e.currentTarget.value),
+ )
+ }
+ >
+
+
+ {
+ accessStore.update(
+ (access) =>
+ (access.anthropicApiKey =
+ e.currentTarget.value),
+ );
+ }}
+ />
+
+
+
+ accessStore.update(
+ (access) =>
+ (access.anthropicApiVersion =
+ e.currentTarget.value),
+ )
+ }
+ >
+
+ >
+ )}
+ >
+ )}
+ >
+ )}
- {/* {!shouldHideBalanceQuery && !clientConfig?.isApp ? (*/}
- {/* */}
- {/* {!showUsage || loadingUsage ? (*/}
- {/* */}
- {/* ) : (*/}
- {/* }*/}
- {/* text={Locale.Settings.Usage.Check}*/}
- {/* onClick={() => checkUsage(true)}*/}
- {/* />*/}
- {/* )}*/}
- {/* */}
- {/* ) : null}*/}
+ {!shouldHideBalanceQuery && !clientConfig?.isApp ? (
+
+ {!showUsage || loadingUsage ? (
+
+ ) : (
+ }
+ text={Locale.Settings.Usage.Check}
+ onClick={() => checkUsage(true)}
+ />
+ )}
+
+ ) : null}
- {/* */}
- {/* */}
- {/* config.update(*/}
- {/* (config) => (config.customModels = e.currentTarget.value),*/}
- {/* )*/}
- {/* }*/}
- {/* >*/}
- {/* */}
- {/*
*/}
+
+
+ config.update(
+ (config) => (config.customModels = e.currentTarget.value),
+ )
+ }
+ >
+
+
- {/**/}
- {/* {*/}
- {/* const modelConfig = { ...config.modelConfig };*/}
- {/* updater(modelConfig);*/}
- {/* config.update((config) => (config.modelConfig = modelConfig));*/}
- {/* }}*/}
- {/* />*/}
- {/*
*/}
+
+ {
+ const modelConfig = { ...config.modelConfig };
+ updater(modelConfig);
+ config.update((config) => (config.modelConfig = modelConfig));
+ }}
+ />
+
{shouldShowPromptModal && (
setShowPromptModal(false)} />
diff --git a/app/components/sidebar.tsx b/app/components/sidebar.tsx
index d62d2aa91..69b2e71f8 100644
--- a/app/components/sidebar.tsx
+++ b/app/components/sidebar.tsx
@@ -6,7 +6,6 @@ import { IconButton } from "./button";
import SettingsIcon from "../icons/settings.svg";
import GithubIcon from "../icons/github.svg";
import ChatGptIcon from "../icons/chatgpt.svg";
-import DiitIcon from "../icons/diit.svg";
import AddIcon from "../icons/add.svg";
import CloseIcon from "../icons/close.svg";
import DeleteIcon from "../icons/delete.svg";
@@ -156,38 +155,38 @@ export function SideBar(props: { className?: string }) {
>
- DiitChat
+ NextChat
+
+
+ Build your own AI assistant.
- {/*
*/}
- {/* Build your own AI assistant.*/}
- {/*
*/}
-
+
- {/**/}
- {/* }*/}
- {/* text={shouldNarrow ? undefined : Locale.Mask.Name}*/}
- {/* className={styles["sidebar-bar-button"]}*/}
- {/* onClick={() => {*/}
- {/* if (config.dontShowMaskSplashScreen !== true) {*/}
- {/* navigate(Path.NewChat, { state: { fromHome: true } });*/}
- {/* } else {*/}
- {/* navigate(Path.Masks, { state: { fromHome: true } });*/}
- {/* }*/}
- {/* }}*/}
- {/* shadow*/}
- {/* />*/}
- {/* }*/}
- {/* text={shouldNarrow ? undefined : Locale.Plugin.Name}*/}
- {/* className={styles["sidebar-bar-button"]}*/}
- {/* onClick={() => showToast(Locale.WIP)}*/}
- {/* shadow*/}
- {/* />*/}
- {/*
*/}
+
+ }
+ text={shouldNarrow ? undefined : Locale.Mask.Name}
+ className={styles["sidebar-bar-button"]}
+ onClick={() => {
+ if (config.dontShowMaskSplashScreen !== true) {
+ navigate(Path.NewChat, { state: { fromHome: true } });
+ } else {
+ navigate(Path.Masks, { state: { fromHome: true } });
+ }
+ }}
+ shadow
+ />
+ }
+ text={shouldNarrow ? undefined : Locale.Plugin.Name}
+ className={styles["sidebar-bar-button"]}
+ onClick={() => showToast(Locale.WIP)}
+ shadow
+ />
+
} shadow />
- {/*
*/}
+
\ No newline at end of file
diff --git a/app/layout.tsx b/app/layout.tsx
index 2a4da6302..5898b21a1 100644
--- a/app/layout.tsx
+++ b/app/layout.tsx
@@ -10,7 +10,7 @@ import { GoogleTagManager } from "@next/third-parties/google";
const serverConfig = getServerSideConfig();
export const metadata: Metadata = {
- title: "DiitChat",
+ title: "NextChat",
description: "Your personal ChatGPT Chat Bot.",
viewport: {
width: "device-width",
@@ -36,10 +36,7 @@ export default function RootLayout({
-
+
diff --git a/app/locales/cn.ts b/app/locales/cn.ts
index ade8618f6..2ff94e32d 100644
--- a/app/locales/cn.ts
+++ b/app/locales/cn.ts
@@ -8,7 +8,7 @@ const cn = {
Error: {
Unauthorized: isApp
? "检测到无效 API Key,请前往[设置](/#/settings)页检查 API Key 是否配置正确。"
- : "访问密码不正确或为空,请前往[登录](/#/auth)页输入正确的访问密码。",
+ : "访问密码不正确或为空,请前往[登录](/#/auth)页输入正确的访问密码,或者在[设置](/#/settings)页填入你自己的 OpenAI API Key。",
},
Auth: {
Title: "需要密码",
diff --git a/app/locales/index.ts b/app/locales/index.ts
index d1af83e81..6e8088a98 100644
--- a/app/locales/index.ts
+++ b/app/locales/index.ts
@@ -71,9 +71,9 @@ export const ALL_LANG_OPTIONS: Record = {
};
const LANG_KEY = "lang";
-const DEFAULT_LANG = "cn";
+const DEFAULT_LANG = "en";
-const fallbackLang = cn;
+const fallbackLang = en;
const targetLang = ALL_LANGS[getLang()] as LocaleType;
// if target lang missing some fields, it will use fallback lang string
@@ -104,19 +104,19 @@ function getLanguage() {
}
export function getLang(): Lang {
- // const savedLang = getItem(LANG_KEY);
- //
- // if (AllLangs.includes((savedLang ?? "") as Lang)) {
- // return savedLang as Lang;
- // }
- //
- // const lang = getLanguage();
- //
- // for (const option of AllLangs) {
- // if (lang.includes(option)) {
- // return option;
- // }
- // }
+ const savedLang = getItem(LANG_KEY);
+
+ if (AllLangs.includes((savedLang ?? "") as Lang)) {
+ return savedLang as Lang;
+ }
+
+ const lang = getLanguage();
+
+ for (const option of AllLangs) {
+ if (lang.includes(option)) {
+ return option;
+ }
+ }
return DEFAULT_LANG;
}
diff --git a/app/masks/index.ts b/app/masks/index.ts
index c17f925e8..aa4917e3e 100644
--- a/app/masks/index.ts
+++ b/app/masks/index.ts
@@ -22,8 +22,6 @@ export const BUILTIN_MASK_STORE = {
},
};
-export const BUILTIN_MASKS: BuiltinMask[] = [
- ...CN_MASKS,
- ...TW_MASKS,
- ...EN_MASKS,
-].map((m) => BUILTIN_MASK_STORE.add(m));
+export const BUILTIN_MASKS: BuiltinMask[] = [...CN_MASKS, ...TW_MASKS, ...EN_MASKS].map(
+ (m) => BUILTIN_MASK_STORE.add(m),
+);
diff --git a/app/store/config.ts b/app/store/config.ts
index ea07ceb0b..94cfcd8ec 100644
--- a/app/store/config.ts
+++ b/app/store/config.ts
@@ -33,14 +33,14 @@ export const DEFAULT_CONFIG = {
avatar: "1f603",
fontSize: 14,
theme: Theme.Auto as Theme,
- tightBorder: !!getClientConfig()?.isApp,
- sendPreviewBubble: false,
+ tightBorder: !!config?.isApp,
+ sendPreviewBubble: true,
enableAutoGenerateTitle: true,
sidebarWidth: DEFAULT_SIDEBAR_WIDTH,
disablePromptHint: false,
- dontShowMaskSplashScreen: true, // dont show splash screen when create chat
+ dontShowMaskSplashScreen: false, // dont show splash screen when create chat
hideBuiltinMasks: false, // dont add builtin masks
customModels: "",
diff --git a/app/store/sync.ts b/app/store/sync.ts
index 77f7b9cdd..d3582e3c9 100644
--- a/app/store/sync.ts
+++ b/app/store/sync.ts
@@ -100,17 +100,15 @@ export const useSyncStore = createPersistStore(
const remoteState = await client.get(config.username);
if (!remoteState || remoteState === "") {
await client.set(config.username, JSON.stringify(localState));
- console.log(
- "[Sync] Remote state is empty, using local state instead.",
- );
- return;
+ console.log("[Sync] Remote state is empty, using local state instead.");
+ return
} else {
const parsedRemoteState = JSON.parse(
await client.get(config.username),
) as AppState;
mergeAppState(localState, parsedRemoteState);
setLocalAppState(localState);
- }
+ }
} catch (e) {
console.log("[Sync] failed to get remote state", e);
throw e;
diff --git a/package.json b/package.json
index 33ce40864..4d06b0b14 100644
--- a/package.json
+++ b/package.json
@@ -65,5 +65,5 @@
"resolutions": {
"lint-staged/yaml": "^2.2.2"
},
- "version": "0.0.0"
+ "packageManager": "yarn@1.22.19"
}
diff --git a/public/android-chrome-192x192.png b/public/android-chrome-192x192.png
index 700c48286dab22eef246a5df4725706190a8fee4..797a7d86af05c598ea919358fc162687b08cb921 100644
GIT binary patch
literal 16447
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
EAD%#!Z~y=R
literal 9828
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