Files
tkmind_go/ui/desktop/src/utils/settings.ts
T
Abhijay Jain 387f1247c1 feat: ability to expand sidebar to see chats names (#7816)
Signed-off-by: Abhijay007 <Abhijay007j@gmail.com>
Signed-off-by: Abhijay Jain <Abhijay007j@gmail.com>
2026-03-20 13:55:33 +00:00

113 lines
2.8 KiB
TypeScript

export interface ExternalGoosedConfig {
enabled: boolean;
url: string;
secret: string;
}
export interface KeyboardShortcuts {
focusWindow: string | null;
quickLauncher: string | null;
newChat: string | null;
newChatWindow: string | null;
openDirectory: string | null;
settings: string | null;
find: string | null;
findNext: string | null;
findPrevious: string | null;
alwaysOnTop: string | null;
toggleNavigation: string | null;
}
export type DefaultKeyboardShortcuts = {
[K in keyof KeyboardShortcuts]: string;
};
export interface SessionSharingConfig {
enabled: boolean;
baseUrl: string;
}
export interface Settings {
// Desktop app settings
showMenuBarIcon: boolean;
showDockIcon: boolean;
enableWakelock: boolean;
spellcheckEnabled: boolean;
externalGoosed: ExternalGoosedConfig;
globalShortcut?: string | null;
keyboardShortcuts: KeyboardShortcuts;
// UI preferences (migrated from localStorage)
theme: 'dark' | 'light';
useSystemTheme: boolean;
responseStyle: string;
showPricing: boolean;
sessionSharing: SessionSharingConfig;
seenAnnouncementIds: string[];
navExpandedWidth: number | null;
}
export type SettingKey = keyof Settings;
export const defaultKeyboardShortcuts: DefaultKeyboardShortcuts = {
focusWindow: 'CommandOrControl+Alt+G',
quickLauncher: 'CommandOrControl+Alt+Shift+G',
newChat: 'CommandOrControl+T',
newChatWindow: 'CommandOrControl+N',
openDirectory: 'CommandOrControl+O',
settings: 'CommandOrControl+,',
find: 'CommandOrControl+F',
findNext: 'CommandOrControl+G',
findPrevious: 'CommandOrControl+Shift+G',
alwaysOnTop: 'CommandOrControl+Shift+T',
toggleNavigation: 'CommandOrControl+/',
};
export const defaultSettings: Settings = {
// Desktop app settings
showMenuBarIcon: true,
showDockIcon: true,
enableWakelock: false,
spellcheckEnabled: true,
keyboardShortcuts: defaultKeyboardShortcuts,
externalGoosed: {
enabled: false,
url: '',
secret: '',
},
// UI preferences
theme: 'light',
useSystemTheme: true,
responseStyle: 'concise',
showPricing: true,
sessionSharing: {
enabled: false,
baseUrl: '',
},
seenAnnouncementIds: [],
navExpandedWidth: null,
};
export function getKeyboardShortcuts(settings: Settings): KeyboardShortcuts {
if (!settings.keyboardShortcuts && settings.globalShortcut !== undefined) {
const focusShortcut = settings.globalShortcut;
let launcherShortcut: string | null = null;
if (focusShortcut) {
if (focusShortcut.includes('Shift')) {
launcherShortcut = focusShortcut;
} else {
launcherShortcut = focusShortcut.replace(/\+([Gg])$/, '+Shift+$1');
}
}
return {
...defaultKeyboardShortcuts,
focusWindow: focusShortcut,
quickLauncher: launcherShortcut,
};
}
return { ...defaultKeyboardShortcuts, ...settings.keyboardShortcuts };
}