From 3810b8d258225f9663be444c437a13931ceca1f5 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 14 Dec 2025 21:42:23 +0000
Subject: [PATCH 01/14] Initial plan
From 1e04711a2111f8da84573946693e394d631cebdf Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 14 Dec 2025 22:08:39 +0000
Subject: [PATCH 02/14] =?UTF-8?q?Change=20test=20emoji=20from=20?=
=?UTF-8?q?=F0=9F=A7=AA=20to=20=E2=9C=85=20in=20workflow=20summary?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: DRSDavidSoft <4673812+DRSDavidSoft@users.noreply.github.com>
---
.github/workflows/build.yml | 96 +++++++++++++++++++++---------------
.github/workflows/codeql.yml | 50 ++++++++++---------
.github/workflows/tests.yml | 89 +++++++++++++++++++++++----------
3 files changed, 149 insertions(+), 86 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 2b71a75cd..c59f93536 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -42,17 +42,24 @@ jobs:
- name: Summary - Repository checkout
shell: pwsh
run: |
- echo "## ๐ฆ Build Cmder - Workflow Summary" >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
- echo "### Repository Information" >> $env:GITHUB_STEP_SUMMARY
- echo "| Property | Value |" >> $env:GITHUB_STEP_SUMMARY
- echo "| --- | --- |" >> $env:GITHUB_STEP_SUMMARY
- echo "| Repository | \`${{ github.repository }}\` |" >> $env:GITHUB_STEP_SUMMARY
- echo "| Branch | \`${{ github.ref_name }}\` |" >> $env:GITHUB_STEP_SUMMARY
- echo "| Commit | \`${{ github.sha }}\` |" >> $env:GITHUB_STEP_SUMMARY
- echo "| Actor | @${{ github.actor }} |" >> $env:GITHUB_STEP_SUMMARY
- echo "| Workflow | \`${{ github.workflow }}\` |" >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
+ # Get Cmder version
+ . scripts/utils.ps1
+ $cmderVersion = Get-VersionStr
+
+ @"
+ ## ๐ฆ Build Cmder - Workflow Summary
+
+ ### Repository Information
+ | Property | Value |
+ | --- | --- |
+ | Repository | ``${{ github.repository }}`` |
+ | Branch | ``${{ github.ref_name }}`` |
+ | Commit | ``${{ github.sha }}`` |
+ | Actor | @${{ github.actor }} |
+ | Workflow | ``${{ github.workflow }}`` |
+ | Cmder Version | **$cmderVersion** |
+
+ "@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
- name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@v2
@@ -66,10 +73,12 @@ jobs:
if: success()
shell: pwsh
run: |
- echo "### โ
Build Status" >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
- echo "Cmder launcher successfully compiled." >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
+ @"
+ ### โ
Build Status
+
+ Cmder launcher successfully compiled.
+
+ "@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
- name: Pack the built files
shell: pwsh
@@ -80,10 +89,13 @@ jobs:
if: success()
shell: pwsh
run: |
- echo "### ๐ฆ Artifacts Created" >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
- echo "| Artifact | Size | Hash (SHA256) |" >> $env:GITHUB_STEP_SUMMARY
- echo "| --- | --- | --- |" >> $env:GITHUB_STEP_SUMMARY
+ $summary = @"
+ ### ๐ฆ Artifacts Created
+
+ | Artifact | Size | Hash (SHA256) |
+ | --- | --- | --- |
+ "@
+
$artifacts = @("cmder.zip", "cmder.7z", "cmder_mini.zip")
foreach ($artifact in $artifacts) {
$path = "build/$artifact"
@@ -91,10 +103,12 @@ jobs:
$size = (Get-Item $path).Length / 1MB
# Truncate hash to first 16 chars for summary readability (full hash in hashes.txt)
$hash = (Get-FileHash $path -Algorithm SHA256).Hash.Substring(0, 16)
- echo "| \`$artifact\` | $([math]::Round($size, 2)) MB | \`$hash...\` |" >> $env:GITHUB_STEP_SUMMARY
+ $summary += "`n| ``$artifact`` | $([math]::Round($size, 2)) MB | ``$hash...`` |"
}
}
- echo "" >> $env:GITHUB_STEP_SUMMARY
+ $summary += "`n"
+
+ $summary | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
- name: Upload artifact (cmder.zip)
uses: actions/upload-artifact@v5
@@ -125,14 +139,16 @@ jobs:
if: success()
shell: pwsh
run: |
- echo "### โ๏ธ Upload Status" >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
- echo "All artifacts successfully uploaded to GitHub Actions:" >> $env:GITHUB_STEP_SUMMARY
- echo "- โ
\`cmder.zip\`" >> $env:GITHUB_STEP_SUMMARY
- echo "- โ
\`cmder.7z\`" >> $env:GITHUB_STEP_SUMMARY
- echo "- โ
\`cmder_mini.zip\`" >> $env:GITHUB_STEP_SUMMARY
- echo "- โ
\`hashes.txt\`" >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
+ @"
+ ### โ๏ธ Upload Status
+
+ All artifacts successfully uploaded to GitHub Actions:
+ - โ
``cmder.zip``
+ - โ
``cmder.7z``
+ - โ
``cmder_mini.zip``
+ - โ
``hashes.txt``
+
+ "@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
- name: Create Release
uses: softprops/action-gh-release@v2
@@ -150,13 +166,15 @@ jobs:
if: startsWith(github.ref, 'refs/tags/')
shell: pwsh
run: |
- echo "### ๐ Release Information" >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
- echo "Draft release created for tag: **\`${{ github.ref_name }}\`**" >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
- echo "Release includes:" >> $env:GITHUB_STEP_SUMMARY
- echo "- Full version (\`cmder.zip\`, \`cmder.7z\`)" >> $env:GITHUB_STEP_SUMMARY
- echo "- Mini version (\`cmder_mini.zip\`)" >> $env:GITHUB_STEP_SUMMARY
- echo "- File hashes (\`hashes.txt\`)" >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
- echo "> โ ๏ธ Release is in **draft** mode. Please review and publish manually." >> $env:GITHUB_STEP_SUMMARY
+ @"
+ ### ๐ Release Information
+
+ Draft release created for tag: **``${{ github.ref_name }}``**
+
+ Release includes:
+ - Full version (``cmder.zip``, ``cmder.7z``)
+ - Mini version (``cmder_mini.zip``)
+ - File hashes (``hashes.txt``)
+
+ > โ ๏ธ Release is in **draft** mode. Please review and publish manually.
+ "@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
index 16ebd4072..30052d7eb 100644
--- a/.github/workflows/codeql.yml
+++ b/.github/workflows/codeql.yml
@@ -50,17 +50,19 @@ jobs:
- name: Summary - CodeQL analysis started
shell: pwsh
run: |
- echo "## ๐ CodeQL Security Analysis - Workflow Summary" >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
- echo "### Analysis Configuration" >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
- echo "| Property | Value |" >> $env:GITHUB_STEP_SUMMARY
- echo "| --- | --- |" >> $env:GITHUB_STEP_SUMMARY
- echo "| Repository | \`${{ github.repository }}\` |" >> $env:GITHUB_STEP_SUMMARY
- echo "| Branch | \`${{ github.ref_name }}\` |" >> $env:GITHUB_STEP_SUMMARY
- echo "| Language | \`${{ matrix.language }}\` |" >> $env:GITHUB_STEP_SUMMARY
- echo "| Commit | \`${{ github.sha }}\` |" >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
+ @"
+ ## ๐ CodeQL Security Analysis - Workflow Summary
+
+ ### Analysis Configuration
+
+ | Property | Value |
+ | --- | --- |
+ | Repository | ``${{ github.repository }}`` |
+ | Branch | ``${{ github.ref_name }}`` |
+ | Language | ``${{ matrix.language }}`` |
+ | Commit | ``${{ github.sha }}`` |
+
+ "@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
@@ -86,10 +88,12 @@ jobs:
if: success()
shell: pwsh
run: |
- echo "### โ
Build Completed" >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
- echo "Cmder launcher built successfully for CodeQL analysis." >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
+ @"
+ ### โ
Build Completed
+
+ Cmder launcher built successfully for CodeQL analysis.
+
+ "@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
@@ -100,10 +104,12 @@ jobs:
if: success()
shell: pwsh
run: |
- echo "### ๐ CodeQL Analysis Results" >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
- echo "โ
CodeQL security analysis completed successfully." >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
- echo "**Language analyzed:** \`${{ matrix.language }}\`" >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
- echo "> Check the Security tab for detailed findings and recommendations." >> $env:GITHUB_STEP_SUMMARY
+ @"
+ ### ๐ CodeQL Analysis Results
+
+ โ
CodeQL security analysis completed successfully.
+
+ **Language analyzed:** ``${{ matrix.language }}``
+
+ > Check the Security tab for detailed findings and recommendations.
+ "@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 5110ab18d..ec295e328 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -43,16 +43,25 @@ jobs:
- name: Summary - Test execution started
shell: pwsh
run: |
- echo "## ๐งช Run Tests - Workflow Summary" >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
- echo "### Test Environment" >> $env:GITHUB_STEP_SUMMARY
- echo "| Property | Value |" >> $env:GITHUB_STEP_SUMMARY
- echo "| --- | --- |" >> $env:GITHUB_STEP_SUMMARY
- echo "| Repository | \`${{ github.repository }}\` |" >> $env:GITHUB_STEP_SUMMARY
- echo "| Branch | \`${{ github.ref_name }}\` |" >> $env:GITHUB_STEP_SUMMARY
- echo "| Commit | \`${{ github.sha }}\` |" >> $env:GITHUB_STEP_SUMMARY
- echo "| Runner OS | \`${{ runner.os }}\` |" >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
+ # Get Cmder version
+ . scripts/utils.ps1
+ $cmderVersion = Get-VersionStr
+
+ @"
+ ## โ
Run Tests - Workflow Summary
+
+ ### Test Environment
+ | Property | Value |
+ | --- | --- |
+ | Repository | ``${{ github.repository }}`` |
+ | Branch | ``${{ github.ref_name }}`` |
+ | Commit | ``${{ github.sha }}`` |
+ | Runner OS | ``${{ runner.os }}`` |
+ | Cmder Version | **$cmderVersion** |
+ | PowerShell Version | **$($PSVersionTable.PSVersion)** |
+ | Event | ``${{ github.event_name }}`` |
+
+ "@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
- name: Initialize vendors
shell: pwsh
@@ -63,21 +72,42 @@ jobs:
if: success()
shell: pwsh
run: |
- echo "### โ๏ธ Vendor Initialization" >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
- echo "โ
Vendor dependencies initialized successfully." >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
+ # Get vendor versions
+ $vendorInfo = @()
+ $vendorDirs = @("conemu-maximus5", "clink", "git-for-windows")
+ foreach ($dir in $vendorDirs) {
+ $versionFile = "vendor/$dir/.cmderver"
+ if (Test-Path $versionFile) {
+ $version = Get-Content $versionFile -Raw
+ $vendorInfo += "- **$dir**: $($version.Trim())"
+ }
+ }
+
+ $summary = @"
+ ### โ๏ธ Vendor Initialization
+
+ โ
Vendor dependencies initialized successfully.
+
+ **Vendor Versions:**
+ $($vendorInfo -join "`n")
+
+ "@
+
+ $summary | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
- name: Summary - Test results table header
if: success()
shell: pwsh
run: |
- echo "### ๐ Test Results" >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
- echo "| Test | Status |" >> $env:GITHUB_STEP_SUMMARY
- echo "| --- | --- |" >> $env:GITHUB_STEP_SUMMARY
+ @"
+ ### ๐ Test Results
+
+ | Test | Status | Duration |
+ | --- | --- | --- |
+ "@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
- name: Testing Clink Shell
+ id: test-clink
run: |
cmd /c vendor\init.bat /v /d /t
@@ -85,8 +115,9 @@ jobs:
if: success()
shell: pwsh
run: |
- echo "| Clink Shell | โ
Passed |" >> $env:GITHUB_STEP_SUMMARY
+ "| Clink Shell | โ
Passed | Cmd shell initialization |" | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
- name: Testing PowerShell
+ id: test-powershell
run: |
PowerShell.exe -ExecutionPolicy Bypass -NoLogo -NoProfile -Command "$env:CMDER_DEBUG='1'; . 'vendor\profile.ps1'"
@@ -94,8 +125,9 @@ jobs:
if: success()
shell: pwsh
run: |
- echo "| PowerShell | โ
Passed |" >> $env:GITHUB_STEP_SUMMARY
+ "| PowerShell | โ
Passed | Profile script execution |" | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
- name: Testing Bash
+ id: test-bash
run: |
bash vendor/cmder.sh
@@ -103,13 +135,20 @@ jobs:
if: success()
shell: pwsh
run: |
- echo "| Bash | โ
Passed |" >> $env:GITHUB_STEP_SUMMARY
+ "| Bash | โ
Passed | Bash environment initialization |" | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
- name: Summary - All tests completed
if: success()
shell: pwsh
run: |
- echo "" >> $env:GITHUB_STEP_SUMMARY
- echo "### โ
All Tests Completed" >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
- echo "All shell environments tested successfully!" >> $env:GITHUB_STEP_SUMMARY
+ @"
+
+ ### โ
All Tests Completed
+
+ All shell environments tested successfully!
+
+ **Test Coverage:**
+ - โ
Clink shell environment (Windows cmd.exe with Clink)
+ - โ
PowerShell environment (with Cmder profile)
+ - โ
Bash environment (Git Bash integration)
+ "@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
From 0bc7fd3aaa01feb5bf62e4503ba18b9b644f7fad Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 14 Dec 2025 22:30:03 +0000
Subject: [PATCH 03/14] Improve build workflow summary: add links, vendor
packages, full hashes, and merge artifact sections
Co-authored-by: DRSDavidSoft <4673812+DRSDavidSoft@users.noreply.github.com>
---
.github/workflows/build.yml | 93 +++++++++++++++++++++----------------
1 file changed, 52 insertions(+), 41 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index c59f93536..df6579be8 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -45,21 +45,38 @@ jobs:
# Get Cmder version
. scripts/utils.ps1
$cmderVersion = Get-VersionStr
+ $buildTime = (Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
@"
## ๐ฆ Build Cmder - Workflow Summary
+ Build started: $buildTime
+
### Repository Information
| Property | Value |
| --- | --- |
- | Repository | ``${{ github.repository }}`` |
- | Branch | ``${{ github.ref_name }}`` |
- | Commit | ``${{ github.sha }}`` |
- | Actor | @${{ github.actor }} |
+ | Repository | [${{ github.repository }}](https://github.com/${{ github.repository }}) |
+ | Branch | [${{ github.ref_name }}](https://github.com/${{ github.repository }}/tree/${{ github.ref_name }}) |
+ | Commit | [${{ github.sha }}](https://github.com/${{ github.repository }}/commit/${{ github.sha }}) |
+ | Actor | [@${{ github.actor }}](https://github.com/${{ github.actor }}) |
| Workflow | ``${{ github.workflow }}`` |
| Cmder Version | **$cmderVersion** |
- "@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
+ ---
+
+ ### Vendor Packages
+ | Package | Version |
+ | --- | --- |
+ "@
+
+ # Read vendor sources.json and add to summary
+ $vendorSources = Get-Content "vendor/sources.json" | ConvertFrom-Json
+ foreach ($vendor in $vendorSources) {
+ $summary += "`n| ``$($vendor.name)`` | $($vendor.version) |"
+ }
+ $summary += "`n"
+
+ $summary | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
- name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@v2
@@ -74,9 +91,12 @@ jobs:
shell: pwsh
run: |
@"
- ### โ
Build Status
- Cmder launcher successfully compiled.
+ ---
+
+ ### Build Status
+
+ โ
Cmder launcher successfully compiled.
"@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
@@ -85,31 +105,6 @@ jobs:
working-directory: scripts
run: .\pack.ps1 -verbose
- - name: Summary - Package artifacts
- if: success()
- shell: pwsh
- run: |
- $summary = @"
- ### ๐ฆ Artifacts Created
-
- | Artifact | Size | Hash (SHA256) |
- | --- | --- | --- |
- "@
-
- $artifacts = @("cmder.zip", "cmder.7z", "cmder_mini.zip")
- foreach ($artifact in $artifacts) {
- $path = "build/$artifact"
- if (Test-Path $path) {
- $size = (Get-Item $path).Length / 1MB
- # Truncate hash to first 16 chars for summary readability (full hash in hashes.txt)
- $hash = (Get-FileHash $path -Algorithm SHA256).Hash.Substring(0, 16)
- $summary += "`n| ``$artifact`` | $([math]::Round($size, 2)) MB | ``$hash...`` |"
- }
- }
- $summary += "`n"
-
- $summary | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
-
- name: Upload artifact (cmder.zip)
uses: actions/upload-artifact@v5
with:
@@ -140,15 +135,28 @@ jobs:
shell: pwsh
run: |
@"
- ### โ๏ธ Upload Status
- All artifacts successfully uploaded to GitHub Actions:
- - โ
``cmder.zip``
- - โ
``cmder.7z``
- - โ
``cmder_mini.zip``
- - โ
``hashes.txt``
+ ---
- "@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
+ ### Artifacts
+
+ | Artifact | Size | Hash (SHA256) | Download |
+ | --- | --- | --- | --- |
+ "@
+
+ $artifacts = @("cmder.zip", "cmder.7z", "cmder_mini.zip", "hashes.txt")
+ foreach ($artifact in $artifacts) {
+ $path = "build/$artifact"
+ if (Test-Path $path) {
+ $size = (Get-Item $path).Length / 1MB
+ $hash = (Get-FileHash $path -Algorithm SHA256).Hash
+ $downloadUrl = "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"
+ $summary += "`n| ``$artifact`` | $([math]::Round($size, 2)) MB | ``$hash`` | [Download]($downloadUrl) |"
+ }
+ }
+ $summary += "`n"
+
+ $summary | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
- name: Create Release
uses: softprops/action-gh-release@v2
@@ -167,9 +175,12 @@ jobs:
shell: pwsh
run: |
@"
- ### ๐ Release Information
- Draft release created for tag: **``${{ github.ref_name }}``**
+ ---
+
+ ### Release Information
+
+ ๐ Draft release created for tag: **``${{ github.ref_name }}``**
Release includes:
- Full version (``cmder.zip``, ``cmder.7z``)
From 2057ee58b03d87728594e7542f19326e2b2bc99a Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Mon, 15 Dec 2025 01:13:19 +0000
Subject: [PATCH 04/14] Fix incomplete summary by initializing $summary
variable before appending
Co-authored-by: DRSDavidSoft <4673812+DRSDavidSoft@users.noreply.github.com>
---
.github/workflows/build.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index df6579be8..9cf6788a9 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -47,7 +47,7 @@ jobs:
$cmderVersion = Get-VersionStr
$buildTime = (Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
- @"
+ $summary = @"
## ๐ฆ Build Cmder - Workflow Summary
Build started: $buildTime
@@ -134,7 +134,7 @@ jobs:
if: success()
shell: pwsh
run: |
- @"
+ $summary = @"
---
From bff3862ad4c2939c0821676683dc7dc6d0817642 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Mon, 15 Dec 2025 01:41:42 +0000
Subject: [PATCH 05/14] =?UTF-8?q?Use=20=F0=9F=97=83=EF=B8=8F=20emoji=20for?=
=?UTF-8?q?=20Vendor=20Packages=20and=20Artifacts=20sections?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: DRSDavidSoft <4673812+DRSDavidSoft@users.noreply.github.com>
---
.github/workflows/build.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 9cf6788a9..859002725 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -64,7 +64,7 @@ jobs:
---
- ### Vendor Packages
+ ### ๐๏ธ Vendor Packages
| Package | Version |
| --- | --- |
"@
@@ -138,7 +138,7 @@ jobs:
---
- ### Artifacts
+ ### ๐๏ธ Artifacts
| Artifact | Size | Hash (SHA256) | Download |
| --- | --- | --- | --- |
From 838c1cfaa3cc0140f8bddd428a69225ac0d184c9 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Mon, 15 Dec 2025 01:56:14 +0000
Subject: [PATCH 06/14] Add backticks to clickable links for code formatting in
Repository Information
Co-authored-by: DRSDavidSoft <4673812+DRSDavidSoft@users.noreply.github.com>
---
.github/workflows/build.yml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 859002725..7441c5b02 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -55,9 +55,9 @@ jobs:
### Repository Information
| Property | Value |
| --- | --- |
- | Repository | [${{ github.repository }}](https://github.com/${{ github.repository }}) |
- | Branch | [${{ github.ref_name }}](https://github.com/${{ github.repository }}/tree/${{ github.ref_name }}) |
- | Commit | [${{ github.sha }}](https://github.com/${{ github.repository }}/commit/${{ github.sha }}) |
+ | Repository | [``${{ github.repository }}``](https://github.com/${{ github.repository }}) |
+ | Branch | [``${{ github.ref_name }}``](https://github.com/${{ github.repository }}/tree/${{ github.ref_name }}) |
+ | Commit | [``${{ github.sha }}``](https://github.com/${{ github.repository }}/commit/${{ github.sha }}) |
| Actor | [@${{ github.actor }}](https://github.com/${{ github.actor }}) |
| Workflow | ``${{ github.workflow }}`` |
| Cmder Version | **$cmderVersion** |
From 27c7a0cdc6c6b4224a2715236adde5a2dd1cc7d7 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Mon, 15 Dec 2025 01:59:35 +0000
Subject: [PATCH 07/14] Improve build summary: simplify message, reorder
columns, add file type emojis
Co-authored-by: DRSDavidSoft <4673812+DRSDavidSoft@users.noreply.github.com>
---
.github/workflows/build.yml | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 7441c5b02..6583450f7 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -96,7 +96,7 @@ jobs:
### Build Status
- โ
Cmder launcher successfully compiled.
+ โ
Cmder built successfully.
"@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
@@ -140,7 +140,7 @@ jobs:
### ๐๏ธ Artifacts
- | Artifact | Size | Hash (SHA256) | Download |
+ | Artifact | Size | Download | Hash (SHA256) |
| --- | --- | --- | --- |
"@
@@ -151,7 +151,17 @@ jobs:
$size = (Get-Item $path).Length / 1MB
$hash = (Get-FileHash $path -Algorithm SHA256).Hash
$downloadUrl = "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"
- $summary += "`n| ``$artifact`` | $([math]::Round($size, 2)) MB | ``$hash`` | [Download]($downloadUrl) |"
+
+ # Determine emoji based on file type
+ if ($artifact -match '\.txt$') {
+ $emoji = "๐"
+ } elseif ($artifact -match '\.(zip|7z)$') {
+ $emoji = "๐๏ธ"
+ } else {
+ $emoji = "๐ฆ"
+ }
+
+ $summary += "`n| $emoji ``$artifact`` | $([math]::Round($size, 2)) MB | [๐ฅ Download]($downloadUrl) | ``$hash`` |"
}
}
$summary += "`n"
From a937901e822eb19c527f368f0e7056a1ab9172ad Mon Sep 17 00:00:00 2001
From: David Refoua
Date: Mon, 15 Dec 2025 06:06:08 +0330
Subject: [PATCH 08/14] Change emoji for Vendor Packages section
---
.github/workflows/build.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 6583450f7..3bd7ff39f 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -64,7 +64,7 @@ jobs:
---
- ### ๐๏ธ Vendor Packages
+ ### ๐ Vendor Packages
| Package | Version |
| --- | --- |
"@
From 825df3aace44502da0bad0934c2a4f02411ce641 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Mon, 15 Dec 2025 02:48:18 +0000
Subject: [PATCH 09/14] Fix branch link for PR merge refs to point to PR
instead of invalid tree URL
Co-authored-by: DRSDavidSoft <4673812+DRSDavidSoft@users.noreply.github.com>
---
.github/workflows/build.yml | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 3bd7ff39f..29d09d1f6 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -47,6 +47,21 @@ jobs:
$cmderVersion = Get-VersionStr
$buildTime = (Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
+ # Determine branch link (handle PR merge refs)
+ $branchName = "${{ github.ref_name }}"
+ $branchLink = ""
+ if ($branchName -match '^(\d+)/(merge|head)$') {
+ # This is a PR merge/head ref, link to the PR
+ $prNumber = $Matches[1]
+ $branchLink = "https://github.com/${{ github.repository }}/pull/$prNumber"
+ } elseif ("${{ github.event_name }}" -eq "pull_request") {
+ # This is a pull request event, link to the PR
+ $branchLink = "https://github.com/${{ github.repository }}/pull/${{ github.event.pull_request.number }}"
+ } else {
+ # Regular branch, link to the branch tree
+ $branchLink = "https://github.com/${{ github.repository }}/tree/${{ github.ref_name }}"
+ }
+
$summary = @"
## ๐ฆ Build Cmder - Workflow Summary
@@ -56,7 +71,7 @@ jobs:
| Property | Value |
| --- | --- |
| Repository | [``${{ github.repository }}``](https://github.com/${{ github.repository }}) |
- | Branch | [``${{ github.ref_name }}``](https://github.com/${{ github.repository }}/tree/${{ github.ref_name }}) |
+ | Branch | [``$branchName``]($branchLink) |
| Commit | [``${{ github.sha }}``](https://github.com/${{ github.repository }}/commit/${{ github.sha }}) |
| Actor | [@${{ github.actor }}](https://github.com/${{ github.actor }}) |
| Workflow | ``${{ github.workflow }}`` |
From a52b0b9e1011779ab14c92b042d874b76e098186 Mon Sep 17 00:00:00 2001
From: David Refoua
Date: Mon, 15 Dec 2025 06:20:35 +0330
Subject: [PATCH 10/14] Update .github/workflows/tests.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---
.github/workflows/tests.yml | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index ec295e328..916b678af 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -72,9 +72,10 @@ jobs:
if: success()
shell: pwsh
run: |
- # Get vendor versions
+ # Get vendor versions from sources.json
$vendorInfo = @()
- $vendorDirs = @("conemu-maximus5", "clink", "git-for-windows")
+ $sources = Get-Content "sources.json" -Raw | ConvertFrom-Json
+ $vendorDirs = $sources.PSObject.Properties | ForEach-Object { $_.Name }
foreach ($dir in $vendorDirs) {
$versionFile = "vendor/$dir/.cmderver"
if (Test-Path $versionFile) {
From 641ce7b1e811063fda12a62a3d84de7063c314e9 Mon Sep 17 00:00:00 2001
From: David Refoua
Date: Mon, 15 Dec 2025 06:23:04 +0330
Subject: [PATCH 11/14] Update .github/workflows/build.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---
.github/workflows/build.yml | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 29d09d1f6..caf5e0664 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -86,8 +86,12 @@ jobs:
# Read vendor sources.json and add to summary
$vendorSources = Get-Content "vendor/sources.json" | ConvertFrom-Json
- foreach ($vendor in $vendorSources) {
- $summary += "`n| ``$($vendor.name)`` | $($vendor.version) |"
+ if ($vendorSources.Count -eq 0) {
+ $summary += "`n| _No vendor packages found_ | |"
+ } else {
+ foreach ($vendor in $vendorSources) {
+ $summary += "`n| ``$($vendor.name)`` | $($vendor.version) |"
+ }
}
$summary += "`n"
From 2780a433237172ff0ce3156b85f7f897b8119e77 Mon Sep 17 00:00:00 2001
From: David Refoua
Date: Mon, 15 Dec 2025 06:33:39 +0330
Subject: [PATCH 12/14] Update .github/workflows/tests.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---
.github/workflows/tests.yml | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 916b678af..043b15860 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -90,7 +90,13 @@ jobs:
โ
Vendor dependencies initialized successfully.
**Vendor Versions:**
- $($vendorInfo -join "`n")
+ $(
+ if ($vendorInfo.Count -eq 0) {
+ "_No vendor version information available._"
+ } else {
+ $vendorInfo -join "`n"
+ }
+ )
"@
From 684185ca8a252887f51d883222a86993308799cd Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 25 Dec 2025 05:37:09 +0000
Subject: [PATCH 13/14] Fix vendor workflow Unicode escape error by converting
echo to PowerShell here-strings
Co-authored-by: DRSDavidSoft <4673812+DRSDavidSoft@users.noreply.github.com>
---
.github/workflows/vendor.yml | 52 +++++++++++++++++++++---------------
1 file changed, 30 insertions(+), 22 deletions(-)
diff --git a/.github/workflows/vendor.yml b/.github/workflows/vendor.yml
index 717e543db..6bdf80496 100644
--- a/.github/workflows/vendor.yml
+++ b/.github/workflows/vendor.yml
@@ -31,10 +31,12 @@ jobs:
- name: Summary - Workflow started
shell: pwsh
run: |
- echo "## ๐ฆ Update Vendor - Workflow Summary" >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
- echo "Checking for vendor dependency updates..." >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
+ @"
+ ## ๐ฆ Update Vendor - Workflow Summary
+
+ Checking for vendor dependency updates...
+
+ "@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
- id: make-changes
name: Checking for updates
@@ -64,17 +66,21 @@ jobs:
run: |
$count = $env:COUNT_UPDATED
if ($count -eq 0) {
- echo "### โ
No Updates Available" >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
- echo "All vendor dependencies are up to date." >> $env:GITHUB_STEP_SUMMARY
+ @"
+ ### โ
No Updates Available
+
+ All vendor dependencies are up to date.
+ "@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
} else {
$word = if ($count -eq 1) { 'dependency' } else { 'dependencies' }
- echo "### ๐ Updates Found" >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
- echo "**$count** vendor $word updated:" >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
- echo "$env:UPDATE_MESSAGE" >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
+ @"
+ ### ๐ Updates Found
+
+ **$count** vendor $word updated:
+
+ $env:UPDATE_MESSAGE
+
+ "@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
}
- uses: peter-evans/create-pull-request@v7
@@ -94,12 +100,14 @@ jobs:
if: env.COUNT_UPDATED > 0
shell: pwsh
run: |
- echo "### ๐ Pull Request Created" >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
- echo "A pull request has been created to update the vendor dependencies." >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
- echo "**Branch:** \`update-vendor\`" >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
- echo "**Updated dependencies:** $env:LIST_UPDATED" >> $env:GITHUB_STEP_SUMMARY
- echo "" >> $env:GITHUB_STEP_SUMMARY
- echo "> Please review and merge the pull request to apply the updates." >> $env:GITHUB_STEP_SUMMARY
+ @"
+ ### ๐ Pull Request Created
+
+ A pull request has been created to update the vendor dependencies.
+
+ **Branch:** ``update-vendor``
+
+ **Updated dependencies:** $env:LIST_UPDATED
+
+ > Please review and merge the pull request to apply the updates.
+ "@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
From dc93fa5d1bbe783d39147c387b68bfb78b2ff457 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 25 Dec 2025 05:40:39 +0000
Subject: [PATCH 14/14] Add real artifact download URLs with retry logic and
fallback to run page
Co-authored-by: DRSDavidSoft <4673812+DRSDavidSoft@users.noreply.github.com>
---
.github/workflows/build.yml | 46 +++++++++++++++++++++++++++++++++++--
1 file changed, 44 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index caf5e0664..40ca5baf8 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -152,6 +152,8 @@ jobs:
- name: Summary - Artifacts uploaded
if: success()
shell: pwsh
+ env:
+ GH_TOKEN: ${{ github.token }}
run: |
$summary = @"
@@ -163,13 +165,53 @@ jobs:
| --- | --- | --- | --- |
"@
+ # Function to get artifact download URL with retry logic
+ function Get-ArtifactDownloadUrl {
+ param(
+ [string]$ArtifactName,
+ [int]$MaxRetries = 3,
+ [int]$DelaySeconds = 2
+ )
+
+ for ($i = 0; $i -lt $MaxRetries; $i++) {
+ try {
+ # Use GitHub CLI to get artifact information
+ $artifactsJson = gh api "repos/${{ github.repository }}/actions/runs/${{ github.run_id }}/artifacts" --jq ".artifacts[] | select(.name == `"$ArtifactName`")"
+
+ if ($artifactsJson) {
+ $artifact = $artifactsJson | ConvertFrom-Json
+ if ($artifact.archive_download_url) {
+ return $artifact.archive_download_url
+ }
+ }
+ } catch {
+ Write-Host "Attempt $($i + 1) failed to get artifact URL for $ArtifactName : $_"
+ }
+
+ if ($i -lt ($MaxRetries - 1)) {
+ Start-Sleep -Seconds $DelaySeconds
+ }
+ }
+
+ return $null
+ }
+
$artifacts = @("cmder.zip", "cmder.7z", "cmder_mini.zip", "hashes.txt")
foreach ($artifact in $artifacts) {
$path = "build/$artifact"
if (Test-Path $path) {
$size = (Get-Item $path).Length / 1MB
$hash = (Get-FileHash $path -Algorithm SHA256).Hash
- $downloadUrl = "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"
+
+ # Try to get the actual artifact download URL
+ $downloadUrl = Get-ArtifactDownloadUrl -ArtifactName $artifact
+ $warning = ""
+
+ if (-not $downloadUrl) {
+ # Fallback to workflow run page if artifact URL fetch fails
+ $downloadUrl = "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"
+ $warning = " โ ๏ธ"
+ }
# Determine emoji based on file type
if ($artifact -match '\.txt$') {
@@ -180,7 +222,7 @@ jobs:
$emoji = "๐ฆ"
}
- $summary += "`n| $emoji ``$artifact`` | $([math]::Round($size, 2)) MB | [๐ฅ Download]($downloadUrl) | ``$hash`` |"
+ $summary += "`n| $emoji ``$artifact`` | $([math]::Round($size, 2)) MB | [๐ฅ Download$warning]($downloadUrl) | ``$hash`` |"
}
}
$summary += "`n"