mirror of
https://github.com/stackblitz-labs/bolt.diy
synced 2025-01-23 19:27:04 +00:00
70 lines
2.7 KiB
TypeScript
70 lines
2.7 KiB
TypeScript
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>
|
|
);
|
|
}
|