|
import React, { useCallback, useEffect, useState } from 'react'; |
|
import { useSettings } from '~/lib/hooks/useSettings'; |
|
import commit from '~/commit.json'; |
|
|
|
const versionHash = commit.commit; |
|
|
|
export default function DebugTab() { |
|
const { providers } = useSettings(); |
|
const [activeProviders, setActiveProviders] = useState<string[]>([]); |
|
useEffect(() => { |
|
setActiveProviders( |
|
Object.entries(providers) |
|
.filter(([_key, provider]) => provider.settings.enabled) |
|
.map(([_key, provider]) => provider.name), |
|
); |
|
}, [providers]); |
|
|
|
const handleCopyToClipboard = useCallback(() => { |
|
const debugInfo = { |
|
OS: navigator.platform, |
|
Browser: navigator.userAgent, |
|
ActiveFeatures: activeProviders, |
|
BaseURLs: { |
|
Ollama: process.env.REACT_APP_OLLAMA_URL, |
|
OpenAI: process.env.REACT_APP_OPENAI_URL, |
|
LMStudio: process.env.REACT_APP_LM_STUDIO_URL, |
|
}, |
|
Version: versionHash, |
|
}; |
|
navigator.clipboard.writeText(JSON.stringify(debugInfo, null, 2)).then(() => { |
|
alert('Debug information copied to clipboard!'); |
|
}); |
|
}, [providers]); |
|
|
|
return ( |
|
<div className="p-4"> |
|
<h3 className="text-lg font-medium text-bolt-elements-textPrimary mb-4">Debug Tab</h3> |
|
<button |
|
onClick={handleCopyToClipboard} |
|
className="bg-blue-500 text-white rounded-lg px-4 py-2 hover:bg-blue-600 mb-4 transition-colors duration-200" |
|
> |
|
Copy to Clipboard |
|
</button> |
|
|
|
<h4 className="text-md font-medium text-bolt-elements-textPrimary">System Information</h4> |
|
<p className="text-bolt-elements-textSecondary">OS: {navigator.platform}</p> |
|
<p className="text-bolt-elements-textSecondary">Browser: {navigator.userAgent}</p> |
|
|
|
<h4 className="text-md font-medium text-bolt-elements-textPrimary mt-4">Active Features</h4> |
|
<ul> |
|
{activeProviders.map((name) => ( |
|
<li key={name} className="text-bolt-elements-textSecondary"> |
|
{name} |
|
</li> |
|
))} |
|
</ul> |
|
|
|
<h4 className="text-md font-medium text-bolt-elements-textPrimary mt-4">Base URLs</h4> |
|
<ul> |
|
<li className="text-bolt-elements-textSecondary">Ollama: {process.env.REACT_APP_OLLAMA_URL}</li> |
|
<li className="text-bolt-elements-textSecondary">OpenAI: {process.env.REACT_APP_OPENAI_URL}</li> |
|
<li className="text-bolt-elements-textSecondary">LM Studio: {process.env.REACT_APP_LM_STUDIO_URL}</li> |
|
</ul> |
|
|
|
<h4 className="text-md font-medium text-bolt-elements-textPrimary mt-4">Version Information</h4> |
|
<p className="text-bolt-elements-textSecondary">Version Hash: {versionHash}</p> |
|
</div> |
|
); |
|
} |
|
|