diff --git a/src/systems/dashboard/dashboardIntegration.js b/src/systems/dashboard/dashboardIntegration.js index 7878c08..aa9f816 100644 --- a/src/systems/dashboard/dashboardIntegration.js +++ b/src/systems/dashboard/dashboardIntegration.js @@ -104,6 +104,14 @@ export async function initializeDashboard(dependencies) { dashboardManager.setDefaultLayout(defaultLayout); console.log('[RPG Companion] Default layout set with', defaultLayout.tabs.length, 'tabs'); + // Initialize previousTrackerConfig to enable widget detection on first load + // Without this, detectConfigChanges() returns [] because oldConfig is null + const settings = dependencies.getExtensionSettings(); + if (settings?.trackerConfig && dashboardManager) { + dashboardManager.previousTrackerConfig = JSON.parse(JSON.stringify(settings.trackerConfig)); + console.log('[RPG Companion] Initialized previousTrackerConfig for widget detection'); + } + // Set up dashboard event listeners setupDashboardEventListeners(dependencies); diff --git a/src/systems/dashboard/dashboardManager.js b/src/systems/dashboard/dashboardManager.js index 2358e99..56abb18 100644 --- a/src/systems/dashboard/dashboardManager.js +++ b/src/systems/dashboard/dashboardManager.js @@ -1439,6 +1439,11 @@ export class DashboardManager { console.log('[DashboardManager] Regenerating fresh default layout...'); this.defaultLayout = generateDefaultDashboard(); + // Reset previousTrackerConfig for fresh widget detection + // This ensures the comparison logic works correctly after reset + this.previousTrackerConfig = null; + console.log('[DashboardManager] Reset previousTrackerConfig for fresh widget detection'); + if (!this.defaultLayout) { console.warn('[DashboardManager] Failed to generate default layout'); return; diff --git a/src/systems/dashboard/defaultLayout.js b/src/systems/dashboard/defaultLayout.js index 092d169..db994d1 100644 --- a/src/systems/dashboard/defaultLayout.js +++ b/src/systems/dashboard/defaultLayout.js @@ -155,14 +155,14 @@ export function generateDefaultDashboard() { maxEvents: 3 } }, - // Row 6-8: Present Characters (full width, will expand with auto-layout) + // Row 6-10: Present Characters (full width, will expand with auto-layout) { id: 'widget-presentchars', type: 'presentCharacters', x: 0, y: 6, w: 2, - h: 3, + h: 4, config: { cardLayout: 'grid', showThoughtBubbles: true