feat: add prompt display control (#5439)

Co-authored-by: 亢奋猫 <kangfenmao@qq.com>
This commit is contained in:
Jee
2025-05-10 20:16:59 +08:00
committed by GitHub
parent b962126d98
commit 3f1fadb9b6
10 changed files with 25 additions and 3 deletions

View File

@@ -1344,6 +1344,7 @@
"providerPlaceholder": "Provider name",
"advancedSettings": "Advanced Settings"
},
"messages.prompt": "Show prompt",
"messages.divider": "Show divider between messages",
"messages.grid_columns": "Message grid display columns",
"messages.grid_popover_trigger": "Grid detail trigger",

View File

@@ -1342,6 +1342,7 @@
"providerPlaceholder": "プロバイダー名",
"advancedSettings": "詳細設定"
},
"messages.prompt": "プロンプト表示",
"messages.divider": "メッセージ間に区切り線を表示",
"messages.grid_columns": "メッセージグリッドの表示列数",
"messages.grid_popover_trigger": "グリッド詳細トリガー",

View File

@@ -1342,6 +1342,7 @@
"providerPlaceholder": "Имя провайдера",
"advancedSettings": "Расширенные настройки"
},
"messages.prompt": "Показывать подсказки",
"messages.divider": "Показывать разделитель между сообщениями",
"messages.grid_columns": "Количество столбцов сетки сообщений",
"messages.grid_popover_trigger": "Триггер для отображения подробной информации в сетке",

View File

@@ -1344,6 +1344,7 @@
"providerPlaceholder": "提供者名称",
"advancedSettings": "高级设置"
},
"messages.prompt": "提示词显示",
"messages.divider": "消息分割线",
"messages.grid_columns": "消息网格展示列数",
"messages.grid_popover_trigger": "网格详情触发",

View File

@@ -1343,6 +1343,7 @@
"providerPlaceholder": "提供者名稱",
"advancedSettings": "高級設定"
},
"messages.prompt": "提示詞顯示",
"messages.divider": "訊息間顯示分隔線",
"messages.grid_columns": "訊息網格展示列數",
"messages.grid_popover_trigger": "網格詳細資訊觸發",

View File

@@ -42,7 +42,7 @@ interface MessagesProps {
const Messages: React.FC<MessagesProps> = ({ assistant, topic, setActiveTopic }) => {
const { t } = useTranslation()
const { showTopics, topicPosition, showAssistants, messageNavigation } = useSettings()
const { showPrompt, showTopics, topicPosition, showAssistants, messageNavigation } = useSettings()
const { updateTopic, addTopic } = useAssistant(assistant.id)
const dispatch = useAppDispatch()
const containerRef = useRef<HTMLDivElement>(null)
@@ -254,7 +254,7 @@ const Messages: React.FC<MessagesProps> = ({ assistant, topic, setActiveTopic })
)}
</ScrollContainer>
</InfiniteScroll>
<Prompt assistant={assistant} key={assistant.prompt} topic={topic} />
{showPrompt && <Prompt assistant={assistant} key={assistant.prompt} topic={topic} />}
</NarrowLayout>
{messageNavigation === 'anchor' && <MessageAnchorLine messages={displayMessages} />}
{messageNavigation === 'buttons' && <ChatNavigation containerId="messages" />}

View File

@@ -37,6 +37,7 @@ import {
setPasteLongTextThreshold,
setRenderInputMessageAsMarkdown,
setShowInputEstimatedTokens,
setShowPrompt,
setShowMessageDivider,
setShowTranslateConfirm,
setThoughtAutoCollapse
@@ -76,6 +77,7 @@ const SettingsTab: FC<Props> = (props) => {
const dispatch = useAppDispatch()
const {
showPrompt,
showMessageDivider,
messageFont,
showInputEstimatedTokens,
@@ -282,6 +284,11 @@ const SettingsTab: FC<Props> = (props) => {
<SettingGroup>
<SettingSubtitle style={{ marginTop: 0 }}>{t('settings.messages.title')}</SettingSubtitle>
<SettingDivider />
<SettingRow>
<SettingRowTitleSmall>{t('settings.messages.prompt')}</SettingRowTitleSmall>
<Switch size="small" checked={showPrompt} onChange={(checked) => dispatch(setShowPrompt(checked))} />
</SettingRow>
<SettingDivider />
<SettingRow>
<SettingRowTitleSmall>{t('settings.messages.divider')}</SettingRowTitleSmall>
<Switch

View File

@@ -46,7 +46,7 @@ const persistedReducer = persistReducer(
{
key: 'cherry-studio',
storage,
version: 98,
version: 99,
blacklist: ['runtime', 'messages', 'messageBlocks'],
migrate
},

View File

@@ -1267,11 +1267,15 @@ const migrateConfig = {
},
'99': (state: RootState) => {
try {
state.settings.showPrompt = true
addWebSearchProvider(state, 'bocha')
updateWebSearchProvider(state, {
id: 'exa',
apiHost: 'https://api.exa.ai'
})
updateWebSearchProvider(state, {
id: 'tavily',
apiHost: 'https://api.tavily.com'

View File

@@ -31,6 +31,7 @@ export interface SettingsState {
proxyMode: 'system' | 'custom' | 'none'
proxyUrl?: string
userName: string
showPrompt: boolean
showMessageDivider: boolean
messageFont: 'system' | 'serif'
showInputEstimatedTokens: boolean
@@ -143,6 +144,7 @@ export const initialState: SettingsState = {
proxyMode: 'system',
proxyUrl: undefined,
userName: '',
showPrompt: true,
showMessageDivider: true,
messageFont: 'system',
showInputEstimatedTokens: false,
@@ -272,6 +274,9 @@ const settingsSlice = createSlice({
setUserName: (state, action: PayloadAction<string>) => {
state.userName = action.payload
},
setShowPrompt: (state, action: PayloadAction<boolean>) => {
state.showPrompt = action.payload
},
setShowMessageDivider: (state, action: PayloadAction<boolean>) => {
state.showMessageDivider = action.payload
},
@@ -528,6 +533,7 @@ export const {
setProxyMode,
setProxyUrl,
setUserName,
setShowPrompt,
setShowMessageDivider,
setMessageFont,
setShowInputEstimatedTokens,