1- name : Build Windows Release
1+ name : Build Windows Prerelease
22
33on :
44 push :
55 tags :
6- - ' v*.*.*' # Trigger on version tags (e.g., v1.0.0)
7- - ' V*.*.*' # Also support uppercase V (e.g., V1.0.0)
86 - ' v*.*.*-windows' # Windows-specific releases
97 - ' V*.*.*-windows' # Windows-specific releases (uppercase)
108 workflow_dispatch : # Allow manual trigger
@@ -19,7 +17,7 @@ permissions:
1917
2018jobs :
2119 build-windows :
22- name : Build Windows Release Artifacts
20+ name : Build Windows Prerelease Artifacts
2321 runs-on : windows-latest
2422
2523 steps :
3129 - name : Setup Go
3230 uses : actions/setup-go@v5
3331 with :
34- go-version : ' 1.21 '
32+ go-version : ' 1.24.6 '
3533
3634 - name : Setup PowerShell
3735 shell : pwsh
4745 $version = "${{ github.event.inputs.version }}"
4846 } elseif ("${{ github.ref }}" -like "refs/tags/*") {
4947 $version = "${{ github.ref }}" -replace '^refs/tags/[Vv]', ''
48+ $version = $version -replace '-windows$', ''
5049 } else {
5150 $content = Get-Content mole.ps1 -Raw
5251 if ($content -match '\$script:MOLE_VER\s*=\s*"([^"]+)"') {
7978 shell : pwsh
8079 run : |
8180 & scripts\build-release.ps1 -Version ${{ steps.version.outputs.VERSION }}
81+
82+ - name : Prepare raw TUI binary assets
83+ shell : pwsh
84+ run : |
85+ Copy-Item "bin\analyze.exe" "release\analyze-windows-x64.exe" -Force
86+ Copy-Item "bin\status.exe" "release\status-windows-x64.exe" -Force
8287
8388
8489 - name : Build standalone EXE
@@ -117,30 +122,57 @@ jobs:
117122 name : checksums
118123 path : release/SHA256SUMS.txt
119124 if-no-files-found : error
125+
126+ - name : Upload TUI binaries
127+ uses : actions/upload-artifact@v4
128+ with :
129+ name : tui-binaries
130+ path : |
131+ release/analyze-windows-x64.exe
132+ release/status-windows-x64.exe
133+ if-no-files-found : error
134+
135+ - name : Collect release files
136+ id : release_files
137+ shell : pwsh
138+ run : |
139+ $files = @(
140+ "release/mole-${{ steps.version.outputs.VERSION }}-x64.zip",
141+ "release/analyze-windows-x64.exe",
142+ "release/status-windows-x64.exe",
143+ "release/SHA256SUMS.txt"
144+ )
145+ $optionalExe = "release/mole-${{ steps.version.outputs.VERSION }}-x64.exe"
146+ if (Test-Path $optionalExe) {
147+ $files += $optionalExe
148+ }
149+ "files<<EOF" | Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8 -Append
150+ $files | Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8 -Append
151+ "EOF" | Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8 -Append
120152
121- - name : Create GitHub Release
153+ - name : Create GitHub Prerelease
122154 if : startsWith(github.ref, 'refs/tags/')
123155 uses : softprops/action-gh-release@v1
124156 with :
125- files : |
126- release/mole-${{ steps.version.outputs.VERSION }}-x64.zip
127- release/mole-${{ steps.version.outputs.VERSION }}-x64.exe
128- release/SHA256SUMS.txt
157+ files : ${{ steps.release_files.outputs.files }}
129158 draft : false
130- prerelease : false
159+ prerelease : true
131160 generate_release_notes : true
132161 body : |
133- ## Windows System Maintenance Toolkit
162+ ## Windows System Maintenance Toolkit (Prerelease)
134163
135164 **Download:** `mole-${{ steps.version.outputs.VERSION }}-x64.zip` (portable) or `.exe` (launcher)
165+ **TUI assets:** `analyze-windows-x64.exe` and `status-windows-x64.exe`
136166
137167 **Install:**
138168 ```powershell
139169 Expand-Archive mole-${{ steps.version.outputs.VERSION }}-x64.zip -DestinationPath C:\mole
140170 cd C:\mole
141171 .\install.ps1
142172 ```
143-
173+
174+ These assets are prerelease-only and do not affect the macOS stable release channel.
175+
144176 **Verify:** Check SHA256SUMS.txt for file integrity.
145177 env :
146178 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
0 commit comments