Skip to content

Conversation

@AnishSarkar22
Copy link
Contributor

@AnishSarkar22 AnishSarkar22 commented Dec 30, 2025

  • New way for using connectors, now all connectors are in chat page itself.
  • Moved all oauth from manage connectors page to the new popup
  • Tooltip design change

Description

Motivation and Context

FIX #

Screenshots

API Changes

  • This PR includes API changes

Change Type

  • Bug fix
  • New feature
  • Performance improvement
  • Refactoring
  • Documentation
  • Dependency/Build system
  • Breaking change
  • Other (specify):

Testing Performed

  • Tested locally
  • Manual/QA verification

Checklist

  • Follows project coding standards and conventions
  • Documentation updated as needed
  • Dependencies updated as needed
  • No lint/build errors or new warnings
  • All relevant tests are passing

High-level PR Summary

This PR refactors the connectors interface by moving it from a dedicated page to a modal popup dialog. The new ConnectorPopup component provides a tabbed interface for browsing all connectors and viewing active sources, with OAuth authentication handled directly in the popup. The implementation includes URL synchronization for deep linking, a search feature for filtering connectors, and visual improvements to tooltips throughout the application. The connector indicator button now opens the modal instead of a simple popover, making it easier to manage connections directly from the chat interface.

⏱️ Estimated Review Time: 15-30 minutes

💡 Review Order Suggestion
Order File Path
1 surfsense_web/components/assistant-ui/connector-popup.tsx
2 surfsense_web/components/assistant-ui/thread.tsx
3 surfsense_web/components/ui/dialog.tsx
4 surfsense_web/components/assistant-ui/tooltip-icon-button.tsx
5 surfsense_web/components/ui/tooltip.tsx
6 surfsense_web/components/assistant-ui/attachment.tsx

Need help? Join our Discord

Analyze latest changes

@vercel
Copy link

vercel bot commented Dec 30, 2025

@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.

Copy link

@recurseml recurseml bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review by RecurseML

🔍 Review performed on 2387004..733ec5d

✨ No bugs found, your code is sparkling clean

✅ Files analyzed, no issues (5)

surfsense_web/components/assistant-ui/attachment.tsx
surfsense_web/components/assistant-ui/thread.tsx
surfsense_web/components/assistant-ui/tooltip-icon-button.tsx
surfsense_web/components/ui/dialog.tsx
surfsense_web/components/ui/tooltip.tsx

…luding border adjustments, background colors, and hover effects.
…ameters and improve indexing configuration handling in the connector popup.
…nd all connectors, enhance indexing configuration view, and improve date range selection functionality.
…or dialog with improved query parameter handling, and implement scroll detection in indexing configuration view.
…ng Google Drive folder selection, and enhance connector management with improved state handling and UI updates.
…nnector dialog with creation functionality, and improve UI responsiveness and styling across components.
… and connection handling, enhance connector dialog with non-OAuth connection logic, and improve state management for connector creation.
…its functionality, enhance Linear connect form with benefits display and accordion documentation section.
…nhance connector dialog for indexing settings, and implement date range selection for periodic sync.
…ncluding configuration forms and benefits display, enhance connector dialog for new connectors, and improve overall connector management functionality.
…g configuration forms and benefits display, enhance connector dialog for new connectors, and improve overall connector management functionality.
…nd Luma connectors, including configuration forms and benefits display, enhance connector dialog for new connectors, and improve overall connector management functionality.
…nect view with additional properties, and refine type handling in connector dialog for improved schema compliance.
…ser experience with improved loading states, and streamline source addition process by removing unnecessary components.
…dd document count display for connectors, and implement indexing progress indicators for better user feedback.
…dashboard, streamlining the source addition process and improving UI consistency.
@AnishSarkar22 AnishSarkar22 marked this pull request as ready for review December 31, 2025 12:06
@AnishSarkar22 AnishSarkar22 marked this pull request as draft December 31, 2025 12:08
…source addition process with new YouTube crawler view, and enhance connector management UI for improved user experience.
@AnishSarkar22 AnishSarkar22 marked this pull request as ready for review December 31, 2025 12:49
@AnishSarkar22 AnishSarkar22 marked this pull request as draft December 31, 2025 16:23
…border adjustments for better visual consistency
…tion process, updating UI elements for improved user experience and consistency.
…ad.tsx and google-drive-folder-tree.tsx for improved maintainability
- Implement CirclebackConnectForm for user input and configuration
- Update connector benefits to include Circleback features
- Add CirclebackConfig component for webhook configuration
- Integrate Circleback into connector selection and management UI
- Update connector constants and document mappings for Circleback
@AnishSarkar22 AnishSarkar22 marked this pull request as ready for review December 31, 2025 21:30
@MODSetter MODSetter merged commit d6bf4d7 into MODSetter:dev Jan 1, 2026
3 of 5 checks passed
Copy link

@recurseml recurseml bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review by RecurseML

🔍 Review performed on 733ec5d..77ea261

✨ No bugs found, your code is sparkling clean

✅ Files analyzed, no issues (50)

surfsense_backend/.env.example
surfsense_backend/alembic/versions/54_add_google_drive_connector_enums.py
surfsense_backend/alembic/versions/55_rename_google_drive_connector_to_file.py
surfsense_backend/alembic/versions/56_add_circleback_connector_enums.py
surfsense_backend/app/agents/new_chat/tools/knowledge_base.py
surfsense_backend/app/config/__init__.py
surfsense_backend/app/connectors/google_drive/__init__.py
surfsense_backend/app/connectors/google_drive/change_tracker.py
surfsense_backend/app/connectors/google_drive/client.py
surfsense_backend/app/connectors/google_drive/content_extractor.py
surfsense_backend/app/connectors/google_drive/credentials.py
surfsense_backend/app/connectors/google_drive/file_types.py
surfsense_backend/app/connectors/google_drive/folder_manager.py
surfsense_backend/app/db.py
surfsense_backend/app/routes/__init__.py
surfsense_backend/app/routes/airtable_add_connector_route.py
surfsense_backend/app/routes/circleback_webhook_route.py
surfsense_backend/app/routes/google_calendar_add_connector_route.py
surfsense_backend/app/routes/google_drive_add_connector_route.py
surfsense_backend/app/routes/google_gmail_add_connector_route.py
surfsense_backend/app/routes/logs_routes.py
surfsense_backend/app/routes/search_source_connectors_routes.py
surfsense_backend/app/schemas/__init__.py
surfsense_backend/app/schemas/google_drive.py
surfsense_backend/app/services/connector_service.py
surfsense_backend/app/tasks/celery_tasks/connector_tasks.py
surfsense_backend/app/tasks/celery_tasks/document_tasks.py
surfsense_backend/app/tasks/connector_indexers/__init__.py
surfsense_backend/app/tasks/connector_indexers/google_drive_indexer.py
surfsense_backend/app/tasks/document_processors/circleback_processor.py
surfsense_backend/app/tasks/document_processors/file_processors.py
surfsense_web/app/dashboard/[search_space_id]/client-layout.tsx
surfsense_web/app/dashboard/[search_space_id]/connectors/(manage)/page.tsx
surfsense_web/app/dashboard/[search_space_id]/connectors/[connector_id]/edit/page.tsx
surfsense_web/app/dashboard/[search_space_id]/connectors/[connector_id]/page.tsx
surfsense_web/app/dashboard/[search_space_id]/connectors/add/airtable-connector/page.tsx
surfsense_web/app/dashboard/[search_space_id]/connectors/add/baidu-search-api/page.tsx
surfsense_web/app/dashboard/[search_space_id]/connectors/add/bookstack-connector/page.tsx
surfsense_web/app/dashboard/[search_space_id]/connectors/add/clickup-connector/page.tsx
surfsense_web/app/dashboard/[search_space_id]/connectors/add/confluence-connector/page.tsx
surfsense_web/app/dashboard/[search_space_id]/connectors/add/discord-connector/page.tsx
surfsense_web/app/dashboard/[search_space_id]/connectors/add/elasticsearch-connector/page.tsx
surfsense_web/app/dashboard/[search_space_id]/connectors/add/github-connector/page.tsx
surfsense_web/app/dashboard/[search_space_id]/connectors/add/google-calendar-connector/page.tsx
surfsense_web/app/dashboard/[search_space_id]/connectors/add/google-gmail-connector/page.tsx
surfsense_web/app/dashboard/[search_space_id]/connectors/add/jira-connector/page.tsx
surfsense_web/app/dashboard/[search_space_id]/connectors/add/linear-connector/page.tsx
surfsense_web/app/dashboard/[search_space_id]/connectors/add/linkup-api/page.tsx
surfsense_web/app/dashboard/[search_space_id]/connectors/add/luma-connector/page.tsx
surfsense_web/app/dashboard/[search_space_id]/connectors/add/notion-connector/page.tsx

⏭️ Files skipped (120)
  Locations  
surfsense_web/app/dashboard/[search_space_id]/connectors/add/page.tsx
surfsense_web/app/dashboard/[search_space_id]/connectors/add/searxng/page.tsx
surfsense_web/app/dashboard/[search_space_id]/connectors/add/slack-connector/page.tsx
surfsense_web/app/dashboard/[search_space_id]/connectors/add/tavily-api/page.tsx
surfsense_web/app/dashboard/[search_space_id]/connectors/add/webcrawler-connector/page.tsx
surfsense_web/app/dashboard/[search_space_id]/documents/(manage)/components/DocumentsTableShell.tsx
surfsense_web/app/dashboard/[search_space_id]/documents/(manage)/page.tsx
surfsense_web/app/dashboard/[search_space_id]/documents/upload/page.tsx
surfsense_web/app/dashboard/[search_space_id]/documents/youtube/page.tsx
surfsense_web/app/dashboard/[search_space_id]/editor/[documentId]/page.tsx
surfsense_web/app/dashboard/[search_space_id]/layout.tsx
surfsense_web/app/dashboard/[search_space_id]/logs/(manage)/page.tsx
surfsense_web/app/dashboard/[search_space_id]/sources/add/page.tsx
surfsense_web/app/globals.css
surfsense_web/components/assistant-ui/assistant-message.tsx
surfsense_web/components/assistant-ui/attachment.tsx
surfsense_web/components/assistant-ui/branch-picker.tsx
surfsense_web/components/assistant-ui/composer-action.tsx
surfsense_web/components/assistant-ui/composer.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/connector-popup/components/connector-dialog-header.tsx
surfsense_web/components/assistant-ui/connector-popup/components/date-range-selector.tsx
surfsense_web/components/assistant-ui/connector-popup/components/periodic-sync-config.tsx
surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/baidu-search-api-connect-form.tsx
surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/bookstack-connect-form.tsx
surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/circleback-connect-form.tsx
surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/clickup-connect-form.tsx
surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/confluence-connect-form.tsx
surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/discord-connect-form.tsx
surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/elasticsearch-connect-form.tsx
surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/github-connect-form.tsx
surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/jira-connect-form.tsx
surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/linear-connect-form.tsx
surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/linkup-api-connect-form.tsx
surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/luma-connect-form.tsx
surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/notion-connect-form.tsx
surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/searxng-connect-form.tsx
surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/slack-connect-form.tsx
surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/tavily-api-connect-form.tsx
surfsense_web/components/assistant-ui/connector-popup/connect-forms/connector-benefits.ts
surfsense_web/components/assistant-ui/connector-popup/connect-forms/index.tsx
surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/baidu-search-api-config.tsx
surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/bookstack-config.tsx
surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/circleback-config.tsx
surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/clickup-config.tsx
surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/confluence-config.tsx
surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/discord-config.tsx
surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/elasticsearch-config.tsx
surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/github-config.tsx
surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/google-drive-config.tsx
surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/jira-config.tsx
surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/linear-config.tsx
surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/linkup-api-config.tsx
surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/luma-config.tsx
surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/notion-config.tsx
surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/searxng-config.tsx
surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/slack-config.tsx
surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/tavily-api-config.tsx
surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/webcrawler-config.tsx
surfsense_web/components/assistant-ui/connector-popup/connector-configs/index.tsx
surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-connect-view.tsx
surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx
surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/indexing-configuration-view.tsx
surfsense_web/components/assistant-ui/connector-popup/constants/connector-constants.ts
surfsense_web/components/assistant-ui/connector-popup/constants/connector-popup.schemas.ts
surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts
surfsense_web/components/assistant-ui/connector-popup/index.ts
surfsense_web/components/assistant-ui/connector-popup/tabs/active-connectors-tab.tsx
surfsense_web/components/assistant-ui/connector-popup/tabs/all-connectors-tab.tsx
surfsense_web/components/assistant-ui/connector-popup/utils/connector-document-mapping.ts
surfsense_web/components/assistant-ui/connector-popup/views/youtube-crawler-view.tsx
surfsense_web/components/assistant-ui/edit-composer.tsx
surfsense_web/components/assistant-ui/thinking-steps.tsx
surfsense_web/components/assistant-ui/thread-scroll-to-bottom.tsx
surfsense_web/components/assistant-ui/thread-welcome.tsx
surfsense_web/components/assistant-ui/thread.tsx
surfsense_web/components/assistant-ui/user-message.tsx
surfsense_web/components/connectors/google-drive-folder-tree.tsx
surfsense_web/components/dashboard-breadcrumb.tsx
surfsense_web/components/new-chat/model-selector.tsx
surfsense_web/components/sidebar/app-sidebar.tsx
surfsense_web/components/sidebar/nav-main.tsx
surfsense_web/components/sources/ConnectorsTab.tsx
surfsense_web/components/sources/YouTubeTab.tsx
surfsense_web/components/sources/connector-data.tsx
surfsense_web/components/ui/switch.tsx
surfsense_web/contracts/enums/connector.ts
surfsense_web/contracts/enums/connectorIcons.tsx
surfsense_web/contracts/types/connector.types.ts
surfsense_web/contracts/types/document.types.ts
surfsense_web/contracts/types/log.types.ts
surfsense_web/hooks/use-google-drive-folders.ts
surfsense_web/hooks/use-logs.ts
surfsense_web/lib/apis/connectors-api.service.ts
surfsense_web/lib/connectors/utils.ts
surfsense_web/lib/query-client/cache-keys.ts
surfsense_web/messages/en.json
surfsense_web/messages/zh.json
surfsense_web/public/connectors/airtable.svg
surfsense_web/public/connectors/baidu-search.svg
surfsense_web/public/connectors/bookstack.svg
surfsense_web/public/connectors/clickup.svg
surfsense_web/public/connectors/confluence.svg
surfsense_web/public/connectors/discord.svg
surfsense_web/public/connectors/elasticsearch.svg
surfsense_web/public/connectors/github.svg
surfsense_web/public/connectors/google-calendar.svg
surfsense_web/public/connectors/google-drive.svg
surfsense_web/public/connectors/google-gmail.svg
surfsense_web/public/connectors/jira.svg
surfsense_web/public/connectors/linear.svg
surfsense_web/public/connectors/luma.svg
surfsense_web/public/connectors/microsoft-teams.svg
surfsense_web/public/connectors/notion.svg
surfsense_web/public/connectors/slack.svg
surfsense_web/public/connectors/tavily.svg
surfsense_web/public/connectors/youtube.svg
surfsense_web/public/connectors/zoom.svg
surfsense_web/tailwind.config.js

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants