diff --git a/Config/Features.json b/Config/Features.json index d68d948..33bda37 100644 --- a/Config/Features.json +++ b/Config/Features.json @@ -1,4 +1,4 @@ -{ +{ "Version": "1.0", "Categories": [ { @@ -289,6 +289,8 @@ "Category": null, "RegistryKey": null, "ApplyText": "Removing selected apps...", + "UndoLabel": null, + "ApplyUndoText": null, "RegistryUndoKey": null, "MinVersion": null, "MaxVersion": null @@ -299,6 +301,8 @@ "Category": null, "RegistryKey": null, "ApplyText": "Removing selected apps...", + "UndoLabel": null, + "ApplyUndoText": null, "RegistryUndoKey": null, "MinVersion": null, "MaxVersion": null @@ -309,6 +313,8 @@ "Category": null, "RegistryKey": null, "ApplyText": "Removing selected apps...", + "UndoLabel": null, + "ApplyUndoText": null, "RegistryUndoKey": null, "MinVersion": null, "MaxVersion": null @@ -319,6 +325,8 @@ "Category": null, "RegistryKey": null, "ApplyText": "Removing selected apps...", + "UndoLabel": null, + "ApplyUndoText": null, "RegistryUndoKey": null, "MinVersion": null, "MaxVersion": null @@ -329,6 +337,8 @@ "Category": null, "RegistryKey": null, "ApplyText": "Removing selected apps...", + "UndoLabel": null, + "ApplyUndoText": null, "RegistryUndoKey": null, "MinVersion": null, "MaxVersion": null @@ -339,6 +349,8 @@ "Category": null, "RegistryKey": null, "ApplyText": "Removing selected apps...", + "UndoLabel": null, + "ApplyUndoText": null, "RegistryUndoKey": null, "MinVersion": null, "MaxVersion": null @@ -349,6 +361,8 @@ "Category": null, "RegistryKey": null, "ApplyText": "Removing selected apps...", + "UndoLabel": null, + "ApplyUndoText": null, "RegistryUndoKey": null, "MinVersion": null, "MaxVersion": null @@ -359,6 +373,8 @@ "Category": null, "RegistryKey": null, "ApplyText": null, + "UndoLabel": null, + "ApplyUndoText": null, "RegistryUndoKey": null, "MinVersion": null, "MaxVersion": null @@ -370,6 +386,8 @@ "Category": "Privacy & Suggested Content", "RegistryKey": "Disable_Telemetry.reg", "ApplyText": "Disabling telemetry, diagnostic data, activity history, app-launch tracking and targeted ads...", + "UndoLabel": "Enable telemetry, tracking & targeted ads", + "ApplyUndoText": "Enabling telemetry, diagnostic data, activity history, app-launch tracking and targeted ads...", "RegistryUndoKey": "Enable_Telemetry.reg", "MinVersion": null, "MaxVersion": null @@ -381,6 +399,8 @@ "Category": "Privacy & Suggested Content", "RegistryKey": "Disable_Windows_Suggestions.reg", "ApplyText": "Disabling tips, tricks, suggestions and ads throughout Windows...", + "UndoLabel": "Enable tips, tricks & suggested content throughout Windows", + "ApplyUndoText": "Enabling tips, tricks, suggestions and ads throughout Windows...", "RegistryUndoKey": "Enable_Windows_Suggestions.reg", "MinVersion": null, "MaxVersion": null @@ -392,6 +412,8 @@ "Category": "Privacy & Suggested Content", "RegistryKey": "Disable_Location_Services.reg", "ApplyText": "Disabling Windows location services and app location access...", + "UndoLabel": "Enable Windows location services & app location access", + "ApplyUndoText": "Enabling Windows location services and app location access...", "RegistryUndoKey": "Enable_Location_Services.reg", "MinVersion": null, "MaxVersion": null @@ -403,6 +425,8 @@ "Category": "Privacy & Suggested Content", "RegistryKey": "Disable_Find_My_Device.reg", "ApplyText": "Disabling Find My Device location tracking...", + "UndoLabel": "Enable Find My Device location tracking", + "ApplyUndoText": "Enabling Find My Device location tracking...", "RegistryUndoKey": "Enable_Find_My_Device.reg", "MinVersion": null, "MaxVersion": null @@ -414,6 +438,8 @@ "Category": "Privacy & Suggested Content", "RegistryKey": "Disable_Lockscreen_Tips.reg", "ApplyText": "Disabling tips & tricks on the lock screen...", + "UndoLabel": "Enable tips & tricks on the lock screen", + "ApplyUndoText": "Enabling tips & tricks on the lock screen...", "RegistryUndoKey": "Enable_Lockscreen_Tips.reg", "MinVersion": null, "MaxVersion": null @@ -425,6 +451,8 @@ "Category": "Privacy & Suggested Content", "RegistryKey": "Disable_Desktop_Spotlight.reg", "ApplyText": "Disabling the 'Windows Spotlight' desktop background option...", + "UndoLabel": "Enable Windows Spotlight for desktop", + "ApplyUndoText": "Enabling the 'Windows Spotlight' desktop background option...", "RegistryUndoKey": "Enable_Desktop_Spotlight.reg", "MinVersion": null, "MaxVersion": null @@ -436,6 +464,8 @@ "Category": "Privacy & Suggested Content", "RegistryKey": "Disable_Edge_Ads_And_Suggestions.reg", "ApplyText": "Disabling ads, suggestions and the MSN news feed in Microsoft Edge...", + "UndoLabel": "Enable ads, suggestions and newsfeed in Edge", + "ApplyUndoText": "Enabling ads, suggestions and the MSN news feed in Microsoft Edge...", "RegistryUndoKey": "Enable_Edge_Ads_And_Suggestions.reg", "MinVersion": null, "MaxVersion": null @@ -447,6 +477,8 @@ "Category": "AI", "RegistryKey": "Disable_Copilot.reg", "ApplyText": "Disabling Microsoft Copilot...", + "UndoLabel": "Enable Microsoft Copilot", + "ApplyUndoText": "Enabling Microsoft Copilot...", "RegistryUndoKey": "Enable_Copilot.reg", "MinVersion": 22621, "MaxVersion": null @@ -458,6 +490,8 @@ "Category": "AI", "RegistryKey": "Disable_AI_Recall.reg", "ApplyText": "Disabling Windows Recall...", + "UndoLabel": "Enable Windows Recall", + "ApplyUndoText": "Enabling Windows Recall...", "RegistryUndoKey": "Enable_AI_Recall.reg", "MinVersion": 22621, "MaxVersion": null @@ -469,6 +503,8 @@ "Category": "AI", "RegistryKey": "Disable_Click_to_Do.reg", "ApplyText": "Disabling Click to Do...", + "UndoLabel": "Enable Click To Do, AI text & image analysis", + "ApplyUndoText": "Enabling Click to Do...", "RegistryUndoKey": "Enable_Click_to_Do.reg", "MinVersion": 22621, "MaxVersion": null @@ -480,6 +516,8 @@ "Category": "AI", "RegistryKey": "Disable_AI_Service_Auto_Start.reg", "ApplyText": "Preventing AI service from starting automatically...", + "UndoLabel": "Allow AI service to start automatically", + "ApplyUndoText": "Allowing AI service to start automatically...", "RegistryUndoKey": "Enable_AI_Service_Auto_Start.reg", "MinVersion": 22621, "MaxVersion": null @@ -491,6 +529,8 @@ "Category": "Gaming", "RegistryKey": "Disable_DVR.reg", "ApplyText": "Disabling Xbox game/screen recording...", + "UndoLabel": "Enable Xbox game/screen recording", + "ApplyUndoText": "Enabling Xbox game/screen recording...", "RegistryUndoKey": "Enable_DVR.reg", "MinVersion": null, "MaxVersion": null @@ -502,6 +542,8 @@ "Category": "Gaming", "RegistryKey": "Disable_Game_Bar_Integration.reg", "ApplyText": "Disabling Game Bar integration...", + "UndoLabel": "Enable Game Bar integration", + "ApplyUndoText": "Enabling Game Bar integration...", "RegistryUndoKey": "Enable_Game_Bar_Integration.reg", "MinVersion": null, "MaxVersion": null @@ -512,6 +554,8 @@ "Category": "Start Menu & Search", "RegistryKey": null, "ApplyText": null, + "UndoLabel": null, + "ApplyUndoText": null, "RegistryUndoKey": null, "MinVersion": 22621, "MaxVersion": null @@ -522,6 +566,8 @@ "Category": "Start Menu & Search", "RegistryKey": null, "ApplyText": null, + "UndoLabel": null, + "ApplyUndoText": null, "RegistryUndoKey": null, "MinVersion": 22621, "MaxVersion": null @@ -532,6 +578,8 @@ "Category": null, "RegistryKey": null, "ApplyText": null, + "UndoLabel": null, + "ApplyUndoText": null, "RegistryUndoKey": null, "MinVersion": 22621, "MaxVersion": null @@ -542,6 +590,8 @@ "Category": null, "RegistryKey": null, "ApplyText": null, + "UndoLabel": null, + "ApplyUndoText": null, "RegistryUndoKey": null, "MinVersion": 22621, "MaxVersion": null @@ -553,6 +603,8 @@ "Category": "Start Menu & Search", "RegistryKey": "Disable_Start_Recommended.reg", "ApplyText": "Disabling the start menu recommended section...", + "UndoLabel": "Show recommended section in the start menu", + "ApplyUndoText": "Enabling the start menu recommended section...", "RegistryUndoKey": "Enable_Start_Recommended.reg", "MinVersion": 22621, "MaxVersion": null @@ -564,6 +616,8 @@ "Category": "Start Menu & Search", "RegistryKey": "Disable_Start_All_Apps.reg", "ApplyText": "Disabling the 'All Apps' section in the start menu...", + "UndoLabel": "Show 'All Apps' section in the start menu", + "ApplyUndoText": "Enabling the 'All Apps' section in the start menu...", "RegistryUndoKey": "Enable_Start_All_Apps.reg", "MinVersion": 26200, "MaxVersion": null @@ -575,6 +629,8 @@ "Category": "Start Menu & Search", "RegistryKey": "Disable_Phone_Link_In_Start.reg", "ApplyText": "Disabling the Phone Link mobile devices integration in the start menu...", + "UndoLabel": "Enable Phone Link integration in the start menu", + "ApplyUndoText": "Enabling the Phone Link mobile devices integration in the start menu...", "RegistryUndoKey": "Enable_Phone_Link_In_Start.reg", "MinVersion": 22621, "MaxVersion": null @@ -586,6 +642,8 @@ "Category": "Start Menu & Search", "RegistryKey": "Disable_Bing_Cortana_In_Search.reg", "ApplyText": "Disabling Bing web search & Copilot integration in Windows search...", + "UndoLabel": "Enable Bing web search & Copilot integration in search", + "ApplyUndoText": "Enabling Bing web search & Copilot integration in Windows search...", "RegistryUndoKey": "Enable_Bing_Cortana_In_Search.reg", "MinVersion": null, "MaxVersion": null @@ -597,6 +655,8 @@ "Category": "Start Menu & Search", "RegistryKey": null, "ApplyText": null, + "UndoLabel": "Enable Microsoft Store app suggestions in search", + "ApplyUndoText": "Enabling Microsoft Store app suggestions in search...", "RegistryUndoKey": null, "MinVersion": 22621, "MaxVersion": null @@ -608,6 +668,8 @@ "Category": "Privacy & Suggested Content", "RegistryKey": "Disable_Settings_365_Ads.reg", "ApplyText": "Disabling Microsoft 365 Copilot ads in Settings Home...", + "UndoLabel": "Show Microsoft 365 Copilot ads in Settings Home", + "ApplyUndoText": "Enabling Microsoft 365 Copilot ads in Settings Home...", "RegistryUndoKey": "Enable_Settings_365_Ads.reg", "MinVersion": null, "MaxVersion": null @@ -619,6 +681,8 @@ "Category": "Other", "RegistryKey": "Disable_Settings_Home.reg", "ApplyText": "Disabling the Settings Home page...", + "UndoLabel": "Show Settings 'Home' page", + "ApplyUndoText": "Enabling the Settings Home page...", "RegistryUndoKey": "Enable_Settings_Home.reg", "MinVersion": null, "MaxVersion": null @@ -630,6 +694,8 @@ "Category": "AI", "RegistryKey": "Disable_Edge_AI_Features.reg", "ApplyText": "Disabling AI features in Microsoft Edge...", + "UndoLabel": "Enable AI features in Microsoft Edge", + "ApplyUndoText": "Enabling AI features in Microsoft Edge...", "RegistryUndoKey": "Enable_Edge_AI_Features.reg", "MinVersion": 22621, "MaxVersion": null @@ -641,6 +707,8 @@ "Category": "AI", "RegistryKey": "Disable_Paint_AI_Features.reg", "ApplyText": "Disabling AI features in Paint...", + "UndoLabel": "Enable AI features in Paint", + "ApplyUndoText": "Enabling AI features in Paint...", "RegistryUndoKey": "Enable_Paint_AI_Features.reg", "MinVersion": 22621, "MaxVersion": null @@ -652,6 +720,8 @@ "Category": "AI", "RegistryKey": "Disable_Notepad_AI_Features.reg", "ApplyText": "Disabling AI features in Notepad...", + "UndoLabel": "Enable AI features in Notepad", + "ApplyUndoText": "Enabling AI features in Notepad...", "RegistryUndoKey": "Enable_Notepad_AI_Features.reg", "MinVersion": 22621, "MaxVersion": null @@ -663,6 +733,8 @@ "Category": "Appearance", "RegistryKey": "Enable_Dark_Mode.reg", "ApplyText": "Enabling dark mode for system and apps...", + "UndoLabel": "Disable dark theme for system and apps", + "ApplyUndoText": "Disabling dark mode for system and apps...", "RegistryUndoKey": "Enable_Light_Mode.reg", "MinVersion": null, "MaxVersion": null @@ -674,6 +746,8 @@ "Category": "System", "RegistryKey": "Disable_Share_Drag_Tray.reg", "ApplyText": "Disabling Drag Tray...", + "UndoLabel": "Enable 'Drag Tray' for sharing & moving files", + "ApplyUndoText": "Enabling Drag Tray...", "RegistryUndoKey": "Enable_Share_Drag_Tray.reg", "MinVersion": 26200, "MaxVersion": null @@ -685,6 +759,8 @@ "Category": "System", "RegistryKey": "Disable_Show_More_Options_Context_Menu.reg", "ApplyText": "Restoring the classic Windows 10 style context menu...", + "UndoLabel": "Use Windows 11 context menu style", + "ApplyUndoText": "Restoring the Windows 11 style context menu...", "RegistryUndoKey": "Enable_W11_Style_Context_Menu.reg", "MinVersion": 22000, "MaxVersion": null @@ -696,6 +772,8 @@ "Category": "System", "RegistryKey": "Disable_Enhance_Pointer_Precision.reg", "ApplyText": "Turning off Enhanced Pointer Precision...", + "UndoLabel": "Enable Enhance Pointer Precision (mouse acceleration)", + "ApplyUndoText": "Turning on Enhanced Pointer Precision...", "RegistryUndoKey": "Enable_Enhance_Pointer_Precision.reg", "RequiresReboot": true, "MinVersion": null, @@ -708,6 +786,8 @@ "Category": "System", "RegistryKey": "Disable_Sticky_Keys_Shortcut.reg", "ApplyText": "Disabling the Sticky Keys keyboard shortcut...", + "UndoLabel": "Enable Sticky Keys keyboard shortcut (5x shift)", + "ApplyUndoText": "Enabling the Sticky Keys keyboard shortcut...", "RegistryUndoKey": "Enable_Sticky_Keys_Shortcut.reg", "RequiresReboot": true, "MinVersion": 26100, @@ -721,6 +801,8 @@ "Priority": 1, "RegistryKey": "Disable_Window_Snapping.reg", "ApplyText": "Disabling window snapping...", + "UndoLabel": "Enable window snapping", + "ApplyUndoText": "Enabling window snapping...", "RegistryUndoKey": "Enable_Window_Snapping.reg", "MinVersion": null, "MaxVersion": null @@ -733,6 +815,8 @@ "Priority": 2, "RegistryKey": "Disable_Snap_Assist.reg", "ApplyText": "Disabling the Snap Assist suggestions...", + "UndoLabel": "Enable showing app suggestions when snapping windows", + "ApplyUndoText": "Enabling the Snap Assist suggestions...", "RegistryUndoKey": "Enable_Snap_Assist.reg", "MinVersion": 22000, "MaxVersion": null @@ -745,6 +829,8 @@ "Priority": 3, "RegistryKey": "Disable_Snap_Layouts.reg", "ApplyText": "Hiding snap layouts when dragging windows to top of the screen and on maximize button...", + "UndoLabel": "Show snap layout flyout at top of screen and on maximize button", + "ApplyUndoText": "Showing snap layouts when dragging windows to top of the screen and on maximize button...", "RegistryUndoKey": "Enable_Snap_Layouts.reg", "MinVersion": 22000, "MaxVersion": null @@ -755,6 +841,8 @@ "Category": "Multi-tasking", "RegistryKey": "Hide_Tabs_In_Alt_Tab.reg", "ApplyText": "Disable showing tabs from apps when snapping or pressing Alt+Tab...", + "UndoLabel": null, + "ApplyUndoText": null, "RegistryUndoKey": null, "MinVersion": 22000, "MaxVersion": null @@ -765,6 +853,8 @@ "Category": "Multi-tasking", "RegistryKey": "Show_3_Tabs_In_Alt_Tab.reg", "ApplyText": "Enable showing 3 tabs from apps when snapping or pressing Alt+Tab...", + "UndoLabel": null, + "ApplyUndoText": null, "RegistryUndoKey": null, "MinVersion": 22000, "MaxVersion": null @@ -775,6 +865,8 @@ "Category": "Multi-tasking", "RegistryKey": "Show_5_Tabs_In_Alt_Tab.reg", "ApplyText": "Enable showing 5 tabs from apps when snapping or pressing Alt+Tab...", + "UndoLabel": null, + "ApplyUndoText": null, "RegistryUndoKey": null, "MinVersion": 22000, "MaxVersion": null @@ -785,6 +877,8 @@ "Category": "Multi-tasking", "RegistryKey": "Show_20_Tabs_In_Alt_Tab.reg", "ApplyText": "Enable showing 20 tabs from apps when snapping or pressing Alt+Tab...", + "UndoLabel": null, + "ApplyUndoText": null, "RegistryUndoKey": null, "MinVersion": 22000, "MaxVersion": null @@ -797,6 +891,8 @@ "Priority": 1, "RegistryKey": "Align_Taskbar_Left.reg", "ApplyText": "Aligning taskbar buttons to the left...", + "UndoLabel": "Align taskbar to the center", + "ApplyUndoText": "Aligning taskbar buttons to the center...", "RegistryUndoKey": "Align_Taskbar_Center.reg", "MinVersion": 22000, "MaxVersion": null @@ -807,6 +903,8 @@ "Category": "Taskbar", "RegistryKey": "Hide_Search_Taskbar.reg", "ApplyText": "Hiding the search icon from the taskbar...", + "UndoLabel": "Show search box on the taskbar", + "ApplyUndoText": "Changing taskbar search to search box...", "RegistryUndoKey": "Show_Search_Box.reg", "MinVersion": 22000, "MaxVersion": null @@ -817,6 +915,8 @@ "Category": "Taskbar", "RegistryKey": "Show_Search_Icon.reg", "ApplyText": "Changing taskbar search to icon only...", + "UndoLabel": "Show search box on the taskbar", + "ApplyUndoText": "Changing taskbar search to search box...", "RegistryUndoKey": "Show_Search_Box.reg", "MinVersion": 22000, "MaxVersion": null @@ -827,6 +927,8 @@ "Category": "Taskbar", "RegistryKey": "Show_Search_Icon_And_Label.reg", "ApplyText": "Changing taskbar search to icon with label...", + "UndoLabel": "Show search box on the taskbar", + "ApplyUndoText": "Changing taskbar search to search box...", "RegistryUndoKey": "Show_Search_Box.reg", "MinVersion": 22000, "MaxVersion": null @@ -837,6 +939,8 @@ "Category": "Taskbar", "RegistryKey": "Show_Search_Box.reg", "ApplyText": "Changing taskbar search to search box...", + "UndoLabel": null, + "ApplyUndoText": null, "RegistryUndoKey": null, "MinVersion": 22000, "MaxVersion": null @@ -849,6 +953,8 @@ "Priority": 3, "RegistryKey": "Hide_Taskview_Taskbar.reg", "ApplyText": "Hiding the taskview button from the taskbar...", + "UndoLabel": "Show 'Task view' button on the taskbar", + "ApplyUndoText": "Showing the taskview button from the taskbar...", "RegistryUndoKey": "Show_Taskview_Taskbar.reg", "MinVersion": 22000, "MaxVersion": null @@ -861,6 +967,8 @@ "Priority": 4, "RegistryKey": null, "ApplyText": null, + "UndoLabel": null, + "ApplyUndoText": null, "RegistryUndoKey": null, "MinVersion": null, "MaxVersion": null, @@ -874,6 +982,8 @@ "Priority": 5, "RegistryKey": "Disable_Chat_Taskbar.reg", "ApplyText": "Hiding the chat icon from the taskbar...", + "UndoLabel": "Show Chat (meet now) icon on the taskbar", + "ApplyUndoText": "Showing the chat icon from the taskbar...", "RegistryUndoKey": "Enable_Chat_Taskbar.reg", "MinVersion": null, "MaxVersion": 22621 @@ -885,6 +995,8 @@ "Category": "System", "RegistryKey": "Disable_Storage_Sense.reg", "ApplyText": "Disabling Storage Sense automatic disk cleanup...", + "UndoLabel": "Enable Storage Sense automatic disk cleanup", + "ApplyUndoText": "Enabling Storage Sense automatic disk cleanup...", "RegistryUndoKey": "Enable_Storage_Sense.reg", "MinVersion": 22000, "MaxVersion": null @@ -896,6 +1008,8 @@ "Category": "System", "RegistryKey": "Disable_Fast_Startup.reg", "ApplyText": "Disabling Fast Start-up...", + "UndoLabel": "Enable fast start-up", + "ApplyUndoText": "Enabling Fast Start-up...", "RegistryUndoKey": "Enable_Fast_Startup.reg", "MinVersion": null, "MaxVersion": null @@ -907,6 +1021,8 @@ "Category": "System", "RegistryKey": "Disable_Bitlocker_Auto_Encryption.reg", "ApplyText": "Disabling BitLocker automatic device encryption...", + "UndoLabel": "Enable BitLocker automatic device encryption", + "ApplyUndoText": "Enabling BitLocker automatic device encryption...", "RegistryUndoKey": "Enable_Bitlocker_Auto_Encryption.reg", "MinVersion": 22000, "MaxVersion": null @@ -918,6 +1034,8 @@ "Category": "System", "RegistryKey": "Disable_Modern_Standby_Networking.reg", "ApplyText": "Disabling network connectivity during Modern Standby...", + "UndoLabel": "Enable Modern Standby network connectivity", + "ApplyUndoText": "Enabling network connectivity during Modern Standby...", "RegistryUndoKey": "Enable_Modern_Standby_Networking.reg", "MinVersion": 22000, "MaxVersion": null @@ -930,6 +1048,8 @@ "Priority": 6, "RegistryKey": "Enable_End_Task.reg", "ApplyText": "Enabling the 'End Task' option in the taskbar right click menu...", + "UndoLabel": "Hide 'End Task' option in taskbar context menu", + "ApplyUndoText": "Disabling the 'End Task' option in the taskbar right click menu...", "RegistryUndoKey": "Disable_End_Task.reg", "MinVersion": 22631, "MaxVersion": null @@ -942,6 +1062,8 @@ "Priority": 7, "RegistryKey": "Enable_Last_Active_Click.reg", "ApplyText": "Enabling the 'Last Active Click' behavior in the taskbar app area...", + "UndoLabel": "Disable 'Last Active Click' behavior for taskbar apps", + "ApplyUndoText": "Disabling the 'Last Active Click' behavior in the taskbar app area...", "RegistryUndoKey": "Disable_Last_Active_Click.reg", "MinVersion": 22000, "MaxVersion": null @@ -952,6 +1074,8 @@ "Category": "Taskbar", "RegistryKey": "Combine_Taskbar_Always.reg", "ApplyText": "Setting the taskbar on the main display to always combine buttons and hide labels...", + "UndoLabel": "Use default taskbar combine behavior", + "ApplyUndoText": "Resetting the taskbar on the main display to always combine buttons and hide labels...", "RegistryUndoKey": null, "MinVersion": 22000, "MaxVersion": null @@ -962,6 +1086,8 @@ "Category": "Taskbar", "RegistryKey": "Combine_MMTaskbar_Always.reg", "ApplyText": "Setting the taskbar on secondary displays to always combine buttons and hide labels...", + "UndoLabel": "Use default taskbar combine behavior", + "ApplyUndoText": "Resetting the taskbar on secondary displays to always combine buttons and hide labels...", "RegistryUndoKey": null, "MinVersion": 22000, "MaxVersion": null @@ -972,6 +1098,8 @@ "Category": "Taskbar", "RegistryKey": "Combine_Taskbar_When_Full.reg", "ApplyText": "Setting the taskbar on the main display to only combine buttons and hide labels when the taskbar is full...", + "UndoLabel": "Always combine taskbar buttons and hide labels for the main display", + "ApplyUndoText": "Setting the taskbar on the main display to always combine buttons and hide labels...", "RegistryUndoKey": "Combine_Taskbar_Always.reg", "MinVersion": 22000, "MaxVersion": null @@ -982,6 +1110,8 @@ "Category": "Taskbar", "RegistryKey": "Combine_MMTaskbar_When_Full.reg", "ApplyText": "Setting the taskbar on secondary displays to only combine buttons and hide labels when the taskbar is full...", + "UndoLabel": "Always combine taskbar buttons and hide labels for secondary displays", + "ApplyUndoText": "Setting the taskbar on secondary displays to always combine buttons and hide labels...", "RegistryUndoKey": "Combine_MMTaskbar_Always.reg", "MinVersion": 22000, "MaxVersion": null @@ -992,6 +1122,8 @@ "Category": "Taskbar", "RegistryKey": "Combine_Taskbar_Never.reg", "ApplyText": "Setting the taskbar on the main display to never combine buttons or hide labels...", + "UndoLabel": "Always combine taskbar buttons and hide labels for the main display", + "ApplyUndoText": "Setting the taskbar on the main display to always combine buttons and hide labels...", "RegistryUndoKey": "Combine_Taskbar_Always.reg", "MinVersion": 22000, "MaxVersion": null @@ -1002,6 +1134,8 @@ "Category": "Taskbar", "RegistryKey": "Combine_MMTaskbar_Never.reg", "ApplyText": "Setting the taskbar on secondary displays to never combine buttons or hide labels...", + "UndoLabel": "Always combine taskbar buttons and hide labels for secondary displays", + "ApplyUndoText": "Setting the taskbar on secondary displays to always combine buttons and hide labels...", "RegistryUndoKey": "Combine_MMTaskbar_Always.reg", "MinVersion": 22000, "MaxVersion": null @@ -1012,6 +1146,8 @@ "Category": "Taskbar", "RegistryKey": "MMTaskbarMode_All.reg", "ApplyText": "Setting the taskbar to show app icons on all taskbars...", + "UndoLabel": null, + "ApplyUndoText": null, "RegistryUndoKey": null, "MinVersion": 22000, "MaxVersion": null @@ -1022,6 +1158,8 @@ "Category": "Taskbar", "RegistryKey": "MMTaskbarMode_Main_Active.reg", "ApplyText": "Setting the taskbar to show app icons on main taskbar and on taskbar where the windows is open...", + "UndoLabel": "Show app icons on all taskbars", + "ApplyUndoText": "Setting the taskbar to show app icons on all taskbars...", "RegistryUndoKey": "MMTaskbarMode_All.reg", "MinVersion": 22000, "MaxVersion": null @@ -1032,6 +1170,8 @@ "Category": "Taskbar", "RegistryKey": "MMTaskbarMode_Active.reg", "ApplyText": "Setting the taskbar to only show app icons on the taskbar where the window is open...", + "UndoLabel": "Show app icons on all taskbars", + "ApplyUndoText": "Setting the taskbar to show app icons on all taskbars...", "RegistryUndoKey": "MMTaskbarMode_All.reg", "MinVersion": 22000, "MaxVersion": null @@ -1042,6 +1182,8 @@ "Category": "File Explorer", "RegistryKey": "Launch_File_Explorer_To_Home.reg", "ApplyText": "Changing the default location that File Explorer opens to, to 'Home'...", + "UndoLabel": null, + "ApplyUndoText": null, "RegistryUndoKey": null, "MinVersion": null, "MaxVersion": null @@ -1052,6 +1194,8 @@ "Category": "File Explorer", "RegistryKey": "Launch_File_Explorer_To_This_PC.reg", "ApplyText": "Changing the default location that File Explorer opens to, to 'This PC'...", + "UndoLabel": "Change the default location that File Explorer opens to 'Home'", + "ApplyUndoText": "Changing the default location that File Explorer opens to, to 'Home'...", "RegistryUndoKey": "Launch_File_Explorer_To_Home.reg", "MinVersion": null, "MaxVersion": null @@ -1062,6 +1206,8 @@ "Category": "File Explorer", "RegistryKey": "Launch_File_Explorer_To_Downloads.reg", "ApplyText": "Changing the default location that File Explorer opens to, to 'Downloads'...", + "UndoLabel": "Change the default location that File Explorer opens to 'Home'", + "ApplyUndoText": "Changing the default location that File Explorer opens to, to 'Home'...", "RegistryUndoKey": "Launch_File_Explorer_To_Home.reg", "MinVersion": null, "MaxVersion": null @@ -1072,6 +1218,8 @@ "Category": "File Explorer", "RegistryKey": "Launch_File_Explorer_To_OneDrive.reg", "ApplyText": "Changing the default location that File Explorer opens to, to 'OneDrive'...", + "UndoLabel": "Change the default location that File Explorer opens to 'Home'", + "ApplyUndoText": "Changing the default location that File Explorer opens to, to 'Home'...", "RegistryUndoKey": "Launch_File_Explorer_To_Home.reg", "MinVersion": null, "MaxVersion": null @@ -1084,6 +1232,8 @@ "Priority": 2, "RegistryKey": "Show_Extensions_For_Known_File_Types.reg", "ApplyText": "Enabling file extensions for known file types...", + "UndoLabel": "Hide file extensions for known file types", + "ApplyUndoText": "Disabling file extensions for known file types...", "RegistryUndoKey": "Hide_Extensions_For_Known_File_Types.reg", "MinVersion": null, "MaxVersion": null @@ -1096,6 +1246,8 @@ "Priority": 3, "RegistryKey": "Show_Hidden_Folders.reg", "ApplyText": "Unhiding hidden files, folders and drives...", + "UndoLabel": "Hide hidden files, folders and drives", + "ApplyUndoText": "Hiding hidden files, folders and drives...", "RegistryUndoKey": "Hide_Hidden_Folders.reg", "MinVersion": null, "MaxVersion": null @@ -1108,6 +1260,8 @@ "Priority": 4, "RegistryKey": "Hide_duplicate_removable_drives_from_navigation_pane_of_File_Explorer.reg", "ApplyText": "Hiding duplicate removable drive entries from the File Explorer navigation pane...", + "UndoLabel": "Show duplicate removable drive entries", + "ApplyUndoText": "Showing duplicate removable drive entries from the File Explorer navigation pane...", "RegistryUndoKey": "Show_duplicate_removable_drives_in_navigation_pane_of_File_Explorer.reg", "MinVersion": null, "MaxVersion": null @@ -1120,6 +1274,8 @@ "Priority": 5, "RegistryKey": "Hide_Home_from_Explorer.reg", "ApplyText": "Hiding the 'Home' section from the File Explorer navigation pane...", + "UndoLabel": "Show 'Home' from navigation pane", + "ApplyUndoText": "Showing the 'Home' section from the File Explorer navigation pane...", "RegistryUndoKey": "Show_Home_in_Explorer.reg", "MinVersion": 22000, "MaxVersion": null @@ -1132,6 +1288,8 @@ "Priority": 6, "RegistryKey": "Hide_Gallery_from_Explorer.reg", "ApplyText": "Hiding the 'Gallery' section from the File Explorer navigation pane...", + "UndoLabel": "Show 'Gallery' from navigation pane", + "ApplyUndoText": "Showing the 'Gallery' section from the File Explorer navigation pane...", "RegistryUndoKey": "Show_Gallery_in_Explorer.reg", "MinVersion": 22000, "MaxVersion": null @@ -1143,6 +1301,8 @@ "Category": "Appearance", "RegistryKey": "Disable_Transparency.reg", "ApplyText": "Disabling transparency effects...", + "UndoLabel": "Enable transparency effects", + "ApplyUndoText": "Enabling transparency effects...", "RegistryUndoKey": "Enable_Transparency.reg", "MinVersion": null, "MaxVersion": null @@ -1154,6 +1314,8 @@ "Category": "Appearance", "RegistryKey": "Disable_Animations.reg", "ApplyText": "Disabling animations and visual effects...", + "UndoLabel": "Enable animations and visual effects", + "ApplyUndoText": "Enabling animations and visual effects...", "RegistryUndoKey": "Enable_Animations.reg", "RequiresReboot": true, "MinVersion": null, @@ -1166,6 +1328,8 @@ "Category": "Windows Update", "RegistryKey": "Disable_Update_ASAP.reg", "ApplyText": "Preventing Windows from getting updates as soon as they are available...", + "UndoLabel": "Allow getting updates as soon as they're available", + "ApplyUndoText": "Allowing Windows to get updates as soon as they are available...", "RegistryUndoKey": "Enable_Update_ASAP.reg", "MinVersion": null, "MaxVersion": null @@ -1177,6 +1341,8 @@ "Category": "Windows Update", "RegistryKey": "Prevent_Auto_Reboot.reg", "ApplyText": "Preventing automatic restarts after updates while signed in...", + "UndoLabel": "Allow automatic restarts after updates while signed in", + "ApplyUndoText": "Allowing automatic restarts after updates while signed in...", "RegistryUndoKey": "Allow_Auto_Reboot.reg", "MinVersion": null, "MaxVersion": null @@ -1188,6 +1354,8 @@ "Category": "Windows Update", "RegistryKey": "Disable_Delivery_Optimization.reg", "ApplyText": "Disabling sharing of downloaded updates with other PCs...", + "UndoLabel": "Enable sharing downloaded updates with other PCs", + "ApplyUndoText": "Enabling sharing of downloaded updates with other PCs...", "RegistryUndoKey": "Enable_Delivery_Optimization.reg", "MinVersion": null, "MaxVersion": null @@ -1198,6 +1366,8 @@ "Category": null, "RegistryKey": null, "ApplyText": null, + "UndoLabel": null, + "ApplyUndoText": null, "RegistryUndoKey": null, "MinVersion": null, "MaxVersion": null @@ -1210,6 +1380,8 @@ "Priority": 7, "RegistryKey": "Hide_Onedrive_Folder.reg", "ApplyText": "Hiding the 'OneDrive' section from the File Explorer navigation pane...", + "UndoLabel": "Show 'OneDrive' from navigation pane", + "ApplyUndoText": "Showing the 'OneDrive' section from the File Explorer navigation pane...", "RegistryUndoKey": "Show_Onedrive_Folder.reg", "MinVersion": null, "MaxVersion": null @@ -1222,6 +1394,8 @@ "Priority": 8, "RegistryKey": "Hide_3D_Objects_Folder.reg", "ApplyText": "Hiding the '3D objects' folder from the File Explorer navigation pane...", + "UndoLabel": "Show '3D objects' folder under 'This PC'", + "ApplyUndoText": "Showing the '3D objects' folder from the File Explorer navigation pane...", "RegistryUndoKey": "Show_3D_Objects_Folder.reg", "MinVersion": null, "MaxVersion": 21999 @@ -1234,6 +1408,8 @@ "Priority": 9, "RegistryKey": "Hide_Music_Folder.reg", "ApplyText": "Hiding the 'Music' folder from the File Explorer navigation pane...", + "UndoLabel": "Show 'Music' folder under 'This PC'", + "ApplyUndoText": "Showing the 'Music' folder from the File Explorer navigation pane...", "RegistryUndoKey": "Show_Music_Folder.reg", "MinVersion": null, "MaxVersion": 21999 @@ -1246,6 +1422,8 @@ "Priority": 10, "RegistryKey": "Add_All_Folders_Under_This_PC.reg", "ApplyText": "Adding all common folders (Desktop, Downloads, etc.) back to 'This PC' in File Explorer...", + "UndoLabel": "Remove common folders back to 'This PC' page", + "ApplyUndoText": "Removing all common folders (Desktop, Downloads, etc.) back to 'This PC' in File Explorer...", "RegistryUndoKey": "Remove_All_Folders_Under_This_PC.reg", "MinVersion": 22000, "MaxVersion": null @@ -1258,6 +1436,8 @@ "Priority": 11, "RegistryKey": "Disable_Include_in_library_from_context_menu.reg", "ApplyText": "Hiding 'Include in library' in the context menu...", + "UndoLabel": "Show 'Include in library' option in the context menu", + "ApplyUndoText": "Showing 'Include in library' in the context menu...", "RegistryUndoKey": "Enable_Include_in_library_in_context_menu.reg", "MinVersion": null, "MaxVersion": 21999 @@ -1270,6 +1450,8 @@ "Priority": 12, "RegistryKey": "Disable_Give_access_to_context_menu.reg", "ApplyText": "Hiding 'Give access to' in the context menu...", + "UndoLabel": "Show 'Give access to' option in the context menu", + "ApplyUndoText": "Showing 'Give access to' in the context menu...", "RegistryUndoKey": "Enable_Give_access_to_context_menu.reg", "MinVersion": null, "MaxVersion": 21999 @@ -1282,6 +1464,8 @@ "Priority": 13, "RegistryKey": "Disable_Share_from_context_menu.reg", "ApplyText": "Hiding 'Share' in the context menu...", + "UndoLabel": "Show 'Share' option in the context menu", + "ApplyUndoText": "Showing 'Share' in the context menu...", "RegistryUndoKey": "Enable_Share_in_context_menu.reg", "MinVersion": null, "MaxVersion": 21999 @@ -1293,6 +1477,8 @@ "Category": "Other", "RegistryKey": "Disable_Brave_Bloat.reg", "ApplyText": "Disabling Brave AI, Crypto, News, Rewards, Talk and VPN in Brave browser...", + "UndoLabel": "Enable Brave browser features (AI, Crypto, etc.)", + "ApplyUndoText": "Enabling Brave AI, Crypto, News, Rewards, Talk and VPN in Brave browser...", "RegistryUndoKey": "Enable_Brave_Bloat.reg", "MinVersion": null, "MaxVersion": null @@ -1304,6 +1490,8 @@ "Category": "Optional Windows Features", "RegistryKey": null, "ApplyText": "Enabling Windows Sandbox...", + "UndoLabel": "Disable Windows Sandbox", + "ApplyUndoText": "Disabling Windows Sandbox...", "RegistryUndoKey": null, "RequiresReboot": true, "MinVersion": 22483, @@ -1316,6 +1504,8 @@ "Category": "Optional Windows Features", "RegistryKey": null, "ApplyText": "Enabling Windows Subsystem for Linux...", + "UndoLabel": "Disable Windows Subsystem for Linux", + "ApplyUndoText": "Disabling Windows Subsystem for Linux...", "RegistryUndoKey": null, "RequiresReboot": true, "MinVersion": 22000, @@ -1328,6 +1518,8 @@ "Category": "File Explorer", "RegistryKey": "Show_Drive_Letters_First.reg", "ApplyText": "Showing drive letters before drive label...", + "UndoLabel": "Show drive letters after drive label", + "ApplyUndoText": "Showing drive letters after drive label...", "RegistryUndoKey": "Show_Drive_Letters_Last.reg", "MinVersion": null, "MaxVersion": null @@ -1339,6 +1531,8 @@ "Category": "File Explorer", "RegistryKey": "Show_Drive_Letters_Last.reg", "ApplyText": "Showing drive letters after drive label...", + "UndoLabel": null, + "ApplyUndoText": null, "RegistryUndoKey": null, "MinVersion": null, "MaxVersion": null @@ -1350,6 +1544,8 @@ "Category": "File Explorer", "RegistryKey": "Show_Network_Drive_Letters_First.reg", "ApplyText": "Showing network drive letters before drive label...", + "UndoLabel": "Show drive letters after drive label", + "ApplyUndoText": "Showing drive letters after drive label...", "RegistryUndoKey": "Show_Drive_Letters_Last.reg", "MinVersion": null, "MaxVersion": null @@ -1361,9 +1557,11 @@ "Category": "File Explorer", "RegistryKey": "Hide_Drive_Letters.reg", "ApplyText": "Hiding all drive letters...", + "UndoLabel": "Show drive letters after drive label", + "ApplyUndoText": "Showing drive letters after drive label...", "RegistryUndoKey": "Show_Drive_Letters_Last.reg", "MinVersion": null, "MaxVersion": null } ] -} \ No newline at end of file +} diff --git a/Schemas/MainWindow.xaml b/Schemas/MainWindow.xaml index de35347..5c93777 100644 --- a/Schemas/MainWindow.xaml +++ b/Schemas/MainWindow.xaml @@ -58,7 +58,7 @@ @@ -485,48 +485,81 @@ - + - - + + - + + Fill="{DynamicResource AccentColor}" Width="40" Height="40" Stretch="Uniform"/> + Fill="{DynamicResource AccentColor}" Width="22" Height="22" Stretch="Uniform"/> + Fill="{DynamicResource AccentColor}" Width="17" Height="17" Stretch="Uniform"/> - - - - + + - - - - - + - - + + @@ -895,43 +928,15 @@ - - - - - - - - - - - - - - - - - - - - - - - - + + - + diff --git a/Scripts/Features/ExecuteChanges.ps1 b/Scripts/Features/ExecuteChanges.ps1 index f5cb152..4462162 100644 --- a/Scripts/Features/ExecuteChanges.ps1 +++ b/Scripts/Features/ExecuteChanges.ps1 @@ -261,9 +261,7 @@ function ExecuteAllChanges { # Execute all parameters foreach ($paramKey in $actionableKeys) { - if ($script:CancelRequested) { - return - } + if ($script:CancelRequested) { return } $currentStep++ @@ -291,17 +289,17 @@ function ExecuteAllChanges { foreach ($featureId in $script:UndoParams.Keys) { if ($script:CancelRequested) { return } - $undoLabel = if ($script:FeatureLabelLookup) { $script:FeatureLabelLookup[$featureId] } else { $null } - if (-not $undoLabel) { $undoLabel = $featureId } + $f = if ($script:Features.ContainsKey($featureId)) { $script:Features[$featureId] } else { $null } + $undoLabel = if ($f -and $f.UndoLabel) { $f.UndoLabel } else { $featureId } + $applyUndoText = if ($f -and $f.ApplyUndoText) { $f.ApplyUndoText } else { $undoLabel } $currentStep++ if ($script:ApplyProgressCallback) { - & $script:ApplyProgressCallback $currentStep $totalSteps "Undoing: $undoLabel" + & $script:ApplyProgressCallback $currentStep $totalSteps $applyUndoText } - $f = if ($script:Features.ContainsKey($featureId)) { $script:Features[$featureId] } else { $null } if ($f -and $f.RegistryUndoKey) { - ImportRegistryFile "> Undoing: $undoLabel" (Resolve-UndoRegFilePath $f.RegistryUndoKey) + ImportRegistryFile "> $applyUndoText" (Resolve-UndoRegFilePath $f.RegistryUndoKey) } else { Invoke-UndoFeatureAction -FeatureId $featureId } diff --git a/Scripts/GUI/Show-MainWindow.ps1 b/Scripts/GUI/Show-MainWindow.ps1 index f7595e7..718bc6f 100644 --- a/Scripts/GUI/Show-MainWindow.ps1 +++ b/Scripts/GUI/Show-MainWindow.ps1 @@ -189,6 +189,8 @@ function Show-MainWindow { $contentGrid = $window.FindName('ContentGrid') $maxContentWidth = 1600.0 + $homeContentPanel = $window.FindName('HomeContentPanel') + $updateContentMargin = { $w = $window.ActualWidth if ($w -gt $maxContentWidth) { @@ -199,8 +201,21 @@ function Show-MainWindow { } } + $updateHomeContentPosition = { + if ($homeContentPanel) { + # Scale the top margin so the home content is roughly centered vertically + # Use ~35% of the available content height as the top offset + $availableHeight = $window.ActualHeight - 32 # subtract title bar height + if ($availableHeight -gt 0) { + $topMargin = ($availableHeight - 584) * 0.5 + $homeContentPanel.Margin = [System.Windows.Thickness]::new(0, $topMargin, 0, 0) + } + } + } + $window.Add_SizeChanged({ & $updateContentMargin + & $updateHomeContentPosition UpdateTweaksResponsiveColumns }) @@ -557,14 +572,14 @@ function Show-MainWindow { if ($appRemovalScopeCombo -and $appRemovalScopeSection -and $appRemovalScopeDescription) { if ($selectedCount -gt 0) { + $appRemovalScopeSection.Visibility = 'Visible' if ($userSelectionCombo.SelectedIndex -ne 2) { $appRemovalScopeCombo.IsEnabled = $true } UpdateAppRemovalScopeDescription } else { - $appRemovalScopeCombo.IsEnabled = $false - $appRemovalScopeDescription.Text = "No apps selected for removal." + $appRemovalScopeSection.Visibility = 'Collapsed' } } } @@ -915,8 +930,10 @@ function Show-MainWindow { # Build a feature-label lookup so GenerateOverview can resolve feature IDs without reloading JSON $script:FeatureLabelLookup = @{} + $script:UndoFeatureLabelLookup = @{} foreach ($f in $featuresJson.Features) { $script:FeatureLabelLookup[$f.FeatureId] = $f.Label + $script:UndoFeatureLabelLookup[$f.FeatureId] = $f.UndoLabel } } @@ -1416,32 +1433,22 @@ function Show-MainWindow { } } - $script:SuppressAppliedTweaksUserSync = $false - function UpdateAppliedTweaksUserModeState { - $showAppliedTweaksMode = ($ShowCurrentlyAppliedTweaksCheckBox -and $ShowCurrentlyAppliedTweaksCheckBox.IsChecked -eq $true) - - if ($showAppliedTweaksMode) { - if ($userSelectionCombo.SelectedIndex -ne 0 -and -not $script:SuppressAppliedTweaksUserSync) { - $script:SuppressAppliedTweaksUserSync = $true - try { - $userSelectionCombo.SelectedIndex = 0 - } - finally { - $script:SuppressAppliedTweaksUserSync = $false - } + # Show/hide detect applied tweaks checkbox based on user mode + if ($ShowCurrentlyAppliedTweaksCheckBox) { + if ($userSelectionCombo.SelectedIndex -eq 0) { + $ShowCurrentlyAppliedTweaksCheckBox.Visibility = 'Visible' + } else { + $ShowCurrentlyAppliedTweaksCheckBox.Visibility = 'Collapsed' } - - $userSelectionCombo.IsEnabled = $false - return } + # Enable/disable user mode combo based on params only (not checkbox) if ($script:Params.ContainsKey('Sysprep') -or $script:Params.ContainsKey('User')) { $userSelectionCombo.IsEnabled = $false - return + } else { + $userSelectionCombo.IsEnabled = $true } - - $userSelectionCombo.IsEnabled = $true } function UpdateTweaksResponsiveColumns { @@ -1687,40 +1694,62 @@ function Show-MainWindow { } } + function UpdateUserSelectionDescription { + switch ($userSelectionCombo.SelectedIndex) { + 0 { + $currentUserName = GetUserName + if ([string]::IsNullOrWhiteSpace($currentUserName)) { + $userSelectionDescription.Text = "The currently logged-in user profile" + } + else { + $userSelectionDescription.Text = "The currently logged-in user profile: $currentUserName" + } + } + 1 { + $targetUserName = $otherUsernameTextBox.Text.Trim() + if ([string]::IsNullOrWhiteSpace($targetUserName)) { + $userSelectionDescription.Text = "A different user profile on this system" + } + else { + $userSelectionDescription.Text = "A different user profile on this system: $targetUserName" + } + } + default { + $userSelectionDescription.Text = "The default user template, affecting all new users created after this point. Useful for Sysprep deployment." + } + } + } + # Update user selection description and show/hide other user panel $userSelectionCombo.Add_SelectionChanged({ - if ($ShowCurrentlyAppliedTweaksCheckBox -and $ShowCurrentlyAppliedTweaksCheckBox.IsChecked -eq $true -and $userSelectionCombo.SelectedIndex -ne 0 -and -not $script:SuppressAppliedTweaksUserSync) { - $script:SuppressAppliedTweaksUserSync = $true - try { - $userSelectionCombo.SelectedIndex = 0 - } - finally { - $script:SuppressAppliedTweaksUserSync = $false - } - return - } + UpdateUserSelectionDescription switch ($userSelectionCombo.SelectedIndex) { 0 { - $userSelectionDescription.Text = "Changes will be applied to the currently logged-in user profile." $otherUserPanel.Visibility = 'Collapsed' $usernameValidationMessage.Text = "" # Show "Current user only" option, hide "Target user only" option $appRemovalScopeCurrentUser.Visibility = 'Visible' $appRemovalScopeTargetUser.Visibility = 'Collapsed' $appRemovalScopeCombo.SelectedIndex = 0 + # Re-check detect applied tweaks when switching back to current user + if ($ShowCurrentlyAppliedTweaksCheckBox -and $ShowCurrentlyAppliedTweaksCheckBox.IsChecked -ne $true) { + $ShowCurrentlyAppliedTweaksCheckBox.IsChecked = $true + } } 1 { - $userSelectionDescription.Text = "Changes will be applied to a different user profile on this system." $otherUserPanel.Visibility = 'Visible' $usernameValidationMessage.Text = "" # Hide "Current user only" option, show "Target user only" option $appRemovalScopeCurrentUser.Visibility = 'Collapsed' $appRemovalScopeTargetUser.Visibility = 'Visible' $appRemovalScopeCombo.SelectedIndex = 0 + # Uncheck detect applied tweaks for other user mode + if ($ShowCurrentlyAppliedTweaksCheckBox -and $ShowCurrentlyAppliedTweaksCheckBox.IsChecked -eq $true) { + $ShowCurrentlyAppliedTweaksCheckBox.IsChecked = $false + } } 2 { - $userSelectionDescription.Text = "Changes will be applied to the default user template, affecting all new users created after this point. Useful for Sysprep deployment." $otherUserPanel.Visibility = 'Collapsed' $usernameValidationMessage.Text = "" # Hide other user options since they don't apply to default user template @@ -1728,6 +1757,10 @@ function Show-MainWindow { $appRemovalScopeTargetUser.Visibility = 'Collapsed' # Lock app removal scope to "All users" when applying to sysprep $appRemovalScopeCombo.SelectedIndex = 0 + # Uncheck detect applied tweaks for sysprep mode + if ($ShowCurrentlyAppliedTweaksCheckBox -and $ShowCurrentlyAppliedTweaksCheckBox.IsChecked -eq $true) { + $ShowCurrentlyAppliedTweaksCheckBox.IsChecked = $false + } } } @@ -1745,10 +1778,10 @@ function Show-MainWindow { $appRemovalScopeDescription.Text = "Apps will be removed for all users and from the Windows image to prevent reinstallation for new users." } "Current user only" { - $appRemovalScopeDescription.Text = "Apps will only be removed for the current user. Other users and new users will not be affected." + $appRemovalScopeDescription.Text = "Apps will only be removed for the current user. Existing and new users will not be affected." } "Target user only" { - $appRemovalScopeDescription.Text = "Apps will only be removed for the specified target user. Other users and new users will not be affected." + $appRemovalScopeDescription.Text = "Apps will only be removed for the specified target user. Existing and new users will not be affected." } } } @@ -1766,6 +1799,8 @@ function Show-MainWindow { } else { $usernameTextBoxPlaceholder.Visibility = 'Collapsed' } + + UpdateUserSelectionDescription ValidateOtherUsername }) @@ -1808,6 +1843,22 @@ function Show-MainWindow { return [string]$FeatureId } + function Get-UndoFeatureLabel { + param( + [string]$FeatureId, + $FallbackLabel = $null + ) + + $undoLabel = $script:UndoFeatureLabelLookup[$FeatureId] + if (-not [string]::IsNullOrWhiteSpace([string]$undoLabel)) { + return [string]$undoLabel + } + + # Fall back to the regular label (prefixed for undo context) + $label = Get-FeatureLabel -FeatureId $FeatureId -FallbackLabel $FallbackLabel + return [string]$label + } + function Get-PendingTweakActions { param( [bool]$ShowAppliedTweaksMode @@ -1939,9 +1990,29 @@ function Show-MainWindow { } }) + $ensureValidTargetUserOrWarn = { + if (-not (ValidateOtherUsername)) { + $validationMessage = if (-not [string]::IsNullOrWhiteSpace($usernameValidationMessage.Text)) { + $usernameValidationMessage.Text + } + else { + "Please enter a valid username." + } + + Show-MessageBox -Message $validationMessage -Title "Invalid Username" -Button 'OK' -Icon 'Warning' | Out-Null + return $false + } + + return $true + } + # Handle Home Start button $homeStartBtn = $window.FindName('HomeStartBtn') $homeStartBtn.Add_Click({ + if (-not (& $ensureValidTargetUserOrWarn)) { + return + } + # Navigate to first tab after home (App Removal) $tabControl.SelectedIndex = 1 UpdateNavigationButtons @@ -1950,6 +2021,10 @@ function Show-MainWindow { # Handle Home Default Mode button - apply defaults and navigate directly to overview $homeDefaultModeBtn = $window.FindName('HomeDefaultModeBtn') $homeDefaultModeBtn.Add_Click({ + if (-not (& $ensureValidTargetUserOrWarn)) { + return + } + if ($ShowCurrentlyAppliedTweaksCheckBox) { $ShowCurrentlyAppliedTweaksCheckBox.IsChecked = $false } @@ -1987,14 +2062,7 @@ function Show-MainWindow { # Handle Apply Changes button - validates and immediately starts applying changes $deploymentApplyBtn = $window.FindName('DeploymentApplyBtn') $deploymentApplyBtn.Add_Click({ - if (-not (ValidateOtherUsername)) { - $validationMessage = if (-not [string]::IsNullOrWhiteSpace($usernameValidationMessage.Text)) { - $usernameValidationMessage.Text - } - else { - "Please enter a valid username." - } - Show-MessageBox -Message $validationMessage -Title "Invalid Username" -Button 'OK' -Icon 'Warning' | Out-Null + if (-not (& $ensureValidTargetUserOrWarn)) { return } @@ -2092,6 +2160,7 @@ function Show-MainWindow { # Initialize UI elements on window load $window.Add_Loaded({ + & $updateHomeContentPosition BuildDynamicTweaks LoadCurrentTweakStateIntoUI UpdateTweaksResponsiveColumns @@ -2128,6 +2197,7 @@ function Show-MainWindow { $otherUsernameTextBox.IsEnabled = $false } + UpdateUserSelectionDescription UpdateAppliedTweaksUserModeState UpdateNavigationButtons })