Release v3.0.0 - Major update with JSON format, lock/unlock trackers, reorganized UI, colored dialogues, editable prompts, and numerous bug fixes

This commit is contained in:
Spicy_Marinara
2026-01-07 17:22:22 +01:00
parent 8df6548e0b
commit c3cdac24c6
46 changed files with 6241 additions and 3571 deletions
+38 -6
View File
@@ -17,6 +17,7 @@ import {
} from './state.js';
import { migrateInventory } from '../utils/migration.js';
import { validateStoredInventory, cleanItemString } from '../utils/security.js';
import { migrateToV3JSON } from '../utils/jsonMigration.js';
const extensionName = 'third-party/rpg-companion-sillytavern';
@@ -91,6 +92,14 @@ export function loadSettings() {
settingsChanged = true;
}
// Migration to version 3: Convert text trackers to JSON format
if (currentVersion < 3) {
console.log('[RPG Companion] Migrating settings to version 3 (JSON tracker format)');
migrateToV3JSON();
extensionSettings.settingsVersion = 3;
settingsChanged = true;
}
// Save migrated settings
if (settingsChanged) {
saveSettings();
@@ -152,6 +161,14 @@ export function saveChatData() {
return;
}
console.log('[RPG Companion] 💾 saveChatData called - committedTrackerData:', {
userStats: committedTrackerData.userStats ? `${committedTrackerData.userStats.substring(0, 50)}...` : 'null',
infoBox: committedTrackerData.infoBox ? 'exists' : 'null',
characterThoughts: committedTrackerData.characterThoughts ? 'exists' : 'null'
});
console.log('[RPG Companion] 💾 saveChatData RAW committedTrackerData:', committedTrackerData);
console.log('[RPG Companion] 💾 saveChatData RAW lastGeneratedData:', lastGeneratedData);
chat_metadata.rpg_companion = {
userStats: extensionSettings.userStats,
classicStats: extensionSettings.classicStats,
@@ -265,14 +282,29 @@ export function loadChatData() {
};
}
// Restore last generated data
if (savedData.lastGeneratedData) {
setLastGeneratedData({ ...savedData.lastGeneratedData });
// Restore committed tracker data first
if (savedData.committedTrackerData) {
console.log('[RPG Companion] 📥 loadChatData restoring committedTrackerData:', {
userStats: savedData.committedTrackerData.userStats ? `${savedData.committedTrackerData.userStats.substring(0, 50)}...` : 'null',
infoBox: savedData.committedTrackerData.infoBox ? 'exists' : 'null',
characterThoughts: savedData.committedTrackerData.characterThoughts ? 'exists' : 'null'
});
console.log('[RPG Companion] 📥 RAW savedData.committedTrackerData:', savedData.committedTrackerData);
console.log('[RPG Companion] 📥 Type check:', {
userStatsType: typeof savedData.committedTrackerData.userStats,
infoBoxType: typeof savedData.committedTrackerData.infoBox,
characterThoughtsType: typeof savedData.committedTrackerData.characterThoughts
});
setCommittedTrackerData({ ...savedData.committedTrackerData });
}
// Restore committed tracker data
if (savedData.committedTrackerData) {
setCommittedTrackerData({ ...savedData.committedTrackerData });
// Restore last generated data (for display)
// Always prefer lastGeneratedData as it contains the most recent generation (including swipes)
if (savedData.lastGeneratedData) {
console.log('[RPG Companion] 📥 loadChatData restoring lastGeneratedData');
setLastGeneratedData({ ...savedData.lastGeneratedData });
} else {
console.log('[RPG Companion] ⚠️ No lastGeneratedData found in save');
}
// Migrate inventory in chat data if feature flag enabled