From 1de78514e2ec9023b4a13c9e1051b05c8a339a37 Mon Sep 17 00:00:00 2001 From: ericnoam Date: Tue, 31 Mar 2026 22:02:31 +0200 Subject: [PATCH] fix: use .NET Regex.Replace for count-limited replacement in PowerShell Addresses Copilot feedback: PowerShell's -replace operator does not support a third argument for replacement count. Using it causes an error or mis-parsing that would break forge package generation on Windows. Changed from: $content -replace '(?m)^---$', "---`nname: $cmdName", 1 To: $regex = [regex]'(?m)^---$' $content = $regex.Replace($content, "---`nname: $cmdName", 1) The .NET Regex.Replace() method properly supports the count parameter, ensuring the name field is injected only after the first frontmatter delimiter (not the closing one). This fix is critical for Windows users running: specify init --ai forge --offline --- .github/workflows/scripts/create-release-packages.ps1 | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/scripts/create-release-packages.ps1 b/.github/workflows/scripts/create-release-packages.ps1 index b9498ab73..932f54f80 100644 --- a/.github/workflows/scripts/create-release-packages.ps1 +++ b/.github/workflows/scripts/create-release-packages.ps1 @@ -498,8 +498,9 @@ function Build-Variant { $cmdName = [System.IO.Path]::GetFileNameWithoutExtension($cmdFile.Name) $content = Get-Content -Path $cmdFile.FullName -Raw - # Inject name field after first --- - $content = $content -replace '(?m)^---$', "---`nname: $cmdName", 1 + # Inject name field after first --- using .NET Regex.Replace with count limit + $regex = [regex]'(?m)^---$' + $content = $regex.Replace($content, "---`nname: $cmdName", 1) Set-Content -Path $cmdFile.FullName -Value $content -NoNewline }