From 6a364b96843eced0760e09f530a119e271260305 Mon Sep 17 00:00:00 2001 From: laurentiu021 Date: Wed, 13 May 2026 18:03:27 +0300 Subject: [PATCH] feat: add 20 WIP placeholders and reorganize navigation into 12 groups Expand the sidebar navigation from 9 to 12 groups to accommodate the full feature roadmap. Add 20 new WIP placeholder tabs across 4 new navigation groups (Gaming & Profiles, Privacy & Security, Customization, Advanced) plus additions to existing groups (System, Monitor, Cleanup). New WIP tabs: - Gaming & Profiles: Gaming Profile, Standby List Cleaner, Timer Resolution, CPU Core Affinity, Display Profiles - Privacy & Security: Privacy & Telemetry, Debloater & Ads, Browser Cleaner, Edge/OneDrive Remover, Defender Tweaks, Notification Blocker - Customization: Dark Mode Scheduler, Volume Control, Environment Variables - Advanced: Profile Export/Import, CLI Interface - Monitor: File Lock Detector, Settings Watchdog, Bandwidth Monitor - System: Task Scheduler, Boot Analyzer Existing WIP tabs retained with improved descriptions: - File Shredder, DNS Changer, Hosts Editor, Bulk Installer, Privacy Settings, Context Menu, Restore Points, Scheduled Maintenance, System Report, Resource History, Privacy Monitor Integration tests updated to reflect new counts (56 nav items, 12 groups). --- CHANGELOG.md | 25 ++ .../MainWindowViewModelTests.cs | 70 ++++- .../ViewModels/MainWindowViewModel.cs | 264 ++++++++++++++---- 3 files changed, 287 insertions(+), 72 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dd9838c1..81bb1cd8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,31 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +## [0.53.0] - 2026-05-13 + +### Added +- **Navigation: 4 new groups** — Gaming & Profiles, Privacy & Security, + Customization, and Advanced groups added to sidebar navigation. +- **Gaming & Profiles (5 WIP tabs)** — Gaming Profile, Standby List Cleaner, + Timer Resolution, CPU Core Affinity, Display Profiles. +- **Privacy & Security (6 WIP tabs)** — Privacy & Telemetry, Debloater & Ads, + Browser Cleaner, Edge/OneDrive Remover, Defender Tweaks, Notification Blocker. +- **Customization (4 WIP tabs)** — Context Menu, Dark Mode Scheduler, Volume + Control, Environment Variables. +- **Advanced (4 WIP tabs)** — Restore Points, Profile Export/Import, CLI + Interface, System Report. +- **Monitor (3 new WIP tabs)** — File Lock Detector, Settings Watchdog, + Bandwidth Monitor added to existing Monitor group. +- **System (2 new WIP tabs)** — Task Scheduler, Boot Analyzer added to + existing System group. +- **Cleanup (1 new WIP tab)** — Scheduled Maintenance moved into Cleanup group. + +### Changed +- **Navigation structure** — reorganized from 9 groups to 12 groups for better + feature categorization as the app grows. +- **Placeholder descriptions** — improved all WIP placeholder descriptions with + clearer feature explanations and correct issue references. + ## [0.52.0] - 2026-05-13 ### Fixed diff --git a/SysManager/SysManager.IntegrationTests/MainWindowViewModelTests.cs b/SysManager/SysManager.IntegrationTests/MainWindowViewModelTests.cs index e45848dd..8fdc0c89 100644 --- a/SysManager/SysManager.IntegrationTests/MainWindowViewModelTests.cs +++ b/SysManager/SysManager.IntegrationTests/MainWindowViewModelTests.cs @@ -75,47 +75,91 @@ public void EachTabViewModel_HasCorrectType() } [Fact] - public void NavItems_ContainAll36() + public void NavItems_ContainAll56() { var vm = new MainWindowViewModel(); - Assert.Equal(36, vm.NavItems.Count); + Assert.Equal(56, vm.NavItems.Count); var ids = vm.NavItems.Select(n => n.Id).ToList(); + + // Dashboard Assert.Contains("nav-dashboard", ids); + + // System (8) Assert.Contains("nav-system-health", ids); Assert.Contains("nav-windows-update", ids); Assert.Contains("nav-performance", ids); Assert.Contains("nav-services", ids); Assert.Contains("nav-startup", ids); Assert.Contains("nav-windows-features", ids); + Assert.Contains("nav-task-scheduler", ids); + Assert.Contains("nav-boot-analyzer", ids); + + // Gaming & Profiles (5) + Assert.Contains("nav-gaming-profile", ids); + Assert.Contains("nav-standby-cleaner", ids); + Assert.Contains("nav-timer-resolution", ids); + Assert.Contains("nav-cpu-affinity", ids); + Assert.Contains("nav-display-profiles", ids); + + // Monitor (7) Assert.Contains("nav-processes", ids); Assert.Contains("nav-resource-history", ids); Assert.Contains("nav-app-alerts", ids); Assert.Contains("nav-privacy-monitor", ids); + Assert.Contains("nav-file-lock", ids); + Assert.Contains("nav-settings-watchdog", ids); + Assert.Contains("nav-bandwidth-monitor", ids); + + // Cleanup (5) Assert.Contains("nav-cleanup", ids); Assert.Contains("nav-deep-cleanup", ids); Assert.Contains("nav-shortcut-cleaner", ids); Assert.Contains("nav-file-shredder", ids); + Assert.Contains("nav-scheduled-maintenance", ids); + + // Storage (2) Assert.Contains("nav-disk-analyzer", ids); Assert.Contains("nav-duplicates", ids); + + // Network (6) Assert.Contains("nav-ping", ids); Assert.Contains("nav-traceroute", ids); Assert.Contains("nav-speed-test", ids); Assert.Contains("nav-network-repair", ids); Assert.Contains("nav-dns-changer", ids); Assert.Contains("nav-hosts-editor", ids); + + // Apps (4) Assert.Contains("nav-app-updates", ids); Assert.Contains("nav-bulk-installer", ids); Assert.Contains("nav-uninstaller", ids); Assert.Contains("nav-app-blocker", ids); + + // Privacy & Security (6) Assert.Contains("nav-privacy-settings", ids); + Assert.Contains("nav-debloater", ids); + Assert.Contains("nav-browser-cleaner", ids); + Assert.Contains("nav-edge-onedrive", ids); + Assert.Contains("nav-defender-tweaks", ids); + Assert.Contains("nav-notification-blocker", ids); + + // Customization (4) Assert.Contains("nav-context-menu", ids); - Assert.Contains("nav-restore-points", ids); - Assert.Contains("nav-scheduled-maintenance", ids); - Assert.Contains("nav-system-report", ids); + Assert.Contains("nav-dark-mode", ids); + Assert.Contains("nav-volume-control", ids); + Assert.Contains("nav-env-variables", ids); + + // Info (4) Assert.Contains("nav-drivers", ids); Assert.Contains("nav-battery", ids); Assert.Contains("nav-logs", ids); Assert.Contains("nav-about", ids); + + // Advanced (4) + Assert.Contains("nav-restore-points", ids); + Assert.Contains("nav-profile-export", ids); + Assert.Contains("nav-cli-interface", ids); + Assert.Contains("nav-system-report", ids); } [Fact] @@ -159,10 +203,10 @@ public void NavItems_AllHaveLabelsAndGlyphs() // ── NavGroup tests ────────────────────────────────────────────── [Fact] - public void NavGroups_Has9Groups() + public void NavGroups_Has12Groups() { var vm = new MainWindowViewModel(); - Assert.Equal(9, vm.NavGroups.Count); + Assert.Equal(12, vm.NavGroups.Count); } [Fact] @@ -195,11 +239,11 @@ public void NavGroups_SingleItemGroups_AreDashboardOnly() } [Fact] - public void NavGroups_SystemGroup_Contains6Items() + public void NavGroups_SystemGroup_Contains8Items() { var vm = new MainWindowViewModel(); var sys = vm.NavGroups.First(g => g.Id == "grp-system"); - Assert.Equal(6, sys.Children.Count); + Assert.Equal(8, sys.Children.Count); var ids = sys.Children.Select(c => c.Id).ToList(); Assert.Contains("nav-system-health", ids); Assert.Contains("nav-windows-update", ids); @@ -207,6 +251,8 @@ public void NavGroups_SystemGroup_Contains6Items() Assert.Contains("nav-services", ids); Assert.Contains("nav-startup", ids); Assert.Contains("nav-windows-features", ids); + Assert.Contains("nav-task-scheduler", ids); + Assert.Contains("nav-boot-analyzer", ids); } [Fact] @@ -220,12 +266,12 @@ public void NavGroups_StorageGroup_ContainsDiskAnalyzerAndDuplicates() } [Fact] - public void NavGroups_CleanupGroup_Has4Items() + public void NavGroups_CleanupGroup_Has5Items() { - // Cleanup now has: Quick, Deep, Shortcut Cleaner, File Shredder + // Cleanup now has: Quick, Deep, Shortcut Cleaner, File Shredder, Scheduled Maintenance var vm = new MainWindowViewModel(); var cleanup = vm.NavGroups.First(g => g.Id == "grp-cleanup"); - Assert.Equal(4, cleanup.Children.Count); + Assert.Equal(5, cleanup.Children.Count); } [Fact] diff --git a/SysManager/SysManager/ViewModels/MainWindowViewModel.cs b/SysManager/SysManager/ViewModels/MainWindowViewModel.cs index e51ccaf0..3c12c8e2 100644 --- a/SysManager/SysManager/ViewModels/MainWindowViewModel.cs +++ b/SysManager/SysManager/ViewModels/MainWindowViewModel.cs @@ -37,24 +37,63 @@ public partial class MainWindowViewModel : ObservableObject, IDisposable public AboutViewModel About { get; } public ServicesViewModel Services { get; } - // ── Placeholder ViewModels for planned features (WIP) ────────── + // ── Implemented ViewModels (non-DI resolved) ───────────────────── public WindowsFeaturesViewModel WindowsFeatures { get; } - public PlaceholderViewModel WipResourceHistory { get; private set; } = null!; public AppAlertsViewModel AppAlerts { get; } - public PlaceholderViewModel WipPrivacyMonitor { get; private set; } = null!; public ShortcutCleanerViewModel ShortcutCleaner { get; } + public AppBlockerViewModel AppBlocker { get; } + + // ── Placeholder ViewModels for planned features (WIP) ────────── + // Monitor group + public PlaceholderViewModel WipResourceHistory { get; private set; } = null!; + public PlaceholderViewModel WipPrivacyMonitor { get; private set; } = null!; + public PlaceholderViewModel WipFileLockDetector { get; private set; } = null!; + public PlaceholderViewModel WipSettingsWatchdog { get; private set; } = null!; + public PlaceholderViewModel WipBandwidthMonitor { get; private set; } = null!; + + // Gaming & Profiles group + public PlaceholderViewModel WipGamingProfile { get; private set; } = null!; + public PlaceholderViewModel WipStandbyListCleaner { get; private set; } = null!; + public PlaceholderViewModel WipTimerResolution { get; private set; } = null!; + public PlaceholderViewModel WipCpuAffinity { get; private set; } = null!; + public PlaceholderViewModel WipDisplayProfiles { get; private set; } = null!; + + // Cleanup group public PlaceholderViewModel WipFileShredder { get; private set; } = null!; + public PlaceholderViewModel WipScheduledMaintenance { get; private set; } = null!; + + // Network group public PlaceholderViewModel WipDnsChanger { get; private set; } = null!; public PlaceholderViewModel WipHostsEditor { get; private set; } = null!; + + // Apps group public PlaceholderViewModel WipBulkInstaller { get; private set; } = null!; - public AppBlockerViewModel AppBlocker { get; } + + // Privacy & Security group public PlaceholderViewModel WipPrivacySettings { get; private set; } = null!; + public PlaceholderViewModel WipDebloater { get; private set; } = null!; + public PlaceholderViewModel WipBrowserCleaner { get; private set; } = null!; + public PlaceholderViewModel WipEdgeOneDriveRemover { get; private set; } = null!; + public PlaceholderViewModel WipDefenderTweaks { get; private set; } = null!; + public PlaceholderViewModel WipNotificationBlocker { get; private set; } = null!; + + // Customization group public PlaceholderViewModel WipContextMenu { get; private set; } = null!; + public PlaceholderViewModel WipDarkModeScheduler { get; private set; } = null!; + public PlaceholderViewModel WipVolumeControl { get; private set; } = null!; + public PlaceholderViewModel WipEnvVariableEditor { get; private set; } = null!; + + // System group (additions) + public PlaceholderViewModel WipTaskScheduler { get; private set; } = null!; + public PlaceholderViewModel WipBootAnalyzer { get; private set; } = null!; + + // Advanced group public PlaceholderViewModel WipRestorePoints { get; private set; } = null!; - public PlaceholderViewModel WipScheduledMaintenance { get; private set; } = null!; + public PlaceholderViewModel WipProfileExportImport { get; private set; } = null!; + public PlaceholderViewModel WipCliInterface { get; private set; } = null!; public PlaceholderViewModel WipSystemReport { get; private set; } = null!; - /// Grouped sidebar tree (9 categories). + /// Grouped sidebar tree (12 categories). public ObservableCollection NavGroups { get; } = new(); /// Flat list of every leaf NavItem (backward compat + lookup). @@ -145,17 +184,55 @@ public MainWindowViewModel() private void InitPlaceholders() { // ── WIP placeholders for planned features ────────────────────── - WipResourceHistory = new PlaceholderViewModel("Resource History", "Historical CPU, RAM, GPU and temperature graphs.", "377"); - WipPrivacyMonitor = new PlaceholderViewModel("Privacy Monitor", "Monitor and alert on webcam, microphone, and location access.", "380"); - WipFileShredder = new PlaceholderViewModel("File Shredder", "Securely delete files beyond recovery.", "386"); - WipDnsChanger = new PlaceholderViewModel("DNS Changer", "Quickly switch DNS servers for any network adapter.", "382"); - WipHostsEditor = new PlaceholderViewModel("Hosts Editor", "Edit the Windows hosts file with a friendly UI.", "382"); - WipBulkInstaller = new PlaceholderViewModel("Bulk Installer", "Install multiple applications at once via winget.", "387"); - WipPrivacySettings = new PlaceholderViewModel("Privacy Settings", "Windows debloat and privacy toggles.", "384"); - WipContextMenu = new PlaceholderViewModel("Context Menu", "Manage right-click context menu entries.", "385"); - WipRestorePoints = new PlaceholderViewModel("Restore Points", "Create and manage system restore points.", "383"); - WipScheduledMaintenance = new PlaceholderViewModel("Scheduled Maintenance", "Automate cleanup and maintenance tasks.", "383"); - WipSystemReport = new PlaceholderViewModel("System Report", "Comprehensive system info export.", "389"); + + // Monitor group + WipResourceHistory = new PlaceholderViewModel("Resource History", "Historical CPU, RAM, GPU and temperature graphs with timeline.", "#13"); + WipPrivacyMonitor = new PlaceholderViewModel("Privacy Monitor", "Monitor and alert on webcam, microphone, and location access in real-time.", "#12"); + WipFileLockDetector = new PlaceholderViewModel("File Lock Detector", "Find which process is locking a file and optionally release the handle.", "#333"); + WipSettingsWatchdog = new PlaceholderViewModel("Settings Watchdog", "Detect when Windows Update resets your settings and offer one-click restore.", "#335"); + WipBandwidthMonitor = new PlaceholderViewModel("Bandwidth Monitor", "Real-time per-app network usage with history graphs and alerts.", "#337"); + + // Gaming & Profiles group + WipGamingProfile = new PlaceholderViewModel("Gaming Profile", "One-click game mode: kill background processes, clear RAM, set timer resolution, auto-revert on game exit.", "#324"); + WipStandbyListCleaner = new PlaceholderViewModel("Standby List Cleaner", "Automatic standby memory purging when free RAM drops below threshold (ISLC-style).", "#325"); + WipTimerResolution = new PlaceholderViewModel("Timer Resolution", "Set Windows timer to 0.5ms for reduced input lag in competitive games.", "#326"); + WipCpuAffinity = new PlaceholderViewModel("CPU Core Affinity", "Set per-game CPU affinity with P-core/E-core awareness for Intel hybrid CPUs.", "#327"); + WipDisplayProfiles = new PlaceholderViewModel("Display Profiles", "Quick-switch refresh rate, HDR, resolution presets (Gaming/Work/Movie).", "#328"); + + // Cleanup group + WipFileShredder = new PlaceholderViewModel("File Shredder", "Securely delete files beyond recovery with multi-pass overwrite (DoD/Gutmann).", "#7"); + WipScheduledMaintenance = new PlaceholderViewModel("Scheduled Maintenance", "Automate cleanup, RAM trim, and health checks on schedule or idle trigger.", "#10"); + + // Network group + WipDnsChanger = new PlaceholderViewModel("DNS Changer", "Quick-switch DNS with benchmark, DNS-over-HTTPS, and TCP/IP optimization.", "#11"); + WipHostsEditor = new PlaceholderViewModel("Hosts Editor", "GUI hosts file editor with domain toggle, import block lists, and backup/restore.", "#11"); + + // Apps group + WipBulkInstaller = new PlaceholderViewModel("Bulk Installer", "Curated checkbox app installer via winget with presets (Gamer/Dev/Creative).", "#6"); + + // Privacy & Security group + WipPrivacySettings = new PlaceholderViewModel("Privacy & Telemetry", "80-100+ toggles for telemetry, ads, AI/Copilot, location, diagnostics with presets.", "#9"); + WipDebloater = new PlaceholderViewModel("Debloater & Ads", "Remove UWP bloatware, disable all Windows ads, remove Copilot/Recall/AI features.", "#9"); + WipBrowserCleaner = new PlaceholderViewModel("Browser Cleaner", "Per-browser cache/cookies/history cleanup with keep-list for important cookies.", "#336"); + WipEdgeOneDriveRemover = new PlaceholderViewModel("Edge/OneDrive Remover", "Safely remove or disable Edge and OneDrive with full restore capability.", "#339"); + WipDefenderTweaks = new PlaceholderViewModel("Defender Tweaks", "Toggle SmartScreen, manage exclusions, configure PUA and cloud protection.", "#344"); + WipNotificationBlocker = new PlaceholderViewModel("Notification Blocker", "Suppress annoying app pop-ups (update nags, trial reminders) with allowlist.", "#340"); + + // Customization group + WipContextMenu = new PlaceholderViewModel("Context Menu", "Manage right-click entries, restore Win10 full menu, add custom items.", "#8"); + WipDarkModeScheduler = new PlaceholderViewModel("Dark Mode Scheduler", "Auto light/dark theme + color temperature (f.lux-style) on schedule or sunset.", "#329"); + WipVolumeControl = new PlaceholderViewModel("Volume Control", "Per-app volume mixer with output device routing and profile presets.", "#332"); + WipEnvVariableEditor = new PlaceholderViewModel("Environment Variables", "GUI PATH editor with drag-reorder, duplicate detection, and path validation.", "#331"); + + // System group (additions) + WipTaskScheduler = new PlaceholderViewModel("Task Scheduler", "Browse and toggle scheduled tasks with color-coded safety indicators.", "#334"); + WipBootAnalyzer = new PlaceholderViewModel("Boot Analyzer", "Measure boot time breakdown per service/driver with optimization recommendations.", "#343"); + + // Advanced group + WipRestorePoints = new PlaceholderViewModel("Restore Points", "Create and manage system restore points with size tracking.", "#10"); + WipProfileExportImport = new PlaceholderViewModel("Profile Export/Import", "Export SysManager configuration as JSON, import on another PC.", "#341"); + WipCliInterface = new PlaceholderViewModel("CLI Interface", "Command-line control: sysmanager --cleanup --apply-profile Gaming --silent.", "#342"); + WipSystemReport = new PlaceholderViewModel("System Report", "Comprehensive system info export (better than DxDiag) in HTML/JSON.", "#4"); } private void InitNavigation() @@ -165,7 +242,7 @@ private void InitNavigation() Title = IsElevated ? "SysManager — Administrator" : "SysManager"; Log.Information("MainWindow initialized. Elevated: {IsElevated}", IsElevated); - // ── Sidebar tree: 9 groups, 36 leaf items ────────────────────── + // ── Sidebar tree: 12 groups ──────────────────────────────────── // Views are instantiated lazily on first access — lets unit tests // construct the VM on an MTA thread without pulling WPF resources in. @@ -174,42 +251,60 @@ private void InitNavigation() new NavItem { Id = "nav-dashboard", Label = "Dashboard", Glyph = "\uE80F", Content = Dashboard, ViewType = typeof(Views.DashboardView) }, }}; - // 🔧 System (6) + // 🔧 System (8) var grpSystem = new NavGroup { Id = "grp-system", Label = "System", Glyph = "\uE912", - Subtitle = "Health · WinUpdate · Perf · Services · Startup · Features", - Tooltip = "System Health\nWindows Update\nPerformance Mode\nServices\nStartup Manager\nWindows Features", + Subtitle = "Health · WinUpdate · Perf · Services · Startup · Features · Tasks · Boot", + Tooltip = "System Health\nWindows Update\nPerformance Mode\nServices\nStartup Manager\nWindows Features\nTask Scheduler\nBoot Analyzer", Children = { - new NavItem { Id = "nav-system-health", Label = "System Health", Glyph = "\uE9D9", Content = SystemHealth, ViewType = typeof(Views.SystemHealthView) }, - new NavItem { Id = "nav-windows-update", Label = "Windows Update", Glyph = "\uE895", Content = WindowsUpdate, ViewType = typeof(Views.WindowsUpdateView) }, - new NavItem { Id = "nav-performance", Label = "Performance Mode", Glyph = "\uE945", Content = Performance, ViewType = typeof(Views.PerformanceView) }, - new NavItem { Id = "nav-services", Label = "Services", Glyph = "\uE912", Content = Services, ViewType = typeof(Views.ServicesView) }, - new NavItem { Id = "nav-startup", Label = "Startup Manager", Glyph = "\uE7B5", Content = Startup, ViewType = typeof(Views.StartupView) }, - new NavItem { Id = "nav-windows-features", Label = "Windows Features", Glyph = "\uE9CE", Content = WindowsFeatures, ViewType = typeof(Views.WindowsFeaturesView) }, + new NavItem { Id = "nav-system-health", Label = "System Health", Glyph = "\uE9D9", Content = SystemHealth, ViewType = typeof(Views.SystemHealthView) }, + new NavItem { Id = "nav-windows-update", Label = "Windows Update", Glyph = "\uE895", Content = WindowsUpdate, ViewType = typeof(Views.WindowsUpdateView) }, + new NavItem { Id = "nav-performance", Label = "Performance Mode", Glyph = "\uE945", Content = Performance, ViewType = typeof(Views.PerformanceView) }, + new NavItem { Id = "nav-services", Label = "Services", Glyph = "\uE912", Content = Services, ViewType = typeof(Views.ServicesView) }, + new NavItem { Id = "nav-startup", Label = "Startup Manager", Glyph = "\uE7B5", Content = Startup, ViewType = typeof(Views.StartupView) }, + new NavItem { Id = "nav-windows-features", Label = "Windows Features", Glyph = "\uE9CE", Content = WindowsFeatures, ViewType = typeof(Views.WindowsFeaturesView) }, + new NavItem { Id = "nav-task-scheduler", Label = "Task Scheduler", Glyph = "\uE916", Content = WipTaskScheduler, ViewType = typeof(Views.PlaceholderView) }, + new NavItem { Id = "nav-boot-analyzer", Label = "Boot Analyzer", Glyph = "\uE7F8", Content = WipBootAnalyzer, ViewType = typeof(Views.PlaceholderView) }, }}; - // 📊 Monitor (4) — NEW GROUP + // 🎮 Gaming & Profiles (5) — NEW GROUP + var grpGaming = new NavGroup { Id = "grp-gaming", Label = "Gaming & Profiles", Glyph = "\uE7FC", + Subtitle = "Game Mode · Standby · Timer · Affinity · Display", + Tooltip = "Gaming Profile\nStandby List Cleaner\nTimer Resolution\nCPU Core Affinity\nDisplay Profiles", + Children = { + new NavItem { Id = "nav-gaming-profile", Label = "Gaming Profile", Glyph = "\uE7FC", Content = WipGamingProfile, ViewType = typeof(Views.PlaceholderView) }, + new NavItem { Id = "nav-standby-cleaner", Label = "Standby List Cleaner", Glyph = "\uE945", Content = WipStandbyListCleaner, ViewType = typeof(Views.PlaceholderView) }, + new NavItem { Id = "nav-timer-resolution", Label = "Timer Resolution", Glyph = "\uE916", Content = WipTimerResolution, ViewType = typeof(Views.PlaceholderView) }, + new NavItem { Id = "nav-cpu-affinity", Label = "CPU Core Affinity", Glyph = "\uE950", Content = WipCpuAffinity, ViewType = typeof(Views.PlaceholderView) }, + new NavItem { Id = "nav-display-profiles", Label = "Display Profiles", Glyph = "\uE7F4", Content = WipDisplayProfiles, ViewType = typeof(Views.PlaceholderView) }, + }}; + + // 📊 Monitor (7) var grpMonitor = new NavGroup { Id = "grp-monitor", Label = "Monitor", Glyph = "\uE9D9", - Subtitle = "Processes · Resources · Alerts · Privacy", - Tooltip = "Process Manager\nResource History\nApp Alerts\nPrivacy Monitor", + Subtitle = "Processes · Resources · Alerts · Privacy · Lock · Watchdog · Bandwidth", + Tooltip = "Process Manager\nResource History\nApp Alerts\nPrivacy Monitor\nFile Lock Detector\nSettings Watchdog\nBandwidth Monitor", Children = { - new NavItem { Id = "nav-processes", Label = "Process Manager", Glyph = "\uEBC4", Content = ProcessManager, ViewType = typeof(Views.ProcessManagerView) }, - new NavItem { Id = "nav-resource-history", Label = "Resource History", Glyph = "\uE9D9", Content = WipResourceHistory, ViewType = typeof(Views.PlaceholderView) }, - new NavItem { Id = "nav-app-alerts", Label = "App Alerts", Glyph = "\uEA8F", Content = AppAlerts, ViewType = typeof(Views.AppAlertsView) }, - new NavItem { Id = "nav-privacy-monitor", Label = "Privacy Monitor", Glyph = "\uE727", Content = WipPrivacyMonitor, ViewType = typeof(Views.PlaceholderView) }, + new NavItem { Id = "nav-processes", Label = "Process Manager", Glyph = "\uEBC4", Content = ProcessManager, ViewType = typeof(Views.ProcessManagerView) }, + new NavItem { Id = "nav-resource-history", Label = "Resource History", Glyph = "\uE9D9", Content = WipResourceHistory, ViewType = typeof(Views.PlaceholderView) }, + new NavItem { Id = "nav-app-alerts", Label = "App Alerts", Glyph = "\uEA8F", Content = AppAlerts, ViewType = typeof(Views.AppAlertsView) }, + new NavItem { Id = "nav-privacy-monitor", Label = "Privacy Monitor", Glyph = "\uE727", Content = WipPrivacyMonitor, ViewType = typeof(Views.PlaceholderView) }, + new NavItem { Id = "nav-file-lock", Label = "File Lock Detector", Glyph = "\uE72E", Content = WipFileLockDetector, ViewType = typeof(Views.PlaceholderView) }, + new NavItem { Id = "nav-settings-watchdog", Label = "Settings Watchdog", Glyph = "\uE7BA", Content = WipSettingsWatchdog, ViewType = typeof(Views.PlaceholderView) }, + new NavItem { Id = "nav-bandwidth-monitor", Label = "Bandwidth Monitor", Glyph = "\uE839", Content = WipBandwidthMonitor, ViewType = typeof(Views.PlaceholderView) }, }}; - // 🧹 Cleanup (4) + // 🧹 Cleanup (5) var grpCleanup = new NavGroup { Id = "grp-cleanup", Label = "Cleanup", Glyph = "\uE74D", - Subtitle = "Quick · Deep · Shortcuts · Shredder", - Tooltip = "Quick Cleanup\nDeep Cleanup\nShortcut Cleaner\nFile Shredder", + Subtitle = "Quick · Deep · Shortcuts · Shredder · Maintenance", + Tooltip = "Quick Cleanup\nDeep Cleanup\nShortcut Cleaner\nFile Shredder\nScheduled Maintenance", Children = { - new NavItem { Id = "nav-cleanup", Label = "Quick Cleanup", Glyph = "\uE74D", Content = Cleanup, ViewType = typeof(Views.CleanupView) }, - new NavItem { Id = "nav-deep-cleanup", Label = "Deep Cleanup", Glyph = "\uE81E", Content = DeepCleanup, ViewType = typeof(Views.DeepCleanupView) }, - new NavItem { Id = "nav-shortcut-cleaner", Label = "Shortcut Cleaner", Glyph = "\uE71B", Content = ShortcutCleaner, ViewType = typeof(Views.ShortcutCleanerView) }, - new NavItem { Id = "nav-file-shredder", Label = "File Shredder", Glyph = "\uE74D", Content = WipFileShredder, ViewType = typeof(Views.PlaceholderView) }, + new NavItem { Id = "nav-cleanup", Label = "Quick Cleanup", Glyph = "\uE74D", Content = Cleanup, ViewType = typeof(Views.CleanupView) }, + new NavItem { Id = "nav-deep-cleanup", Label = "Deep Cleanup", Glyph = "\uE81E", Content = DeepCleanup, ViewType = typeof(Views.DeepCleanupView) }, + new NavItem { Id = "nav-shortcut-cleaner", Label = "Shortcut Cleaner", Glyph = "\uE71B", Content = ShortcutCleaner, ViewType = typeof(Views.ShortcutCleanerView) }, + new NavItem { Id = "nav-file-shredder", Label = "File Shredder", Glyph = "\uE74D", Content = WipFileShredder, ViewType = typeof(Views.PlaceholderView) }, + new NavItem { Id = "nav-scheduled-maintenance", Label = "Scheduled Maintenance", Glyph = "\uE823", Content = WipScheduledMaintenance, ViewType = typeof(Views.PlaceholderView) }, }}; - // 💾 Storage (2) — unchanged + // 💾 Storage (2) var grpStorage = new NavGroup { Id = "grp-storage", Label = "Storage", Glyph = "\uE958", Subtitle = "Disk Analyzer · Duplicate Finder", Tooltip = "Disk Analyzer\nDuplicate Finder", @@ -236,22 +331,34 @@ private void InitNavigation() Subtitle = "Updates · Installer · Uninstaller · Blocker", Tooltip = "App Updates\nBulk Installer\nUninstaller\nApp Blocker", Children = { - new NavItem { Id = "nav-app-updates", Label = "App Updates", Glyph = "\uE7B8", Content = AppUpdates, ViewType = typeof(Views.AppUpdatesView) }, - new NavItem { Id = "nav-bulk-installer", Label = "Bulk Installer", Glyph = "\uE896", Content = WipBulkInstaller, ViewType = typeof(Views.PlaceholderView) }, - new NavItem { Id = "nav-uninstaller", Label = "Uninstaller", Glyph = "\uE738", Content = Uninstaller, ViewType = typeof(Views.UninstallerView) }, - new NavItem { Id = "nav-app-blocker", Label = "App Blocker", Glyph = "\uE8F8", Content = AppBlocker, ViewType = typeof(Views.AppBlockerView) }, + new NavItem { Id = "nav-app-updates", Label = "App Updates", Glyph = "\uE7B8", Content = AppUpdates, ViewType = typeof(Views.AppUpdatesView) }, + new NavItem { Id = "nav-bulk-installer", Label = "Bulk Installer", Glyph = "\uE896", Content = WipBulkInstaller, ViewType = typeof(Views.PlaceholderView) }, + new NavItem { Id = "nav-uninstaller", Label = "Uninstaller", Glyph = "\uE738", Content = Uninstaller, ViewType = typeof(Views.UninstallerView) }, + new NavItem { Id = "nav-app-blocker", Label = "App Blocker", Glyph = "\uE8F8", Content = AppBlocker, ViewType = typeof(Views.AppBlockerView) }, }}; - // 🛡️ Control (5) — NEW GROUP - var grpControl = new NavGroup { Id = "grp-control", Label = "Control", Glyph = "\uE83D", - Subtitle = "Privacy · Context Menu · Restore · Maintenance · Report", - Tooltip = "Privacy Settings\nContext Menu\nRestore Points\nScheduled Maintenance\nSystem Report", + // 🛡️ Privacy & Security (6) — NEW GROUP + var grpPrivacy = new NavGroup { Id = "grp-privacy", Label = "Privacy & Security", Glyph = "\uE72E", + Subtitle = "Telemetry · Debloat · Browser · Edge/OneDrive · Defender · Notifications", + Tooltip = "Privacy & Telemetry\nDebloater & Ads\nBrowser Cleaner\nEdge/OneDrive Remover\nDefender Tweaks\nNotification Blocker", Children = { - new NavItem { Id = "nav-privacy-settings", Label = "Privacy Settings", Glyph = "\uE72E", Content = WipPrivacySettings, ViewType = typeof(Views.PlaceholderView) }, - new NavItem { Id = "nav-context-menu", Label = "Context Menu", Glyph = "\uE700", Content = WipContextMenu, ViewType = typeof(Views.PlaceholderView) }, - new NavItem { Id = "nav-restore-points", Label = "Restore Points", Glyph = "\uE7AD", Content = WipRestorePoints, ViewType = typeof(Views.PlaceholderView) }, - new NavItem { Id = "nav-scheduled-maintenance", Label = "Scheduled Maintenance", Glyph = "\uE823", Content = WipScheduledMaintenance, ViewType = typeof(Views.PlaceholderView) }, - new NavItem { Id = "nav-system-report", Label = "System Report", Glyph = "\uE9F9", Content = WipSystemReport, ViewType = typeof(Views.PlaceholderView) }, + new NavItem { Id = "nav-privacy-settings", Label = "Privacy & Telemetry", Glyph = "\uE72E", Content = WipPrivacySettings, ViewType = typeof(Views.PlaceholderView) }, + new NavItem { Id = "nav-debloater", Label = "Debloater & Ads", Glyph = "\uE74D", Content = WipDebloater, ViewType = typeof(Views.PlaceholderView) }, + new NavItem { Id = "nav-browser-cleaner", Label = "Browser Cleaner", Glyph = "\uEB41", Content = WipBrowserCleaner, ViewType = typeof(Views.PlaceholderView) }, + new NavItem { Id = "nav-edge-onedrive", Label = "Edge/OneDrive Remover", Glyph = "\uE738", Content = WipEdgeOneDriveRemover, ViewType = typeof(Views.PlaceholderView) }, + new NavItem { Id = "nav-defender-tweaks", Label = "Defender Tweaks", Glyph = "\uE83D", Content = WipDefenderTweaks, ViewType = typeof(Views.PlaceholderView) }, + new NavItem { Id = "nav-notification-blocker", Label = "Notification Blocker", Glyph = "\uE7ED", Content = WipNotificationBlocker, ViewType = typeof(Views.PlaceholderView) }, + }}; + + // 🎨 Customization (4) — NEW GROUP + var grpCustomization = new NavGroup { Id = "grp-customization", Label = "Customization", Glyph = "\uE771", + Subtitle = "Context Menu · Dark Mode · Volume · Env Variables", + Tooltip = "Context Menu\nDark Mode Scheduler\nVolume Control\nEnvironment Variables", + Children = { + new NavItem { Id = "nav-context-menu", Label = "Context Menu", Glyph = "\uE700", Content = WipContextMenu, ViewType = typeof(Views.PlaceholderView) }, + new NavItem { Id = "nav-dark-mode", Label = "Dark Mode Scheduler", Glyph = "\uE793", Content = WipDarkModeScheduler, ViewType = typeof(Views.PlaceholderView) }, + new NavItem { Id = "nav-volume-control", Label = "Volume Control", Glyph = "\uE767", Content = WipVolumeControl, ViewType = typeof(Views.PlaceholderView) }, + new NavItem { Id = "nav-env-variables", Label = "Environment Variables", Glyph = "\uE943", Content = WipEnvVariableEditor, ViewType = typeof(Views.PlaceholderView) }, }}; // ℹ️ Info (4) @@ -265,15 +372,29 @@ private void InitNavigation() new NavItem { Id = "nav-about", Label = "About", Glyph = "\uE946", Content = About, ViewType = typeof(Views.AboutView) }, }}; + // ⚙️ Advanced (4) — NEW GROUP + var grpAdvanced = new NavGroup { Id = "grp-advanced", Label = "Advanced", Glyph = "\uE713", + Subtitle = "Restore · Export/Import · CLI · Report", + Tooltip = "Restore Points\nProfile Export/Import\nCLI Interface\nSystem Report", + Children = { + new NavItem { Id = "nav-restore-points", Label = "Restore Points", Glyph = "\uE7AD", Content = WipRestorePoints, ViewType = typeof(Views.PlaceholderView) }, + new NavItem { Id = "nav-profile-export", Label = "Profile Export/Import", Glyph = "\uE8B5", Content = WipProfileExportImport, ViewType = typeof(Views.PlaceholderView) }, + new NavItem { Id = "nav-cli-interface", Label = "CLI Interface", Glyph = "\uE756", Content = WipCliInterface, ViewType = typeof(Views.PlaceholderView) }, + new NavItem { Id = "nav-system-report", Label = "System Report", Glyph = "\uE9F9", Content = WipSystemReport, ViewType = typeof(Views.PlaceholderView) }, + }}; + NavGroups.Add(grpDashboard); NavGroups.Add(grpSystem); + NavGroups.Add(grpGaming); NavGroups.Add(grpMonitor); NavGroups.Add(grpCleanup); NavGroups.Add(grpStorage); NavGroups.Add(grpNetwork); NavGroups.Add(grpApps); - NavGroups.Add(grpControl); + NavGroups.Add(grpPrivacy); + NavGroups.Add(grpCustomization); NavGroups.Add(grpInfo); + NavGroups.Add(grpAdvanced); // Flat index for backward compat (Open*Tab commands, tests, automation). foreach (var g in NavGroups) @@ -346,20 +467,43 @@ public void Dispose() Services?.Dispose(); NetworkShared?.Dispose(); WindowsFeatures?.Dispose(); - WipResourceHistory?.Dispose(); AppAlerts?.Dispose(); - WipPrivacyMonitor?.Dispose(); ShortcutCleaner?.Dispose(); + AppBlocker?.Dispose(); + + // WIP placeholders + WipResourceHistory?.Dispose(); + WipPrivacyMonitor?.Dispose(); + WipFileLockDetector?.Dispose(); + WipSettingsWatchdog?.Dispose(); + WipBandwidthMonitor?.Dispose(); + WipGamingProfile?.Dispose(); + WipStandbyListCleaner?.Dispose(); + WipTimerResolution?.Dispose(); + WipCpuAffinity?.Dispose(); + WipDisplayProfiles?.Dispose(); WipFileShredder?.Dispose(); + WipScheduledMaintenance?.Dispose(); WipDnsChanger?.Dispose(); WipHostsEditor?.Dispose(); WipBulkInstaller?.Dispose(); - AppBlocker?.Dispose(); WipPrivacySettings?.Dispose(); + WipDebloater?.Dispose(); + WipBrowserCleaner?.Dispose(); + WipEdgeOneDriveRemover?.Dispose(); + WipDefenderTweaks?.Dispose(); + WipNotificationBlocker?.Dispose(); WipContextMenu?.Dispose(); + WipDarkModeScheduler?.Dispose(); + WipVolumeControl?.Dispose(); + WipEnvVariableEditor?.Dispose(); + WipTaskScheduler?.Dispose(); + WipBootAnalyzer?.Dispose(); WipRestorePoints?.Dispose(); - WipScheduledMaintenance?.Dispose(); + WipProfileExportImport?.Dispose(); + WipCliInterface?.Dispose(); WipSystemReport?.Dispose(); + GC.SuppressFinalize(this); } }