import * as React from 'react'
import { Text } from '@anthropic/ink'
import { isClaudeAISubscriber } from '../utils/auth.js'
import {
isChromeExtensionInstalled,
shouldEnableClaudeInChrome,
} from '../utils/claudeInChrome/setup.js'
import { isRunningOnHomespace } from '../utils/envUtils.js'
import { useStartupNotification } from './notifs/useStartupNotification.js'
function getChromeFlag(): boolean | undefined {
if (process.argv.includes('--chrome')) {
return true
}
if (process.argv.includes('--no-chrome')) {
return false
}
return undefined
}
export function useChromeExtensionNotification(): void {
useStartupNotification(async () => {
const chromeFlag = getChromeFlag()
if (!shouldEnableClaudeInChrome(chromeFlag)) return null
// Claude in Chrome is only supported for claude.ai subscribers (unless user is ant)
if (process.env.USER_TYPE !== 'ant' && !isClaudeAISubscriber()) {
return {
key: 'chrome-requires-subscription',
jsx: (
Claude in Chrome requires a claude.ai subscription
),
priority: 'immediate',
timeoutMs: 5000,
}
}
const installed = await isChromeExtensionInstalled()
if (!installed && !isRunningOnHomespace()) {
// Skip notification on Homespace since Chrome setup requires different steps (see go/hsproxy)
return {
key: 'chrome-extension-not-detected',
jsx: (
Chrome extension not detected · https://claude.ai/chrome to install
),
// TODO(hackyon): Lower the priority if the claude-in-chrome integration is no longer opt-in
priority: 'immediate',
timeoutMs: 3000,
}
}
if (chromeFlag === undefined) {
// Show low priority notification only when Chrome is enabled by default
// (not explicitly enabled with --chrome or disabled with --no-chrome)
return {
key: 'claude-in-chrome-default-enabled',
text: `Claude in Chrome enabled · /chrome`,
priority: 'low',
}
}
return null
})
}