From b7cc25fff411259c1e409933727ab162a4e19829 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 13 Aug 2026 06:03:07 +0000
Subject: [PATCH 1/5] chore: update copyright year to 2026, bump version to
7.5, automate release and copyright updates
Co-authored-by: wforney <79032+wforney@users.noreply.github.com>
---
.github/workflows/release.yml | 6 ++--
.github/workflows/update-copyright.yml | 50 ++++++++++++++++++++++++++
Directory.Build.props | 4 +--
README.md | 2 +-
4 files changed, 57 insertions(+), 5 deletions(-)
create mode 100644 .github/workflows/update-copyright.yml
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index d005744..1943984 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -1,6 +1,8 @@
name: .NET Continuous Deployment
on:
+ push:
+ branches: [ main ]
workflow_dispatch:
permissions:
@@ -14,7 +16,7 @@ jobs:
permissions:
contents: read
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
@@ -31,7 +33,7 @@ jobs:
permissions:
contents: write
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
diff --git a/.github/workflows/update-copyright.yml b/.github/workflows/update-copyright.yml
new file mode 100644
index 0000000..3252a84
--- /dev/null
+++ b/.github/workflows/update-copyright.yml
@@ -0,0 +1,50 @@
+name: Update Copyright Year
+
+on:
+ schedule:
+ - cron: '0 0 1 1 *' # January 1st at midnight UTC
+ workflow_dispatch:
+
+permissions:
+ contents: write
+ pull-requests: write
+
+jobs:
+ update-copyright:
+ name: Update Copyright Year
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+
+ - name: Update copyright year
+ id: update
+ shell: pwsh
+ run: |
+ $year = (Get-Date).Year
+ $files = @("Directory.Build.props", "README.md")
+ $changed = $false
+ foreach ($file in $files) {
+ $content = Get-Content $file -Raw
+ $updated = $content -replace 'Copyright © \d{4}', "Copyright © $year"
+ if ($updated -ne $content) {
+ Set-Content $file -Value $updated -NoNewline
+ $changed = $true
+ Write-Output "Updated $file"
+ }
+ }
+ echo "changed=$changed" >> $env:GITHUB_OUTPUT
+
+ - name: Create pull request
+ if: steps.update.outputs.changed == 'true'
+ uses: peter-evans/create-pull-request@v7
+ with:
+ commit-message: "chore: update copyright year"
+ branch: chore/update-copyright-year
+ title: "chore: update copyright year"
+ body: |
+ Automated annual copyright year update.
+
+ This pull request was created by the `update-copyright` workflow.
+ labels: automated
diff --git a/Directory.Build.props b/Directory.Build.props
index 3595c88..827dc98 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -9,7 +9,7 @@
true
true
improvGroup, LLC
- Copyright © 2025 improvGroup, LLC and contributors. All Rights Reserved.
+ Copyright © 2026 improvGroup, LLC and contributors. All Rights Reserved.
portable
A library of code shared for free use to help with common scenarios.
true
@@ -54,7 +54,7 @@
$([System.DateTime]::op_Subtraction($([System.DateTime]::get_Now().get_Date()),$([System.DateTime]::new(2000,1,1))).get_TotalDays())
$([MSBuild]::Divide($([System.DateTime]::get_Now().get_TimeOfDay().get_TotalSeconds()), 2).ToString('F0'))
- 7.4.$(Build).$(Revision)
+ 7.5.$(Build).$(Revision)
diff --git a/README.md b/README.md
index 7f2860d..1cd8d31 100644
--- a/README.md
+++ b/README.md
@@ -358,4 +358,4 @@ contributing.
## License
This project is licensed under the [MIT License](LICENSE).
-Copyright © 2025 [improvGroup, LLC](https://github.com/improvgroup) and contributors.
+Copyright © 2026 [improvGroup, LLC](https://github.com/improvgroup) and contributors.
From c3f679bfbbf7f34deef89f4878461683b70c0a88 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 13 Aug 2026 06:03:48 +0000
Subject: [PATCH 2/5] fix: use year-specific branch name and preserve file
trailing newlines in update-copyright workflow
Co-authored-by: wforney <79032+wforney@users.noreply.github.com>
---
.github/workflows/update-copyright.yml | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/.github/workflows/update-copyright.yml b/.github/workflows/update-copyright.yml
index 3252a84..3d343d7 100644
--- a/.github/workflows/update-copyright.yml
+++ b/.github/workflows/update-copyright.yml
@@ -29,20 +29,21 @@ jobs:
$content = Get-Content $file -Raw
$updated = $content -replace 'Copyright © \d{4}', "Copyright © $year"
if ($updated -ne $content) {
- Set-Content $file -Value $updated -NoNewline
+ [System.IO.File]::WriteAllText($file, $updated)
$changed = $true
Write-Output "Updated $file"
}
}
echo "changed=$changed" >> $env:GITHUB_OUTPUT
+ echo "year=$year" >> $env:GITHUB_OUTPUT
- name: Create pull request
if: steps.update.outputs.changed == 'true'
uses: peter-evans/create-pull-request@v7
with:
commit-message: "chore: update copyright year"
- branch: chore/update-copyright-year
- title: "chore: update copyright year"
+ branch: chore/update-copyright-year-${{ steps.update.outputs.year }}
+ title: "chore: update copyright year to ${{ steps.update.outputs.year }}"
body: |
Automated annual copyright year update.
From f535cf9648e30984072c81e0e3320f909e55c479 Mon Sep 17 00:00:00 2001
From: Bill Forney
Date: Wed, 12 Aug 2026 23:12:03 -0700
Subject: [PATCH 3/5] Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
---
.github/workflows/release.yml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 1943984..84dba14 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -17,6 +17,8 @@ jobs:
contents: read
steps:
- uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
- name: Setup .NET
uses: actions/setup-dotnet@v4
From 1451adb6cb65047c7b68df5f7bcd56329bc43d8d Mon Sep 17 00:00:00 2001
From: Bill Forney
Date: Wed, 12 Aug 2026 23:12:25 -0700
Subject: [PATCH 4/5] Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
---
.github/workflows/update-copyright.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/update-copyright.yml b/.github/workflows/update-copyright.yml
index 3d343d7..7e9ace4 100644
--- a/.github/workflows/update-copyright.yml
+++ b/.github/workflows/update-copyright.yml
@@ -34,7 +34,7 @@ jobs:
Write-Output "Updated $file"
}
}
- echo "changed=$changed" >> $env:GITHUB_OUTPUT
+ echo "changed=$($changed.ToString().ToLowerInvariant())" >> $env:GITHUB_OUTPUT
echo "year=$year" >> $env:GITHUB_OUTPUT
- name: Create pull request
From 82361921fdca2d3db2faca964113bc60ead49798 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 13 Aug 2026 06:23:10 +0000
Subject: [PATCH 5/5] chore: upgrade GitHub Actions to Node.js 24-compatible
versions
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- actions/checkout: v3/v4 → v6
- actions/setup-dotnet: v4 → v6
- actions/upload-artifact: v4/v4.6.1 → v5
- actions/download-artifact: v4.1.8 → v5
- marocchino/sticky-pull-request-comment: v2 → v3
All actions now natively target Node.js 24, eliminating the deprecation warnings.
Co-authored-by: wforney <79032+wforney@users.noreply.github.com>
---
.github/workflows/defender-for-devops.yml | 4 ++--
.github/workflows/devskim.yml | 2 +-
.github/workflows/dotnet.yml | 8 ++++----
.github/workflows/eslint.yml | 2 +-
.../maintain-copilot-instructions.yml | 2 +-
.github/workflows/powershell.yml | 2 +-
.github/workflows/release.yml | 18 +++++++++---------
.github/workflows/snyk-security.yml | 2 +-
.github/workflows/update-copyright.yml | 2 +-
9 files changed, 21 insertions(+), 21 deletions(-)
diff --git a/.github/workflows/defender-for-devops.yml b/.github/workflows/defender-for-devops.yml
index 7307f85..b76f822 100644
--- a/.github/workflows/defender-for-devops.yml
+++ b/.github/workflows/defender-for-devops.yml
@@ -35,8 +35,8 @@ jobs:
runs-on: windows-latest
steps:
- - uses: actions/checkout@v4
- - uses: actions/setup-dotnet@v4
+ - uses: actions/checkout@v6
+ - uses: actions/setup-dotnet@v6
with:
dotnet-version: |
5.0.x
diff --git a/.github/workflows/devskim.yml b/.github/workflows/devskim.yml
index e375766..2179c2f 100644
--- a/.github/workflows/devskim.yml
+++ b/.github/workflows/devskim.yml
@@ -23,7 +23,7 @@ jobs:
security-events: write
steps:
- name: Checkout code
- uses: actions/checkout@v3
+ uses: actions/checkout@v6
- name: Run DevSkim scanner
uses: microsoft/DevSkim-Action@v1
diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml
index bc5012f..2286cae 100644
--- a/.github/workflows/dotnet.yml
+++ b/.github/workflows/dotnet.yml
@@ -15,10 +15,10 @@ jobs:
name: Run Tests
runs-on: windows-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
- name: Setup .NET
- uses: actions/setup-dotnet@v4
+ uses: actions/setup-dotnet@v6
with:
dotnet-version: 10.0.x
@@ -55,14 +55,14 @@ jobs:
- name: Post coverage comment on PR
if: always() && github.event_name == 'pull_request'
- uses: marocchino/sticky-pull-request-comment@v2
+ uses: marocchino/sticky-pull-request-comment@v3
with:
header: coverage
path: coverage-report/SummaryGithub.md
- name: Upload coverage report
if: always()
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v5
with:
name: coverage-report
path: coverage-report/
diff --git a/.github/workflows/eslint.yml b/.github/workflows/eslint.yml
index 3d1f567..18485ca 100644
--- a/.github/workflows/eslint.yml
+++ b/.github/workflows/eslint.yml
@@ -28,7 +28,7 @@ jobs:
actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status
steps:
- name: Checkout code
- uses: actions/checkout@v3
+ uses: actions/checkout@v6
- name: Install ESLint
run: |
diff --git a/.github/workflows/maintain-copilot-instructions.yml b/.github/workflows/maintain-copilot-instructions.yml
index 1822b9a..571c9b0 100644
--- a/.github/workflows/maintain-copilot-instructions.yml
+++ b/.github/workflows/maintain-copilot-instructions.yml
@@ -25,7 +25,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
- name: Detect projects not documented in copilot-instructions.md
id: check
diff --git a/.github/workflows/powershell.yml b/.github/workflows/powershell.yml
index aa8b453..cb25a34 100644
--- a/.github/workflows/powershell.yml
+++ b/.github/workflows/powershell.yml
@@ -29,7 +29,7 @@ jobs:
name: PSScriptAnalyzer
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v6
- name: Run PSScriptAnalyzer
uses: microsoft/psscriptanalyzer-action@6b2948b1944407914a58661c49941824d149734f
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 84dba14..5b94afb 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -16,12 +16,12 @@ jobs:
permissions:
contents: read
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Setup .NET
- uses: actions/setup-dotnet@v4
+ uses: actions/setup-dotnet@v6
with:
dotnet-version: 10.0.x
@@ -35,10 +35,10 @@ jobs:
permissions:
contents: write
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
- name: Setup .NET
- uses: actions/setup-dotnet@v4
+ uses: actions/setup-dotnet@v6
with:
dotnet-version: 10.0.x
@@ -59,7 +59,7 @@ jobs:
run: dotnet build -c Release SharedCode.sln && dotnet pack -c Release -p:PackageVersion=${{ steps.tag_version.outputs.new_version }} -o . SharedCode.sln
- name: Upload Package for Publishing
- uses: actions/upload-artifact@v4.6.1
+ uses: actions/upload-artifact@v5
with:
name: PackedLib
path: ./*.nupkg
@@ -72,12 +72,12 @@ jobs:
packages: write
steps:
- name: Download built project
- uses: actions/download-artifact@v4.1.8
+ uses: actions/download-artifact@v5
with:
name: PackedLib
- name: Setup .NET
- uses: actions/setup-dotnet@v4
+ uses: actions/setup-dotnet@v6
with:
dotnet-version: 10.0.x
@@ -92,12 +92,12 @@ jobs:
packages: write
steps:
- name: Download built project
- uses: actions/download-artifact@v4.1.8
+ uses: actions/download-artifact@v5
with:
name: PackedLib
- name: Setup .NET
- uses: actions/setup-dotnet@v4
+ uses: actions/setup-dotnet@v6
with:
dotnet-version: 10.0.x
diff --git a/.github/workflows/snyk-security.yml b/.github/workflows/snyk-security.yml
index 578dcae..192453e 100644
--- a/.github/workflows/snyk-security.yml
+++ b/.github/workflows/snyk-security.yml
@@ -35,7 +35,7 @@ jobs:
actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
- name: Set up Snyk CLI to check for security issues
# Snyk can be used to break the build when it detects security issues.
# In this case we want to upload the SAST issues to GitHub Code Scanning
diff --git a/.github/workflows/update-copyright.yml b/.github/workflows/update-copyright.yml
index 7e9ace4..d78a4d0 100644
--- a/.github/workflows/update-copyright.yml
+++ b/.github/workflows/update-copyright.yml
@@ -14,7 +14,7 @@ jobs:
name: Update Copyright Year
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
with:
fetch-depth: 0