feat: enhance UI and functionality across chat and settings

- Added custom scrollbar styles for improved aesthetics and usability across the interface.
- Implemented responsive adjustments for chat sidebar and input components to enhance mobile experience.
- Integrated tooltip components in select elements for better user guidance and information display.
- Updated chat input and message components for improved styling and functionality.
- Enhanced settings page with semantic query expansion options and improved model selection UI.
- Refactored sidebar list to include better date formatting and tooltip support for session titles.
- Introduced GPU stats monitoring in the system panel for better hardware insights.
This commit is contained in:
Evandro Fonseca Junior committed 2025-11-26 19:04:46 -03:00
1 parent 84ea2dec19
commit e5f062040c
33 files changed
+4670 -465

No files matched your search

+29 -1
View File
@@ -27,6 +27,10 @@ export interface SettingsState {
totalSourcesLimit: number;
categories: SearchCategory[];
userCustomSites: string[];
engineOrder: string[]; // Ordem dos motores de busca: ['google', 'bing', 'yahoo', 'duckduckgo', 'startpage']
minResultsPerEngine: number; // Mínimo de resultados para considerar sucesso
enableSemanticExpansion: boolean; // Habilitar expansão semântica de queries
semanticExpansionLanguage: string; // Idioma para expansão: 'pt-BR', 'en', 'es'
};
// Content Processing
@@ -72,6 +76,10 @@ export interface SettingsState {
setWebSearchTimeout: (timeout: number) => void;
setWebSearchMaxConcurrentTabs: (max: number) => void;
setWebSearchTotalSourcesLimit: (limit: number) => void;
setWebSearchEngineOrder: (order: string[]) => void;
setWebSearchMinResultsPerEngine: (min: number) => void;
setWebSearchSemanticExpansion: (enabled: boolean) => void;
setWebSearchSemanticExpansionLanguage: (language: string) => void;
addExcludedDomain: (domain: string) => void;
removeExcludedDomain: (domain: string) => void;
toggleCategory: (categoryId: string) => void;
@@ -196,12 +204,16 @@ const initialState = {
webSearch: {
enabled: true,
maxResults: 10,
timeout: 10,
timeout: 15000, // Timeout em milissegundos (15 segundos)
excludedDomains: ['youtube.com', 'linkedin.com'],
maxConcurrentTabs: 5,
totalSourcesLimit: 100,
categories: defaultCategories,
userCustomSites: [],
engineOrder: ['google', 'bing', 'yahoo', 'duckduckgo', 'startpage'], // Ordem padrão
minResultsPerEngine: 1, // Mínimo de 1 resultado para considerar sucesso
enableSemanticExpansion: true, // Habilitado por padrão
semanticExpansionLanguage: 'pt-BR', // Português brasileiro por padrão
},
sourcesConfig: null,
autoStart: false,
@@ -266,6 +278,22 @@ export const useSettingsStore = create<SettingsState>()(
set((state) => ({
webSearch: { ...state.webSearch, totalSourcesLimit: limit },
})),
setWebSearchEngineOrder: (order) =>
set((state) => ({
webSearch: { ...state.webSearch, engineOrder: order },
})),
setWebSearchMinResultsPerEngine: (min) =>
set((state) => ({
webSearch: { ...state.webSearch, minResultsPerEngine: min },
})),
setWebSearchSemanticExpansion: (enabled) =>
set((state) => ({
webSearch: { ...state.webSearch, enableSemanticExpansion: enabled },
})),
setWebSearchSemanticExpansionLanguage: (language) =>
set((state) => ({
webSearch: { ...state.webSearch, semanticExpansionLanguage: language },
})),
addExcludedDomain: (domain) =>
set((state) => {
const normalized = domain.toLowerCase().trim().replace(/^https?:\/\//, '').replace(/\/$/, '');