diff --git a/shared/modelConstants.js b/shared/modelConstants.js index 7d4347f..335d1ad 100644 --- a/shared/modelConstants.js +++ b/shared/modelConstants.js @@ -63,3 +63,10 @@ export const CODEX_MODELS = { DEFAULT: 'gpt-5.2' }; + + +/** + * Environment Flag: Is Platform + * Indicates if the app is running in Platform mode (hosted) or OSS mode (self-hosted) + */ +export const IS_PLATFORM = import.meta.env.VITE_IS_PLATFORM === 'true'; \ No newline at end of file diff --git a/src/components/LoginModal.jsx b/src/components/LoginModal.jsx index 6861313..963efa4 100644 --- a/src/components/LoginModal.jsx +++ b/src/components/LoginModal.jsx @@ -1,5 +1,6 @@ import { X } from 'lucide-react'; import StandaloneShell from './StandaloneShell'; +import { IS_PLATFORM } from '../../shared/modelConstants'; /** * Reusable login modal component for Claude, Cursor, and Codex CLI authentication @@ -27,15 +28,13 @@ function LoginModal({ const getCommand = () => { if (customCommand) return customCommand; - const isPlatform = import.meta.env.VITE_IS_PLATFORM === 'true'; - switch (provider) { case 'claude': return isAuthenticated ? 'claude setup-token --dangerously-skip-permissions' : 'claude /exit --dangerously-skip-permissions'; case 'cursor': return 'cursor-agent login'; case 'codex': - return isPlatform ? 'codex login --device-auth' : 'codex login'; + return IS_PLATFORM ? 'codex login --device-auth' : 'codex login'; default: return isAuthenticated ? 'claude setup-token --dangerously-skip-permissions' : 'claude /exit --dangerously-skip-permissions'; } diff --git a/src/components/Onboarding.jsx b/src/components/Onboarding.jsx index 29bf762..02a0050 100644 --- a/src/components/Onboarding.jsx +++ b/src/components/Onboarding.jsx @@ -6,6 +6,7 @@ import CodexLogo from './CodexLogo'; import LoginModal from './LoginModal'; import { authenticatedFetch } from '../utils/api'; import { useAuth } from '../contexts/AuthContext'; +import { IS_PLATFORM } from '../../shared/modelConstants'; const Onboarding = ({ onComplete }) => { const [currentStep, setCurrentStep] = useState(0); @@ -15,8 +16,7 @@ const Onboarding = ({ onComplete }) => { const [error, setError] = useState(''); const [activeLoginProvider, setActiveLoginProvider] = useState(null); - const isPlatform = import.meta.env.VITE_IS_PLATFORM === 'true'; - const [selectedProject] = useState({ name: 'default', fullPath: isPlatform ? '/workspace' : '' }); + const [selectedProject] = useState({ name: 'default', fullPath: IS_PLATFORM ? '/workspace' : '' }); const [claudeAuthStatus, setClaudeAuthStatus] = useState({ authenticated: false, diff --git a/src/components/ProtectedRoute.jsx b/src/components/ProtectedRoute.jsx index 56343ae..1a09d26 100644 --- a/src/components/ProtectedRoute.jsx +++ b/src/components/ProtectedRoute.jsx @@ -4,6 +4,7 @@ import SetupForm from './SetupForm'; import LoginForm from './LoginForm'; import Onboarding from './Onboarding'; import { MessageSquare } from 'lucide-react'; +import { IS_PLATFORM } from '../../shared/modelConstants'; const LoadingScreen = () => (