From fc274415619f0714f11cd888f2069930a2b693a5 Mon Sep 17 00:00:00 2001 From: skymkmk Date: Fri, 13 Sep 2024 21:09:03 +0800 Subject: [PATCH 1/3] feat: manual refresh for title --- app/components/chat.tsx | 12 ++++++++++++ app/store/chat.ts | 26 ++++++++++++++++---------- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/app/components/chat.tsx b/app/components/chat.tsx index dafb9846421..bd411826f0d 100644 --- a/app/components/chat.tsx +++ b/app/components/chat.tsx @@ -43,6 +43,7 @@ import QualityIcon from "../icons/hd.svg"; import StyleIcon from "../icons/palette.svg"; import PluginIcon from "../icons/plugin.svg"; import ShortcutkeyIcon from "../icons/shortcutkey.svg"; +import ReloadIcon from "../icons/reload.svg"; import { ChatMessage, @@ -1541,6 +1542,17 @@ function _Chat() {
+
+ } + bordered + title={Locale.Chat.Actions.RefreshTitle} + onClick={() => { + showToast(Locale.Chat.Actions.RefreshToast); + chatStore.summarizeSession(true); + }} + /> +
{!isMobileScreen && (
= SUMMARIZE_MIN_LEN + (config.enableAutoGenerateTitle && + session.topic === DEFAULT_TOPIC && + countMessages(messages) >= SUMMARIZE_MIN_LEN) || + refreshTitle ) { - const topicMessages = messages.concat( - createMessage({ - role: "user", - content: Locale.Store.Prompt.Topic, - }), - ); + const topicMessages = messages + .slice( + messages.length - modelConfig.historyMessageCount, + messages.length, + ) + .concat( + createMessage({ + role: "user", + content: Locale.Store.Prompt.Topic, + }), + ); api.llm.chat({ messages: topicMessages, config: { From 37c0cfe1e9d2568138e820634ad9404c0c5fb21f Mon Sep 17 00:00:00 2001 From: skymkmk Date: Fri, 13 Sep 2024 21:13:19 +0800 Subject: [PATCH 2/3] translation: translations by claude for manual refresh --- app/locales/ar.ts | 2 ++ app/locales/bn.ts | 2 ++ app/locales/cn.ts | 2 ++ app/locales/cs.ts | 2 ++ app/locales/de.ts | 2 ++ app/locales/en.ts | 2 ++ app/locales/es.ts | 2 ++ app/locales/fr.ts | 2 ++ app/locales/id.ts | 2 ++ app/locales/it.ts | 2 ++ app/locales/jp.ts | 2 ++ app/locales/ko.ts | 2 ++ app/locales/no.ts | 2 ++ app/locales/pt.ts | 2 ++ app/locales/ru.ts | 2 ++ app/locales/sk.ts | 2 ++ app/locales/tr.ts | 2 ++ app/locales/tw.ts | 2 ++ app/locales/vi.ts | 2 ++ 19 files changed, 38 insertions(+) diff --git a/app/locales/ar.ts b/app/locales/ar.ts index 9bd491083e4..0c3fef7209f 100644 --- a/app/locales/ar.ts +++ b/app/locales/ar.ts @@ -43,6 +43,8 @@ const ar: PartialLocaleType = { PinToastAction: "عرض", Delete: "حذف", Edit: "تحرير", + RefreshTitle: "تحديث العنوان", + RefreshToast: "تم إرسال طلب تحديث العنوان", }, Commands: { new: "دردشة جديدة", diff --git a/app/locales/bn.ts b/app/locales/bn.ts index acabc8e2ad4..eeb1608e079 100644 --- a/app/locales/bn.ts +++ b/app/locales/bn.ts @@ -43,6 +43,8 @@ const bn: PartialLocaleType = { PinToastAction: "দেখুন", Delete: "মুছে ফেলুন", Edit: "সম্পাদনা করুন", + RefreshTitle: "শিরোনাম রিফ্রেশ করুন", + RefreshToast: "শিরোনাম রিফ্রেশ অনুরোধ পাঠানো হয়েছে", }, Commands: { new: "নতুন চ্যাট", diff --git a/app/locales/cn.ts b/app/locales/cn.ts index 92e81bcb1ba..b5fcdbb8b5f 100644 --- a/app/locales/cn.ts +++ b/app/locales/cn.ts @@ -44,6 +44,8 @@ const cn = { Delete: "删除", Edit: "编辑", FullScreen: "全屏", + RefreshTitle: "刷新标题", + RefreshToast: "已发送刷新标题请求", }, Commands: { new: "新建聊天", diff --git a/app/locales/cs.ts b/app/locales/cs.ts index d16c474e824..d0c7f392c34 100644 --- a/app/locales/cs.ts +++ b/app/locales/cs.ts @@ -43,6 +43,8 @@ const cs: PartialLocaleType = { PinToastAction: "Zobrazit", Delete: "Smazat", Edit: "Upravit", + RefreshTitle: "Obnovit název", + RefreshToast: "Požadavek na obnovení názvu byl odeslán", }, Commands: { new: "Nová konverzace", diff --git a/app/locales/de.ts b/app/locales/de.ts index a1f81704726..da2859f0107 100644 --- a/app/locales/de.ts +++ b/app/locales/de.ts @@ -43,6 +43,8 @@ const de: PartialLocaleType = { PinToastAction: "Ansehen", Delete: "Löschen", Edit: "Bearbeiten", + RefreshTitle: "Titel aktualisieren", + RefreshToast: "Anfrage zur Titelaktualisierung gesendet", }, Commands: { new: "Neues Gespräch", diff --git a/app/locales/en.ts b/app/locales/en.ts index 09b76f1fa12..0a2fcc275f0 100644 --- a/app/locales/en.ts +++ b/app/locales/en.ts @@ -45,6 +45,8 @@ const en: LocaleType = { Delete: "Delete", Edit: "Edit", FullScreen: "FullScreen", + RefreshTitle: "Refresh Title", + RefreshToast: "Title refresh request sent", }, Commands: { new: "Start a new chat", diff --git a/app/locales/es.ts b/app/locales/es.ts index 5e4f900b70f..6f2344c2c65 100644 --- a/app/locales/es.ts +++ b/app/locales/es.ts @@ -44,6 +44,8 @@ const es: PartialLocaleType = { PinToastAction: "Ver", Delete: "Eliminar", Edit: "Editar", + RefreshTitle: "Actualizar título", + RefreshToast: "Se ha enviado la solicitud de actualización del título", }, Commands: { new: "Nueva conversación", diff --git a/app/locales/fr.ts b/app/locales/fr.ts index 65efc32b8d6..5a2a86ad9f6 100644 --- a/app/locales/fr.ts +++ b/app/locales/fr.ts @@ -43,6 +43,8 @@ const fr: PartialLocaleType = { PinToastAction: "Voir", Delete: "Supprimer", Edit: "Modifier", + RefreshTitle: "Actualiser le titre", + RefreshToast: "Demande d'actualisation du titre envoyée", }, Commands: { new: "Nouvelle discussion", diff --git a/app/locales/id.ts b/app/locales/id.ts index 3ac7af49006..09bf0d09a4a 100644 --- a/app/locales/id.ts +++ b/app/locales/id.ts @@ -43,6 +43,8 @@ const id: PartialLocaleType = { PinToastAction: "Lihat", Delete: "Hapus", Edit: "Edit", + RefreshTitle: "Segarkan Judul", + RefreshToast: "Permintaan penyegaran judul telah dikirim", }, Commands: { new: "Obrolan Baru", diff --git a/app/locales/it.ts b/app/locales/it.ts index 1a54cfa43ed..67983a8dba3 100644 --- a/app/locales/it.ts +++ b/app/locales/it.ts @@ -43,6 +43,8 @@ const it: PartialLocaleType = { PinToastAction: "Visualizza", Delete: "Elimina", Edit: "Modifica", + RefreshTitle: "Aggiorna titolo", + RefreshToast: "Richiesta di aggiornamento del titolo inviata", }, Commands: { new: "Nuova chat", diff --git a/app/locales/jp.ts b/app/locales/jp.ts index 6aaf0ba6737..efb080a2052 100644 --- a/app/locales/jp.ts +++ b/app/locales/jp.ts @@ -43,6 +43,8 @@ const jp: PartialLocaleType = { PinToastAction: "見る", Delete: "削除", Edit: "編集", + RefreshTitle: "タイトルを更新", + RefreshToast: "タイトル更新リクエストが送信されました", }, Commands: { new: "新しいチャット", diff --git a/app/locales/ko.ts b/app/locales/ko.ts index 563827fb966..827c5fc0a3f 100644 --- a/app/locales/ko.ts +++ b/app/locales/ko.ts @@ -43,6 +43,8 @@ const ko: PartialLocaleType = { PinToastAction: "보기", Delete: "삭제", Edit: "편집", + RefreshTitle: "제목 새로고침", + RefreshToast: "제목 새로고침 요청이 전송되었습니다", }, Commands: { new: "새 채팅", diff --git a/app/locales/no.ts b/app/locales/no.ts index d7dc16b3fe1..0fe2ad456af 100644 --- a/app/locales/no.ts +++ b/app/locales/no.ts @@ -44,6 +44,8 @@ const no: PartialLocaleType = { PinToastAction: "Se", Delete: "Slett", Edit: "Rediger", + RefreshTitle: "Oppdater tittel", + RefreshToast: "Forespørsel om titteloppdatering sendt", }, Commands: { new: "Ny samtale", diff --git a/app/locales/pt.ts b/app/locales/pt.ts index 9fd13ba1cba..03610ecce84 100644 --- a/app/locales/pt.ts +++ b/app/locales/pt.ts @@ -43,6 +43,8 @@ const pt: PartialLocaleType = { PinToastAction: "Visualizar", Delete: "Deletar", Edit: "Editar", + RefreshTitle: "Atualizar Título", + RefreshToast: "Solicitação de atualização de título enviada", }, Commands: { new: "Iniciar um novo chat", diff --git a/app/locales/ru.ts b/app/locales/ru.ts index e983dcddbda..f4d76f810e5 100644 --- a/app/locales/ru.ts +++ b/app/locales/ru.ts @@ -43,6 +43,8 @@ const ru: PartialLocaleType = { PinToastAction: "Просмотреть", Delete: "Удалить", Edit: "Редактировать", + RefreshTitle: "Обновить заголовок", + RefreshToast: "Запрос на обновление заголовка отправлен", }, Commands: { new: "Новый чат", diff --git a/app/locales/sk.ts b/app/locales/sk.ts index 2586aaaa7b4..61ea18b7822 100644 --- a/app/locales/sk.ts +++ b/app/locales/sk.ts @@ -45,6 +45,8 @@ const sk: PartialLocaleType = { PinToastAction: "Zobraziť", Delete: "Vymazať", Edit: "Upraviť", + RefreshTitle: "Obnoviť názov", + RefreshToast: "Požiadavka na obnovenie názvu bola odoslaná", }, Commands: { new: "Začať nový chat", diff --git a/app/locales/tr.ts b/app/locales/tr.ts index ac410615e74..6fccdda5e42 100644 --- a/app/locales/tr.ts +++ b/app/locales/tr.ts @@ -43,6 +43,8 @@ const tr: PartialLocaleType = { PinToastAction: "Görünüm", Delete: "Sil", Edit: "Düzenle", + RefreshTitle: "Başlığı Yenile", + RefreshToast: "Başlık yenileme isteği gönderildi", }, Commands: { new: "Yeni sohbet", diff --git a/app/locales/tw.ts b/app/locales/tw.ts index c54a7b8c5ae..a080b000c16 100644 --- a/app/locales/tw.ts +++ b/app/locales/tw.ts @@ -43,6 +43,8 @@ const tw = { PinToastAction: "檢視", Delete: "刪除", Edit: "編輯", + RefreshTitle: "刷新標題", + RefreshToast: "已發送刷新標題請求", }, Commands: { new: "新建聊天", diff --git a/app/locales/vi.ts b/app/locales/vi.ts index 9a21ee406f8..00934b3a67a 100644 --- a/app/locales/vi.ts +++ b/app/locales/vi.ts @@ -43,6 +43,8 @@ const vi: PartialLocaleType = { PinToastAction: "Xem", Delete: "Xóa", Edit: "Chỉnh sửa", + RefreshTitle: "Làm mới tiêu đề", + RefreshToast: "Đã gửi yêu cầu làm mới tiêu đề", }, Commands: { new: "Tạo cuộc trò chuyện mới", From fa48ace39badb237728188482550ae5bb8f0e47a Mon Sep 17 00:00:00 2001 From: skymkmk Date: Sat, 14 Sep 2024 07:49:26 +0800 Subject: [PATCH 3/3] fix: prevent users from setting a extremly short history that resulting in no content being sent for the title summary --- app/store/chat.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/store/chat.ts b/app/store/chat.ts index 1609666c331..d2a1fecd619 100644 --- a/app/store/chat.ts +++ b/app/store/chat.ts @@ -595,9 +595,13 @@ export const useChatStore = createPersistStore( countMessages(messages) >= SUMMARIZE_MIN_LEN) || refreshTitle ) { + const startIndex = Math.max( + 0, + messages.length - modelConfig.historyMessageCount, + ); const topicMessages = messages .slice( - messages.length - modelConfig.historyMessageCount, + startIndex < messages.length ? startIndex : messages.length - 1, messages.length, ) .concat(