import React, { useCallback, useEffect, useState } from 'react'; import { useSettings } from '~/lib/hooks/useSettings'; import commit from '~/commit.json'; const versionHash = commit.commit; // Get the version hash from commit.json 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> ); }