feat: citation UI for web links & many UI/UX improvements#1036
feat: citation UI for web links & many UI/UX improvements#1036AnishSarkar22 wants to merge 24 commits intoMODSetter:devfrom
Conversation
…or_id based on chat visibility
…roved user experience
…delManager for improved UI consistency
…rts in chat-header and image-model-manager for better organization
…arity and consistency across components
…e related imports for better organization and clarity
…o-configuration and redirect features for UI testing
…reamline LLMConfigForm usage for improved user experience
…ack messages for improved clarity
…edback messages for improved clarity and consistency
…g auto mode references for improved clarity and consistency
…component heights, and enhance right panel functionality with expanded button integration
…tle update logic for improved user experience
…tion and preventing race conditions during deletion for improved user experience
…e related logic across components for improved functionality
…esponsive design adjustments for improved user experience
…unctionality and schema validation for enhanced citation management
…d UI enhancements
|
@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. |
There was a problem hiding this comment.
Review by RecurseML
🔍 Review performed on 05030f6..74826b3
✨ No bugs found, your code is sparkling clean
✅ Files analyzed, no issues (50)
• docs/chinese-llm-setup.md
• surfsense_backend/app/tasks/chat/stream_new_chat.py
• surfsense_web/app/dashboard/[search_space_id]/client-layout.tsx
• surfsense_web/app/dashboard/[search_space_id]/documents/(manage)/components/DocumentsTableShell.tsx
• surfsense_web/app/dashboard/[search_space_id]/documents/(manage)/components/RowActions.tsx
• surfsense_web/app/dashboard/[search_space_id]/new-chat/[[...chat_id]]/page.tsx
• surfsense_web/app/dashboard/[search_space_id]/onboard/page.tsx
• surfsense_web/app/dashboard/[search_space_id]/user-settings/components/PromptsContent.tsx
• surfsense_web/atoms/image-gen-config/image-gen-config-mutation.atoms.ts
• surfsense_web/atoms/new-llm-config/new-llm-config-mutation.atoms.ts
• surfsense_web/atoms/tabs/tabs.atom.ts
• surfsense_web/components/assistant-ui/assistant-message.tsx
• surfsense_web/components/assistant-ui/citation-metadata-context.tsx
• surfsense_web/components/assistant-ui/connector-popup.tsx
• surfsense_web/components/assistant-ui/connector-popup/components/connector-card.tsx
• surfsense_web/components/assistant-ui/inline-citation.tsx
• surfsense_web/components/assistant-ui/thinking-steps.tsx
• surfsense_web/components/assistant-ui/user-message.tsx
• surfsense_web/components/documents/DocumentNode.tsx
• surfsense_web/components/editor-panel/editor-panel.tsx
• surfsense_web/components/layout/providers/LayoutDataProvider.tsx
• surfsense_web/components/layout/ui/header/Header.tsx
• surfsense_web/components/layout/ui/right-panel/RightPanel.tsx
• surfsense_web/components/layout/ui/shell/LayoutShell.tsx
• surfsense_web/components/layout/ui/sidebar/AllPrivateChatsSidebar.tsx
• surfsense_web/components/layout/ui/sidebar/AllSharedChatsSidebar.tsx
• surfsense_web/components/layout/ui/sidebar/DocumentsSidebar.tsx
• surfsense_web/components/layout/ui/sidebar/Sidebar.tsx
• surfsense_web/components/layout/ui/tabs/DocumentTabContent.tsx
• surfsense_web/components/layout/ui/tabs/TabBar.tsx
• surfsense_web/components/new-chat/chat-header.tsx
• surfsense_web/components/new-chat/image-config-dialog.tsx
• surfsense_web/components/new-chat/model-config-dialog.tsx
• surfsense_web/components/new-chat/model-selector.tsx
• surfsense_web/components/public-chat/public-thread.tsx
• surfsense_web/components/settings/image-model-manager.tsx
• surfsense_web/components/settings/model-config-manager.tsx
• surfsense_web/components/shared/image-config-dialog.tsx
• surfsense_web/components/shared/llm-config-form.tsx
• surfsense_web/components/shared/model-config-dialog.tsx
• surfsense_web/components/tool-ui/citation/_adapter.tsx
• surfsense_web/components/tool-ui/citation/citation-list.tsx
• surfsense_web/components/tool-ui/citation/citation.tsx
• surfsense_web/components/tool-ui/citation/index.ts
• surfsense_web/components/tool-ui/citation/schema.ts
• surfsense_web/components/tool-ui/shared/media/index.ts
• surfsense_web/components/tool-ui/shared/media/safe-navigation.ts
• surfsense_web/components/tool-ui/shared/media/sanitize-href.ts
• surfsense_web/components/tool-ui/shared/schema.ts
• surfsense_web/contracts/enums/toolIcons.tsx
⏭️ Files skipped (5)
| Locations |
|---|
surfsense_web/messages/en.json |
surfsense_web/messages/es.json |
surfsense_web/messages/hi.json |
surfsense_web/messages/pt.json |
surfsense_web/messages/zh.json |
…t for improved citation management
… improved UI presentation
Description
Motivation and Context
FIX #
Screenshots
API Changes
Change Type
Testing Performed
Checklist
High-level PR Summary
This PR introduces web search citations with rich UI components, improves chat tab management with better deletion handling, and refines the onboarding experience. It adds a new
Citationcomponent system that displays web search results with metadata (title, snippet, favicon) in various styles (inline, stacked, default cards), extracts citation data from backend web search tool results via SSE, and integrates it throughout the chat UI. The tab system now properly handles deleted chats by switching to a fallback tab and preventing recreation race conditions. The onboarding flow has been streamlined with a cleaner form layout, and model/image configuration dialogs have been consolidated into reusable shared components. Additional improvements include consistent loading spinners with absolute positioning, expanded FILE document editing support, better author avatar visibility logic for shared chats, and numerous small UX polish items like improved delete confirmations, toast messages with model names, and header layout refinements.⏱️ Estimated Review Time: 30-90 minutes
💡 Review Order Suggestion
docs/chinese-llm-setup.mdsurfsense_web/messages/en.jsonsurfsense_web/messages/es.jsonsurfsense_web/messages/hi.jsonsurfsense_web/messages/pt.jsonsurfsense_web/messages/zh.jsonsurfsense_web/components/tool-ui/shared/schema.tssurfsense_web/components/tool-ui/shared/media/sanitize-href.tssurfsense_web/components/tool-ui/shared/media/safe-navigation.tssurfsense_web/components/tool-ui/shared/media/index.tssurfsense_web/components/tool-ui/citation/schema.tssurfsense_web/components/tool-ui/citation/_adapter.tsxsurfsense_web/components/tool-ui/citation/citation.tsxsurfsense_web/components/tool-ui/citation/citation-list.tsxsurfsense_web/components/tool-ui/citation/index.tssurfsense_backend/app/tasks/chat/stream_new_chat.pysurfsense_web/components/assistant-ui/citation-metadata-context.tsxsurfsense_web/components/assistant-ui/inline-citation.tsxsurfsense_web/components/assistant-ui/assistant-message.tsxsurfsense_web/components/public-chat/public-thread.tsxsurfsense_web/atoms/tabs/tabs.atom.tssurfsense_web/app/dashboard/[search_space_id]/new-chat/[[...chat_id]]/page.tsxsurfsense_web/components/layout/providers/LayoutDataProvider.tsxsurfsense_web/components/layout/ui/sidebar/AllPrivateChatsSidebar.tsxsurfsense_web/components/layout/ui/sidebar/AllSharedChatsSidebar.tsxsurfsense_web/hooks/use-global-loading.tssurfsense_web/app/dashboard/[search_space_id]/onboard/page.tsxsurfsense_web/components/shared/llm-config-form.tsxsurfsense_web/components/shared/model-config-dialog.tsxsurfsense_web/components/shared/image-config-dialog.tsxsurfsense_web/components/new-chat/chat-header.tsxsurfsense_web/components/new-chat/model-selector.tsxsurfsense_web/components/settings/model-config-manager.tsxsurfsense_web/components/settings/image-model-manager.tsxsurfsense_web/atoms/new-llm-config/new-llm-config-mutation.atoms.tssurfsense_web/atoms/image-gen-config/image-gen-config-mutation.atoms.tssurfsense_web/app/dashboard/[search_space_id]/user-settings/components/PromptsContent.tsxsurfsense_web/app/dashboard/[search_space_id]/documents/(manage)/components/DocumentsTableShell.tsxsurfsense_web/app/dashboard/[search_space_id]/documents/(manage)/components/RowActions.tsxsurfsense_web/components/documents/DocumentNode.tsxsurfsense_web/components/editor-panel/editor-panel.tsxsurfsense_web/components/layout/ui/tabs/DocumentTabContent.tsxsurfsense_web/components/layout/ui/sidebar/DocumentsSidebar.tsxsurfsense_web/components/assistant-ui/user-message.tsxsurfsense_web/components/assistant-ui/thinking-steps.tsxsurfsense_web/components/assistant-ui/connector-popup.tsxsurfsense_web/components/assistant-ui/connector-popup/components/connector-card.tsxsurfsense_web/contracts/enums/toolIcons.tsxsurfsense_web/app/dashboard/[search_space_id]/client-layout.tsxsurfsense_web/components/layout/ui/shell/LayoutShell.tsxsurfsense_web/components/layout/ui/tabs/TabBar.tsxsurfsense_web/components/layout/ui/header/Header.tsxsurfsense_web/components/layout/ui/right-panel/RightPanel.tsxsurfsense_web/components/layout/ui/sidebar/Sidebar.tsx