Skip to content

[Improvement] UX for connectors: Google drive Picker, auto-index with default configs#867

Merged
MODSetter merged 11 commits intoMODSetter:devfrom
CREDO23:improve-ux-connectors
Mar 10, 2026
Merged

[Improvement] UX for connectors: Google drive Picker, auto-index with default configs#867
MODSetter merged 11 commits intoMODSetter:devfrom
CREDO23:improve-ux-connectors

Conversation

@CREDO23
Copy link
Contributor

@CREDO23 CREDO23 commented Mar 10, 2026

Description

  • Replace Google Drive folder tree with native Google Picker
  • Auto-index OAuth connectors after connection with periodic sync
  • Fix Gmail HTML-to-markdown conversion

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 enhances connector UX by replacing the custom Google Drive folder tree with the native Google Picker API for file/folder selection, implementing auto-indexing with default configurations for OAuth connectors (emails, calendars, tasks, etc.) to automatically start syncing after connection, and fixing Gmail HTML-to-markdown conversion by properly cleaning nested tables and HTML elements using BeautifulSoup. The changes streamline the connection experience by reducing manual configuration steps and improving email content readability.

⏱️ Estimated Review Time: 30-90 minutes

💡 Review Order Suggestion
Order File Path
1 surfsense_backend/.env.example
2 surfsense_backend/app/config/__init__.py
3 surfsense_web/package.json
4 surfsense_web/pnpm-lock.yaml
5 surfsense_web/components/assistant-ui/connector-popup/constants/connector-constants.ts
6 surfsense_backend/app/services/composio_service.py
7 surfsense_web/lib/apis/connectors-api.service.ts
8 surfsense_backend/app/routes/search_source_connectors_routes.py
9 surfsense_web/hooks/use-google-picker.ts
10 surfsense_web/components/assistant-ui/connector-popup/components/google-drive-config.tsx
11 surfsense_web/components/assistant-ui/connector-popup/components/composio-drive-config.tsx
12 surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts
13 surfsense_web/components/assistant-ui/connector-popup.tsx
14 surfsense_backend/app/connectors/composio_gmail_connector.py
15 surfsense_backend/app/connectors/google_gmail_connector.py
16 surfsense_web/components/markdown-viewer.tsx
⚠️ Inconsistent Changes Detected
File Path Warning
surfsense_web/components/markdown-viewer.tsx Changes from Next.js Image component to native img tag appear unrelated to the PR's core purpose of improving connector UX with Google Picker and auto-indexing

Need help? Join our Discord

Analyze latest changes

CREDO23 added 11 commits March 10, 2026 16:06
…ndling

- Add check_permission to drive-picker-token endpoint (IDOR fix)
- Use get_composio_service singleton + asyncio.to_thread to avoid blocking the event loop
- Sanitize error detail in 500 response to prevent internal info leakage
- Dispose picker on unmount to prevent orphaned overlay
- Surface error state on Google Picker Action.ERROR instead of silently closing
Resolve 3 conflicts:
- connector-popup.tsx: keep Picker modal coordination (pickerOpen state)
- google-drive-config.tsx: keep Google Picker, discard upstream folder tree
- composio-drive-config.tsx: accept upstream collapsible folder tree UX
@vercel
Copy link

vercel bot commented Mar 10, 2026

@CREDO23 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 8f1544c..89ed845

✨ No bugs found, your code is sparkling clean

✅ Files analyzed, no issues (15)

surfsense_backend/.env.example
surfsense_backend/app/config/__init__.py
surfsense_backend/app/connectors/composio_gmail_connector.py
surfsense_backend/app/connectors/google_gmail_connector.py
surfsense_backend/app/routes/search_source_connectors_routes.py
surfsense_web/components/assistant-ui/connector-popup.tsx
surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-drive-config.tsx
surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/google-drive-config.tsx
surfsense_web/components/assistant-ui/connector-popup/constants/connector-constants.ts
surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts
surfsense_web/components/markdown-viewer.tsx
surfsense_web/hooks/use-google-picker.ts
surfsense_web/lib/apis/connectors-api.service.ts
surfsense_web/package.json
surfsense_web/pnpm-lock.yaml

@MODSetter MODSetter merged commit c131912 into MODSetter:dev Mar 10, 2026
4 of 10 checks passed
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