Skip to content
This repository was archived by the owner on Jun 5, 2025. It is now read-only.

Allow environments visibility to be controlled by experimentation keys in feature branch#2260

Merged
bbonaby merged 1 commit intomicrosoftfeature/dev-environmentsfrom
user/bbonaby/add-experimentation-keys-to-environments-branch
Feb 15, 2024
Merged

Allow environments visibility to be controlled by experimentation keys in feature branch#2260
bbonaby merged 1 commit intomicrosoftfeature/dev-environmentsfrom
user/bbonaby/add-experimentation-keys-to-environments-branch

Conversation

@bbonaby
Copy link
Contributor

@bbonaby bbonaby commented Feb 14, 2024

Summary of the pull request

This PR allows the visibility of the Dev Environments UX pieces in Dev Home like the environments tool page and the "Setup Target" Flow option in the machine configuration's main page to be controlled via experimentation keys.

Initially these will only be toggled on by default in Dev Builds. Canary and Preview builds will be toggled off by default.

There are 2 experimentation keys added:

  1. EnvironmentsManagementPage - for environments tool page
  2. EnvironmentsSetupTargetFlow - for Setup target flow option in machine configuration

See video:

Environments.with.Experiments.mp4

When the Setup target option in the machine configuration page is not clicked prior to turning off the EnvironmentsSetupTargetFlow key. The next time the user enters the machine configuration page the option will not appear. (this is our desired behavior).

References and relevant issues

Detailed description of the pull request / Additional comments

Explanation of edge case when the Setup target option in the machine configuration page is clicked prior to turning off the EnvironmentsSetupTargetFlow key.

Due to the machine configuration page using a singleton SetupFlowViewModel to keep which ever flow the user selects in the main page available in the view until, either the Dev Home app closes or the user clicks the cancel button in the UI. The flow stays in the view despite the key being toggled off.

Once the user clicks the cancel button in the UI or closes Dev Home, the next time the user enters into the main page, the "Setup target" option will not appear, as the experimentation key will be re-evaluated when re-creating the main page.

We'd need to update the machine configuration behavior and add events to the IExperimentationService interface to allow for us to dynamically close out UI related to an experimentation key in the future if need be. For now, I believe what we have is enough, as if the user was already in the setup target flow, then turns off the EnvironmentsSetupTargetFlow key, they just need to click the cancel button or close dev home for the "Setup target" option to not appear the next time they enter the machine configuration page.

Video showing the edge case (In it I show the behavior for when the user doesn't click the setup target button and turns off the key. Then I show what happens after they click the setup target button and then turn off the experimentation key):

Environments.in.setup.flow.edge.case.due.to.singleton.usage.mp4

Validation steps performed

PR checklist

  • Closes #xxx
  • Tests added/passed
  • Documentation updated

@bbonaby
Copy link
Contributor Author

bbonaby commented Feb 14, 2024

Note: Builds will fail until we've added the Dev Environments updates to the SDK are in main

@bbonaby bbonaby merged commit 2f4186a into microsoftfeature/dev-environments Feb 15, 2024
bbonaby added a commit that referenced this pull request Mar 7, 2024
* add initial SDK changes (#2209)

* Add UX code from private ADO branch to public feature branch (#2241)

* Add initial code from private branch that will be shared between the setup flow and the Dev environments tool page. PRs: from private ADO repo: https://dev.azure.com/microsoft/Dart/_git/DevHome?version=GBDevEnv

* add changes to the setup flow for dev environment configuration PRS: from private ADO repo: https://dev.azure.com/microsoft/Dart/_git/DevHome?version=GBDevEnv

* Add dev environments management tool page from private ADO repo: https://dev.azure.com/microsoft/Dart/_git/DevHome?version=GBDevEnv

* fix conflicts and stylecop errors due to update from merge with main

---------

Co-authored-by: Huzaifa Danish <modanish@microsoft.com>

* Move Hyper-V extension code from private repository to public dev environments feature branch (#2246)

* Add Hyper-v extension to Dev Home from Private Hyper-v extension branch: PRS https://github.com/microsoft/DevHomeHyperVExtension

* Merge changes from Dev Home main and fix style cop errors

* Initial implementation of IComputeSystem::ApplyConfiguration for HyperV extension. (#2258)

* Add environments to experimentation (#2260)

* Add PowerShell script and a helper class to deploy DevSetupAgent service to a Hyper-V VM. (#2261)

* Hyper-V extension: Add "Ask for VM credentials" and "Wait for logon" Adaptive Cards to Hyper-V Configure command. (#2289)

* Changes to make DevSetupEngine work with .NET 8 (#2308)

* Build DevSetupAgent separately from the main Dev Home solution and add DevSetupAgent_*.zip to MSIX package. (#2325)

* Add WaitForLogin and Credentials Adaptive Cards

* Address review comments.

* New VS solution for DevSetupAgent

* Add BuildDevSetupAgentHelper script

* Fix x86 DevSetupAgent to work on x64 OS.
Create DevSetupAgent zip for different VM architectures.
Fixed build scripts and HyperVExtension.csproj to include DevSetupAgent zip file into Dev Home MSIX package.

* Remove old comment.

* Fix a comment.

* Update setup target flow to allow for configuration of a dev environment. (#2321)

* initial code

* update messaging and adaptive cards

* remove added method

* update strings and names

* update based on initial comments and update IsHyperVModuleLoaded with new work around that doesn't involve installing using Install-Module which installs from PsGallery

* improve wording

* fix merge conflicts

* update dev environments feature branch with latest idl changes (#2334)

* update feature branch to latest sdk

* update InputJson to inputJson

* update with latest changes

* Update environments page UX (#2320)

* add updates to ui

* fix crashes due to resource name mismatch

* update feature branch to latest sdk

* update InputJson to inputJson

* update with latest changes

* update

* update to remove duplicate, resize shimmer, remove id from winget file since its not needed, and add comments

* Re-add correct adaptive host file for correct theming, address some initial comments, update loading page to allow scrolling when there are tasks and actions in the action center. Fix error message spelling.

* improve setup target loading page progress messaging

* Fix git clone's dependsOn Id to match our new Ids for setup target flow

* Update build scripts to build DevSetupAgent in Azure official build. (#2339)

* update dev home to use new SDK version and other projects to use win app sdk v1.5 to prevent build issues (#2344)

* Fix PS DevSetupAgent deployment script. (#2345)

* remove classes that don't need to be added

* Change all tabs to spaces

* Update tools directory to use crlf

* Update HyperVExtension directory to use crlf

* Update common/Environments directory to use crlf

* Update more in common directory to use crlf

* [Hyper-V extension]: Fixes for DevSetupEngine registration, Configure progress reporting, and GitHub build. (#2348)

* remove s that was added from a previous commit causing build to fail

* fix tests for build

* update malformed configuration string to allow arm64 to build

---------

Co-authored-by: Huzaifa Danish <modanish@microsoft.com>
Co-authored-by: sshilov7 <51001703+sshilov7@users.noreply.github.com>
Co-authored-by: Kristen Schau <47155823+krschau@users.noreply.github.com>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants