🐛 Fix: Remove styles.css from content_scripts (was breaking Claude UI), improve background.js error handling

This commit is contained in:
Hamza-Ayed
2026-06-02 17:49:40 +03:00
parent a6016f3f8f
commit 1e16cafa74
2 changed files with 38 additions and 10 deletions

View File

@@ -40,6 +40,8 @@ ${text}
CORRECTED TEXT:`; CORRECTED TEXT:`;
console.log('[ClaudeVoice] Sending to server:', SERVER_URL);
const response = await fetch(SERVER_URL, { const response = await fetch(SERVER_URL, {
method: 'POST', method: 'POST',
headers: { 'Content-Type': 'application/json' }, headers: { 'Content-Type': 'application/json' },
@@ -51,19 +53,48 @@ CORRECTED TEXT:`;
}); });
if (!response.ok) { if (!response.ok) {
const errData = await response.json().catch(() => ({})); const errText = await response.text().catch(() => '');
const errMsg = errData.error?.message || `HTTP ${response.status}`; let errMsg;
try {
const errData = JSON.parse(errText);
errMsg = errData.error?.message || `HTTP ${response.status}`;
} catch (e) {
errMsg = `HTTP ${response.status}: ${errText.substring(0, 200)}`;
}
throw new Error(`Gemini API error: ${errMsg}`); throw new Error(`Gemini API error: ${errMsg}`);
} }
const data = await response.json(); const responseText = await response.text();
const resultText = data.candidates?.[0]?.content?.parts?.[0]?.text; console.log('[ClaudeVoice] Server response received, length:', responseText.length);
if (!resultText) { // Try to parse as JSON (Gemini response format from server proxy)
throw new Error('Empty response from Gemini API'); let data;
try {
data = JSON.parse(responseText);
} catch (e) {
// If not JSON, use the raw text
return { text: responseText.trim() };
} }
return { text: resultText.trim() }; // Check if it's a Gemini API response format
if (data.candidates && data.candidates[0]) {
const resultText = data.candidates[0].content?.parts?.[0]?.text;
if (resultText) {
return { text: resultText.trim() };
}
}
// Check if it's our server's error format
if (data.error) {
throw new Error(`Server error: ${data.error}${data.details ? ' - ' + JSON.stringify(data.details) : ''}`);
}
// If we got here but have some text, return it
if (typeof data === 'string') {
return { text: data.trim() };
}
throw new Error('Empty response from Gemini API');
} }
// ─── Installation Handler ──────────────────────────────────────────────────── // ─── Installation Handler ────────────────────────────────────────────────────

View File

@@ -50,9 +50,6 @@
"js": [ "js": [
"claude-arabic-voice/content.js" "claude-arabic-voice/content.js"
], ],
"css": [
"claude-arabic-voice/styles.css"
],
"run_at": "document_idle" "run_at": "document_idle"
} }
], ],