diff --git a/src/token_estimator.js b/src/token_estimator.js index 1ba9a3b..d604967 100644 --- a/src/token_estimator.js +++ b/src/token_estimator.js @@ -307,7 +307,10 @@ export async function countTokensWithUpstream(text, model) { const { getSelectedModel, getSelectedModelEndpoint } = await import("./models.js"); try { - const response = await fetch(`${getSelectedModelEndpoint()}/tokenize`, { + const endpoint = getSelectedModelEndpoint(); + console.log(`Trying tokenization at: ${endpoint}/v1/tokenize`); + + const response = await fetch(`${endpoint}/v1/tokenize`, { method: "POST", headers: { "Content-Type": "application/json", @@ -321,7 +324,7 @@ export async function countTokensWithUpstream(text, model) { }); if (!response.ok) { - console.warn(`Upstream tokenizer failed (${response.status}), falling back to JS tokenizer`); + console.warn(`Upstream tokenizer failed (${response.status}) at ${endpoint}/v1/tokenize, falling back to JS tokenizer`); return tokenizer.count(text); } @@ -356,7 +359,10 @@ export async function getTokenCount(text, model) { const { getSelectedModel, getSelectedModelEndpoint } = await import("./models.js"); try { - const response = await fetch(`${getSelectedModelEndpoint()}/tokenize`, { + const endpoint = getSelectedModelEndpoint(); + console.log(`Trying tokenization at: ${endpoint}/v1/tokenize`); + + const response = await fetch(`${endpoint}/v1/tokenize`, { method: "POST", headers: { "Content-Type": "application/json", @@ -370,7 +376,7 @@ export async function getTokenCount(text, model) { }); if (!response.ok) { - throw new Error(`Tokenizer API error: ${response.status}`); + throw new Error(`Tokenizer API error: ${response.status} at ${endpoint}/v1/tokenize`); } const tokens = await response.json(); diff --git a/src/tts.js b/src/tts.js index 9988e5d..9062523 100644 --- a/src/tts.js +++ b/src/tts.js @@ -160,7 +160,7 @@ Return only the article text ready for TTS, nothing else.`, try { const response = await fetch( - `${getSelectedModelEndpoint()}/chat/completions`, + `${getSelectedModelEndpoint()}/v1/chat/completions`, { method: "POST", headers: { @@ -191,7 +191,7 @@ Return only the article text ready for TTS, nothing else.`, // Function to generate a title for TTS export async function generateTitleForTTS(text) { const response = await fetch( - `${getSelectedModelEndpoint()}/chat/completions`, + `${getSelectedModelEndpoint()}/v1/chat/completions`, { method: "POST", headers: { @@ -199,7 +199,7 @@ export async function generateTitleForTTS(text) { Authorization: `Bearer ${API_KEY}`, }, body: JSON.stringify({ - model: MODEL, + model: getSelectedModel(), messages: [ { role: "system", diff --git a/src/ui-themes.js b/src/ui-themes.js index 6debe6b..5d8c395 100644 --- a/src/ui-themes.js +++ b/src/ui-themes.js @@ -96,40 +96,17 @@ export function initializeChunkFiveFont() { document.head.appendChild(fontFaceStyle); } -// Force text colors with high specificity to override blog CSS +// Simple text color fix for white backgrounds export function enforceModalTextColors() { - if (document.getElementById('uncloseai-text-override')) return; // Already added + const modalElement = document.getElementById('uncloseai-embedded-modal'); + if (!modalElement) return; - const textOverrideStyle = document.createElement("style"); - textOverrideStyle.id = 'uncloseai-text-override'; - textOverrideStyle.textContent = ` - /* High specificity overrides for uncloseai modal text colors */ - #uncloseai-embedded-modal, - #uncloseai-embedded-modal *, - dialog#uncloseai-embedded-modal, - dialog#uncloseai-embedded-modal * { - color: #212529 !important; - } - - /* Input field text colors */ - #uncloseai-embedded-modal input, - #uncloseai-embedded-modal textarea, - #uncloseai-embedded-modal select, - #uncloseai-embedded-modal option { - color: #212529 !important; - background: #ffffff !important; - } - - /* Button text colors */ - #uncloseai-embedded-modal button { - color: #212529 !important; - } - - /* User message text (keep white for contrast) */ - #uncloseai-embedded-modal .user-message, - #uncloseai-embedded-modal .user-message * { - color: #ffffff !important; - } - `; - document.head.appendChild(textOverrideStyle); + // Check if background is white/light + const computedStyle = window.getComputedStyle(modalElement); + const bgColor = computedStyle.backgroundColor; + + // If background is white or light, set text to black + if (bgColor === 'rgb(255, 255, 255)' || bgColor === 'white' || bgColor === '#ffffff') { + modalElement.style.color = 'black'; + } }