Add a resumable PowerShell setup flow for Windows developer machines - #93
Open
AmirMS (AmelBawa-msft) wants to merge 25 commits into
Open
Add a resumable PowerShell setup flow for Windows developer machines#93AmirMS (AmelBawa-msft) wants to merge 25 commits into
AmirMS (AmelBawa-msft) wants to merge 25 commits into
Conversation
The release-copy updates move to a separate PR, so this branch no longer touches windows-dev-config/. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: fa27b7a2-0eb1-4970-927c-340739ecbdc1
AmirMS (AmelBawa-msft)
marked this pull request as ready for review
August 19, 2026 17:04
There was a problem hiding this comment.
Pull request overview
Replaces the DSC-based Calm OS flow with a modular, idempotent PowerShell setup that supports elevation and reboot resumption.
Changes:
- Adds bootstrap, orchestration, setup phases, and shared helpers.
- Adds WSL reboot/resume, package, registry, Terminal, font, and Copilot configuration.
- Updates manifests and documentation while removing the old DSC implementation.
Reviewed changes
Copilot reviewed 32 out of 33 changed files in this pull request and generated 10 comments.
Show a summary per file
| File | Description |
|---|---|
.gitignore |
Ignores setup tally state. |
README.md |
Documents the new PowerShell flow. |
src/docs/development.md |
Describes PowerShell-native flow conventions. |
src/future/cmdpal/README.md |
Notes extension launch limitations. |
src/manifest.yml |
Points Calm OS at the new entry script. |
src/tests/calm-os/probe.ps1 |
Updates smoke-test commentary. |
src/windows-dev-config/README.md |
Rewrites usage and configuration documentation. |
src/windows-dev-config/bootstrap.ps1 |
Downloads and verifies the setup payload. |
src/windows-dev-config/dev-config.ps1 |
Orchestrates setup phases and reporting. |
src/windows-dev-config/dev-config.winget |
Removes the legacy DSC configuration. |
src/windows-dev-config/install.ps1 |
Removes the legacy install shim. |
steps/_console.ps1 |
Adds logging and pause helpers. |
steps/_elevation.ps1 |
Adds elevation and single-instance handling. |
steps/_environment.ps1 |
Adds process, PATH, TLS, and file helpers. |
steps/_pwsh-bootstrap.ps1 |
Bootstraps and relaunches under PowerShell 7. |
steps/_reboot-resume.ps1 |
Registers post-reboot continuation. |
steps/_registry.ps1 |
Adds registry helpers. |
steps/_resume-wrapper.ps1 |
Relays resumed-run output. |
steps/_retry.ps1 |
Adds retry handling. |
steps/_step-runner.ps1 |
Implements check/apply/verify execution. |
steps/_terminal.ps1 |
Manages Terminal settings JSON. |
steps/_winget.ps1 |
Manages WinGet front ends and packages. |
steps/copilot.ps1 |
Configures Copilot integrations. |
steps/edge.ps1 |
Applies Edge policies. |
steps/fonts.ps1 |
Installs and configures Cascadia fonts. |
steps/packages.ps1 |
Defines the package set. |
steps/powershell-profile.ps1 |
Adds Oh My Posh initialization. |
steps/prerequisites.ps1 |
Verifies PowerShell and WinGet. |
steps/registry-explorer.ps1 |
Applies Explorer settings. |
steps/registry-system.ps1 |
Applies system settings. |
steps/registry-taskbar-search.ps1 |
Applies taskbar and search settings. |
steps/terminal.ps1 |
Configures Terminal defaults and theme. |
steps/wsl.ps1 |
Installs WSL, reboots, and installs Ubuntu. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Comment on lines
+64
to
+66
| # Terminal settings are JSONC, so comments are removed before ConvertFrom-Json. | ||
| $clean = [regex]::Replace($raw, '/\*[\s\S]*?\*/', '') | ||
| $clean = [regex]::Replace($clean, '(?m)^\s*//.*$', '') |
Comment on lines
+161
to
+164
| if ($alreadyDone) { | ||
| $Script:DevConfigTally.AlreadyOk++ | ||
| } | ||
| [pscustomobject]@{ Step = $step; AlreadyDone = $alreadyDone } |
Comment on lines
+81
to
+86
| try { | ||
| [System.IO.Compression.ZipFileExtensions]::ExtractToFile($entry, $dest, $true) | ||
| } catch { | ||
| # A font the system has already loaded can't be overwritten, and it is the same version. | ||
| if (-not (Test-Path $dest)) { throw } | ||
| Write-Host ' (keeping the copy already in place)' -ForegroundColor DarkGray |
Comment on lines
+37
to
+39
| # The current WSL package supports --version; the inbox WSL returns a nonzero exit code. | ||
| function Test-DevConfigWslPlatformActive { | ||
| return ((Get-DevConfigWslExitCode -Arguments @('--version')) -eq 0) |
AmirMS (AmelBawa-msft)
force-pushed
the
user/amelbawa/dev-config-2
branch
from
August 20, 2026 22:29
1703f36 to
9c0e1ea
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Introduces a PowerShell implementation of the developer workstation setup that
runs from a single command, checks every change before applying it, and continues
across the reboot WSL requires.