Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introducing Windows Customization #2383

Merged
merged 4 commits into from
Mar 22, 2024
Merged

Introducing Windows Customization #2383

merged 4 commits into from
Mar 22, 2024

Conversation

nieubank
Copy link
Contributor

@nieubank nieubank commented Mar 11, 2024

Summary of the pull request

This commit includes the initial placeholder L1 page for 'Windows customization' which will host various settings and utilities to customize Windows to a developer's preferences.

image

image

References and relevant issues

Starts the work related to the "Advanced Settings" feature exploration #1983

Detailed description of the pull request / Additional comments

The MainPage acts as a root which eventually will host a ContentPresenter for displaying the active view (for example, when search is added the ContentPresent will switch the root view temporarily to the 'All settings' search view, and once we get better support to integrate into the navigation service, sub-pages could be consolidated into that content presenter as well.

To provide an example of how options can be incorporated, the Developer File Explorer page was introduced.

The pattern we’re going for here is to provide logical settings groups in the form of a UserControl, which is then wrapped by a Page. This helps in the future when implementing search because we want to host all settings controls in the same root view and filter visibility based on the search filter. Having each group as a separate control view can easily enable hosting that UI in any form we need to down the line. The sub-pages themselves are probably temporarily placeholders for a better integration with the navigation service down the line.

See tools\Customization\DevHome.Customization\Customization.md for details.

Validation steps performed

  • Verified that the Windows customization section appears on the navigation menu and can be navigated to.
  • Clicking on the Windows developer settings link will navigate to the Windows Settings app "For developers" page
  • Toggle each setting on "Developer File Explorer" and verify that the setting takes effect, both on and off

PR checklist

@nieubank nieubank marked this pull request as draft March 11, 2024 16:55
@nieubank nieubank linked an issue Mar 11, 2024 that may be closed by this pull request
@nieubank nieubank requested a review from EricJohnson327 March 11, 2024 20:13
@nieubank nieubank marked this pull request as ready for review March 11, 2024 21:50
@nieubank nieubank self-assigned this Mar 11, 2024
@nieubank nieubank added this to the Dev Home v0.13 milestone Mar 11, 2024
Copy link

@skanda890 skanda890 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice!

skanda890

This comment was marked as duplicate.

This commit includes the initial placeholder L1 page for 'Windows customization' which will host various settings and utilities to customize Windows to a developer's preferences.

The MainPage acts as a root which eventually will host a ContentPresenter for displaying the active view (for example, when search is added the ContentPresent will switch the root view temporarily to the 'All settings' search view, and once we get better support to integrate into the navigation service, sub-pages could be consolidated into that content presenter as well.

To provide an example of how options can be incorporated, the Developer File Explorer page was introduced.

The pattern we’re going for here is to provide logical settings groups in the form of a UserControl, which is then wrapped by a Page. This helps in the future when implementing search because we want to host all settings controls in the same root view and filter visibility based on the search filter. Having each group as a separate control view can easily enable hosting that UI in any form we need to down the line. The sub-pages themselves are probably temporarily placeholders for a better integration with the navigation service down the line.

See tools\Customization\DevHome.Customization\Customization.md for details.
- Update to incorporate #2356 for PageService sub-page registration

- Update nuget package based on conflicts with newly added C++ projects that require packages.config

- Remove breadcrumb until we figure out if there's going to be a common way to do this without duplicating so much code. The impact here is minimal since Customization doesn't have a ton of sub-pages (yet)

- Mark SettingsChanged telemetry event to be a measure, I'm guessing this doesn't need to be Critical?
@nieubank nieubank force-pushed the feature/customization branch from b15bf52 to 0eff82c Compare March 18, 2024 15:47
Copy link
Collaborator

@krschau krschau left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving but strongly suggest making the ProjectReference change. (It's top of mind since I just removed a bunch of project references and created the diagram here. Actually, would be cool if you could update the mermaid diagram to include DevHome.Customization.)


public static void Log(string settingName, string value)
{
TelemetryFactory.Get<ITelemetry>().Log("Customization_SettingChanged_Event", LogLevel.Measure, new SettingChangedEvent(settingName, value));
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

At this time I'm not sure any of these will come through, we've gotten approvals to use LogLevel.Critical around dev home. You do have to get approvals for each event, though.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the recommended approach here? We will want to set up measures for these at some point but I'm not sure it's critical to do that until we have a good telemetry story for Windows customization. I could just change this to be Info for now.

@krschau krschau added the Needs-Second Pull request that needs another approval label Mar 19, 2024
@nieubank nieubank merged commit 01ba562 into main Mar 22, 2024
4 checks passed
@nieubank nieubank removed the Needs-Second Pull request that needs another approval label Mar 22, 2024
@nieubank nieubank deleted the feature/customization branch May 8, 2024 21:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Windows Advanced Settings - Feature Exploration!
5 participants