diff --git a/src/dashboard/config.rs b/src/dashboard/config.rs index 217d9fe4..3339bf06 100644 --- a/src/dashboard/config.rs +++ b/src/dashboard/config.rs @@ -122,7 +122,7 @@ impl Default for DashboardConfig { SlotConfig::with_widget("recent_commands", 1, 0), SlotConfig::with_widget("frequent_commands", 1, 1), SlotConfig::with_widget("recent_notes", 1, 2), - SlotConfig::with_widget("active_timers", 2, 0), + SlotConfig::with_widget("timers", 2, 0), SlotConfig::with_widget("clipboard_snippets", 2, 1), ], } @@ -156,6 +156,7 @@ impl DashboardConfig { /// Remove unsupported widgets and normalize empty settings. pub fn sanitize(&mut self, registry: &WidgetRegistry) -> Vec { let mut warnings = Vec::new(); + self.migrate_active_timers_widgets(registry, &mut warnings); self.migrate_todo_widgets(registry, &mut warnings); self.slots.retain(|slot| { if slot.widget.is_empty() { @@ -207,4 +208,21 @@ impl DashboardConfig { } } } + + fn migrate_active_timers_widgets( + &mut self, + registry: &WidgetRegistry, + warnings: &mut Vec, + ) { + for slot in &mut self.slots { + let Some(default_settings) = registry.default_settings("timers") else { + continue; + }; + if slot.widget == "active_timers" { + slot.widget = "timers".into(); + slot.settings = merge_json(&default_settings, &slot.settings); + warnings.push("dashboard widget 'active_timers' migrated to 'timers'".to_string()); + } + } + } } diff --git a/src/dashboard/widgets/mod.rs b/src/dashboard/widgets/mod.rs index 8d2279b0..3603bede 100644 --- a/src/dashboard/widgets/mod.rs +++ b/src/dashboard/widgets/mod.rs @@ -243,7 +243,7 @@ impl WidgetRegistry { WidgetFactory::new(QueryListWidget::new).with_settings_ui(QueryListWidget::settings_ui), ); reg.register( - "active_timers", + "timers", WidgetFactory::new(ActiveTimersWidget::new) .with_settings_ui(ActiveTimersWidget::settings_ui), );