diff --git a/app/components/chat.module.scss b/app/components/chat.module.scss index b908f220..a56c1c69 100644 --- a/app/components/chat.module.scss +++ b/app/components/chat.module.scss @@ -251,6 +251,12 @@ display: flex; flex-direction: column; align-items: flex-start; + + &:hover { + .chat-message-edit { + opacity: 0.9; + } + } } .chat-message-user > .chat-message-container { @@ -259,6 +265,23 @@ .chat-message-avatar { margin-top: 20px; + position: relative; + + .chat-message-edit { + position: absolute; + height: 100%; + width: 100%; + overflow: hidden; + display: flex; + align-items: center; + justify-content: center; + opacity: 0; + transition: all ease 0.3s; + + button { + padding: 7px; + } + } } .chat-message-status { diff --git a/app/components/chat.tsx b/app/components/chat.tsx index 7f785387..f6746217 100644 --- a/app/components/chat.tsx +++ b/app/components/chat.tsx @@ -23,6 +23,7 @@ import BreakIcon from "../icons/break.svg"; import SettingsIcon from "../icons/chat-settings.svg"; import DeleteIcon from "../icons/clear.svg"; import PinIcon from "../icons/pin.svg"; +import EditIcon from "../icons/rename.svg"; import LightIcon from "../icons/light.svg"; import DarkIcon from "../icons/dark.svg"; @@ -902,6 +903,25 @@ export function Chat() { >
+
+ } + onClick={async () => { + const newMessage = await showPrompt( + Locale.Chat.Actions.Edit, + message.content, + ); + chatStore.updateCurrentSession((session) => { + const m = session.messages.find( + (m) => m.id === message.id, + ); + if (m) { + m.content = newMessage; + } + }); + }} + > +
{message.role === "user" ? ( ) : ( diff --git a/app/locales/cn.ts b/app/locales/cn.ts index d8b4bd0f..f567f6d2 100644 --- a/app/locales/cn.ts +++ b/app/locales/cn.ts @@ -29,6 +29,7 @@ const cn = { PinToastContent: "已将 2 条对话固定至预设提示词", PinToastAction: "查看", Delete: "删除", + Edit: "编辑", }, Commands: { new: "新建聊天", diff --git a/app/locales/en.ts b/app/locales/en.ts index 3b6b7ff6..d0b96dba 100644 --- a/app/locales/en.ts +++ b/app/locales/en.ts @@ -30,6 +30,7 @@ const en: LocaleType = { PinToastContent: "Pinned 2 messages to contextual prompts", PinToastAction: "View", Delete: "Delete", + Edit: "Edit", }, Commands: { new: "Start a new chat",