mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-23 18:10:26 +08:00
feat: add prompt display control (#5439)
Co-authored-by: 亢奋猫 <kangfenmao@qq.com>
This commit is contained in:
parent
b962126d98
commit
3f1fadb9b6
@ -1344,6 +1344,7 @@
|
|||||||
"providerPlaceholder": "Provider name",
|
"providerPlaceholder": "Provider name",
|
||||||
"advancedSettings": "Advanced Settings"
|
"advancedSettings": "Advanced Settings"
|
||||||
},
|
},
|
||||||
|
"messages.prompt": "Show prompt",
|
||||||
"messages.divider": "Show divider between messages",
|
"messages.divider": "Show divider between messages",
|
||||||
"messages.grid_columns": "Message grid display columns",
|
"messages.grid_columns": "Message grid display columns",
|
||||||
"messages.grid_popover_trigger": "Grid detail trigger",
|
"messages.grid_popover_trigger": "Grid detail trigger",
|
||||||
|
|||||||
@ -1342,6 +1342,7 @@
|
|||||||
"providerPlaceholder": "プロバイダー名",
|
"providerPlaceholder": "プロバイダー名",
|
||||||
"advancedSettings": "詳細設定"
|
"advancedSettings": "詳細設定"
|
||||||
},
|
},
|
||||||
|
"messages.prompt": "プロンプト表示",
|
||||||
"messages.divider": "メッセージ間に区切り線を表示",
|
"messages.divider": "メッセージ間に区切り線を表示",
|
||||||
"messages.grid_columns": "メッセージグリッドの表示列数",
|
"messages.grid_columns": "メッセージグリッドの表示列数",
|
||||||
"messages.grid_popover_trigger": "グリッド詳細トリガー",
|
"messages.grid_popover_trigger": "グリッド詳細トリガー",
|
||||||
|
|||||||
@ -1342,6 +1342,7 @@
|
|||||||
"providerPlaceholder": "Имя провайдера",
|
"providerPlaceholder": "Имя провайдера",
|
||||||
"advancedSettings": "Расширенные настройки"
|
"advancedSettings": "Расширенные настройки"
|
||||||
},
|
},
|
||||||
|
"messages.prompt": "Показывать подсказки",
|
||||||
"messages.divider": "Показывать разделитель между сообщениями",
|
"messages.divider": "Показывать разделитель между сообщениями",
|
||||||
"messages.grid_columns": "Количество столбцов сетки сообщений",
|
"messages.grid_columns": "Количество столбцов сетки сообщений",
|
||||||
"messages.grid_popover_trigger": "Триггер для отображения подробной информации в сетке",
|
"messages.grid_popover_trigger": "Триггер для отображения подробной информации в сетке",
|
||||||
|
|||||||
@ -1344,6 +1344,7 @@
|
|||||||
"providerPlaceholder": "提供者名称",
|
"providerPlaceholder": "提供者名称",
|
||||||
"advancedSettings": "高级设置"
|
"advancedSettings": "高级设置"
|
||||||
},
|
},
|
||||||
|
"messages.prompt": "提示词显示",
|
||||||
"messages.divider": "消息分割线",
|
"messages.divider": "消息分割线",
|
||||||
"messages.grid_columns": "消息网格展示列数",
|
"messages.grid_columns": "消息网格展示列数",
|
||||||
"messages.grid_popover_trigger": "网格详情触发",
|
"messages.grid_popover_trigger": "网格详情触发",
|
||||||
|
|||||||
@ -1343,6 +1343,7 @@
|
|||||||
"providerPlaceholder": "提供者名稱",
|
"providerPlaceholder": "提供者名稱",
|
||||||
"advancedSettings": "高級設定"
|
"advancedSettings": "高級設定"
|
||||||
},
|
},
|
||||||
|
"messages.prompt": "提示詞顯示",
|
||||||
"messages.divider": "訊息間顯示分隔線",
|
"messages.divider": "訊息間顯示分隔線",
|
||||||
"messages.grid_columns": "訊息網格展示列數",
|
"messages.grid_columns": "訊息網格展示列數",
|
||||||
"messages.grid_popover_trigger": "網格詳細資訊觸發",
|
"messages.grid_popover_trigger": "網格詳細資訊觸發",
|
||||||
|
|||||||
@ -42,7 +42,7 @@ interface MessagesProps {
|
|||||||
|
|
||||||
const Messages: React.FC<MessagesProps> = ({ assistant, topic, setActiveTopic }) => {
|
const Messages: React.FC<MessagesProps> = ({ assistant, topic, setActiveTopic }) => {
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
const { showTopics, topicPosition, showAssistants, messageNavigation } = useSettings()
|
const { showPrompt, showTopics, topicPosition, showAssistants, messageNavigation } = useSettings()
|
||||||
const { updateTopic, addTopic } = useAssistant(assistant.id)
|
const { updateTopic, addTopic } = useAssistant(assistant.id)
|
||||||
const dispatch = useAppDispatch()
|
const dispatch = useAppDispatch()
|
||||||
const containerRef = useRef<HTMLDivElement>(null)
|
const containerRef = useRef<HTMLDivElement>(null)
|
||||||
@ -254,7 +254,7 @@ const Messages: React.FC<MessagesProps> = ({ assistant, topic, setActiveTopic })
|
|||||||
)}
|
)}
|
||||||
</ScrollContainer>
|
</ScrollContainer>
|
||||||
</InfiniteScroll>
|
</InfiniteScroll>
|
||||||
<Prompt assistant={assistant} key={assistant.prompt} topic={topic} />
|
{showPrompt && <Prompt assistant={assistant} key={assistant.prompt} topic={topic} />}
|
||||||
</NarrowLayout>
|
</NarrowLayout>
|
||||||
{messageNavigation === 'anchor' && <MessageAnchorLine messages={displayMessages} />}
|
{messageNavigation === 'anchor' && <MessageAnchorLine messages={displayMessages} />}
|
||||||
{messageNavigation === 'buttons' && <ChatNavigation containerId="messages" />}
|
{messageNavigation === 'buttons' && <ChatNavigation containerId="messages" />}
|
||||||
|
|||||||
@ -37,6 +37,7 @@ import {
|
|||||||
setPasteLongTextThreshold,
|
setPasteLongTextThreshold,
|
||||||
setRenderInputMessageAsMarkdown,
|
setRenderInputMessageAsMarkdown,
|
||||||
setShowInputEstimatedTokens,
|
setShowInputEstimatedTokens,
|
||||||
|
setShowPrompt,
|
||||||
setShowMessageDivider,
|
setShowMessageDivider,
|
||||||
setShowTranslateConfirm,
|
setShowTranslateConfirm,
|
||||||
setThoughtAutoCollapse
|
setThoughtAutoCollapse
|
||||||
@ -76,6 +77,7 @@ const SettingsTab: FC<Props> = (props) => {
|
|||||||
const dispatch = useAppDispatch()
|
const dispatch = useAppDispatch()
|
||||||
|
|
||||||
const {
|
const {
|
||||||
|
showPrompt,
|
||||||
showMessageDivider,
|
showMessageDivider,
|
||||||
messageFont,
|
messageFont,
|
||||||
showInputEstimatedTokens,
|
showInputEstimatedTokens,
|
||||||
@ -282,6 +284,11 @@ const SettingsTab: FC<Props> = (props) => {
|
|||||||
<SettingGroup>
|
<SettingGroup>
|
||||||
<SettingSubtitle style={{ marginTop: 0 }}>{t('settings.messages.title')}</SettingSubtitle>
|
<SettingSubtitle style={{ marginTop: 0 }}>{t('settings.messages.title')}</SettingSubtitle>
|
||||||
<SettingDivider />
|
<SettingDivider />
|
||||||
|
<SettingRow>
|
||||||
|
<SettingRowTitleSmall>{t('settings.messages.prompt')}</SettingRowTitleSmall>
|
||||||
|
<Switch size="small" checked={showPrompt} onChange={(checked) => dispatch(setShowPrompt(checked))} />
|
||||||
|
</SettingRow>
|
||||||
|
<SettingDivider />
|
||||||
<SettingRow>
|
<SettingRow>
|
||||||
<SettingRowTitleSmall>{t('settings.messages.divider')}</SettingRowTitleSmall>
|
<SettingRowTitleSmall>{t('settings.messages.divider')}</SettingRowTitleSmall>
|
||||||
<Switch
|
<Switch
|
||||||
|
|||||||
@ -46,7 +46,7 @@ const persistedReducer = persistReducer(
|
|||||||
{
|
{
|
||||||
key: 'cherry-studio',
|
key: 'cherry-studio',
|
||||||
storage,
|
storage,
|
||||||
version: 98,
|
version: 99,
|
||||||
blacklist: ['runtime', 'messages', 'messageBlocks'],
|
blacklist: ['runtime', 'messages', 'messageBlocks'],
|
||||||
migrate
|
migrate
|
||||||
},
|
},
|
||||||
|
|||||||
@ -1267,11 +1267,15 @@ const migrateConfig = {
|
|||||||
},
|
},
|
||||||
'99': (state: RootState) => {
|
'99': (state: RootState) => {
|
||||||
try {
|
try {
|
||||||
|
state.settings.showPrompt = true
|
||||||
|
|
||||||
addWebSearchProvider(state, 'bocha')
|
addWebSearchProvider(state, 'bocha')
|
||||||
|
|
||||||
updateWebSearchProvider(state, {
|
updateWebSearchProvider(state, {
|
||||||
id: 'exa',
|
id: 'exa',
|
||||||
apiHost: 'https://api.exa.ai'
|
apiHost: 'https://api.exa.ai'
|
||||||
})
|
})
|
||||||
|
|
||||||
updateWebSearchProvider(state, {
|
updateWebSearchProvider(state, {
|
||||||
id: 'tavily',
|
id: 'tavily',
|
||||||
apiHost: 'https://api.tavily.com'
|
apiHost: 'https://api.tavily.com'
|
||||||
|
|||||||
@ -31,6 +31,7 @@ export interface SettingsState {
|
|||||||
proxyMode: 'system' | 'custom' | 'none'
|
proxyMode: 'system' | 'custom' | 'none'
|
||||||
proxyUrl?: string
|
proxyUrl?: string
|
||||||
userName: string
|
userName: string
|
||||||
|
showPrompt: boolean
|
||||||
showMessageDivider: boolean
|
showMessageDivider: boolean
|
||||||
messageFont: 'system' | 'serif'
|
messageFont: 'system' | 'serif'
|
||||||
showInputEstimatedTokens: boolean
|
showInputEstimatedTokens: boolean
|
||||||
@ -143,6 +144,7 @@ export const initialState: SettingsState = {
|
|||||||
proxyMode: 'system',
|
proxyMode: 'system',
|
||||||
proxyUrl: undefined,
|
proxyUrl: undefined,
|
||||||
userName: '',
|
userName: '',
|
||||||
|
showPrompt: true,
|
||||||
showMessageDivider: true,
|
showMessageDivider: true,
|
||||||
messageFont: 'system',
|
messageFont: 'system',
|
||||||
showInputEstimatedTokens: false,
|
showInputEstimatedTokens: false,
|
||||||
@ -272,6 +274,9 @@ const settingsSlice = createSlice({
|
|||||||
setUserName: (state, action: PayloadAction<string>) => {
|
setUserName: (state, action: PayloadAction<string>) => {
|
||||||
state.userName = action.payload
|
state.userName = action.payload
|
||||||
},
|
},
|
||||||
|
setShowPrompt: (state, action: PayloadAction<boolean>) => {
|
||||||
|
state.showPrompt = action.payload
|
||||||
|
},
|
||||||
setShowMessageDivider: (state, action: PayloadAction<boolean>) => {
|
setShowMessageDivider: (state, action: PayloadAction<boolean>) => {
|
||||||
state.showMessageDivider = action.payload
|
state.showMessageDivider = action.payload
|
||||||
},
|
},
|
||||||
@ -528,6 +533,7 @@ export const {
|
|||||||
setProxyMode,
|
setProxyMode,
|
||||||
setProxyUrl,
|
setProxyUrl,
|
||||||
setUserName,
|
setUserName,
|
||||||
|
setShowPrompt,
|
||||||
setShowMessageDivider,
|
setShowMessageDivider,
|
||||||
setMessageFont,
|
setMessageFont,
|
||||||
setShowInputEstimatedTokens,
|
setShowInputEstimatedTokens,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user