Initialize-DeveloperMachine.psd1

@{
    RootModule        = 'Initialize-DeveloperMachine.psm1'
    ModuleVersion     = '0.1.1'
    GUID              = 'f3f98b03-1835-4fa7-a0bc-440739c8cee2'
    Author            = 'gonace'
    CompanyName       = 'gonace'
    Copyright         = '(c) gonace. All rights reserved.'
    Description       = 'Bootstrap a Windows developer machine: relocate caches off C:, install winget tools, set up WSL + Docker Desktop. Modular tasks, idempotent, dry-run support.'
    PowerShellVersion = '5.1'
    CompatiblePSEditions = @('Desktop','Core')

    FunctionsToExport = @('Initialize-DeveloperMachine')
    CmdletsToExport   = @()
    VariablesToExport = @()
    AliasesToExport   = @()

    PrivateData = @{
        PSData = @{
            Tags         = @('Developer','Bootstrap','Windows','WSL','DockerDesktop','winget','Junction','Cache','NuGet','npm')
            LicenseUri   = 'https://github.com/gonace/Initialize-DeveloperMachine/blob/master/LICENSE'
            ProjectUri   = 'https://github.com/gonace/Initialize-DeveloperMachine'
            ReleaseNotes = @'
Patch release. Mostly UX polish from running `v0.1.0` on real machines and finding rough edges.
 
```powershell
Install-Module Initialize-DeveloperMachine -RequiredVersion 0.1.1 -Scope CurrentUser
Initialize-DeveloperMachine
```
 
## ✨ First-run UX
 
- **Interactive config scaffold.** When the script runs in a terminal and finds no config file, it now offers to create one for you at `%AppData%\Initialize-DeveloperMachine\config.json`, prints the contents in a gray-boxed preview, then prompts `[P]roceed or [E]dit and reload`. Hitting `E` opens the file in your default editor and shows a spinner until you save — once saved, the preview reprints with your changes and the prompt loops. CI / `-Force` / redirected-stdin runs are unchanged (they fall through to built-in defaults silently).
- **Honest "no config" output.** Previously the script logged `[INFO] Config: <path>` even when that path didn't exist on disk. Now you get a clear `[INFO] No config file found; using built-in defaults.` plus the recommended location to drop one at.
- **Section banners restyled** as three-line boxed headers:
  ```
  ╔══════════════════════════════════════════════════════════╗
  ║ NuGet ║
  ╚══════════════════════════════════════════════════════════╝
  ```
 
## 🐛 Fixes
 
- The skip message in the `DockerDesktop` task referenced the obsolete `DockerDesktopWslHome` config key. Updated to the current `DockerDesktop.WslHome`.
- `Get-PathsConfig` now tolerates a `$null`/empty `-ConfigFile` cleanly.
- Successful winget installs (`[INFO] X installed.`) now render in green so they stand out from in-progress lines. Idempotent "already installed" lines stay default colour.
- Better post-install diagnostic when winget can't redetect a freshly-installed package: dumps the exit code in hex, the relevant `winget list` lines, and the matching Windows uninstall-registry entries — making it possible to tell a winget metadata bug apart from an actual install failure.
 
## 🔧 Defaults & internals
 
- Default `DockerDesktop.WslHome` is now `D:\.docker-wsl` (was `D:\.docker-desktop`). Reads more clearly alongside `D:\.docker` (the CLI config junction).
- Config-file lookup adds `%AppData%\Initialize-DeveloperMachine\config.json` ahead of the `~\.config\…` XDG-style path. Both still work; AppData wins when both exist.
- Bundled `Initialize-DeveloperMachine.config.json` is now also shipped inside the published module, and used as the seed template by the interactive scaffold (single source of truth, no duplicated string literal).
- New `Wait-ForFileSave` / `Open-EditorAndWaitForSave` helpers in `lib/ConfigScaffold.ps1`.
 
See the [README](https://github.com/gonace/Initialize-DeveloperMachine#readme) for full configuration details and known limitations.
'@

        }
    }
}