+ {/* Header */}
+
+
+
+
+
+
Gerrit
+
Connect to Gerrit for code review
+
+
+
+ {/* Loading / error states */}
+ {isLoading && (
+
+
+ Loading instances…
+
+ )}
+ {isError && !isLoading && (
+
+
Failed to load Gerrit instances.
+
+
+ )}
+
+ {/* Instance list */}
+ {!isLoading && !isError && hasInstances && (
+
+ {instances.map((instance: GerritInstanceStatus) => (
+
+
+ {instance.connected ? (
+
+ ) : (
+
+ )}
+
+
+ {instance.instanceName}
+
+
+ {instance.url}
+
+
+
+ {instance.authMethod === 'http_basic' ? 'HTTP' : 'Cookies'}
+
+
+
+
+ ))}
+
+ )}
+
+ {/* Status when no instances */}
+ {!isLoading && !isError && !hasInstances && !showForm && (
+
+
+
+ Not Connected
+
+
+ Connect to Gerrit instances for code review across all sessions
+
+
+ )}
+
+ {/* Add instance form */}
+ {showForm && (
+
+
+
+
setInstanceName(e.target.value)}
+ disabled={connectMutation.isPending}
+ className="mt-1"
+ />
+ {instanceName && instanceName !== normalizedInstanceName && (
+
+ Will be saved as: {normalizedInstanceName}
+
+ )}
+
+
+
+ setUrl(e.target.value)}
+ disabled={connectMutation.isPending}
+ className="mt-1"
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {authMethod === 'http_basic' && (
+ <>
+
+
+ setUsername(e.target.value)}
+ disabled={connectMutation.isPending}
+ className="mt-1"
+ />
+
+
+
+
+ setHttpToken(e.target.value)}
+ disabled={connectMutation.isPending}
+ />
+
+
+
+ Generate at Settings → HTTP Credentials in your Gerrit instance
+
+
+ >
+ )}
+
+ {authMethod === 'git_cookies' && (
+
+ )}
+
+
+
+
+
+
+
+ )}
+
+ {/* Add instance button */}
+ {!showForm && (
+
+
+
+ )}
+
+