merge: resolve conflicts with upstream/main

Merged upstream/main into feat/v2-widget-dashboard-system branch.

Key conflict resolutions:
- index.js: Added renderQuests() to Dashboard v2 fallback rendering
- state.js: Combined memoryMessagesToProcess with Dashboard v2 config
- apiClient.js: Combined refreshDashboard() and renderQuests() calls
- style.css: Kept Dashboard v2 mobile refresh button styles

New features from upstream:
- Quest tracking system (renderQuests, quests.js)
- Memory recollection system
- Lorebook limiter feature
- Various parser and prompt builder improvements
This commit is contained in:
Lucas 'Paperboy' Rose-Winters
2025-10-30 08:26:19 +11:00
21 changed files with 3050 additions and 483 deletions
+37 -38
View File
@@ -34,17 +34,9 @@ export let extensionSettings = {
statBarColorHigh: '#33cc66', // Color for high stat values (green)
enableAnimations: true, // Enable smooth animations for stats and content updates
mobileFabPosition: {
top: 'calc(var(--topBarBlockSize) + 20px)',
left: '12px'
}, // Saved position for mobile FAB button (top-left, stacked vertically)
mobileRefreshPosition: {
top: 'calc(var(--topBarBlockSize) + 80px)',
left: '12px'
}, // Saved position for mobile refresh button (below toggle button)
debugFabPosition: {
top: 'calc(var(--topBarBlockSize) + 140px)',
left: '12px'
}, // Saved position for debug FAB button (below refresh button)
top: 'calc(var(--topBarBlockSize) + 60px)',
right: '12px'
}, // Saved position for mobile FAB button
userStats: {
health: 100,
satiety: 100,
@@ -61,6 +53,17 @@ export let extensionSettings = {
assets: "None"
}
},
statNames: {
health: 'Health',
satiety: 'Satiety',
energy: 'Energy',
hygiene: 'Hygiene',
arousal: 'Arousal'
},
quests: {
main: "None", // Current main quest title
optional: [] // Array of optional quest titles
},
level: 1, // User's character level
classicStats: {
str: 10,
@@ -78,6 +81,7 @@ export let extensionSettings = {
assets: 'list' // 'list' or 'grid' view mode for Assets section
},
debugMode: false, // Enable debug logging visible in UI (for mobile debugging)
memoryMessagesToProcess: 16, // Number of messages to process per batch in memory recollection
// Dashboard v2.0 Configuration
dashboard: {
@@ -157,6 +161,25 @@ export let isPlotProgression = false;
*/
export let pendingDiceRoll = null;
/**
* Debug logs array for troubleshooting
*/
export let debugLogs = [];
/**
* Add a debug log entry
* @param {string} message - The log message
* @param {any} data - Optional data to log
*/
export function addDebugLog(message, data = null) {
const timestamp = new Date().toISOString();
debugLogs.push({ timestamp, message, data });
// Keep only last 100 logs
if (debugLogs.length > 100) {
debugLogs.shift();
}
}
/**
* Feature flags for gradual rollout of new features
*/
@@ -164,12 +187,6 @@ export const FEATURE_FLAGS = {
useNewInventory: true // Enable v2 inventory system with categorized storage
};
/**
* Debug logs storage for mobile-friendly debugging
* Stores parser logs that can be viewed in UI
*/
export let debugLogs = [];
/**
* Fallback avatar image (base64-encoded SVG with "?" icon)
* Using base64 to avoid quote-encoding issues in HTML attributes
@@ -184,6 +201,7 @@ export let $userStatsContainer = null;
export let $infoBoxContainer = null;
export let $thoughtsContainer = null;
export let $inventoryContainer = null;
export let $questsContainer = null;
/**
* State setters - provide controlled mutation of state variables
@@ -252,25 +270,6 @@ export function setInventoryContainer($element) {
$inventoryContainer = $element;
}
export function addDebugLog(message, data = null) {
const timestamp = new Date().toISOString().split('T')[1].split('.')[0]; // HH:MM:SS
const logEntry = {
timestamp,
message,
data: data ? JSON.stringify(data, null, 2) : null
};
debugLogs.push(logEntry);
// Keep only last 100 entries to avoid memory issues
if (debugLogs.length > 100) {
debugLogs.shift();
}
}
export function clearDebugLogs() {
debugLogs = [];
}
export function getDebugLogs() {
return debugLogs;
export function setQuestsContainer($element) {
$questsContainer = $element;
}