From 5ff18724c66557af2da9da326ac93c9ad282dd67 Mon Sep 17 00:00:00 2001 From: Darren Hoehna Date: Mon, 12 Feb 2024 14:33:41 -0800 Subject: [PATCH 1/4] Separating out events. (#2023) * Seperating out events. * Fixing build errors --------- Co-authored-by: Darren Hoehna --- .../SetupFlow/RepoTool/RepoConfigEvent.cs | 29 ++++++++++++++++++ .../RepoTool/RepoDialog/RepoCloneEvent.cs | 2 +- .../RepoTool/RepoInfoModificationEvent.cs | 30 +++++++++++++++++++ .../TaskGroups/RepoConfigTaskGroup.cs | 2 -- .../ViewModels/RepoConfigViewModel.cs | 3 ++ .../ViewModels/SummaryViewModel.cs | 9 ++++-- .../Views/RepoConfigView.xaml.cs | 3 +- 7 files changed, 72 insertions(+), 6 deletions(-) create mode 100644 common/TelemetryEvents/SetupFlow/RepoTool/RepoConfigEvent.cs create mode 100644 common/TelemetryEvents/SetupFlow/RepoTool/RepoInfoModificationEvent.cs diff --git a/common/TelemetryEvents/SetupFlow/RepoTool/RepoConfigEvent.cs b/common/TelemetryEvents/SetupFlow/RepoTool/RepoConfigEvent.cs new file mode 100644 index 0000000000..c6aa158ab0 --- /dev/null +++ b/common/TelemetryEvents/SetupFlow/RepoTool/RepoConfigEvent.cs @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation and Contributors +// Licensed under the MIT license. + +using System; +using DevHome.Telemetry; +using Microsoft.Diagnostics.Telemetry; +using Microsoft.Diagnostics.Telemetry.Internal; + +namespace DevHome.Common.TelemetryEvents.SetupFlow.RepoTool; + +public class RepoConfigEvent : EventBase +{ + public override PartA_PrivTags PartA_PrivTags => PrivTags.ProductAndServiceUsage; + + public string Action + { + get; + } + + public RepoConfigEvent(string action) + { + Action = action; + } + + public override void ReplaceSensitiveStrings(Func replaceSensitiveStrings) + { + // No sensitive strings to replace. + } +} diff --git a/common/TelemetryEvents/SetupFlow/RepoTool/RepoDialog/RepoCloneEvent.cs b/common/TelemetryEvents/SetupFlow/RepoTool/RepoDialog/RepoCloneEvent.cs index 23cea7a00e..df668fe785 100644 --- a/common/TelemetryEvents/SetupFlow/RepoTool/RepoDialog/RepoCloneEvent.cs +++ b/common/TelemetryEvents/SetupFlow/RepoTool/RepoDialog/RepoCloneEvent.cs @@ -14,7 +14,7 @@ namespace DevHome.Common.TelemetryEvents.SetupFlow; [EventData] public class RepoCloneEvent : EventBase { - public override PartA_PrivTags PartA_PrivTags => PrivTags.ProductAndServiceUsage; + public override PartA_PrivTags PartA_PrivTags => PrivTags.ProductAndServicePerformance; public string ProviderName { diff --git a/common/TelemetryEvents/SetupFlow/RepoTool/RepoInfoModificationEvent.cs b/common/TelemetryEvents/SetupFlow/RepoTool/RepoInfoModificationEvent.cs new file mode 100644 index 0000000000..36476a9a6b --- /dev/null +++ b/common/TelemetryEvents/SetupFlow/RepoTool/RepoInfoModificationEvent.cs @@ -0,0 +1,30 @@ +// Copyright (c) Microsoft Corporation and Contributors +// Licensed under the MIT license. + +using System; +using System.Collections.Generic; +using DevHome.Telemetry; +using Microsoft.Diagnostics.Telemetry; +using Microsoft.Diagnostics.Telemetry.Internal; + +namespace DevHome.Common.TelemetryEvents.SetupFlow.RepoTool; + +public class RepoInfoModificationEvent : EventBase +{ + public override PartA_PrivTags PartA_PrivTags => PrivTags.ProductAndServiceUsage; + + public string ModificationType + { + get; + } + + public RepoInfoModificationEvent(string modificationType) + { + ModificationType = modificationType; + } + + public override void ReplaceSensitiveStrings(Func replaceSensitiveStrings) + { + // No sensitive strings to replace. + } +} diff --git a/tools/SetupFlow/DevHome.SetupFlow/TaskGroups/RepoConfigTaskGroup.cs b/tools/SetupFlow/DevHome.SetupFlow/TaskGroups/RepoConfigTaskGroup.cs index ad3a19e2e6..5b529fe750 100644 --- a/tools/SetupFlow/DevHome.SetupFlow/TaskGroups/RepoConfigTaskGroup.cs +++ b/tools/SetupFlow/DevHome.SetupFlow/TaskGroups/RepoConfigTaskGroup.cs @@ -94,7 +94,5 @@ public void SaveSetupTaskInformation(List cloningInformation allAddedRepos.Add(new FinalRepoResult(providerName, addKind, cloneLocationKind)); } - - TelemetryFactory.Get().Log("RepoTool_AllReposAdded_Event", LogLevel.Critical, new RepoToolFinalReposToAddEvent(allAddedRepos), _activityId); } } diff --git a/tools/SetupFlow/DevHome.SetupFlow/ViewModels/RepoConfigViewModel.cs b/tools/SetupFlow/DevHome.SetupFlow/ViewModels/RepoConfigViewModel.cs index 11e8ce82a4..883598d65e 100644 --- a/tools/SetupFlow/DevHome.SetupFlow/ViewModels/RepoConfigViewModel.cs +++ b/tools/SetupFlow/DevHome.SetupFlow/ViewModels/RepoConfigViewModel.cs @@ -9,12 +9,14 @@ using CommunityToolkit.Mvvm.ComponentModel; using DevHome.Common.Extensions; using DevHome.Common.Services; +using DevHome.Common.TelemetryEvents.SetupFlow.RepoTool; using DevHome.Contracts.Services; using DevHome.SetupFlow.Common.Helpers; using DevHome.SetupFlow.Models; using DevHome.SetupFlow.Services; using DevHome.SetupFlow.TaskGroups; using DevHome.SetupFlow.Utilities; +using DevHome.Telemetry; using Microsoft.Extensions.Hosting; using Microsoft.UI.Xaml; @@ -205,6 +207,7 @@ public void UpdateCloneLocation(CloningInformation cloningInformation) { RepoReviewItems[location] = cloningInformation; _taskGroup.SaveSetupTaskInformation(RepoReviewItems.ToList()); + TelemetryFactory.Get().Log("RepoTool_RepoModification_Event", LogLevel.Critical, new RepoInfoModificationEvent("ClonePath"), Host.GetService().ActivityId); } } diff --git a/tools/SetupFlow/DevHome.SetupFlow/ViewModels/SummaryViewModel.cs b/tools/SetupFlow/DevHome.SetupFlow/ViewModels/SummaryViewModel.cs index 070bb3c4e5..13a9faa321 100644 --- a/tools/SetupFlow/DevHome.SetupFlow/ViewModels/SummaryViewModel.cs +++ b/tools/SetupFlow/DevHome.SetupFlow/ViewModels/SummaryViewModel.cs @@ -224,8 +224,13 @@ protected async override Task OnFirstNavigateToAsync() FailedTasks.Add(summaryMessageViewModel); } - TelemetryFactory.Get().LogCritical("Summary_NavigatedTo_Event", false, Orchestrator.ActivityId); - _orchestrator.ReleaseRemoteOperationObject(); + // If any tasks failed in the loading screen, the user has to click on the "Next" button + // If no tasks failed, the user is brought to the summary screen, no interaction required. + if (failedTasks.Count != 0) + { + TelemetryFactory.Get().LogCritical("Summary_NavigatedTo_Event", false, Orchestrator.ActivityId); + } + await ReloadCatalogsAsync(); } diff --git a/tools/SetupFlow/DevHome.SetupFlow/Views/RepoConfigView.xaml.cs b/tools/SetupFlow/DevHome.SetupFlow/Views/RepoConfigView.xaml.cs index 2eefc208d0..551416d5ea 100644 --- a/tools/SetupFlow/DevHome.SetupFlow/Views/RepoConfigView.xaml.cs +++ b/tools/SetupFlow/DevHome.SetupFlow/Views/RepoConfigView.xaml.cs @@ -9,6 +9,7 @@ using DevHome.Common.Extensions; using DevHome.Common.Models; using DevHome.Common.TelemetryEvents.SetupFlow; +using DevHome.Common.TelemetryEvents.SetupFlow.RepoTool; using DevHome.Contracts.Services; using DevHome.SetupFlow.Models; using DevHome.SetupFlow.ViewModels; @@ -284,6 +285,6 @@ private void RemoveCloningInformationButton_Click(object sender, RoutedEventArgs ViewModel.DevDriveManager.DecreaseRepositoriesCount(); } - TelemetryFactory.Get().LogCritical("RepoTool_RemoveRepo_Event", false, ActivityId); + TelemetryFactory.Get().Log("RepoTool_RepoList_Event", LogLevel.Critical, new RepoConfigEvent("Remove"), ActivityId); } } From 56addc4f42b62e6d67e45659157194f1b82a3e3e Mon Sep 17 00:00:00 2001 From: Roy <59626501+RDMacLachlan@users.noreply.github.com> Date: Mon, 12 Feb 2024 15:49:29 -0800 Subject: [PATCH 2/4] Updated ReadME's (#2236) * Updated ReadME's * Update sampleConfigurations/README.md Co-authored-by: Kristen Schau <47155823+krschau@users.noreply.github.com> * Update sampleConfigurations/Templates/README.md Co-authored-by: Kristen Schau <47155823+krschau@users.noreply.github.com> * Requested Updates --------- Co-authored-by: Kristen Schau <47155823+krschau@users.noreply.github.com> --- sampleConfigurations/README.md | 9 ++++----- .../Templates/Introduction/C#/README.md | 13 ++++++++----- .../Templates/Introduction/C++/README.md | 13 ++++++++----- .../Templates/Introduction/PowerShell/README.md | 12 ++++++++---- .../Templates/Introduction/Python3.12/README.md | 12 ++++++++---- .../Templates/Introduction/README.md | 4 ++-- sampleConfigurations/Templates/README.md | 12 +++++++++--- 7 files changed, 47 insertions(+), 28 deletions(-) diff --git a/sampleConfigurations/README.md b/sampleConfigurations/README.md index d9892a692a..1b85cebc4b 100644 --- a/sampleConfigurations/README.md +++ b/sampleConfigurations/README.md @@ -3,8 +3,7 @@ Download the *.dsc.yaml files to your local system. They can be executed in Dev Several DSC resources may require running in administrator mode. If the configuration is leveraging the [WinGet DSC resource](https://www.powershellgallery.com/packages/Microsoft.WinGet.DSC) to install packages, there are also limitations in some cases specific to the installers that may either require or prohibit installation in administrative context. - -### GitHub projects +### GitHub projects (Repositories) Sample configurations have been provided for various GitHub repositories. These configurations ideally should be placed in a `.configurations` folder in the root of the project directory. Some DSC resources may have parameters that allow you to pass in a relative file path. The reserved variable `$(WinGetConfigRoot)` can be used to specify the full path of the configuration file. An example of how to use that variable with a relative file path is shown below: ```yaml @@ -19,8 +18,8 @@ Sample configurations have been provided for various GitHub repositories. These vsConfigFile: '${WinGetConfigRoot}\..\.vsconfig' ``` -### Learn to Code -The sample configurations in the Windows directory are related to [Windows development paths](https://learn.microsoft.com/windows/dev-environment/#development-paths). +### Learn to Code (Templates) +Sample configurations in this directory are directly related to the [Windows development paths](https://learn.microsoft.com/windows/dev-environment/#development-paths). These configurations will allow you to automatically set up your device and begin developing in your preferred language quickly. -### Sample DSC Resources +### Sample DSC Resources (DscResources) Examples for a few specific DSC Resources are under the [DscResources](./DscResources/) directory. \ No newline at end of file diff --git a/sampleConfigurations/Templates/Introduction/C#/README.md b/sampleConfigurations/Templates/Introduction/C#/README.md index a9fa0a37fd..11f9ed7a30 100644 --- a/sampleConfigurations/Templates/Introduction/C#/README.md +++ b/sampleConfigurations/Templates/Introduction/C#/README.md @@ -1,23 +1,23 @@ ## Understanding WinGet Configuration Files -This folder contains a WinGet Configuration File (*configuration.dsc.yaml*) that will work with the Windows Package Manager command line interface (`winget configure --file [path: configuration.dsc.yaml]`) or can be run using Microsoft Dev Home Device Configuration. +This folder contains a [Windows Package Manager](https://learn.microsoft.com/en-us/windows/package-manager/winget/) (WinGet) [Configuration File](https://learn.microsoft.com/en-us/windows/package-manager/configuration/) (*configuration.dsc.yaml*) that will work with the WinGet command line interface (`winget configure --file [path: configuration.dsc.yaml]`) or can be run using [Microsoft Dev Home](https://learn.microsoft.com/en-us/windows/dev-home/) Device Configuration. When run, the `configuration.dsc.yaml` file will install the following list of applications: * Microsoft Visual Studio Community 2022 * Required Visual Studio Workloads (ManagedDesktop, Universal) * GitHub Desktop - The `configuration.dsc.yaml` file will also enable [Developer Mode](https://learn.microsoft.com/en-us/windows/apps/get-started/developer-mode-features-and-debugging) on your device. ## How to use the WinGet Configuration File +The following two options are available for running a WinGet Configuration file on your device. -### Windows Package Manager +### 1. Windows Package Manager 1. Download the `configuration.dsc.yaml` file to your computer. 1. Open your Windows Start Menu, search and launch "*Windows Terminal*". -1. Type the following: `CD [C:\Users\User\Download]` +1. Type the following: `CD ` 1. Type the following: `winget configure --file .\configuration.dsc.yaml` -### Dev Home +### 2. Dev Home 1. Download the `configuration.dsc.yaml` file to your computer. 1. Open your Windows Start Menu, search and launch "*Dev Home*". 1. Select the *Machine Configuration* button on the left side navigation. @@ -25,3 +25,6 @@ The `configuration.dsc.yaml` file will also enable [Developer Mode](https://lear 1. Locate and open the WinGet Configuration file downloaded in "step 1". 1. Select the "I agree and want to continue" checkbox. 1. Select the "Set up as admin" button. + +## Issues with Configuration file +If you experience an issue with running the provided WinGet Configuration file, you can submit a [new issue report](https://github.com/microsoft/devhome/issues/new/choose), or [search existing issues](https://github.com/microsoft/devhome/issues) for a pre-existing issue filed by another user. \ No newline at end of file diff --git a/sampleConfigurations/Templates/Introduction/C++/README.md b/sampleConfigurations/Templates/Introduction/C++/README.md index ba5c567c92..f65a4a8da4 100644 --- a/sampleConfigurations/Templates/Introduction/C++/README.md +++ b/sampleConfigurations/Templates/Introduction/C++/README.md @@ -1,23 +1,23 @@ ## Understanding WinGet Configuration Files -This folder contains a WinGet Configuration File (*configuration.dsc.yaml*) that will work with the Windows Package Manager command line interface (`winget configure --file [path: configuration.dsc.yaml]`) or can be run using Microsoft Dev Home Device Configuration. +This folder contains a [Windows Package Manager](https://learn.microsoft.com/en-us/windows/package-manager/winget/) (WinGet) [Configuration File](https://learn.microsoft.com/en-us/windows/package-manager/configuration/) (*configuration.dsc.yaml*) that will work with the WinGet command line interface (`winget configure --file [path: configuration.dsc.yaml]`) or can be run using [Microsoft Dev Home](https://learn.microsoft.com/en-us/windows/dev-home/) Device Configuration. When run, the `configuration.dsc.yaml` file will install the following list of applications: * Microsoft Visual Studio Community 2022 * Required Visual Studio Workloads (NativeDesktop, Universal) * GitHub Desktop - The `configuration.dsc.yaml` file will also enable [Developer Mode](https://learn.microsoft.com/en-us/windows/apps/get-started/developer-mode-features-and-debugging) on your device. ## How to use the WinGet Configuration File +The following two options are available for running a WinGet Configuration file on your device. -### Windows Package Manager +### 1. Windows Package Manager 1. Download the `configuration.dsc.yaml` file to your computer. 1. Open your Windows Start Menu, search and launch "*Windows Terminal*". -1. Type the following: `CD [C:\Users\User\Download]` +1. Type the following: `CD ` 1. Type the following: `winget configure --file .\configuration.dsc.yaml` -### Dev Home +### 2. Dev Home 1. Download the `configuration.dsc.yaml` file to your computer. 1. Open your Windows Start Menu, search and launch "*Dev Home*". 1. Select the *Machine Configuration* button on the left side navigation. @@ -25,3 +25,6 @@ The `configuration.dsc.yaml` file will also enable [Developer Mode](https://lear 1. Locate and open the WinGet Configuration file downloaded in "step 1". 1. Select the "I agree and want to continue" checkbox. 1. Select the "Set up as admin" button. + +## Issues with Configuration file +If you experience an issue with running the provided WinGet Configuration file, you can submit a [new issue report](https://github.com/microsoft/devhome/issues/new/choose), or [search existing issues](https://github.com/microsoft/devhome/issues) for a pre-existing issue filed by another user. \ No newline at end of file diff --git a/sampleConfigurations/Templates/Introduction/PowerShell/README.md b/sampleConfigurations/Templates/Introduction/PowerShell/README.md index e6955da1f6..baa22881a9 100644 --- a/sampleConfigurations/Templates/Introduction/PowerShell/README.md +++ b/sampleConfigurations/Templates/Introduction/PowerShell/README.md @@ -1,18 +1,19 @@ ## Understanding WinGet Configuration Files -This folder contains a WinGet Configuration File (*configuration.dsc.yaml*) that will work with the Windows Package Manager command line interface (`winget configure --file [path: configuration.dsc.yaml]`) or can be run using Microsoft Dev Home Device Configuration. +This folder contains a [Windows Package Manager](https://learn.microsoft.com/en-us/windows/package-manager/winget/) (WinGet) [Configuration File](https://learn.microsoft.com/en-us/windows/package-manager/configuration/) (*configuration.dsc.yaml*) that will work with the WinGet command line interface (`winget configure --file [path: configuration.dsc.yaml]`) or can be run using [Microsoft Dev Home](https://learn.microsoft.com/en-us/windows/dev-home/) Device Configuration. When run, the `configuration.dsc.yaml` file will install the following list of applications: * Microsoft Visual Studio Code ## How to use the WinGet Configuration File +The following two options are available for running a WinGet Configuration file on your device. -### Windows Package Manager +### 1. Windows Package Manager 1. Download the `configuration.dsc.yaml` file to your computer. 1. Open your Windows Start Menu, search and launch "*Windows Terminal*". -1. Type the following: `CD [C:\Users\User\Download]` +1. Type the following: `CD ` 1. Type the following: `winget configure --file .\configuration.dsc.yaml` -### Dev Home +### 2. Dev Home 1. Download the `configuration.dsc.yaml` file to your computer. 1. Open your Windows Start Menu, search and launch "*Dev Home*". 1. Select the *Machine Configuration* button on the left side navigation. @@ -20,3 +21,6 @@ When run, the `configuration.dsc.yaml` file will install the following list of a 1. Locate and open the WinGet Configuration file downloaded in "step 1". 1. Select the "I agree and want to continue" checkbox. 1. Select the "Set up as admin" button. + +## Issues with Configuration file +If you experience an issue with running the provided WinGet Configuration file, you can submit a [new issue report](https://github.com/microsoft/devhome/issues/new/choose), or [search existing issues](https://github.com/microsoft/devhome/issues) for a pre-existing issue filed by another user. \ No newline at end of file diff --git a/sampleConfigurations/Templates/Introduction/Python3.12/README.md b/sampleConfigurations/Templates/Introduction/Python3.12/README.md index 8e223ba02d..361b2ea0d9 100644 --- a/sampleConfigurations/Templates/Introduction/Python3.12/README.md +++ b/sampleConfigurations/Templates/Introduction/Python3.12/README.md @@ -1,5 +1,5 @@ ## Understanding WinGet Configuration Files -This folder contains a WinGet Configuration File (*configuration.dsc.yaml*) that will work with the Windows Package Manager command line interface (`winget configure --file [path: configuration.dsc.yaml]`) or can be run using Microsoft Dev Home Device Configuration. +This folder contains a [Windows Package Manager](https://learn.microsoft.com/en-us/windows/package-manager/winget/) (WinGet) [Configuration File](https://learn.microsoft.com/en-us/windows/package-manager/configuration/) (*configuration.dsc.yaml*) that will work with the WinGet command line interface (`winget configure --file [path: configuration.dsc.yaml]`) or can be run using [Microsoft Dev Home](https://learn.microsoft.com/en-us/windows/dev-home/) Device Configuration. When run, the `configuration.dsc.yaml` file will install the following list of applications: * Microsoft Visual Studio Community 2022 @@ -10,14 +10,15 @@ When run, the `configuration.dsc.yaml` file will install the following list of a The `configuration.dsc.yaml` file will also enable [Developer Mode](https://learn.microsoft.com/en-us/windows/apps/get-started/developer-mode-features-and-debugging) on your device. ## How to use the WinGet Configuration File +The following two options are available for running a WinGet Configuration file on your device. -### Windows Package Manager +### 1. Windows Package Manager 1. Download the `configuration.dsc.yaml` file to your computer. 1. Open your Windows Start Menu, search and launch "*Windows Terminal*". -1. Type the following: `CD [C:\Users\User\Download]` +1. Type the following: `CD ` 1. Type the following: `winget configure --file .\configuration.dsc.yaml` -### Dev Home +### 2. Dev Home 1. Download the `configuration.dsc.yaml` file to your computer. 1. Open your Windows Start Menu, search and launch "*Dev Home*". 1. Select the *Machine Configuration* button on the left side navigation. @@ -25,3 +26,6 @@ The `configuration.dsc.yaml` file will also enable [Developer Mode](https://lear 1. Locate and open the WinGet Configuration file downloaded in "step 1". 1. Select the "I agree and want to continue" checkbox. 1. Select the "Set up as admin" button. + +## Issues with Configuration file +If you experience an issue with running the provided WinGet Configuration file, you can submit a [new issue report](https://github.com/microsoft/devhome/issues/new/choose), or [search existing issues](https://github.com/microsoft/devhome/issues) for a pre-existing issue filed by another user. \ No newline at end of file diff --git a/sampleConfigurations/Templates/Introduction/README.md b/sampleConfigurations/Templates/Introduction/README.md index 4b3bcb3276..c7b7cff19b 100644 --- a/sampleConfigurations/Templates/Introduction/README.md +++ b/sampleConfigurations/Templates/Introduction/README.md @@ -1,6 +1,6 @@ -The WinGet Configuration Files that are contained within the *Introduction* folder are provided as an initial starting location to a specific software development language. This section will provide you with guidance on what you need, and how to install the software and dependency requirements. Allowing you to focus on learning/experiencing the software development language of your choice. +This directory contains different [Windows Package Manager](https://learn.microsoft.com/en-us/windows/package-manager/winget/) (WinGet) [Configuration files](https://learn.microsoft.com/en-us/windows/package-manager/configuration/) that will be used for setting up your device for a specific software development language. These files are designed specifically for providing an introduction to software development, creating the default *Hello World* project, without having to focus on understanding the complexities of what needs to be installed, and how should it be configured. -## Language specific folders +## Language specific folders (Naming Standard) Each folder in this folder will be labeled with the name of the Software Development language it is associated with. If the language is inclusive of another language, it'll be seperated by a decimal. If the language contains a version specific release that needs to be accounted for, then the version will be considered as the language. ### Example: diff --git a/sampleConfigurations/Templates/README.md b/sampleConfigurations/Templates/README.md index 93ba0d4884..bed5ae5a3d 100644 --- a/sampleConfigurations/Templates/README.md +++ b/sampleConfigurations/Templates/README.md @@ -1,7 +1,13 @@ -This section is reflective of the type of software development that will be performed. If you are new to software development, or are looking for an introduction to the software development language, we recommend visiting the *Introduction* section. +This section is reflective of the type of software development workloads that will be performed. If you are new to software development or are looking for an introduction to the software development language, we recommend visiting the [Introduction](./Introduction/) section, which has more information about various languages. + +## Android Apps +This directory focuses on software development languages used for developing Android Apps, with a device setup that is focused on creating and testing Android apps. ## Introduction -The WinGet Configuration Files that are contained within the *Introduction* folder are provided as an initial starting location to a specific software development language. This section will provide you with guidance on what you need, and how to install the software and dependency requirements. Allowing you to focus on learning/experiencing the software development language of your choice. +This directory focuses on Getting Started with a particular language. The device setup flows will focus on the base requirements needed for creating a *Hello World* or similar project. This directory is recommended for individuals interested in learning how to develop software. ## Web Development -The WinGet Configuration Files that are contained within the *Web Development* folder are provided to help get your device setup for a specific language with the goals of performing web development. \ No newline at end of file +This directory focuses on software development languages used for developing websites and web apps. The device setup flows will focus on web app development. + +## Xbox Games +This directory focuses on software development languages used for developing Xbox games. The device setup flows will focus on any development / testing requirements. \ No newline at end of file From ad3136673efbaf394210fd0e92fbbd571bfd8553 Mon Sep 17 00:00:00 2001 From: Kristen Schau <47155823+krschau@users.noreply.github.com> Date: Tue, 13 Feb 2024 10:30:50 -0800 Subject: [PATCH 3/4] Fix Dashboard crash when no widgets pinned (#2254) --- .../SetupFlow/RepoTool/RepoConfigEvent.cs | 4 ++-- .../RepoTool/RepoInfoModificationEvent.cs | 5 ++--- .../ViewModels/WidgetViewModel.cs | 5 +++-- .../DevHome.Dashboard/Views/DashboardView.xaml.cs | 15 +++++++++++---- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/common/TelemetryEvents/SetupFlow/RepoTool/RepoConfigEvent.cs b/common/TelemetryEvents/SetupFlow/RepoTool/RepoConfigEvent.cs index c6aa158ab0..167d485f99 100644 --- a/common/TelemetryEvents/SetupFlow/RepoTool/RepoConfigEvent.cs +++ b/common/TelemetryEvents/SetupFlow/RepoTool/RepoConfigEvent.cs @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation and Contributors -// Licensed under the MIT license. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. using System; using DevHome.Telemetry; diff --git a/common/TelemetryEvents/SetupFlow/RepoTool/RepoInfoModificationEvent.cs b/common/TelemetryEvents/SetupFlow/RepoTool/RepoInfoModificationEvent.cs index 36476a9a6b..177f95d627 100644 --- a/common/TelemetryEvents/SetupFlow/RepoTool/RepoInfoModificationEvent.cs +++ b/common/TelemetryEvents/SetupFlow/RepoTool/RepoInfoModificationEvent.cs @@ -1,8 +1,7 @@ -// Copyright (c) Microsoft Corporation and Contributors -// Licensed under the MIT license. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. using System; -using System.Collections.Generic; using DevHome.Telemetry; using Microsoft.Diagnostics.Telemetry; using Microsoft.Diagnostics.Telemetry.Internal; diff --git a/tools/Dashboard/DevHome.Dashboard/ViewModels/WidgetViewModel.cs b/tools/Dashboard/DevHome.Dashboard/ViewModels/WidgetViewModel.cs index 77e0a13a37..1aa0895f54 100644 --- a/tools/Dashboard/DevHome.Dashboard/ViewModels/WidgetViewModel.cs +++ b/tools/Dashboard/DevHome.Dashboard/ViewModels/WidgetViewModel.cs @@ -124,8 +124,9 @@ await Task.Run(async () => return; } - Log.Logger()?.ReportDebug("WidgetViewModel", $"cardTemplate = {cardTemplate}"); - Log.Logger()?.ReportDebug("WidgetViewModel", $"cardData = {cardData}"); + // Uncomment for extra debugging output + // Log.Logger()?.ReportDebug("WidgetViewModel", $"cardTemplate = {cardTemplate}"); + // Log.Logger()?.ReportDebug("WidgetViewModel", $"cardData = {cardData}"); // Use the data to fill in the template. AdaptiveCardParseResult card; diff --git a/tools/Dashboard/DevHome.Dashboard/Views/DashboardView.xaml.cs b/tools/Dashboard/DevHome.Dashboard/Views/DashboardView.xaml.cs index e53e94d425..e7021eead8 100644 --- a/tools/Dashboard/DevHome.Dashboard/Views/DashboardView.xaml.cs +++ b/tools/Dashboard/DevHome.Dashboard/Views/DashboardView.xaml.cs @@ -126,6 +126,7 @@ private async Task InitializeDashboard() await ViewModel.WidgetIconService.CacheAllWidgetIconsAsync(); var isFirstDashboardRun = !(await _localSettingsService.ReadSettingAsync(WellKnownSettingsKeys.IsNotFirstDashboardRun)); + Log.Logger()?.ReportInfo("DashboardView", $"Is first dashboard run = {isFirstDashboardRun}"); if (isFirstDashboardRun) { await Application.Current.GetService().SaveSettingAsync(WellKnownSettingsKeys.IsNotFirstDashboardRun, true); @@ -161,11 +162,13 @@ private async Task InitializePinnedWidgetListAsync(bool isFirstDashboardRun) { // If it's the first time the Dashboard has been displayed and we have no other widgets pinned to a // different version of Dev Home, pin some default widgets. + Log.Logger()?.ReportInfo("DashboardView", $"Pin default widgets"); await PinDefaultWidgetsAsync(); - return; } - - await RestorePinnedWidgetsAsync(hostWidgets); + else if (hostWidgets != null) + { + await RestorePinnedWidgetsAsync(hostWidgets); + } } private async Task GetPreviouslyPinnedWidgets() @@ -291,6 +294,7 @@ private async Task PinDefaultWidgetsAsync() var id = widgetDefinition.Id; if (WidgetHelpers.DefaultWidgetDefinitionIds.Contains(id)) { + Log.Logger()?.ReportInfo("DashboardView", $"Found default widget {id}"); await PinDefaultWidgetAsync(widgetDefinition); } } @@ -303,7 +307,9 @@ private async Task PinDefaultWidgetAsync(WidgetDefinition defaultWidgetDefinitio // Create widget var widgetHost = await ViewModel.WidgetHostingService.GetWidgetHostAsync(); var size = WidgetHelpers.GetDefaultWidgetSize(defaultWidgetDefinition.GetWidgetCapabilities()); - var newWidget = await Task.Run(async () => await widgetHost?.CreateWidgetAsync(defaultWidgetDefinition.Id, size)); + var id = defaultWidgetDefinition.Id; + var newWidget = await Task.Run(async () => await widgetHost?.CreateWidgetAsync(id, size)); + Log.Logger()?.ReportInfo("DashboardView", $"Created default widget {id}"); // Set custom state on new widget. var position = PinnedWidgets.Count; @@ -313,6 +319,7 @@ private async Task PinDefaultWidgetAsync(WidgetDefinition defaultWidgetDefinitio // Put new widget on the Dashboard. await InsertWidgetInPinnedWidgetsAsync(newWidget, size, position); + Log.Logger()?.ReportInfo("DashboardView", $"Inserted default widget {id} at position {position}"); } catch (Exception ex) { From 873da8813b642d07b7c68bce9a32b793da0c0c9b Mon Sep 17 00:00:00 2001 From: Eric Johnson Date: Tue, 13 Feb 2024 20:53:07 -0800 Subject: [PATCH 4/4] Update version to 0.11 --- build/azure-pipelines.yml | 2 +- build/scripts/CreateBuildInfo.ps1 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build/azure-pipelines.yml b/build/azure-pipelines.yml index 7d3f73c276..c15647ff2d 100644 --- a/build/azure-pipelines.yml +++ b/build/azure-pipelines.yml @@ -21,7 +21,7 @@ parameters: variables: # MSIXVersion's second part should always be odd to account for stub app's version - MSIXVersion: '0.1001' + MSIXVersion: '0.1101' VersionOfSDK: '0.100' solution: '**/DevHome.sln' appxPackageDir: 'AppxPackages' diff --git a/build/scripts/CreateBuildInfo.ps1 b/build/scripts/CreateBuildInfo.ps1 index cd12994b4b..dea9b45048 100644 --- a/build/scripts/CreateBuildInfo.ps1 +++ b/build/scripts/CreateBuildInfo.ps1 @@ -6,7 +6,7 @@ Param( ) $Major = "0" -$Minor = "10" +$Minor = "11" $Patch = "99" # default to 99 for local builds $versionSplit = $Version.Split(".");