🐛 Fix: Remove styles.css from content_scripts (was breaking Claude UI), improve background.js error handling
This commit is contained in:
@@ -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 ────────────────────────────────────────────────────
|
||||||
|
|||||||
@@ -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"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
Reference in New Issue
Block a user