feat(local): redesign desktop experience and model management - #1757
Conversation
…heck - Refactored the document deletion logic to prevent deletion of documents that are currently processing. - Introduced a new test to verify that a document in processing cannot be deleted, returning a 409 conflict status. - Updated frontend components to handle document deletion actions, including disabling the delete option for processing documents. - Enhanced the user experience by providing feedback on deletion actions in the UI.
…labels and updated descriptions - Added a Badge component to display model fit labels in the ModelCard, improving user feedback on compatibility. - Updated ModelCatalogPage to clarify model compatibility with a new informational message. - Refined section titles and descriptions for better clarity and user experience.
…layout - Introduced a new SVG logo for SurfSense to enhance branding. - Adjusted padding and layout in ModelCard, ModelCatalogPage, and ModelFamilyGroup for a more consistent design. - Updated ModelSelectionPage to incorporate the new logo and refine component spacing for better user experience. - Enhanced test coverage for model selection to ensure UI elements remain accessible and properly positioned.
- Added a background style for the model selection page in macOS Electron. - Changed background color in the chat thread list and sources panel for improved visual consistency. - Enhanced the layout of the model selection page to include a data attribute for better targeting.
… and styling - Added CSS styles for fading effects on sidebar row titles to improve visual presentation. - Updated ThreadList component to ensure long chat titles fit within the compact sidebar layout. - Introduced tests for ThreadList to verify title overflow handling and styling consistency. - Refactored source upload tests to check for updated class names and styles in the UI components.
- Introduced a timeout mechanism for document highlighting in the WorkspaceDashboard component, allowing for automatic clearing after 3 seconds. - Updated tests for the dashboard to verify the correct behavior of document highlighting and scrolling. - Refactored related components to ensure consistent handling of highlighted documents and improved user experience. - Added class modifications to the AlertDialogContent in the model catalog for better styling.
- Removed the workspaceName prop from the ThreadList component to simplify its interface. - Updated the ThreadList header to display a static title "SurfSense" with improved styling. - Adjusted related tests to reflect the changes in the ThreadList component and ensure proper rendering of the new title.
…ThreadPanel - Introduced an AddSourcesButton component to allow users to upload multiple source files. - Integrated the new button into the ChatComposer and ThreadPanel components, enabling file uploads in both placements. - Updated related tests to ensure the presence and functionality of the AddSourcesButton in different layouts.
…odel validation - Updated the catalog assembly process to enforce unique catalog rows for exact runtime targets, improving clarity in model recommendations. - Introduced logging for ambiguous model collisions, providing better insights during model resolution. - Enhanced the CuratedModelsManifest to reject duplicate runtime targets, ensuring data integrity. - Increased the maximum output bytes for llmfit scans to accommodate larger datasets. - Added tests to verify the correct handling of model collisions and curated model ownership.
…dd related tests - Introduced a SettingsDialog component to manage appearance preferences (light, dark, system). - Integrated theme selection functionality with icons for better user experience. - Added tests for the SettingsDialog to ensure correct theme persistence and UI behavior. - Updated WorkspaceRail to include a button for opening the settings dialog. - Enhanced icon imports in the icons.tsx file to support new features.
- Added a new color variable for app shell background. - Updated sidebar color to enhance visual consistency across components. - Adjusted related CSS variables to ensure proper theming integration.
- Introduced a new AppearanceToggle component to allow users to switch between light, dark, and system themes. - Updated SettingsDialog to integrate the AppearanceToggle, enhancing user experience for theme preferences. - Modified related tests to ensure correct functionality of the theme selection feature.
…bility - Updated the padding and font size of the "Settings" label in the SettingsDialog component to enhance visual clarity and consistency with the overall design.
…improvements - Introduced a new ModelsSettings component to manage model selection within the settings dialog. - Updated the DashboardPage to integrate model selection and settings management, allowing users to open settings directly from the workspace rail. - Enhanced the SettingsDialog to support dynamic section rendering for general and model settings. - Added a ProviderTab component to streamline model selection for different providers. - Improved test coverage for the settings dialog and model management features to ensure functionality and user experience.
…in model picker and settings section - Implemented scroll detection in the ModelPicker and SettingsSection components to provide visual feedback with shadow effects. - Updated tests for both components to verify the correct behavior of scroll interactions and shadow visibility. - Refactored the ModelPicker to utilize a ref for scroll management, improving performance and maintainability.
|
@AnishSarkar22 is attempting to deploy a commit to the Rohan Verma's projects Team on Vercel. A member of the Team first needs to authorize it. |
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Description
Motivation and Context
FIX #
Screenshots
API Changes
Change Type
Testing Performed
Checklist
High-level PR Summary
This PR implements a comprehensive local frontend redesign for SurfSense, featuring a new settings dialog with appearance and model management sections, improved model selection UX with an in-composer picker, enhanced catalog presentation with hardware fit indicators, collision resolution for duplicate runtime targets, document deletion safety during processing, refined UI spacing and visual hierarchy throughout the application, and new theme support infrastructure. The changes span backend catalog logic improvements, frontend architectural restructuring, and extensive styling refinements to create a more polished and cohesive user experience.
⏱️ Estimated Review Time: 1-3 hours
💡 Review Order Suggestion
plans/community-local/api/05-model-recommendations.mdplans/community-local/frontend/05-install-ux.mdsurfsense_local/backend/modules/llm/recommendations/curated_models.pysurfsense_local/backend/modules/llm/recommendations/llmfit.pysurfsense_local/backend/modules/llm/recommendations/catalog.pysurfsense_local/backend/tests/unit/llm/recommendations/test_curated_models.pysurfsense_local/backend/tests/unit/llm/recommendations/test_llmfit.pysurfsense_local/backend/tests/unit/llm/recommendations/test_catalog.pysurfsense_local/backend/tests/integration/llm/test_routes.pysurfsense_local/backend/modules/documents/router.pysurfsense_local/backend/tests/integration/documents/test_routes.pysurfsense_local/frontend/src/index.css.cursor/skills/color-system/PALETTE.csssurfsense_local/frontend/src/surfsense-logo.svgsurfsense_local/frontend/src/components/ui/icons.tsxsurfsense_local/frontend/src/app/app-bootstrap.test.tsxsurfsense_local/frontend/src/app/app-bootstrap.tsxsurfsense_local/frontend/src/features/model-selection/api.tssurfsense_local/frontend/src/features/model-selection/use-model-selection.tssurfsense_local/frontend/src/features/model-selection/provider-tab.tsxsurfsense_local/frontend/src/features/model-selection/model-selection-page.tsxsurfsense_local/frontend/src/features/model-selection/model-selection.test.tsxsurfsense_local/frontend/src/features/model-catalog/model-card.tsxsurfsense_local/frontend/src/features/model-catalog/model-family-group.tsxsurfsense_local/frontend/src/features/model-catalog/model-catalog-page.tsxsurfsense_local/frontend/src/features/model-catalog/model-catalog.test.tsxsurfsense_local/frontend/src/features/chat/model-picker.test.tsxsurfsense_local/frontend/src/features/chat/model-picker.tsxsurfsense_local/frontend/src/features/chat/chat-composer.tsxsurfsense_local/frontend/src/features/chat/thread-list.test.tsxsurfsense_local/frontend/src/features/chat/thread-list.tsxsurfsense_local/frontend/src/features/chat/thread-panel.tsxsurfsense_local/frontend/src/features/settings/appearance-toggle.tsxsurfsense_local/frontend/src/features/settings/models-settings.tsxsurfsense_local/frontend/src/features/settings/settings-section.tsxsurfsense_local/frontend/src/features/settings/settings-dialog.test.tsxsurfsense_local/frontend/src/features/settings/settings-dialog.tsxsurfsense_local/frontend/src/features/sources/use-sources.tssurfsense_local/frontend/src/features/sources/sources-panel.tsxsurfsense_local/frontend/src/features/sources/source-upload.test.tsxsurfsense_local/frontend/src/features/workspaces/workspace-rail.tsxsurfsense_local/frontend/src/features/dashboard/dashboard-page.tsxsurfsense_local/frontend/src/features/dashboard/dashboard-page.test.tsx