mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-26 13:18:51 +01:00
🧩 feat: Web Search Config Validations & Clipboard Citation Processing (#7530)
* 🔧 chore: Add missing optional `scraperTimeout` to webSearchSchema
* chore: Add missing optional `scraperTimeout` to web search authentication result
* chore: linting
* feat: Integrate attachment handling and citation processing in message components
- Added `useAttachments` hook to manage message attachments and search results.
- Updated `MessageParts`, `ContentParts`, and `ContentRender` components to utilize the new hook for improved attachment handling.
- Enhanced `useCopyToClipboard` to format citations correctly, including support for composite citations and deduplication.
- Introduced utility functions for citation processing and cleanup.
- Added tests for the new `useCopyToClipboard` functionality to ensure proper citation formatting and handling.
* feat: Add configuration for LibreChat Code Interpreter API and Web Search variables
* fix: Update searchResults type to use SearchResultData for better type safety
* feat: Add web search configuration validation and logging
- Introduced `checkWebSearchConfig` function to validate web search configuration values, ensuring they are environment variable references.
- Added logging for proper configuration and warnings for incorrect values.
- Created unit tests for `checkWebSearchConfig` to cover various scenarios, including valid and invalid configurations.
* docs: Update README to include Web Search feature details
- Added a section for the Web Search feature, highlighting its capabilities to search the internet and enhance AI context.
- Included links for further information on the Web Search functionality.
* ci: Add mock for checkWebSearchConfig in AppService tests
* chore: linting
* feat: Enhance Shared Messages with Web Search UI by adding searchResults prop to SearchContent and MinimalHoverButtons components
* chore: linting
* refactor: remove Meilisearch index sync from importConversations function
* feat: update safeSearch implementation to use SafeSearchTypes enum
* refactor: remove commented-out code in loadTools function
* fix: ensure responseMessageId handles latestMessage ID correctly
* feat: enhance Vite configuration for improved chunking and caching
- Added additional globIgnores for map files in Workbox configuration.
- Implemented high-impact chunking for various large libraries to optimize performance.
- Increased chunkSizeWarningLimit from 1200 to 1500 for better handling of larger chunks.
* refactor: move health check hook to Root, fix bad setState for Temporary state
- Enhanced the `useHealthCheck` hook to initiate health checks only when the user is authenticated.
- Added logic for managing health check intervals and handling window focus events.
- Introduced a new test suite for `useHealthCheck` to cover various scenarios including authentication state changes and error handling.
- Removed the health check invocation from `ChatRoute` and added it to `Root` for global health monitoring.
* fix: update font alias in Vite configuration for correct path resolution
This commit is contained in:
parent
cede5d120c
commit
b2f44fc90f
34 changed files with 1709 additions and 140 deletions
|
|
@ -38,7 +38,7 @@ export default defineConfig({
|
|||
useCredentials: true,
|
||||
workbox: {
|
||||
globPatterns: ['**/*'],
|
||||
globIgnores: ['images/**/*'],
|
||||
globIgnores: ['images/**/*', '**/*.map'],
|
||||
maximumFileSizeToCacheInBytes: 4 * 1024 * 1024,
|
||||
navigateFallbackDenylist: [/^\/oauth/],
|
||||
},
|
||||
|
|
@ -96,26 +96,54 @@ export default defineConfig({
|
|||
output: {
|
||||
manualChunks(id: string) {
|
||||
if (id.includes('node_modules')) {
|
||||
// Group Radix UI libraries together.
|
||||
// High-impact chunking for large libraries
|
||||
if (id.includes('@codesandbox/sandpack')) {
|
||||
return 'sandpack';
|
||||
}
|
||||
if (id.includes('react-virtualized')) {
|
||||
return 'virtualization';
|
||||
}
|
||||
if (id.includes('i18next') || id.includes('react-i18next')) {
|
||||
return 'i18n';
|
||||
}
|
||||
if (id.includes('lodash')) {
|
||||
return 'utilities';
|
||||
}
|
||||
if (id.includes('date-fns')) {
|
||||
return 'date-utils';
|
||||
}
|
||||
if (id.includes('@dicebear')) {
|
||||
return 'avatars';
|
||||
}
|
||||
if (id.includes('react-dnd') || id.includes('react-flip-toolkit')) {
|
||||
return 'react-interactions';
|
||||
}
|
||||
if (id.includes('react-hook-form')) {
|
||||
return 'forms';
|
||||
}
|
||||
if (id.includes('react-router-dom')) {
|
||||
return 'routing';
|
||||
}
|
||||
if (id.includes('qrcode.react') || id.includes('@marsidev/react-turnstile')) {
|
||||
return 'security-ui';
|
||||
}
|
||||
|
||||
// Existing chunks
|
||||
if (id.includes('@radix-ui')) {
|
||||
return 'radix-ui';
|
||||
}
|
||||
// Group framer-motion separately.
|
||||
if (id.includes('framer-motion')) {
|
||||
return 'framer-motion';
|
||||
}
|
||||
// Group markdown-related libraries.
|
||||
if (id.includes('node_modules/highlight.js')) {
|
||||
return 'markdown_highlight';
|
||||
}
|
||||
if (id.includes('node_modules/hast-util-raw') || id.includes('node_modules/katex')) {
|
||||
return 'markdown_large';
|
||||
}
|
||||
// Group TanStack libraries together.
|
||||
if (id.includes('@tanstack')) {
|
||||
return 'tanstack-vendor';
|
||||
}
|
||||
// Additional grouping for other node_modules:
|
||||
if (id.includes('@headlessui')) {
|
||||
return 'headlessui';
|
||||
}
|
||||
|
|
@ -133,7 +161,7 @@ export default defineConfig({
|
|||
entryFileNames: 'assets/[name].[hash].js',
|
||||
chunkFileNames: 'assets/[name].[hash].js',
|
||||
assetFileNames: (assetInfo) => {
|
||||
if (assetInfo.names && /\.(woff|woff2|eot|ttf|otf)$/.test(assetInfo.names)) {
|
||||
if (assetInfo.names?.[0] && /\.(woff|woff2|eot|ttf|otf)$/.test(assetInfo.names[0])) {
|
||||
return 'assets/fonts/[name][extname]';
|
||||
}
|
||||
return 'assets/[name].[hash][extname]';
|
||||
|
|
@ -150,12 +178,12 @@ export default defineConfig({
|
|||
warn(warning);
|
||||
},
|
||||
},
|
||||
chunkSizeWarningLimit: 1200,
|
||||
chunkSizeWarningLimit: 1500,
|
||||
},
|
||||
resolve: {
|
||||
alias: {
|
||||
'~': path.join(__dirname, 'src/'),
|
||||
$fonts: resolve('public/fonts'),
|
||||
$fonts: '/fonts',
|
||||
},
|
||||
},
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue