v3.3.0: Fix encounter UI theming and JSON cleaning regex properties
This commit is contained in:
@@ -51,9 +51,6 @@ export async function generateWithExternalAPI(messages) {
|
||||
if (!baseUrl || !baseUrl.trim()) {
|
||||
throw new Error('External API base URL is not configured');
|
||||
}
|
||||
if (!apiKey || !apiKey.trim()) {
|
||||
throw new Error('External API key is not found. If you switched browsers or cleared your cache, please re-enter your API key in the extension settings.');
|
||||
}
|
||||
if (!model || !model.trim()) {
|
||||
throw new Error('External API model is not configured');
|
||||
}
|
||||
@@ -64,13 +61,19 @@ export async function generateWithExternalAPI(messages) {
|
||||
|
||||
// console.log(`[RPG Companion] Calling external API: ${normalizedBaseUrl} with model: ${model}`);
|
||||
|
||||
// Prepare headers - only include Authorization if API key is provided
|
||||
const headers = {
|
||||
'Content-Type': 'application/json'
|
||||
};
|
||||
|
||||
if (apiKey && apiKey.trim()) {
|
||||
headers['Authorization'] = `Bearer ${apiKey.trim()}`;
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await fetch(endpoint, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'Authorization': `Bearer ${apiKey.trim()}`
|
||||
},
|
||||
headers: headers,
|
||||
body: JSON.stringify({
|
||||
model: model.trim(),
|
||||
messages: messages,
|
||||
@@ -122,12 +125,10 @@ export async function testExternalAPIConnection() {
|
||||
const { baseUrl, model } = extensionSettings.externalApiSettings || {};
|
||||
const apiKey = localStorage.getItem('rpg_companion_external_api_key');
|
||||
|
||||
if (!baseUrl || !apiKey || !model) {
|
||||
if (!baseUrl || !model) {
|
||||
return {
|
||||
success: false,
|
||||
message: !apiKey
|
||||
? 'API Key not found. Please re-enter it in settings (keys are stored locally per-browser).'
|
||||
: 'Please fill in all required fields (Base URL, API Key, and Model)'
|
||||
message: 'Please fill in all required fields (Base URL and Model). API Key is optional for local servers.'
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -291,7 +291,7 @@ export async function buildEncounterInitPrompt() {
|
||||
initInstruction += ` ],\n`;
|
||||
initInstruction += ` "environment": "Brief description of the combat environment",\n`;
|
||||
initInstruction += ` "styleNotes": {\n`;
|
||||
initInstruction += ` "environmentType": "forest|dungeon|desert|cave|city|ruins|snow|water|castle|wasteland|plains|mountains|swamp|volcanic",\n`;
|
||||
initInstruction += ` "environmentType": "forest|dungeon|desert|cave|city|ruins|snow|water|castle|wasteland|plains|mountains|swamp|volcanic|spaceship|mansion",\n`;
|
||||
initInstruction += ` "atmosphere": "bright|dark|foggy|stormy|calm|eerie|chaotic|peaceful",\n`;
|
||||
initInstruction += ` "timeOfDay": "dawn|day|dusk|night|twilight",\n`;
|
||||
initInstruction += ` "weather": "clear|rainy|snowy|windy|stormy|overcast"\n`;
|
||||
@@ -724,9 +724,11 @@ export function parseEncounterJSON(response) {
|
||||
// Remove code blocks if present
|
||||
let cleaned = response.trim();
|
||||
|
||||
// Remove ```json and ``` markers
|
||||
cleaned = cleaned.replace(/```json\s*/gi, '');
|
||||
cleaned = cleaned.replace(/```\s*/g, '');
|
||||
// Remove ```json, ```markdown, and ``` markers (more comprehensive)
|
||||
cleaned = cleaned.replace(/```(?:json|markdown)?\s*/gi, '');
|
||||
|
||||
// Remove any remaining backticks
|
||||
cleaned = cleaned.replace(/`/g, '');
|
||||
|
||||
// Find the first { and last }
|
||||
const firstBrace = cleaned.indexOf('{');
|
||||
|
||||
@@ -155,11 +155,11 @@ export async function onGenerationStarted(type, data, dryRun) {
|
||||
// });
|
||||
}
|
||||
|
||||
// For SEPARATE mode only: Check if we need to commit extension data
|
||||
// For SEPARATE and EXTERNAL modes: Check if we need to commit extension data
|
||||
// BUT: Only do this for the MAIN generation, not the tracker update generation
|
||||
// If isGenerating is true, this is the tracker update generation (second call), so skip flag logic
|
||||
// console.log('[RPG Companion DEBUG] Before generating:', lastGeneratedData.characterThoughts, ' , committed - ', committedTrackerData.characterThoughts);
|
||||
if (extensionSettings.generationMode === 'separate' && !isGenerating) {
|
||||
if ((extensionSettings.generationMode === 'separate' || extensionSettings.generationMode === 'external') && !isGenerating) {
|
||||
if (!lastActionWasSwipe) {
|
||||
// User sent a new message - commit lastGeneratedData before generation
|
||||
// console.log('[RPG Companion] 📝 COMMIT: New message - committing lastGeneratedData');
|
||||
|
||||
Reference in New Issue
Block a user