mirror of
https://github.com/open-jarvis/OpenJarvis.git
synced 2026-07-27 21:05:34 +00:00
fix: improve Gmail connect instructions and add troubleshooting
Clarify that Gmail uses App Passwords (not OAuth login popup), emphasize 2-Step Verification prerequisite, and add a collapsible troubleshooting section for common issues. Also improve the error message when Gmail auth fails to specifically mention App Password requirements. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
398e1508f3
commit
1e97ccbf55
@@ -369,7 +369,11 @@ function DataSourcesSection() {
|
||||
loadConnectors();
|
||||
loadSyncStatuses();
|
||||
} catch (err: any) {
|
||||
setConnectError(err.message || 'Connection failed');
|
||||
let errorMsg = err.message || 'Connection failed';
|
||||
if (id === 'gmail_imap' && (errorMsg.includes('auth') || errorMsg.includes('credentials') || errorMsg.includes('LOGIN'))) {
|
||||
errorMsg = 'Invalid credentials — make sure you\'re using an App Password (16 characters), not your regular Gmail password.';
|
||||
}
|
||||
setConnectError(errorMsg);
|
||||
setConnectStage('');
|
||||
} finally {
|
||||
setLoading(false);
|
||||
@@ -562,6 +566,20 @@ function DataSourcesSection() {
|
||||
onSubmit={(req) => handleConnect(c.connector_id, req)}
|
||||
/>
|
||||
)}
|
||||
{meta?.troubleshooting && (
|
||||
<details className="mt-2">
|
||||
<summary className="text-[11px] cursor-pointer" style={{ color: 'var(--color-text-tertiary)' }}>
|
||||
Having trouble?
|
||||
</summary>
|
||||
<ul className="mt-1 space-y-1">
|
||||
{meta.troubleshooting.map((tip: string, i: number) => (
|
||||
<li key={i} className="text-[11px]" style={{ color: 'var(--color-text-tertiary)' }}>
|
||||
{tip}
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</details>
|
||||
)}
|
||||
{/* Connection progress */}
|
||||
{connectingId === c.connector_id && connectStage && (
|
||||
<div style={{ marginTop: 8 }}>
|
||||
|
||||
@@ -14,6 +14,7 @@ export interface ConnectorMeta {
|
||||
description: string;
|
||||
unitLabel?: string; // "emails", "messages", "meeting notes", "pages", "notes", etc.
|
||||
steps?: SetupStep[];
|
||||
troubleshooting?: string[];
|
||||
inputFields?: Array<{
|
||||
name: string;
|
||||
placeholder: string;
|
||||
@@ -65,16 +66,23 @@ export const SOURCE_CATALOG: ConnectorMeta[] = [
|
||||
unitLabel: 'emails',
|
||||
steps: [
|
||||
{
|
||||
label: 'Go to your Google account security settings and make sure 2-Step Verification is turned ON (required for app passwords)',
|
||||
label: 'Go to your Google Account \u2192 Security \u2192 2-Step Verification. Make sure it\'s turned ON. App Passwords only work if 2-Step Verification is enabled.',
|
||||
url: 'https://myaccount.google.com/signinoptions/two-step-verification',
|
||||
urlLabel: 'Open Google Security',
|
||||
urlLabel: 'Open Google Security \u2192',
|
||||
},
|
||||
{
|
||||
label: 'Go to App Passwords (myaccount.google.com/apppasswords). Select app: "Mail", select device: "Other" and type "OpenJarvis". Click Generate. Google will show a 16-character password — copy it now (you won\'t see it again)',
|
||||
label: 'Go to App Passwords. Select app: "Mail", device: "Other" and type "OpenJarvis". Click Generate. This does NOT open a login popup \u2014 you\'ll get a 16-character password to copy (you won\'t see it again).',
|
||||
url: 'https://myaccount.google.com/apppasswords',
|
||||
urlLabel: 'Open App Passwords',
|
||||
urlLabel: 'Open App Passwords \u2192',
|
||||
},
|
||||
{ label: 'Enter your Gmail address and the 16-character app password below (spaces are fine)' },
|
||||
{
|
||||
label: 'Paste your Gmail address and the 16-character app password below (spaces are fine). Use the app password, NOT your regular Gmail password.',
|
||||
},
|
||||
],
|
||||
troubleshooting: [
|
||||
"Don't see App Passwords? Make sure 2-Step Verification is enabled first.",
|
||||
"Google Workspace user? Your admin may need to enable App Passwords for your organization.",
|
||||
"Want OAuth instead? Use the Google Drive connector \u2014 it covers Gmail content too.",
|
||||
],
|
||||
inputFields: [
|
||||
{ name: 'email', placeholder: 'you@gmail.com', type: 'text' },
|
||||
|
||||
Reference in New Issue
Block a user