## Summary of the Pull Request
Adds a new Hosts File Editor setting “No leading spaces” that prevents
prepending spaces to active lines when saving the hosts file (when any
entry is disabled). Default is Off to preserve current behavior.
## PR Checklist
- [x] Closes: #36386
- [ ] Communication: N/A (small, scoped option)
- [x] Tests: Added/updated and all pass
- [x] Localization: New en-US strings added; other locales handled by
loc pipeline
- [ ] Dev docs: N/A
- [x] New binaries: None
- [x] Documentation updated: N/A
## Detailed Description of the Pull Request / Additional comments
- Settings surface:
- `src/settings-ui/Settings.UI.Library/HostsProperties.cs`: add
`NoLeadingSpaces`
- `src/modules/Hosts/HostsUILib/Settings/IUserSettings.cs`: add
`NoLeadingSpaces`
- `src/modules/Hosts/Hosts/Settings/UserSettings.cs`: load/save value
from settings.json
- `src/settings-ui/Settings.UI/ViewModels/HostsViewModel.cs`: expose
`NoLeadingSpaces`
- `src/settings-ui/Settings.UI/SettingsXAML/Views/HostsPage.xaml`: new
SettingsCard toggle
- `src/settings-ui/Settings.UI/Strings/en-us/Resources.resw`: add
`Hosts_NoLeadingSpaces.Header/Description`
- Writer change:
- `src/modules/Hosts/HostsUILib/Helpers/HostsService.cs`: gate indent
with `anyDisabled && !_userSettings.NoLeadingSpaces`
- Tests:
- `src/modules/Hosts/Hosts.Tests/HostsServiceTest.cs`:
`NoLeadingSpaces_Disabled_RemovesIndent`
Backward compatibility: default Off, current formatting unchanged unless
the user enables the option.
## Validation Steps Performed
- Automated: `HostsEditor.UnitTests` including
`NoLeadingSpaces_Disabled_RemovesIndent` passing.
- Manual:
1. Run PowerToys (runner) as Admin.
2. Settings → Hosts File Editor → enable “No leading spaces”.
3. In editor, add active `127.0.0.10 example1` and disabled
`127.0.0.11 example2`; Save.
4. Open `C:\Windows\System32\drivers\etc\hosts` in Notepad.
- ON: active line starts at column 0; disabled is `# 127...`.
- OFF: active line begins with two spaces when a disabled entry
exists.
* Flatten everything and succeed build
* Figure out Settings assets
* Remove UseCommonOutputDirectory tag
* Proper settings app path
* [VCM] Fix assets location
* Fix some runtime paths
* [RegistryPreview]Use MRTCore specific pri file
* [Hosts]Use MRTCore specific pri file
* [Settings]Use MRTCore specific pri file
* [Peek]Use MRTCore specific pri file
* [FileLocksmith]Use MRTCore specific pri file
* [ScreenRuler]Use MRTCore specific pri file
* [PowerRename]Use MRTCore specific pri file
* [Peek]Move assets to own folder
* [FileLocksmith] Use own Assets path
* [Hosts]Use own assets folder
* [PowerRename]Use own assets dir
* [MeasureTool] Use its own assets folder
* [ImageResizer]Use its own assets path
* Fix spellcheck
* Fix tab instead of space in project files
* Normalize target frameworks and platforms
* Remove WINRT_NO_MAKE_DETECTION flag. No longer needed?
* Fix AOT and Hosts locations
* Fix Dll version differences on dependency
* Add Common.UI.csproj as refernce to fix dll versions
* Update ControlzEx to normalize dll versions
* Update System.Management version to 7.0.2
* Add GPOWrapper to Registry Preview to fix dll versions
* [PTRun]Reference Microsoft.Extensions.Hosting to fix dll versions
* Fix remaining output paths / dll version conflicts
* [KeyboardManager]Executables still on their own directories
* Fix Monaco paths
* WinAppSDK apps get to play outside again
* Enable VCM settings again
* Fix KBM Editor path again
* [Monaco]Set to own Assets dir
* Fix installer preamble; Fix publish. remove unneeded publishes
* Remove Hardlink functions
* Installer builds again (still needs work to work)
* Readd Monaco to spellcheck excludes
* Fix spellcheck and call publish.cmd again
* [Installer] Remove components that don't need own dirs
* [Installer] Refactor Power Launcher
* [Installer] Refactor Color Picker
* [Installer] Refactor Monaco assets
* [Installer]Generate File script no longer needs to remove files
* [Installer]Refactor FileLocksmith
* [Installer] Refactor Hosts
* [Installer]Refactor Image Resizer
* [Installer]Refactor MouseUtils
* [Installer]Refactor MWB
* [Installer]Refactor MeasureTool
* [Installer]Refactor Peek
* [Installer]Refactor PowerRename and registry fixes
* [Installer]Refactor RegistryPreview
* [Installer]Refactor ShortcutGuide
* [Installer]Refactor Settings
* [Installer]Clean up some unused stuff
* [Installer]Clean up stuff for user install
* [Installer]Fix WinUi3Apps wxs
* [Installer]Fix misplaced folders
* [Installer]Move x86 VCM dll to right path
* Fix monaco language list location
* [Installer]Fix VCM directory reference
* [CI]Fix signing
* [Installer] Fix resources folder for release CI
* [ci]Looks like we still ship NLog on PowerToys Run
* [Settings]Add dependency to avoid dll collision with Experimentation
* [RegistryPreview]Move XAML files to own path
* [RegistryPreview]Fix app icon
* [Hosts]Move XAML files to their own path
* [FileLocksmith]Move XAML files to their own path
* [Peek]Move XAML files to own path
* [ScreenRuler]Move XAML files to its own path
* [Settings]Move XAML to its own path
* [ColorPicker]Move Resources to Assets
* [ShortcutGuide]Move svgs to own Assets path
* [Awake]Move images to assets path
* [Runner]Remove debug checks for PowerToys Run assets
* [PTRun]Move images to its own assets path
* [ImageResizer]Icon for context menu on own assets path
* [PowerRename]Move ico to its own path
* Remove unneeded intermediary directories
* Remove further int dirs
* Move tests to its own output path
* Fix spellcheck
* spellcheck: remove warnings
* [CppAnalyzers]Ignore rule in a tool
* [CI]Check if all deps.json files reference same versions
* fix spellcheck
* [ci]Fix task identation
* [ci]Add script to guard against asset conflicts
* [ci]Add more deps.json audit steps in the release build
* Add xbf to spellcheck expects
* Fix typo in asset conflict check scripts
* Fix some more dependency conflicts
* Downgrade CsWinRT to have the same dll version as sdk
* [ci]Do a recursive check for every deps.json
* Fix spellcheck error inside comment
* [ci]Fix asset script error
* [ci]Name deps.json verify tasks a bit better
* [ci]Improve deps json verify script output
* [ci]Update WinRT version to the same running in CI
* Also upgrade CsWinRT in NOTICE.MD
* [PowerRename]Move XAML files to own path
* [Common]Fix Settings executable path
* [ci]Verify there's no xbf files in app directories
* [installer]Fix firewall path
* [Monaco]Move new files to their proper assets path
* [Monaco]Fix paths for new files after merge
* [Feedback]Removed unneeded build conditions
* [Feedback]Clear vcxproj direct reference to frameworks
* [Feedback]RunPlugins name to hold PTRun plugins
* [Feedback]Remove unneeded foreach
* [Feedback]Shortcut Guide svgs with ** in project file
* [Feedback]Fix spellcheck