From 377579e80278fcad9135d500cf30f3d5f13cc117 Mon Sep 17 00:00:00 2001 From: Yifei Zhang Date: Fri, 12 May 2023 17:19:40 +0800 Subject: [PATCH 1/8] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 90ed7d42..b36f4a4a 100644 --- a/README.md +++ b/README.md @@ -265,6 +265,7 @@ bash <(curl -s https://raw.githubusercontent.com/Yidadaa/ChatGPT-Next-Web/main/s [@jhansion](https://github.com/jhansion) [@Sha1rholder](https://github.com/Sha1rholder) [@AnsonHyq](https://github.com/AnsonHyq) +[@synwith](https://github.com/synwith) ### Contributor From 93c9974019002b57d8184c23d70f68390be316c0 Mon Sep 17 00:00:00 2001 From: wsw <944627549@qq.com> Date: Fri, 12 May 2023 17:54:40 +0800 Subject: [PATCH 2/8] feat: scrolling effect when switching chat windows --- app/components/chat-list.tsx | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/app/components/chat-list.tsx b/app/components/chat-list.tsx index 02ea086b..c1365182 100644 --- a/app/components/chat-list.tsx +++ b/app/components/chat-list.tsx @@ -16,6 +16,7 @@ import { Link, useNavigate } from "react-router-dom"; import { Path } from "../constant"; import { MaskAvatar } from "./mask"; import { Mask } from "../store/mask"; +import { useRef, useEffect } from "react"; export function ChatItem(props: { onClick?: () => void; @@ -29,6 +30,14 @@ export function ChatItem(props: { narrow?: boolean; mask: Mask; }) { + const draggableRef = useRef(null); + useEffect(() => { + if (props.selected && draggableRef.current) { + draggableRef.current?.scrollIntoView({ + block: "center", + }); + } + }, [props.selected]); return ( {(provided) => ( @@ -37,7 +46,10 @@ export function ChatItem(props: { props.selected && styles["chat-item-selected"] }`} onClick={props.onClick} - ref={provided.innerRef} + ref={(ele) => { + draggableRef.current = ele; + provided.innerRef(ele); + }} {...provided.draggableProps} {...provided.dragHandleProps} title={`${props.title}\n${Locale.ChatItem.ChatItemCount( From 170936a96ef9b59ac8a95d0201c34ef6d9438644 Mon Sep 17 00:00:00 2001 From: Yorun <547747006@qq.com> Date: Fri, 12 May 2023 18:47:41 +0800 Subject: [PATCH 3/8] fix: the theme-color selector --- app/components/home.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/components/home.tsx b/app/components/home.tsx index 4c3d0a64..6b34a5a1 100644 --- a/app/components/home.tsx +++ b/app/components/home.tsx @@ -64,17 +64,17 @@ export function useSwitchTheme() { } const metaDescriptionDark = document.querySelector( - 'meta[name="theme-color"][media]', + 'meta[name="theme-color"][media*="dark"]', ); const metaDescriptionLight = document.querySelector( - 'meta[name="theme-color"]:not([media])', + 'meta[name="theme-color"][media*="light"]', ); if (config.theme === "auto") { metaDescriptionDark?.setAttribute("content", "#151515"); metaDescriptionLight?.setAttribute("content", "#fafafa"); } else { - const themeColor = getCSSVar("--themeColor"); + const themeColor = getCSSVar("--theme-color"); metaDescriptionDark?.setAttribute("content", themeColor); metaDescriptionLight?.setAttribute("content", themeColor); } From dd5604f5d9d21a5e10f9d4609072d7f118463072 Mon Sep 17 00:00:00 2001 From: Yorun <547747006@qq.com> Date: Fri, 12 May 2023 19:23:49 +0800 Subject: [PATCH 4/8] style: move nextjs supported meta tags to metadata --- app/layout.tsx | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/app/layout.tsx b/app/layout.tsx index f2e765ae..d08f87e4 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -9,11 +9,19 @@ const buildConfig = getBuildConfig(); export const metadata = { title: "ChatGPT Next Web", description: "Your personal ChatGPT Chat Bot.", + viewport: { + width: "device-width", + initialScale: 1, + maximumScale: 1, + }, + themeColor: [ + { media: "(prefers-color-scheme: light)", color: "#fafafa" }, + { media: "(prefers-color-scheme: dark)", color: "#151515" }, + ], appleWebApp: { title: "ChatGPT Next Web", statusBarStyle: "default", }, - viewport: "width=device-width, initial-scale=1, maximum-scale=1", }; export default function RootLayout({ @@ -24,22 +32,12 @@ export default function RootLayout({ return ( - - From dc3fa6c780797b8b969e6b9b485a97e2f1ce6311 Mon Sep 17 00:00:00 2001 From: PaRaD1SE98 Date: Fri, 12 May 2023 22:46:22 +0900 Subject: [PATCH 5/8] Update settings.tsx fix: typo upater -> updater --- app/components/settings.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/components/settings.tsx b/app/components/settings.tsx index 2e08c251..eb83d890 100644 --- a/app/components/settings.tsx +++ b/app/components/settings.tsx @@ -573,9 +573,9 @@ export function Settings() { { + updateConfig={(updater) => { const modelConfig = { ...config.modelConfig }; - upater(modelConfig); + updater(modelConfig); config.update((config) => (config.modelConfig = modelConfig)); }} /> From a0e192b6e4ed5717e8bcd9ec787a012c73e0a9e2 Mon Sep 17 00:00:00 2001 From: "ShengYan, Zhang" Date: Sat, 13 May 2023 07:23:14 +0800 Subject: [PATCH 6/8] fix: show Vitenamese in it's own language --- app/locales/cn.ts | 2 +- app/locales/cs.ts | 15 ++++---- app/locales/de.ts | 2 +- app/locales/en.ts | 2 +- app/locales/es.ts | 2 +- app/locales/it.ts | 2 +- app/locales/jp.ts | 2 +- app/locales/ru.ts | 97 +++++++++++++++++++++++++---------------------- app/locales/tr.ts | 2 +- app/locales/tw.ts | 2 +- app/locales/vi.ts | 4 +- 11 files changed, 68 insertions(+), 64 deletions(-) diff --git a/app/locales/cn.ts b/app/locales/cn.ts index 0cf3b55e..b955a7d2 100644 --- a/app/locales/cn.ts +++ b/app/locales/cn.ts @@ -78,7 +78,7 @@ const cn = { tr: "Türkçe", jp: "日本語", de: "Deutsch", - vi: "Vietnamese", + vi: "Tiếng Việt", ru: "Русский", cs: "Čeština", }, diff --git a/app/locales/cs.ts b/app/locales/cs.ts index ab9b39a5..6d614575 100644 --- a/app/locales/cs.ts +++ b/app/locales/cs.ts @@ -70,8 +70,8 @@ const cs: LocaleType = { }, Lang: { Name: "Language", // ATTENTION: if you wanna add a new translation, please do not translate this value, leave it as `Language` - All: "Všechny jazyky", - Options: { + All: "Všechny jazyky", + Options: { cn: "简体中文", en: "English", tw: "繁體中文", @@ -80,7 +80,7 @@ const cs: LocaleType = { tr: "Türkçe", jp: "日本語", de: "Deutsch", - vi: "Vietnamese", + vi: "Tiếng Việt", ru: "Русский", cs: "Čeština", }, @@ -166,8 +166,7 @@ const cs: LocaleType = { }, PresencePenlty: { Title: "Přítomnostní korekce", - SubTitle: - "Větší hodnota zvyšuje pravděpodobnost nových témat.", + SubTitle: "Větší hodnota zvyšuje pravděpodobnost nových témat.", }, }, Store: { @@ -182,7 +181,7 @@ const cs: LocaleType = { "Vytvořte prosím název o čtyřech až pěti slovech vystihující průběh našeho rozhovoru bez jakýchkoli úvodních slov, interpunkčních znamének, uvozovek, teček, symbolů nebo dalšího textu. Odstraňte uvozovky.", Summarize: "Krátce shrň naši diskusi v rozsahu do 200 slov a použij ji jako podnět pro budoucí kontext.", - }, + }, }, Copy: { Success: "Zkopírováno do schránky", @@ -231,7 +230,7 @@ const cs: LocaleType = { More: "Najít více", NotShow: "Nezobrazovat znovu", ConfirmNoShow: "Potvrdit zakázání?Můžete jej povolit později v nastavení.", -}, + }, UI: { Confirm: "Potvrdit", @@ -239,7 +238,7 @@ const cs: LocaleType = { Close: "Zavřít", Create: "Vytvořit", Edit: "Upravit", - } + }, }; export default cs; diff --git a/app/locales/de.ts b/app/locales/de.ts index 8cfe3be4..02510070 100644 --- a/app/locales/de.ts +++ b/app/locales/de.ts @@ -81,7 +81,7 @@ const de: LocaleType = { tr: "Türkçe", jp: "日本語", de: "Deutsch", - vi: "Vietnamese", + vi: "Tiếng Việt", ru: "Русский", cs: "Čeština", }, diff --git a/app/locales/en.ts b/app/locales/en.ts index 420f1690..b17408bd 100644 --- a/app/locales/en.ts +++ b/app/locales/en.ts @@ -80,7 +80,7 @@ const en: LocaleType = { tr: "Türkçe", jp: "日本語", de: "Deutsch", - vi: "Vietnamese", + vi: "Tiếng Việt", ru: "Русский", cs: "Čeština", }, diff --git a/app/locales/es.ts b/app/locales/es.ts index 5f66071c..b80faf23 100644 --- a/app/locales/es.ts +++ b/app/locales/es.ts @@ -80,7 +80,7 @@ const es: LocaleType = { tr: "Türkçe", jp: "日本語", de: "Deutsch", - vi: "Vietnamese", + vi: "Tiếng Việt", ru: "Русский", cs: "Čeština", }, diff --git a/app/locales/it.ts b/app/locales/it.ts index f9daa7a3..e7112166 100644 --- a/app/locales/it.ts +++ b/app/locales/it.ts @@ -80,7 +80,7 @@ const it: LocaleType = { tr: "Türkçe", jp: "日本語", de: "Deutsch", - vi: "Vietnamese", + vi: "Tiếng Việt", ru: "Русский", cs: "Čeština", }, diff --git a/app/locales/jp.ts b/app/locales/jp.ts index 526574b3..dbb9980f 100644 --- a/app/locales/jp.ts +++ b/app/locales/jp.ts @@ -80,7 +80,7 @@ const jp: LocaleType = { tr: "Türkçe", jp: "日本語", de: "Deutsch", - vi: "Vietnamese", + vi: "Tiếng Việt", ru: "Русский", cs: "Čeština", }, diff --git a/app/locales/ru.ts b/app/locales/ru.ts index 437a54b2..6770f521 100644 --- a/app/locales/ru.ts +++ b/app/locales/ru.ts @@ -80,56 +80,57 @@ const ru: LocaleType = { tr: "Türkçe", jp: "日本語", de: "Deutsch", - vi: "Vietnamese", + vi: "Tiếng Việt", ru: "Русский", cs: "Čeština", }, }, - Avatar: "Аватар", - FontSize: { - Title: "Размер шрифта", - SubTitle: "Настроить размер шрифта контента чата", + Avatar: "Аватар", + FontSize: { + Title: "Размер шрифта", + SubTitle: "Настроить размер шрифта контента чата", + }, + Update: { + Version: (x: string) => `Версия: ${x}`, + IsLatest: "Последняя версия", + CheckUpdate: "Проверить обновление", + IsChecking: "Проверка обновления...", + FoundUpdate: (x: string) => `Найдена новая версия: ${x}`, + GoToUpdate: "Обновить", + }, + SendKey: "Клавиша отправки", + Theme: "Тема", + TightBorder: "Узкая граница", + SendPreviewBubble: { + Title: "Отправить предпросмотр", + SubTitle: "Предварительный просмотр markdown в пузыре", + }, + Mask: { + Title: "Экран заставки маски", + SubTitle: "Показывать экран заставки маски перед началом нового чата", + }, + Prompt: { + Disable: { + Title: "Отключить автозаполнение", + SubTitle: "Ввод / для запуска автозаполнения", }, - Update: { - Version: (x: string) => `Версия: ${x}`, - IsLatest: "Последняя версия", - CheckUpdate: "Проверить обновление", - IsChecking: "Проверка обновления...", - FoundUpdate: (x: string) => `Найдена новая версия: ${x}`, - GoToUpdate: "Обновить", + List: "Список подсказок", + ListCount: (builtin: number, custom: number) => + `${builtin} встроенных, ${custom} пользовательских`, + Edit: "Редактировать", + Modal: { + Title: "Список подсказок", + Add: "Добавить", + Search: "Поиск подсказок", }, - SendKey: "Клавиша отправки", - Theme: "Тема", - TightBorder: "Узкая граница", - SendPreviewBubble: { - Title: "Отправить предпросмотр", - SubTitle: "Предварительный просмотр markdown в пузыре", + EditModal: { + Title: "Редактировать подсказку", }, - Mask: { - Title: "Экран заставки маски", - SubTitle: "Показывать экран заставки маски перед началом нового чата", - }, - Prompt: { - Disable: { - Title: "Отключить автозаполнение", - SubTitle: "Ввод / для запуска автозаполнения", - }, - List: "Список подсказок", - ListCount: (builtin: number, custom: number) => - `${builtin} встроенных, ${custom} пользовательских`, - Edit: "Редактировать", - Modal: { - Title: "Список подсказок", - Add: "Добавить", - Search: "Поиск подсказок", - }, - EditModal: { - Title: "Редактировать подсказку", - }, - }, - HistoryCount: { - Title: "Количество прикрепляемых сообщений", - SubTitle: "Количество отправляемых сообщений, прикрепляемых к каждому запросу", + }, + HistoryCount: { + Title: "Количество прикрепляемых сообщений", + SubTitle: + "Количество отправляемых сообщений, прикрепляемых к каждому запросу", }, CompressThreshold: { Title: "Порог сжатия истории", @@ -186,7 +187,8 @@ const ru: LocaleType = { }, Copy: { Success: "Скопировано в буфер обмена", - Failed: "Не удалось скопировать, пожалуйста, предоставьте разрешение на доступ к буферу обмена", + Failed: + "Не удалось скопировать, пожалуйста, предоставьте разрешение на доступ к буферу обмена", }, Context: { Toast: (x: any) => `С ${x} контекстными подсказками`, @@ -214,7 +216,9 @@ const ru: LocaleType = { }, EditModal: { Title: (readonly: boolean) => - `Редактирование шаблона подсказки ${readonly ? "(только для чтения)" : ""}`, + `Редактирование шаблона подсказки ${ + readonly ? "(только для чтения)" : "" + }`, Download: "Скачать", Clone: "Клонировать", }, @@ -230,7 +234,8 @@ const ru: LocaleType = { SubTitle: "Общайтесь с душой за маской", More: "Найти еще", NotShow: "Не показывать снова", - ConfirmNoShow: "Подтвердите отключение? Вы можете включить это позже в настройках.", + ConfirmNoShow: + "Подтвердите отключение? Вы можете включить это позже в настройках.", }, UI: { diff --git a/app/locales/tr.ts b/app/locales/tr.ts index 42c3f78e..e27f2858 100644 --- a/app/locales/tr.ts +++ b/app/locales/tr.ts @@ -80,7 +80,7 @@ const tr: LocaleType = { tr: "Türkçe", jp: "日本語", de: "Deutsch", - vi: "Vietnamese", + vi: "Tiếng Việt", ru: "Русский", cs: "Čeština", }, diff --git a/app/locales/tw.ts b/app/locales/tw.ts index a8dbf91a..e115a0f6 100644 --- a/app/locales/tw.ts +++ b/app/locales/tw.ts @@ -78,7 +78,7 @@ const tw: LocaleType = { tr: "Türkçe", jp: "日本語", de: "Deutsch", - vi: "Vietnamese", + vi: "Tiếng Việt", ru: "Русский", cs: "Čeština", }, diff --git a/app/locales/vi.ts b/app/locales/vi.ts index d3be6105..9568a125 100644 --- a/app/locales/vi.ts +++ b/app/locales/vi.ts @@ -2,7 +2,7 @@ import { SubmitKey } from "../store/config"; import type { LocaleType } from "./index"; const vi: LocaleType = { - WIP: "Coming Soon...", + WIP: "Sắp ra mắt...", Error: { Unauthorized: "Truy cập chưa xác thực, vui lòng nhập mã truy cập trong trang cài đặt.", @@ -80,7 +80,7 @@ const vi: LocaleType = { tr: "Türkçe", jp: "日本語", de: "Deutsch", - vi: "Vietnamese", + vi: "Tiếng Việt", ru: "Русский", cs: "Čeština", }, From f07e4fc87fe7a53a0d0b18f3c2a07c653014e5d9 Mon Sep 17 00:00:00 2001 From: "ShengYan, Zhang" Date: Sat, 13 May 2023 09:02:15 +0800 Subject: [PATCH 7/8] docs: add supported languages to README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b36f4a4a..a3c10a33 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ One-Click to deploy well-designed ChatGPT web UI on Vercel. - New in v2: create, share and debug your chat tools with prompt templates (mask) - Awesome prompts powered by [awesome-chatgpt-prompts-zh](https://github.com/PlexPt/awesome-chatgpt-prompts-zh) and [awesome-chatgpt-prompts](https://github.com/f/awesome-chatgpt-prompts) - Automatically compresses chat history to support long conversations while also saving your tokens -- I18n: English, 简体中文, 繁体中文, 日本語, Español, Italiano, Türkçe, Deutsch +- I18n: English, 简体中文, 繁体中文, 日本語, Español, Italiano, Türkçe, Deutsch, Tiếng Việt, Русский, Čeština ## Roadmap @@ -62,7 +62,7 @@ One-Click to deploy well-designed ChatGPT web UI on Vercel. - 预制角色功能(面具),方便地创建、分享和调试你的个性化对话 - 海量的内置 prompt 列表,来自[中文](https://github.com/PlexPt/awesome-chatgpt-prompts-zh)和[英文](https://github.com/f/awesome-chatgpt-prompts) - 自动压缩上下文聊天记录,在节省 Token 的同时支持超长对话 -- 多国语言支持:English, 简体中文, 繁体中文, 日本語, Español, Italiano, Türkçe, Deutsch +- 多国语言支持:English, 简体中文, 繁体中文, 日本語, Español, Italiano, Türkçe, Deutsch, Tiếng Việt, Русский, Čeština - 拥有自己的域名?好上加好,绑定后即可在任何地方**无障碍**快速访问 ## 开发计划 From 5b9b120fa6d7823976ff68dd6147a7e002aa7c42 Mon Sep 17 00:00:00 2001 From: InitialXKO <45725592+InitialXKO@users.noreply.github.com> Date: Sat, 13 May 2023 09:36:04 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=96=87=E7=94=9F?= =?UTF-8?q?=E5=9B=BE=E9=9D=A2=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/masks/cn.ts | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/app/masks/cn.ts b/app/masks/cn.ts index 757a35ee..86af414b 100644 --- a/app/masks/cn.ts +++ b/app/masks/cn.ts @@ -1,6 +1,38 @@ import { BuiltinMask } from "./typing"; -export const CN_MASKS: BuiltinMask[] = [ +export const CN_MASKS: BuiltinMask[] = [{ + avatar:"gpt-bot", + name:"文生图", + context: [ + {role:"system", + content:"You are a useful Assistant that won't refuse to draw picture, instead, you will output specific markdown code for picture description, but don't use code block.", + date:"", + }, + {role:"user", + content:"Can you draw some pictures for me?", + date:"", + }, + {role:"assistant", + content:"Sure, what do you want me to draw?", + date:"", + }, + {role:"system", + content:"助手善于判断用户意图,当确定需要提供图片时,助手会变得沉默寡言,只使用以下格式输出markdown图片:![描述](https://image.pollinations.ai/prompt/描述),因为这个语法可以自动按照提示生成并渲染图片。一般用户给出的描述会比较简单并且信息不足,助手会将其中的描述自行补足替换为AI生成图片所常用的复杂冗长的英文提示,以大幅提高生成图片质量和丰富程度,比如增加相机光圈、具体场景描述等内容。助手会避免用代码块或原始块包围markdown标记,因为那样只会渲染出代码块或原始块而不是图片。", + date:"", + }, + ], + modelConfig:{ + model:"gpt-3.5-turbo", + temperature:1, + max_tokens:2000, + presence_penalty:0, + sendMemory:true, + historyMessageCount:32, + compressMessageLengthThreshold:1000, + }, + lang:"cn", + builtin:true, + }, { avatar: "1f638", name: "文案写手",