From 1805ccdb935ae02fc69b6f301de26224a8462e44 Mon Sep 17 00:00:00 2001 From: Michael Flanakin Date: Fri, 13 Feb 2026 03:21:05 -0800 Subject: [PATCH 1/3] Update for v14-dev --- docs-mslearn/toolkit/changelog.md | 13 +++++++++++++ docs/_includes/ftktag.txt | 2 +- docs/_includes/ftkver.txt | 2 +- package-lock.json | 4 ++-- package.json | 2 +- src/optimization-engine/ftkver.txt | 2 +- src/powershell/Private/Get-VersionNumber.ps1 | 2 +- src/powershell/Tests/Integration/Toolkit.Tests.ps1 | 13 +++++++++---- src/templates/finops-alerts/modules/ftkver.txt | 2 +- src/templates/finops-hub/modules/fx/ftktag.txt | 2 +- src/templates/finops-hub/modules/fx/ftkver.txt | 2 +- src/templates/finops-workbooks/ftkver.txt | 2 +- src/workbooks/.scaffold/ftkver.txt | 2 +- 13 files changed, 34 insertions(+), 16 deletions(-) diff --git a/docs-mslearn/toolkit/changelog.md b/docs-mslearn/toolkit/changelog.md index 157184b0a..50419922a 100644 --- a/docs-mslearn/toolkit/changelog.md +++ b/docs-mslearn/toolkit/changelog.md @@ -33,6 +33,19 @@ The following section lists features and enhancements that are currently in deve
+## v14 + +_Released March 2026_ + + +> [!div class="nextstepaction"] +> [Download](https://github.com/microsoft/finops-toolkit/releases/tag/v13) +> [!div class="nextstepaction"] +> [Full changelog](https://github.com/microsoft/finops-toolkit/compare/v12...v13) + + +
+ ## v13 Update 1 _Released February 11, 2026_ diff --git a/docs/_includes/ftktag.txt b/docs/_includes/ftktag.txt index 817ba4bff..69888f86e 100644 --- a/docs/_includes/ftktag.txt +++ b/docs/_includes/ftktag.txt @@ -1 +1 @@ -v13 \ No newline at end of file +v14.0-dev \ No newline at end of file diff --git a/docs/_includes/ftkver.txt b/docs/_includes/ftkver.txt index 7f27d6b1d..56250dad0 100644 --- a/docs/_includes/ftkver.txt +++ b/docs/_includes/ftkver.txt @@ -1 +1 @@ -13.0 \ No newline at end of file +14.0-dev \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 7278824e4..b3ff098a0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ftk", - "version": "13.0.0", + "version": "14.0.0-dev", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "ftk", - "version": "13.0.0", + "version": "14.0.0-dev", "license": "MIT", "devDependencies": { "all-contributors-cli": "^6.26.1" diff --git a/package.json b/package.json index ee8ca6348..d11ddf82a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ftk", - "version": "13.0.0", + "version": "14.0.0-dev", "description": "Starter kits, scripts, and advanced solutions to accelerate your FinOps journey in the Microsoft Cloud.", "main": "index.js", "directories": { diff --git a/src/optimization-engine/ftkver.txt b/src/optimization-engine/ftkver.txt index 7f27d6b1d..56250dad0 100644 --- a/src/optimization-engine/ftkver.txt +++ b/src/optimization-engine/ftkver.txt @@ -1 +1 @@ -13.0 \ No newline at end of file +14.0-dev \ No newline at end of file diff --git a/src/powershell/Private/Get-VersionNumber.ps1 b/src/powershell/Private/Get-VersionNumber.ps1 index 95daac0d7..14e6ecee5 100644 --- a/src/powershell/Private/Get-VersionNumber.ps1 +++ b/src/powershell/Private/Get-VersionNumber.ps1 @@ -4,5 +4,5 @@ function Get-VersionNumber { param() - return '13.0' + return '14.0-dev' } diff --git a/src/powershell/Tests/Integration/Toolkit.Tests.ps1 b/src/powershell/Tests/Integration/Toolkit.Tests.ps1 index 2d1b7ad51..86401243c 100644 --- a/src/powershell/Tests/Integration/Toolkit.Tests.ps1 +++ b/src/powershell/Tests/Integration/Toolkit.Tests.ps1 @@ -6,12 +6,13 @@ Describe 'Get-FinOpsToolkitVersion' { It 'Should return all known releases' { # Arrange - $plannedRelease = '13' - $expected = @('12', '0.11', '0.10', '0.9', '0.8', '0.7', '0.6', '0.5', '0.4', '0.3', '0.2', '0.1.1', '0.1', '0.0.1') + $plannedRelease = '14' + $expected = @('13', '12', '0.11', '0.10', '0.9', '0.8', '0.7', '0.6', '0.5', '0.4', '0.3', '0.2', '0.1.1', '0.1', '0.0.1') # Helper function to normalize version strings for [version] parsing # Single-part versions like "12" need to become "12.0" for [version] to parse them - function NormalizeVersion($ver) { + function NormalizeVersion($ver) + { if ($ver -notmatch '\.') { return "$ver.0" } return $ver } @@ -54,7 +55,7 @@ Describe 'Get-FinOpsToolkitVersion' { CheckFile "optimization-workbook-v$verStr.zip" $null '0.5' # Power BI - CheckFile "FinOpsToolkitData.pbix" '12.0' $null + CheckFile "FinOpsToolkitData.pbix" '12.0' '12.0' # Accidentally added in v12 CheckFile "PowerBI-demo.zip" '0.7' $null CheckFile "PowerBI-kql.zip" '0.7' $null CheckFile "PowerBI-storage.zip" '0.7' $null @@ -80,6 +81,10 @@ Describe 'Get-FinOpsToolkitVersion' { CheckFile "ResourceTypes.json" '0.2' $null CheckFile "Services.csv" '0.1' $null + # Meeting invites + CheckFile "contributor-sync.ics" '13.0' $null + CheckFile "office-hours.ics" '13.0' $null + # Deprecated / renamed CheckFile "CommitmentDiscounts.pbit" '0.2' '0.3' CheckFile "CommitmentDiscounts.pbix" $null '0.3' diff --git a/src/templates/finops-alerts/modules/ftkver.txt b/src/templates/finops-alerts/modules/ftkver.txt index 7f27d6b1d..56250dad0 100644 --- a/src/templates/finops-alerts/modules/ftkver.txt +++ b/src/templates/finops-alerts/modules/ftkver.txt @@ -1 +1 @@ -13.0 \ No newline at end of file +14.0-dev \ No newline at end of file diff --git a/src/templates/finops-hub/modules/fx/ftktag.txt b/src/templates/finops-hub/modules/fx/ftktag.txt index 817ba4bff..69888f86e 100644 --- a/src/templates/finops-hub/modules/fx/ftktag.txt +++ b/src/templates/finops-hub/modules/fx/ftktag.txt @@ -1 +1 @@ -v13 \ No newline at end of file +v14.0-dev \ No newline at end of file diff --git a/src/templates/finops-hub/modules/fx/ftkver.txt b/src/templates/finops-hub/modules/fx/ftkver.txt index 7f27d6b1d..56250dad0 100644 --- a/src/templates/finops-hub/modules/fx/ftkver.txt +++ b/src/templates/finops-hub/modules/fx/ftkver.txt @@ -1 +1 @@ -13.0 \ No newline at end of file +14.0-dev \ No newline at end of file diff --git a/src/templates/finops-workbooks/ftkver.txt b/src/templates/finops-workbooks/ftkver.txt index 7f27d6b1d..56250dad0 100644 --- a/src/templates/finops-workbooks/ftkver.txt +++ b/src/templates/finops-workbooks/ftkver.txt @@ -1 +1 @@ -13.0 \ No newline at end of file +14.0-dev \ No newline at end of file diff --git a/src/workbooks/.scaffold/ftkver.txt b/src/workbooks/.scaffold/ftkver.txt index 7f27d6b1d..56250dad0 100644 --- a/src/workbooks/.scaffold/ftkver.txt +++ b/src/workbooks/.scaffold/ftkver.txt @@ -1 +1 @@ -13.0 \ No newline at end of file +14.0-dev \ No newline at end of file From 4454800960f4f6fe58827e3d3b5e0f800889298b Mon Sep 17 00:00:00 2001 From: Michael Flanakin Date: Mon, 23 Feb 2026 03:21:13 -0800 Subject: [PATCH 2/3] Fix v14 changelog links MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update Download and Full changelog URLs to point to v14 instead of v13. 🤖 Generated with [Claude Code](https://claude.ai/claude-code) Co-Authored-By: Claude --- docs-mslearn/toolkit/changelog.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs-mslearn/toolkit/changelog.md b/docs-mslearn/toolkit/changelog.md index 50419922a..7b5351821 100644 --- a/docs-mslearn/toolkit/changelog.md +++ b/docs-mslearn/toolkit/changelog.md @@ -39,9 +39,9 @@ _Released March 2026_ > [!div class="nextstepaction"] -> [Download](https://github.com/microsoft/finops-toolkit/releases/tag/v13) +> [Download](https://github.com/microsoft/finops-toolkit/releases/tag/v14) > [!div class="nextstepaction"] -> [Full changelog](https://github.com/microsoft/finops-toolkit/compare/v12...v13) +> [Full changelog](https://github.com/microsoft/finops-toolkit/compare/v13...v14)
From 6c290d51c59355f89ed784bf4347b5d71b20050e Mon Sep 17 00:00:00 2001 From: Michael Flanakin Date: Mon, 23 Feb 2026 11:27:21 -0800 Subject: [PATCH 3/3] Change Update-Version.ps1 to make changelog and test updates --- src/scripts/Update-Version.ps1 | 87 ++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/src/scripts/Update-Version.ps1 b/src/scripts/Update-Version.ps1 index 0f4bf0d21..88450667e 100644 --- a/src/scripts/Update-Version.ps1 +++ b/src/scripts/Update-Version.ps1 @@ -125,6 +125,93 @@ if ($update -or $Version) Write-Output " return '$ver'" Write-Output "}" } | Out-File "$PSScriptRoot/../PowerShell/Private/Get-VersionNumber.ps1" -Encoding ascii -Append:$false + + # Release tag strips prerelease labels and trailing .0 (e.g., "14.0-dev" -> "v14") + $releaseTag = 'v' + (($ver -replace '-.*$', '') -replace '\.0$', '') + + # Update changelog with new version section + Write-Verbose "Updating changelog..." + $changelogPath = Join-Path $repoRoot 'docs-mslearn/toolkit/changelog.md' + if (Test-Path $changelogPath) + { + $changelogLines = Get-Content $changelogPath + $anchorIndex = $changelogLines.IndexOf('
') + if ($anchorIndex -ge 0) + { + # Find the first ## v heading after the anchor + $prevTag = $null + for ($i = $anchorIndex + 1; $i -lt $changelogLines.Count; $i++) + { + if ($changelogLines[$i] -match '^## v(.+)$') + { + $prevTag = $Matches[1] -replace '\s.*$', '' + break + } + } + + $releaseTagName = $releaseTag.TrimStart('v') + + # Skip if this version section already exists + if ($prevTag -eq $releaseTagName) + { + Write-Verbose "- Changelog already has v$releaseTagName section" + } + else + { + $releaseDate = (Get-Date).AddMonths(1).ToString('MMMM yyyy') + $newSection = @( + '' + "## v$releaseTagName" + '' + "_Released ${releaseDate}_" + '' + '' + '> [!div class="nextstepaction"]' + "> [Download](https://github.com/microsoft/finops-toolkit/releases/tag/$releaseTag)" + '> [!div class="nextstepaction"]' + "> [Full changelog](https://github.com/microsoft/finops-toolkit/compare/v$prevTag...$releaseTag)" + '' + '' + '
' + ) + + $changelogLines = $changelogLines[0..$anchorIndex] + $newSection + $changelogLines[($anchorIndex + 1)..($changelogLines.Count - 1)] + $changelogLines | Out-File $changelogPath -Encoding utf8 + Write-Verbose "- Added v$releaseTagName section to changelog" + } + } + } + + # Update integration test version variables + Write-Verbose "Updating integration test versions..." + $testPath = Join-Path $repoRoot 'src/powershell/Tests/Integration/Toolkit.Tests.ps1' + if (Test-Path $testPath) + { + $testContent = Get-Content $testPath -Raw + $releaseTagName = $releaseTag.TrimStart('v') + + # Extract current planned release and skip if already up to date + if ($testContent -match '\$plannedRelease = ''([^'']+)''') + { + $oldPlanned = $Matches[1] + + if ($oldPlanned -eq $releaseTagName) + { + Write-Verbose "- Integration test already has planned release '$releaseTagName'" + } + else + { + # Update $plannedRelease to the new version + $testContent = $testContent -replace '\$plannedRelease = ''[^'']+''', ('$plannedRelease = ''{0}''' -f $releaseTagName) + + # Prepend old planned release to $expected array + $testContent = $testContent -replace '\$expected = @\(', ('$expected = @(''{0}'', ' -f $oldPlanned) + + $testContent | Out-File $testPath -NoNewline -Encoding utf8 + Write-Verbose "- Updated planned release from '$oldPlanned' to '$releaseTagName'" + } + } + } } return $ver