Conversation
Signed-off-by: Violet Hansen <spynetgirl@outlook.com>
Signed-off-by: Violet Hansen <spynetgirl@outlook.com>
Signed-off-by: Violet Hansen <spynetgirl@outlook.com>
Signed-off-by: Violet Hansen <spynetgirl@outlook.com>
Signed-off-by: Violet Hansen <spynetgirl@outlook.com>
Signed-off-by: Violet Hansen <spynetgirl@outlook.com>
Signed-off-by: Violet Hansen <spynetgirl@outlook.com>
Signed-off-by: Violet Hansen <spynetgirl@outlook.com>
Signed-off-by: Violet Hansen <spynetgirl@outlook.com>
Signed-off-by: Violet Hansen <spynetgirl@outlook.com>
Signed-off-by: Violet Hansen <spynetgirl@outlook.com>
Signed-off-by: Violet Hansen <spynetgirl@outlook.com>
Signed-off-by: Violet Hansen <spynetgirl@outlook.com>
Signed-off-by: Violet Hansen <spynetgirl@outlook.com>
Signed-off-by: Violet Hansen <spynetgirl@outlook.com>
Signed-off-by: Violet Hansen <spynetgirl@outlook.com>
Signed-off-by: Violet Hansen <spynetgirl@outlook.com>
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
This PR bumps Harden System Security to v1.0.49.0 and introduces the new “Bootable Drive Maker” feature (UI + VM) alongside localization updates, including RTL FlowDirection support on existing Extras pages.
Changes:
- Added a new Bootable Drive Maker page + view model and wired it into navigation/search/breadcrumb mappings.
- Updated app/package manifests and project versioning to 1.0.49.0 and refreshed release notes.
- Improved localization resources (pl-PL, ml-IN) and added FlowDirection binding to existing Extras pages.
Reviewed changes
Copilot reviewed 26 out of 29 changed files in this pull request and generated 18 comments.
Show a summary per file
| File | Description |
|---|---|
| Wiki posts/Harden System Security/Bootable Drive Maker.md | Adds end-user documentation for the new Bootable Drive Maker feature. |
| Harden System Security/app.manifest | Bumps app manifest version to 1.0.49.0. |
| Harden System Security/ViewModels/ViewModelProvider.cs | Registers BootableDriveMakerVM for lazy creation. |
| Harden System Security/ViewModels/MainWindowVM.cs | Adds breadcrumb/navigation/search mappings for the new Bootable Drive Maker page. |
| Harden System Security/ViewModels/BootableDriveMakerVM.cs | Implements UI state + commands for ISO selection, drive selection, bootable media creation, and extraction. |
| Harden System Security/Strings/pl-PL/Resources.resw | Adds Polish localized strings for Bootable Drive Maker UI elements. |
| Harden System Security/Strings/ml-IN/Resources.resw | Adds Malayalam localized strings for Bootable Drive Maker UI elements. |
| Harden System Security/ReleaseNotes.txt | Updates release notes to reflect v1.0.49.0 features. |
| Harden System Security/Pages/Extras/EXIFManager.xaml(.cs) | Adds FlowDirection binding for RTL/localization support (plus formatting normalization). |
| Harden System Security/Pages/Extras/DuplicatePhotoFinder.xaml(.cs) | Adds FlowDirection binding for RTL/localization support (plus formatting normalization). |
| Harden System Security/Pages/Extras/BootableDriveMaker.xaml(.cs) | Introduces the new Bootable Drive Maker UI page and code-behind mode switching. |
| Harden System Security/Package.appxmanifest | Bumps package identity version to 1.0.49.0. |
| Harden System Security/Harden System Security.csproj | Bumps FileVersion to 1.0.49.0 (plus formatting normalization). |
| AppControl Manager/eXclude/CommonCore/CommonCore.projitems | Adds ISOManager.cs to shared WinUI compilation items to support new feature. |
|
|
||
| breadCrumbMappingsV2[typeof(HardenSystemSecurity.Pages.Extras.BootableDriveMaker)] = new PageTitleMap | ||
| ( | ||
| titles: [Atlas.GetStr("BootableDriveMakerNavigationViewItem/Content")], |
There was a problem hiding this comment.
Atlas.GetStr("BootableDriveMakerNavigationViewItem/Content") is inconsistent with the newly added RESW key naming (BootableDriveMakerNavigationViewItem.Content in pl-PL/ml-IN). If Atlas.GetStr does not normalize between / and ., the title will fail to resolve at runtime and show fallback/missing text. Align the key format by either (a) updating the code to request BootableDriveMakerNavigationViewItem.Content (and similarly for other usages), or (b) adding matching /Content-style keys to the RESW files to match the existing Atlas.GetStr(".../Content") convention used elsewhere in this ViewModel.
| titles: [Atlas.GetStr("BootableDriveMakerNavigationViewItem/Content")], | |
| titles: [Atlas.GetStr("BootableDriveMakerNavigationViewItem.Content")], |
| internal void RefreshDrives_Click(object sender, RoutedEventArgs e) | ||
| { | ||
| RefreshDrives(); | ||
| MainInfoBar.WriteSuccess("Drives refreshed."); |
There was a problem hiding this comment.
This introduces multiple new user-facing strings that are hard-coded in English, which undermines the “Improved localization” goal and makes the new feature inconsistent with the rest of the app’s localization approach. Move these strings into RESW resources (and reference them via Atlas.GetStr(...) or the project’s established localization mechanism) so they can be translated and RTL-tested.
| MainInfoBar.WriteSuccess("Drives refreshed."); | |
| MainInfoBar.WriteSuccess(Atlas.GetStr("BootableDriveMaker_DrivesRefreshed")); |
| { | ||
| if (SelectedBootDrive is null || SelectedDataDrive is null) | ||
| { | ||
| MainInfoBar.WriteWarning("Please select both BOOT and DATA drives."); |
There was a problem hiding this comment.
This introduces multiple new user-facing strings that are hard-coded in English, which undermines the “Improved localization” goal and makes the new feature inconsistent with the rest of the app’s localization approach. Move these strings into RESW resources (and reference them via Atlas.GetStr(...) or the project’s established localization mechanism) so they can be translated and RTL-tested.
| { | ||
| if (SelectedSingleDrive is null) | ||
| { | ||
| MainInfoBar.WriteWarning("Please select a target physical disk to partition and use."); |
There was a problem hiding this comment.
This introduces multiple new user-facing strings that are hard-coded in English, which undermines the “Improved localization” goal and makes the new feature inconsistent with the rest of the app’s localization approach. Move these strings into RESW resources (and reference them via Atlas.GetStr(...) or the project’s established localization mechanism) so they can be translated and RTL-tested.
|
|
||
| if (!File.Exists(IsoPath)) | ||
| { | ||
| MainInfoBar.WriteWarning("Please select a valid ISO file."); |
There was a problem hiding this comment.
This introduces multiple new user-facing strings that are hard-coded in English, which undermines the “Improved localization” goal and makes the new feature inconsistent with the rest of the app’s localization approach. Move these strings into RESW resources (and reference them via Atlas.GetStr(...) or the project’s established localization mechanism) so they can be translated and RTL-tested.
|
|
||
| <!-- Boot Drive --> | ||
| <StackPanel Grid.Column="0" Grid.Row="1" Spacing="8"> | ||
| <TextBlock Text="BOOT Partition (Min 2GB, Max 32GB)" FontWeight="SemiBold"/> |
There was a problem hiding this comment.
Several UI strings are hard-coded (e.g., the download link label and BOOT/DATA partition labels). To keep the page fully localizable, these should use x:Uid (or bindings to localized resources) rather than literal Content="..." / Text="..." strings.
|
|
||
| <!-- Data Drive --> | ||
| <StackPanel Grid.Column="1" Grid.Row="1" Spacing="8"> | ||
| <TextBlock Text="DATA Partition (Min 8GB)" FontWeight="SemiBold"/> |
There was a problem hiding this comment.
Several UI strings are hard-coded (e.g., the download link label and BOOT/DATA partition labels). To keep the page fully localizable, these should use x:Uid (or bindings to localized resources) rather than literal Content="..." / Text="..." strings.
| using CommonCore.Others; | ||
| using Microsoft.UI.Xaml; | ||
| using Windows.ApplicationModel.DataTransfer; | ||
| using Windows.Storage; |
There was a problem hiding this comment.
These using directives are unused in this new file and can be removed to reduce noise and keep the file tidy.
| using Windows.Storage; |
| if (string.Equals(ExtractionPath, "No folder selected.", StringComparison.OrdinalIgnoreCase) || !Directory.Exists(ExtractionPath)) | ||
| { | ||
| MainInfoBar.WriteWarning("Please select a valid destination folder."); | ||
| return; | ||
| } |
There was a problem hiding this comment.
The sentinel string "No folder selected." isn’t set anywhere in this ViewModel (the clear method sets ExtractionPath = null), so this branch condition is confusing and couples validation to a UI placeholder that may not exist. Prefer validating only via string.IsNullOrWhiteSpace(ExtractionPath) and Directory.Exists(ExtractionPath) (and localize the warning text as noted in the localization comment).
| @@ -0,0 +1,56 @@ | |||
| # Bootable Drive Maker | Harden System Security | |||
There was a problem hiding this comment.
The | in the H1 title is unusual for Markdown page titles and may render inconsistently (and reads like a table delimiter). Consider changing it to a more standard title format, e.g., # Bootable Drive Maker (Harden System Security) or # Bootable Drive Maker - Harden System Security.
| # Bootable Drive Maker | Harden System Security | |
| # Bootable Drive Maker (Harden System Security) |
What's New
Added a new section to the Service Manager in the Harden System Security app that offers a quick and easy way to optimize your system by disabling and stopping services that are rarely used.
Added a new feature and page to the app called Bootable Drive Maker. It provides a reliable and streamlined way to create bootable Windows installation media from ISO files. Whether you want granular control over your USB drive's partitions or prefer a fully automated setup, this tool caters to both needs while also offering standard ISO extraction capabilities.
Improved localization.