Skip to content

Release OSDCloud 26.9.8.1 - #32

Merged
OSDeploy merged 77 commits into
mainfrom
deer
Sep 8, 2026
Merged

Release OSDCloud 26.9.8.1#32
OSDeploy merged 77 commits into
mainfrom
deer

Conversation

@OSDeploy

@OSDeploy OSDeploy commented Sep 8, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • consolidate deployment, workflow, device, cache, and catalog state handling
  • add deployment disk selection, OSDeploy license registration, and workflow diagnostics
  • refresh WinPE startup behavior, OEM driver pack catalogs, and Windows 11 25H2 media metadata
  • remove retired workflow UI assets and update module documentation

Release

  • bump the module version to 26.9.8.1
  • update CHANGELOG.md with the August and September release history

Validation

  • merged the latest main into deer
  • validated the module manifest as version 26.9.8.1
  • parsed the resolved HP and Windows operating system catalogs as XML
  • confirmed the branch is clean and has no unresolved merge entries

OSDeploy added 30 commits August 5, 2026 14:18
Select and retain module-native operating system catalog objects for OSD and OSDCloud while normalizing filters and build sorting.
Document the OSD and OSDCloud operating system object schemas and their safe cross-module selection patterns.
Persist initialized driver pack and operating system catalogs to\nglobal variables so downstream commands can reuse the loaded\nrecords without relying on return values.
Add Initialize-OSDCoreCache to rebuild the in-memory cache\ninventory and switch USB cache update paths to use it.\n\nAlso align the cache export filename with OSDCoreCache.xml\nfor consistent cache state persistence.
Normalize OSDManufacturer, OSDModel, and OSDProduct to Unknown\nwhen values are null or whitespace so device inventory output\nremains explicit and consistent.\n\nRemove inline cache and catalog initialization side effects from\nInitialize-OSDCoreDevice to keep device discovery focused on\npopulating OSDCoreDevice state.
Add OSDManufacturer, OSDModel, OSDProduct, and OSArchitecture\nparameters to deployment entry points so workflows can be driven\nwith explicit device and architecture overrides when needed.\n\nWire Deploy-OSDCloud through Initialize-OSDCloudDeploy with\nnormalized fallback values from OSDCoreDevice and shared\nglobal cache/catalog objects for deployment state.
Add new core driver-pack helper functions for cache lookup and
cloud object validation.

These helpers improve driver-pack selection reliability by validating
inputs before downstream workflow steps consume them.
Add core operating-system helper functions for cache lookup and
cloud object validation.

Update operating-system retrieval paths to use the new helpers so
workflow selection can fail fast on invalid metadata.
Improve deployment initialization and execution checks for OS and
driver-pack metadata before workflow actions run.

This reduces invalid state during deployment by validating required
objects earlier and handling missing data paths more safely.
Add verbose logging across workflow steps to expose resolved inputs, branch decisions, selected paths, and external command execution details during deployment troubleshooting.
Expose WinPE state on the core device object and use SystemDrive for workflow environment checks.

Preserve single-item Surface catalog results as arrays so Count works in Windows PowerShell 5.1, and align contributor guidance.
Refresh the explicitly selected Surface catalog entry after its driver pack URL becomes unavailable. Synchronize the refreshed object across deployment state before retrying the download URL.
Align boot image prerequisites, workflow documentation, profile examples, and reference links with the current OSDCloud and OSDeploy implementations.
Rename the license email metadata field and refresh Dell and HP driver pack catalogs.

Suppress the analytics notice during Deploy-OSDCloud startup.
Initialize shared license state for registration checks and align device identity values with boot-media environment variables. Refresh the bundled HP driver pack catalog.
Refresh mirrored OEM driver pack catalog data for Dell and HP.
Rename registered device identity fields and include them in workflow deployment events.
# Conflicts:
#	CHANGELOG.md
#	OSDCloud/OSDCloud.psd1
#	OSDCloud/core/driverpacks/hp.xml
#	OSDCloud/core/operatingsystems-bak/26200.8873-win11-25h2.xml
#	OSDCloud/core/operatingsystems/26200.8873-win11-25h2.xml
#	OSDCloud/core/operatingsystems/26200.9168-win11-25h2.xml
Copilot AI lite review requested due to automatic review settings September 8, 2026 15:15
@OSDeploy
OSDeploy merged commit c9b511f into main Sep 8, 2026
1 check passed
@OSDeploy
OSDeploy deleted the deer branch September 8, 2026 15:16

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Changes recommended

The review found concrete issues in newly added/updated helpers (missing function output vs documented OutputType/examples, and a license-gate command reference that is not defined in this repo).

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

Release-focused update for the OSDCloud PowerShell module (v26.9.8.1) that refreshes WinPEStartup naming/behavior, consolidates workflow/cache/catalog state handling, adds license + disk-selection related helpers, and removes retired workflow UI assets and older workflow config variants.

Changes:

  • Bumped module version to 26.9.8.1 and refreshed end-user documentation wording (WinPEStartup + disk selection guidance).
  • Added/updated private helpers for workflow settings resolution, OS activation normalization, cache inventory, driver pack catalog refresh, and license initialization/gating.
  • Removed retired workflow config JSON variants and legacy WPF UX asset trees under multiple workflow channels.
File summaries
File Description
README.md Documentation wording/command table updates (WinPEStartup naming; removed retired cmdlet/doc refs).
PRIVACY.md Updated WinPEStartup terminology in privacy statements.
OSDCloud/workflow/vNext/user-arm64.json Removed retired vNext workflow user config.
OSDCloud/workflow/vNext/user-amd64.json Removed retired vNext workflow user config.
OSDCloud/workflow/vNext/os-arm64.json Removed retired vNext workflow OS config.
OSDCloud/workflow/vNext/os-amd64.json Removed retired vNext workflow OS config.
OSDCloud/workflow/vNext-v2/user-arm64.json Removed retired vNext-v2 workflow user config.
OSDCloud/workflow/vNext-v2/user-amd64.json Removed retired vNext-v2 workflow user config.
OSDCloud/workflow/vNext-v2/os-arm64.json Removed retired vNext-v2 workflow OS config.
OSDCloud/workflow/vNext-v2/os-amd64.json Removed retired vNext-v2 workflow OS config.
OSDCloud/workflow/vNext-v1/user-arm64.json Removed retired vNext-v1 workflow user config.
OSDCloud/workflow/vNext-v1/user-amd64.json Removed retired vNext-v1 workflow user config.
OSDCloud/workflow/vNext-v1/os-arm64.json Removed retired vNext-v1 workflow OS config.
OSDCloud/workflow/vNext-v1/os-amd64.json Removed retired vNext-v1 workflow OS config.
OSDCloud/workflow/latest/os-arm64.json Removed retired “latest” OS config variant.
OSDCloud/workflow/latest/os-amd64.json Removed retired “latest” OS config variant.
OSDCloud/workflow/insiders/ux/Properties/Settings.settings Removed retired insiders UX assets.
OSDCloud/workflow/insiders/ux/Properties/Settings.Designer.cs Removed retired insiders UX assets.
OSDCloud/workflow/insiders/ux/Properties/Resources.Designer.cs Removed retired insiders UX assets.
OSDCloud/workflow/insiders/ux/Properties/AssemblyInfo.cs Removed retired insiders UX assets.
OSDCloud/workflow/insiders/ux/OSDCloud.sln Removed retired insiders UX assets.
OSDCloud/workflow/insiders/ux/MainWindow.xaml.cs Removed retired insiders UX assets.
OSDCloud/workflow/insiders/ux/App.xaml.cs Removed retired insiders UX assets.
OSDCloud/workflow/insiders/ux/App.xaml Removed retired insiders UX assets.
OSDCloud/workflow/insiders/ux/App.config Removed retired insiders UX assets.
OSDCloud/workflow/dev-device/ux/Properties/Settings.settings Removed retired dev-device UX assets.
OSDCloud/workflow/dev-device/ux/Properties/Settings.Designer.cs Removed retired dev-device UX assets.
OSDCloud/workflow/dev-device/ux/Properties/Resources.Designer.cs Removed retired dev-device UX assets.
OSDCloud/workflow/dev-device/ux/Properties/AssemblyInfo.cs Removed retired dev-device UX assets.
OSDCloud/workflow/dev-device/ux/OSDCloud.sln Removed retired dev-device UX assets.
OSDCloud/workflow/dev-device/ux/MainWindow.xaml.cs Removed retired dev-device UX assets.
OSDCloud/workflow/dev-device/ux/App.xaml.cs Removed retired dev-device UX assets.
OSDCloud/workflow/dev-device/ux/App.xaml Removed retired dev-device UX assets.
OSDCloud/workflow/dev-device/ux/App.config Removed retired dev-device UX assets.
OSDCloud/workflow/dev-beta/ux/Properties/Settings.settings Removed retired dev-beta UX assets.
OSDCloud/workflow/dev-beta/ux/Properties/Settings.Designer.cs Removed retired dev-beta UX assets.
OSDCloud/workflow/dev-beta/ux/Properties/Resources.Designer.cs Removed retired dev-beta UX assets.
OSDCloud/workflow/dev-beta/ux/Properties/AssemblyInfo.cs Removed retired dev-beta UX assets.
OSDCloud/workflow/dev-beta/ux/OSDCloud.sln Removed retired dev-beta UX assets.
OSDCloud/workflow/dev-beta/ux/MainWindow.xaml.cs Removed retired dev-beta UX assets.
OSDCloud/workflow/dev-beta/ux/App.xaml.cs Removed retired dev-beta UX assets.
OSDCloud/workflow/dev-beta/ux/App.xaml Removed retired dev-beta UX assets.
OSDCloud/workflow/dev-beta/ux/App.config Removed retired dev-beta UX assets.
OSDCloud/workflow/dev-alpha/ux/Properties/Settings.settings Removed retired dev-alpha UX assets.
OSDCloud/workflow/dev-alpha/ux/Properties/Settings.Designer.cs Removed retired dev-alpha UX assets.
OSDCloud/workflow/dev-alpha/ux/Properties/Resources.Designer.cs Removed retired dev-alpha UX assets.
OSDCloud/workflow/dev-alpha/ux/Properties/AssemblyInfo.cs Removed retired dev-alpha UX assets.
OSDCloud/workflow/dev-alpha/ux/OSDCloud.sln Removed retired dev-alpha UX assets.
OSDCloud/workflow/dev-alpha/ux/MainWindow.xaml.cs Removed retired dev-alpha UX assets.
OSDCloud/workflow/dev-alpha/ux/App.xaml.cs Removed retired dev-alpha UX assets.
OSDCloud/workflow/dev-alpha/ux/App.xaml Removed retired dev-alpha UX assets.
OSDCloud/workflow/dev-alpha/ux/App.config Removed retired dev-alpha UX assets.
OSDCloud/workflow/classic/ux/Properties/Settings.settings Removed retired classic UX assets.
OSDCloud/workflow/classic/ux/Properties/Settings.Designer.cs Removed retired classic UX assets.
OSDCloud/workflow/classic/ux/Properties/Resources.Designer.cs Removed retired classic UX assets.
OSDCloud/workflow/classic/ux/Properties/AssemblyInfo.cs Removed retired classic UX assets.
OSDCloud/workflow/classic/ux/OSDCloud.sln Removed retired classic UX assets.
OSDCloud/workflow/classic/ux/MainWindow.xaml.cs Removed retired classic UX assets.
OSDCloud/workflow/classic/ux/App.xaml.cs Removed retired classic UX assets.
OSDCloud/workflow/classic/ux/App.xaml Removed retired classic UX assets.
OSDCloud/workflow/classic/ux/App.config Removed retired classic UX assets.
OSDCloud/public/WinPE/Update-WinPEStartupModule.ps1 Logging/wording updates for WinPEStartup workflows.
OSDCloud/public/WinPE/Show-WinPEStartupWifi.ps1 WinPEStartup wording + more consistent informational logging.
OSDCloud/public/WinPE/Show-WinPEStartupIpconfig.ps1 WinPEStartup terminology update.
OSDCloud/public/WinPE/Show-WinPEStartupDeviceErrors.ps1 WinPEStartup terminology update.
OSDCloud/public/WinPE/Invoke-WinPEStartupManager.ps1 WinPEStartup terminology + updated Get-Command ErrorAction usage.
OSDCloud/public/WinPE/Invoke-WinPEStartup.ps1 Profile discovery path normalization + WinPEStartup terminology.
OSDCloud/public/WinOS/Start-OSDCloudExplorer.ps1 Updated Get-Command ErrorAction usage for CMTrace detection.
OSDCloud/private/workflow/Resolve-OSDCloudWorkflowOSActivation.ps1 New helper to normalize activation choice based on edition.
OSDCloud/private/workflow/Invoke-OSDCloudWorkflowUI.ps1 More explicit informational host logging.
OSDCloud/private/workflow/Initialize-OSDCloudWorkflowTasks.ps1 Logging cleanup (removed combined Debug/Verbose message).
OSDCloud/private/workflow/Initialize-OSDCloudWorkflowSettingsOS.ps1 Refactored OS settings file resolution + settings validation hook.
OSDCloud/private/workflow/Get-OSDCloudWorkflowSettingsOSFile.ps1 New helper to resolve os-*.json with default fallback behavior.
OSDCloud/private/WinPEStartup/Set-WinPEStartupUSBDriveLetter.ps1 More explicit informational host logging.
OSDCloud/private/WinPEStartup/OSDCloudWifi.ps1 Improved cleanup safety around temporary WLAN config file removal.
OSDCloud/private/WinPEStartup/Invoke-PEStartupUpdateModule.ps1 WinPEStartup terminology in comments.
OSDCloud/private/WinPEStartup/Invoke-PEStartupCommand.ps1 WinPEStartup terminology in comments.
OSDCloud/private/WinPEStartup/Initialize-WinPEStartupScript.ps1 Normalized startup scripts path casing + informational host logging.
OSDCloud/private/WinPEStartup/Initialize-WinPEStartupMain.ps1 Informational host logging improvements.
OSDCloud/private/WinPEStartup/Initialize-WinPEStartupFiles.ps1 Informational host logging improvements.
OSDCloud/private/WinPEStartup/Initialize-WinPEStartupEnvironment.ps1 WinPEStartup initialization logging improvements.
OSDCloud/private/WinPEStartup/Initialize-WinPEStartupDrivers.ps1 Informational host logging improvements.
OSDCloud/private/steps/9-postaction/step-postaction-stopcomputer.ps1 Added verbose diagnostics around shutdown handling.
OSDCloud/private/steps/9-postaction/step-postaction-restartcomputer.ps1 Added verbose diagnostics around restart handling.
OSDCloud/private/steps/9-postaction/step-postaction-removeosdcloudtemp.ps1 Added verbose diagnostics around temp cleanup.
OSDCloud/private/steps/9-postaction/step-postaction-removeosdcloudlogs.ps1 Added verbose diagnostics around log cleanup and transcript stop.
OSDCloud/private/steps/8-finalize/step-finalize-stoposdcloudworkflow.ps1 Added verbose diagnostics + standardized informational host output.
OSDCloud/private/steps/8-finalize/step-finalize-osdcloudlogs.ps1 Added verbose diagnostics around log folder creation/copy.
OSDCloud/private/steps/7-update/step-update-setupdisplayedeula.ps1 Added verbose diagnostics around offline registry edits.
OSDCloud/private/steps/6-powershell/step-powershell-updatemodule.ps1 Added verbose diagnostics + standardized informational host output.
OSDCloud/private/steps/6-powershell/step-powershell-savemodule.ps1 Added verbose diagnostics + standardized informational host output.
OSDCloud/private/steps/5-drivers/step-Export-WindowsDriver-OemWinPE.ps1 Added verbose diagnostics around pnputil export workflow.
OSDCloud/private/steps/5-drivers/step-Add-WindowsDriver-Scsi.ps1 Added verbose diagnostics + explicit skip logging.
OSDCloud/private/steps/5-drivers/step-Add-WindowsDriver-OemWinRE.ps1 Added verbose diagnostics + explicit skip logging.
OSDCloud/private/steps/5-drivers/step-Add-WindowsDriver-OemWinOS.ps1 Added verbose diagnostics + explicit skip logging.
OSDCloud/private/steps/5-drivers/step-Add-WindowsDriver-Net.ps1 Added verbose diagnostics + explicit skip logging.
OSDCloud/private/steps/5-drivers/step-Add-WindowsDriver-MSUpdate.ps1 Added verbose diagnostics + explicit skip logging.
OSDCloud/private/steps/5-drivers/step-Add-WindowsDriver-Firmware.ps1 Updated state source + added verbose/skip diagnostics.
OSDCloud/private/steps/5-drivers/step-Add-WindowsDriver-DriverPack.ps1 Added verbose diagnostics + explicit skip logging.
OSDCloud/private/steps/5-drivers/step-Add-WindowsDriver-DriverFolder.ps1 Adjusted parameter/help behavior + extra verbose diagnostics.
OSDCloud/private/steps/5-drivers/step-Add-WindowsDriver-Disk.ps1 Added verbose diagnostics + explicit skip logging.
OSDCloud/private/steps/4-install/step-install-restartosdcloudlogs.ps1 Added verbose diagnostics around transcript move/restart.
OSDCloud/private/steps/4-install/step-install-removewindowsimage.ps1 Added verbose diagnostics + standardized informational host output.
OSDCloud/private/steps/4-install/step-install-getwindowsedition.ps1 Added verbose diagnostics + standardized informational host output.
OSDCloud/private/steps/4-install/step-install-bcdboot.ps1 Updated state source + added verbose diagnostics around bcdboot selection.
OSDCloud/private/steps/3-preinstall/step-preinstall-restoreusbdriveletter.ps1 Added verbose diagnostics + standardized informational host output.
OSDCloud/private/steps/3-preinstall/step-preinstall-removeusbdriveletter.ps1 Added verbose diagnostics + standardized informational host output.
OSDCloud/private/steps/3-preinstall/step-preinstall-enablehighperformance.ps1 Added verbose diagnostics around battery/power plan behavior.
OSDCloud/private/steps/3-preinstall/step-preinstall-cleartargetdisk.ps1 Updated state source + added verbose diagnostics around confirm logic.
OSDCloud/private/steps/2-test/step-test-targetdisk.ps1 Expanded help + updated to validate DeploymentDisk state.
OSDCloud/private/steps/1-initialize/step-initialize-osdcloudworkflowtask.ps1 Expanded help + standardized informational host output + verbose diagnostics.
OSDCloud/private/steps/1-initialize/step-initialize-osdcloudlogs.ps1 Expanded help + verbose diagnostics around transcript startup.
OSDCloud/private/microsoft-update-catalog/Save-WebFile.ps1 Updated curl presence detection to use Get-Command directly.
OSDCloud/private/microsoft-update-catalog/Save-MicrosoftUpdateCatalogUpdate.ps1 Minor output formatting / whitespace fixes.
OSDCloud/private/main/Test-CommandCurlExe.ps1 Removed redundant helper (replaced by direct Get-Command checks).
OSDCloud/private/dev/Initialize-OSDCloudWorkflowSettingsUser.ps1 Standardized informational host output + logging cleanup.
OSDCloud/private/Deploy-OSDCloudGUI.ps1 Updated initialization call + standardized informational host output.
OSDCloud/private/core/Invoke-OSDCloudDownloadFile.ps1 Removed Test-CommandCurlExe dependency + improved warning message context.
OSDCloud/private/core/Get-DeploymentDiskObject.ps1 Standardized error handling style and Get-Command checks.
OSDCloud/private/core-operatingsystem/Initialize-ModuleCoreOperatingSystems.ps1 Renamed/reworked OS catalog initialization behavior and side effects.
OSDCloud/private/core-operatingsystem/Get-OSDCoreOperatingSystemCacheObject.ps1 New helper to find selected OS payload in cache inventory.
OSDCloud/private/core-license/Test-OSDeployLicenseGate.ps1 New helper to gate OSDeploy update commands based on license availability.
OSDCloud/private/core-license/Show-OSDCoreLicenseHelp.ps1 New helper to display license installation/verification steps.
OSDCloud/private/core-license/Initialize-OSDCoreLicense.ps1 New initializer to populate $global:OSDCoreLicense with endpoint hash + registration state.
OSDCloud/private/core-driverpack/Update-OSDCoreDriverPackCloudObjectSurface.ps1 New helper to refresh and select Surface driver pack catalog entries.
OSDCloud/private/core-driverpack/Update-OSDCoreDriverPackCatalogPanasonic.ps1 New Panasonic driver pack catalog updater with validation.
OSDCloud/private/core-driverpack/Update-OSDCoreDriverPackCatalogLenovo.ps1 New Lenovo driver pack catalog updater with validation.
OSDCloud/private/core-driverpack/Get-OSDCoreDriverPackCacheObject.ps1 New helper to find selected driver pack payload in cache inventory.
OSDCloud/private/core-driverpack/Get-ModuleCoreDriverPacks.ps1 Removed older driver-pack selector implementation.
OSDCloud/private/core-device/Sync-OSDCoreDateTime.ps1 Improved informational host logging + minor formatting adjustments.
OSDCloud/private/core-cache/Test-OSDCoreCacheUSB.ps1 New helper to detect whether cache is present on USB drives.
OSDCloud/private/core-cache/Initialize-OSDCoreCache.ps1 New initializer to rebuild $global:OSDCoreCache inventory.
OSDCloud/private/core-cache/Get-OSDCoreCacheUSBPath.ps1 New helper to return eligible USB cache paths with size/filesystem filtering.
OSDCloud/private/core-cache/Get-OSDCoreCacheContent.ps1 Updated exported cache inventory filename.
OSDCloud/OSDCloud.psd1 Version bump to 26.9.8.1 + updated description wording (WinPEStartup).
OSDCloud/docs/Deploy-OSDCloud.md Documented new -DiskNumber parameter usage and examples.
OSDCloud/core/winpestartup-profiles/PS DeviceInfo.json Added WinPEStartup profile preset for device info.
OSDCloud/core/winpestartup-profiles/OSDCloud.json Added WinPEStartup profile preset to run device info + deployment.
OSDCloud/core/winpekeyboard/winpekeyboard.ps1 Hardened osk.exe detection with ErrorAction.
FEATURES.md Updated WinPEStartup naming.
docs/README.md Updated docs index wording and removed ENV guide entry.
docs/09-troubleshooting.md Updated WinPEStartup naming + normalized profile path casing.
docs/07-arm64-devices.md Updated OSDeploy link to canonical GitHub URL.
docs/06-unattended-usb-profile.md Updated profile path casing + updated recipe examples.
docs/05-customize-deployment.md Reframed “channels” as workflows + updated guidance.
docs/04-deploy-windows.md Added DiskNumber CLI guidance + updated wording.
docs/02-build-boot-image.md Updated prerequisites and flow (OSDeploy update commands; output path semantics).
CONTRIBUTING.md Removed mention of $global:IsWinPE guard; standardized WinPE guard guidance.
.github/instructions/workflow-tasks.instructions.md Updated example end-of-step verbose logging pattern.
.github/instructions/osdcloud-catalog-update.instructions.md Updated init function name reference in guidance.
.github/copilot-instructions.md Updated key globals list and init function name references.
Review details
  • Files reviewed: 192/239 changed files
  • Comments generated: 3
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +53 to +55
Write-Warning "[$(Get-Date -Format s)] [$CommandName] A valid Recast Software Community License is required for this command."
Show-OSDeployLicense | Out-Null
return $false
Comment on lines 118 to +120
if (-not $mctRecords) {
return $records
$global:ModuleCoreOperatingSystems = $records
# return $records
Comment on lines +35 to +41
[OutputType([bool])]
param (
[Parameter(Mandatory)]
[string]$CommandName
)

$callStack = Get-PSCallStack
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.

2 participants