diff --git a/src/renderer/src/components/app/Sidebar.tsx b/src/renderer/src/components/app/Sidebar.tsx
index 80751ec6..c8ac3a7e 100644
--- a/src/renderer/src/components/app/Sidebar.tsx
+++ b/src/renderer/src/components/app/Sidebar.tsx
@@ -21,7 +21,8 @@ const Sidebar: FC = () => {
const { minappShow } = useRuntime()
const { t } = useTranslation()
const navigate = useNavigate()
- const { windowStyle, showMinappIcon, showFilesIcon } = useSettings()
+ const { windowStyle, showTranslateIcon, showPaintingIcon, showMinappIcon, showKnowledgeIcon, showFilesIcon } =
+ useSettings()
const { theme, toggleTheme } = useTheme()
const isRoute = (path: string): string => (pathname === path ? 'active' : '')
@@ -61,20 +62,24 @@ const Sidebar: FC = () => {
-
- to('/paintings')}>
-
-
-
-
-
-
- to('/translate')}>
-
-
-
-
-
+ {showPaintingIcon && (
+
+ to('/paintings')}>
+
+
+
+
+
+ )}
+ {showTranslateIcon && (
+
+ to('/translate')}>
+
+
+
+
+
+ )}
{showMinappIcon && (
to('/apps')}>
@@ -84,13 +89,15 @@ const Sidebar: FC = () => {
)}
-
- to('/knowledge')}>
-
-
-
-
-
+ {showKnowledgeIcon && (
+
+ to('/knowledge')}>
+
+
+
+
+
+ )}
{showFilesIcon && (
to('/files')}>
diff --git a/src/renderer/src/hooks/useAppInit.ts b/src/renderer/src/hooks/useAppInit.ts
index ea05e483..0d3de29d 100644
--- a/src/renderer/src/hooks/useAppInit.ts
+++ b/src/renderer/src/hooks/useAppInit.ts
@@ -2,7 +2,6 @@ import { isMac } from '@renderer/config/constant'
import { isLocalAi } from '@renderer/config/env'
import db from '@renderer/databases'
import i18n from '@renderer/i18n'
-import { startAutoSync, stopAutoSync } from '@renderer/services/BackupService'
import { useAppDispatch } from '@renderer/store'
import { setAvatar, setFilesPath, setUpdateState } from '@renderer/store/runtime'
import { delay, runAsyncFunction } from '@renderer/utils'
@@ -16,16 +15,7 @@ import useUpdateHandler from './useUpdateHandler'
export function useAppInit() {
const dispatch = useAppDispatch()
- const {
- proxyUrl,
- language,
- windowStyle,
- manualUpdateCheck,
- proxyMode,
- webdavAutoSync,
- webdavSyncInterval,
- customCss
- } = useSettings()
+ const { proxyUrl, language, windowStyle, manualUpdateCheck, proxyMode, customCss } = useSettings()
const { minappShow } = useRuntime()
const { setDefaultModel, setTopicNamingModel, setTranslateModel } = useDefaultModel()
const avatar = useLiveQuery(() => db.settings.get('image://avatar'))
@@ -84,10 +74,6 @@ export function useAppInit() {
})
}, [dispatch])
- useEffect(() => {
- webdavAutoSync ? startAutoSync() : stopAutoSync()
- }, [webdavAutoSync, webdavSyncInterval])
-
useEffect(() => {
import('@renderer/queue/KnowledgeQueue')
}, [])
diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json
index f01e6609..6fd31194 100644
--- a/src/renderer/src/i18n/locales/en-us.json
+++ b/src/renderer/src/i18n/locales/en-us.json
@@ -394,7 +394,10 @@
"general.user_name.placeholder": "Enter your name",
"general.view_webdav_settings": "View WebDAV settings",
"general.display.title": "Display Settings",
+ "display.sidebar.translate.icon": "Show Translate icon",
+ "display.sidebar.painting.icon": "Show Painting icon",
"display.sidebar.minapp.icon": "Show MinApp icon",
+ "display.sidebar.knowledge.icon": "Show Knowledge icon",
"display.sidebar.files.icon": "Show Files icon",
"display.sidebar.title": "Sidebar Settings",
"display.topic.title": "Topic Settings",
diff --git a/src/renderer/src/i18n/locales/ja-jp.json b/src/renderer/src/i18n/locales/ja-jp.json
index a555def5..90965062 100644
--- a/src/renderer/src/i18n/locales/ja-jp.json
+++ b/src/renderer/src/i18n/locales/ja-jp.json
@@ -392,7 +392,10 @@
"general.user_name.placeholder": "ユーザー名を入力",
"general.view_webdav_settings": "WebDAV設定を表示",
"general.display.title": "表示設定",
+ "display.sidebar.translate.icon": "翻訳のアイコンを表示",
+ "display.sidebar.painting.icon": "絵画のアイコンを表示",
"display.sidebar.minapp.icon": "ミニアプリのアイコンを表示",
+ "display.sidebar.knowledge.icon": "ナレッジのアイコンを表示",
"display.sidebar.files.icon": "ファイルのアイコンを表示",
"display.sidebar.title": "サイドバー設定",
"display.topic.title": "トピック設定",
diff --git a/src/renderer/src/i18n/locales/ru-ru.json b/src/renderer/src/i18n/locales/ru-ru.json
index e67aab93..312d63a6 100644
--- a/src/renderer/src/i18n/locales/ru-ru.json
+++ b/src/renderer/src/i18n/locales/ru-ru.json
@@ -394,7 +394,10 @@
"general.user_name.placeholder": "Введите ваше имя",
"general.view_webdav_settings": "Просмотр настроек WebDAV",
"general.display.title": "Настройки отображения",
+ "display.sidebar.translate.icon": "Показывать иконку перевода",
+ "display.sidebar.painting.icon": "Показывать иконку рисования",
"display.sidebar.minapp.icon": "Показывать иконку мини-приложения",
+ "display.sidebar.knowledge.icon": "Показывать иконку знаний",
"display.sidebar.files.icon": "Показывать иконку файлов",
"display.sidebar.title": "Настройки боковой панели",
"display.topic.title": "Настройки топиков",
diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json
index 757b8ee1..2a09d522 100644
--- a/src/renderer/src/i18n/locales/zh-cn.json
+++ b/src/renderer/src/i18n/locales/zh-cn.json
@@ -395,7 +395,10 @@
"general.user_name.placeholder": "请输入用户名",
"general.view_webdav_settings": "查看 WebDAV 设置",
"general.display.title": "显示设置",
+ "display.sidebar.translate.icon": "显示翻译图标",
+ "display.sidebar.painting.icon": "显示绘画图标",
"display.sidebar.minapp.icon": "显示小程序图标",
+ "display.sidebar.knowledge.icon": "显示知识图标",
"display.sidebar.files.icon": "显示文件图标",
"display.sidebar.title": "侧边栏设置",
"display.topic.title": "话题设置",
diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json
index 7c5b6b79..3af6ba51 100644
--- a/src/renderer/src/i18n/locales/zh-tw.json
+++ b/src/renderer/src/i18n/locales/zh-tw.json
@@ -394,7 +394,10 @@
"general.user_name.placeholder": "輸入您的名稱",
"general.view_webdav_settings": "查看 WebDAV 設定",
"general.display.title": "顯示設定",
+ "display.sidebar.translate.icon": "顯示翻譯圖示",
+ "display.sidebar.painting.icon": "顯示繪圖圖示",
"display.sidebar.minapp.icon": "顯示小程序圖示",
+ "display.sidebar.knowledge.icon": "顯示知識圖示",
"display.sidebar.files.icon": "顯示文件圖示",
"display.sidebar.title": "側邊欄設定",
"display.topic.title": "話題設定",
diff --git a/src/renderer/src/init.ts b/src/renderer/src/init.ts
index 289723e7..cec120c2 100644
--- a/src/renderer/src/init.ts
+++ b/src/renderer/src/init.ts
@@ -1,8 +1,19 @@
import KeyvStorage from '@kangfenmao/keyv-storage'
-function init() {
+import { startAutoSync } from './services/BackupService'
+import store from './store'
+
+function initKeyv() {
window.keyv = new KeyvStorage()
window.keyv.init()
}
-init()
+function initAutoSync() {
+ const { webdavAutoSync } = store.getState().settings
+ if (webdavAutoSync) {
+ startAutoSync()
+ }
+}
+
+initKeyv()
+initAutoSync()
diff --git a/src/renderer/src/pages/home/Inputbar/Inputbar.tsx b/src/renderer/src/pages/home/Inputbar/Inputbar.tsx
index 94dacbb5..470f505d 100644
--- a/src/renderer/src/pages/home/Inputbar/Inputbar.tsx
+++ b/src/renderer/src/pages/home/Inputbar/Inputbar.tsx
@@ -62,7 +62,8 @@ const Inputbar: FC = ({ assistant: _assistant, setActiveTopic }) => {
showInputEstimatedTokens,
clickAssistantToShowTopic,
language,
- autoTranslateWithSpace
+ autoTranslateWithSpace,
+ showKnowledgeIcon
} = useSettings()
const [expended, setExpend] = useState(false)
const [estimateTokenCount, setEstimateTokenCount] = useState(0)
@@ -450,12 +451,14 @@ const Inputbar: FC = ({ assistant: _assistant, setActiveTopic }) => {
- 0}
- />
+ {showKnowledgeIcon && (
+ 0}
+ />
+ )}
{
const MessageHeader: FC = memo(({ assistant, model, message }) => {
const avatar = useAvatar()
const { theme } = useTheme()
- const { userName } = useSettings()
+ const { userName, showMinappIcon } = useSettings()
const { t } = useTranslation()
const { isBubbleStyle } = useMessageStyle()
@@ -44,7 +44,9 @@ const MessageHeader: FC = memo(({ assistant, model, message }) => {
const avatarName = useMemo(() => firstLetter(assistant?.name).toUpperCase(), [assistant?.name])
const username = useMemo(() => removeLeadingEmoji(getUserName()), [getUserName])
- const showMiniApp = useCallback(() => model?.provider && startMinAppById(model.provider), [model?.provider])
+ const showMiniApp = useCallback(() => {
+ showMinappIcon && model?.provider && startMinAppById(model.provider)
+ }, [model?.provider, showMinappIcon])
const avatarStyle: CSSProperties | undefined = isBubbleStyle
? {
@@ -62,7 +64,7 @@ const MessageHeader: FC = memo(({ assistant, model, message }) => {
size={35}
style={{
borderRadius: '20%',
- cursor: 'pointer',
+ cursor: showMinappIcon ? 'pointer' : 'default',
border: isLocalAi ? '1px solid var(--color-border-soft)' : 'none',
filter: theme === 'dark' ? 'invert(0.05)' : undefined
}}
diff --git a/src/renderer/src/pages/home/Navbar.tsx b/src/renderer/src/pages/home/Navbar.tsx
index f2eb5785..6545ec27 100644
--- a/src/renderer/src/pages/home/Navbar.tsx
+++ b/src/renderer/src/pages/home/Navbar.tsx
@@ -25,7 +25,7 @@ interface Props {
const HeaderNavbar: FC = ({ activeAssistant }) => {
const { assistant } = useAssistant(activeAssistant.id)
const { showAssistants, toggleShowAssistants } = useShowAssistants()
- const { topicPosition } = useSettings()
+ const { topicPosition, showMinappIcon } = useSettings()
const { showTopics, toggleShowTopics } = useShowTopics()
useShortcut('toggle_show_assistants', () => {
@@ -79,11 +79,13 @@ const HeaderNavbar: FC = ({ activeAssistant }) => {
SearchPopup.show()}>
-
-
-
-
-
+ {showMinappIcon && (
+
+
+
+
+
+ )}
{topicPosition === 'right' && (
diff --git a/src/renderer/src/pages/settings/DisplaySettings.tsx b/src/renderer/src/pages/settings/DisplaySettings.tsx
index a4c99c66..0d839670 100644
--- a/src/renderer/src/pages/settings/DisplaySettings.tsx
+++ b/src/renderer/src/pages/settings/DisplaySettings.tsx
@@ -6,8 +6,11 @@ import {
setClickAssistantToShowTopic,
setCustomCss,
setShowFilesIcon,
+ setShowKnowledgeIcon,
setShowMinappIcon,
- setShowTopicTime
+ setShowPaintingIcon,
+ setShowTopicTime,
+ setShowTranslateIcon
} from '@renderer/store/settings'
import { ThemeMode } from '@renderer/types'
import { Input, Select, Switch } from 'antd'
@@ -22,7 +25,10 @@ const DisplaySettings: FC = () => {
theme,
windowStyle,
setWindowStyle,
+ showTranslateIcon,
+ showPaintingIcon,
showMinappIcon,
+ showKnowledgeIcon,
showFilesIcon,
topicPosition,
setTopicPosition,
@@ -103,11 +109,26 @@ const DisplaySettings: FC = () => {
{t('settings.display.sidebar.title')}
+
+ {t('settings.display.sidebar.translate.icon')}
+ dispatch(setShowTranslateIcon(value))} />
+
+
+
+ {t('settings.display.sidebar.painting.icon')}
+ dispatch(setShowPaintingIcon(value))} />
+
+
{t('settings.display.sidebar.minapp.icon')}
dispatch(setShowMinappIcon(value))} />
+
+ {t('settings.display.sidebar.knowledge.icon')}
+ dispatch(setShowKnowledgeIcon(value))} />
+
+
{t('settings.display.sidebar.files.icon')}
dispatch(setShowFilesIcon(value))} />
diff --git a/src/renderer/src/store/migrate.ts b/src/renderer/src/store/migrate.ts
index 1dd66e7e..0ab1c783 100644
--- a/src/renderer/src/store/migrate.ts
+++ b/src/renderer/src/store/migrate.ts
@@ -786,6 +786,9 @@ const migrateConfig = {
system: false
})
}
+ state.settings.showTranslateIcon = true
+ state.settings.showPaintingIcon = true
+ state.settings.showKnowledgeIcon = true
return state
}
}
diff --git a/src/renderer/src/store/settings.ts b/src/renderer/src/store/settings.ts
index b778aff0..163c4363 100644
--- a/src/renderer/src/store/settings.ts
+++ b/src/renderer/src/store/settings.ts
@@ -42,7 +42,10 @@ export interface SettingsState {
autoTranslateWithSpace: boolean
enableTopicNaming: boolean
// Sidebar icons
+ showTranslateIcon: boolean
+ showPaintingIcon: boolean
showMinappIcon: boolean
+ showKnowledgeIcon: boolean
showFilesIcon: boolean
customCss: string
topicNamingPrompt: string
@@ -84,7 +87,10 @@ const initialState: SettingsState = {
translateModelPrompt: TRANSLATE_PROMPT,
autoTranslateWithSpace: false,
enableTopicNaming: true,
+ showTranslateIcon: true,
+ showPaintingIcon: true,
showMinappIcon: true,
+ showKnowledgeIcon: true,
showFilesIcon: true,
customCss: '',
topicNamingPrompt: ''
@@ -203,9 +209,18 @@ const settingsSlice = createSlice({
setEnableTopicNaming: (state, action: PayloadAction) => {
state.enableTopicNaming = action.payload
},
+ setShowTranslateIcon: (state, action: PayloadAction) => {
+ state.showTranslateIcon = action.payload
+ },
+ setShowPaintingIcon: (state, action: PayloadAction) => {
+ state.showPaintingIcon = action.payload
+ },
setShowMinappIcon: (state, action: PayloadAction) => {
state.showMinappIcon = action.payload
},
+ setShowKnowledgeIcon: (state, action: PayloadAction) => {
+ state.showKnowledgeIcon = action.payload
+ },
setShowFilesIcon: (state, action: PayloadAction) => {
state.showFilesIcon = action.payload
},
@@ -258,7 +273,10 @@ export const {
setTranslateModelPrompt,
setAutoTranslateWithSpace,
setEnableTopicNaming,
+ setShowTranslateIcon,
+ setShowPaintingIcon,
setShowMinappIcon,
+ setShowKnowledgeIcon,
setShowFilesIcon,
setPasteLongTextThreshold,
setCustomCss,