Author SHA1 Message Date
dependabot[bot] a404a47ba2 ci: Bump the actions group across 1 directory with 9 updates
Bumps the actions group with 9 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [KofTwentyTwo/standards/.github/workflows/dotnet.yml](https://github.com/koftwentytwo/standards) | `0.1.2` | `1.2.1` |
| [KofTwentyTwo/standards/.github/workflows/codeql.yml](https://github.com/koftwentytwo/standards) | `0.1.2` | `1.2.1` |
| [KofTwentyTwo/standards/.github/workflows/pr.yml](https://github.com/koftwentytwo/standards) | `0.1.2` | `1.2.1` |
| [KofTwentyTwo/standards/.github/workflows/release-nuget.yml](https://github.com/koftwentytwo/standards) | `0.1.2` | `1.2.1` |
| [actions/github-script](https://github.com/actions/github-script) | `8.0.0` | `9.0.0` |
| [ossf/scorecard-action](https://github.com/ossf/scorecard-action) | `2.4.4` | `2.5.0` |
| [github/codeql-action/upload-sarif](https://github.com/github/codeql-action) | `4.38.3` | `4.39.0` |
| [actions/setup-node](https://github.com/actions/setup-node) | `6.5.0` | `7.1.0` |
| [KofTwentyTwo/standards/.github/workflows/security.yml](https://github.com/koftwentytwo/standards) | `0.1.2` | `1.2.1` |



Updates `KofTwentyTwo/standards/.github/workflows/dotnet.yml` from 0.1.2 to 1.2.1
- [Release notes](https://github.com/koftwentytwo/standards/releases)
- [Changelog](https://github.com/KofTwentyTwo/standards/blob/main/CHANGELOG.md)
- [Commits](https://github.com/koftwentytwo/standards/compare/fdf5ed029603c938615a32b1beca3628b8787945...70b555bd5658273090769991bfc4c9b6681dde18)

Updates `KofTwentyTwo/standards/.github/workflows/codeql.yml` from 0.1.2 to 1.2.1
- [Release notes](https://github.com/koftwentytwo/standards/releases)
- [Changelog](https://github.com/KofTwentyTwo/standards/blob/main/CHANGELOG.md)
- [Commits](https://github.com/koftwentytwo/standards/compare/fdf5ed029603c938615a32b1beca3628b8787945...70b555bd5658273090769991bfc4c9b6681dde18)

Updates `KofTwentyTwo/standards/.github/workflows/pr.yml` from 0.1.2 to 1.2.1
- [Release notes](https://github.com/koftwentytwo/standards/releases)
- [Changelog](https://github.com/KofTwentyTwo/standards/blob/main/CHANGELOG.md)
- [Commits](https://github.com/koftwentytwo/standards/compare/fdf5ed029603c938615a32b1beca3628b8787945...70b555bd5658273090769991bfc4c9b6681dde18)

Updates `KofTwentyTwo/standards/.github/workflows/release-nuget.yml` from 0.1.2 to 1.2.1
- [Release notes](https://github.com/koftwentytwo/standards/releases)
- [Changelog](https://github.com/KofTwentyTwo/standards/blob/main/CHANGELOG.md)
- [Commits](https://github.com/koftwentytwo/standards/compare/fdf5ed029603c938615a32b1beca3628b8787945...70b555bd5658273090769991bfc4c9b6681dde18)

Updates `actions/github-script` from 8.0.0 to 9.0.0
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/ed597411d8f924073f98dfc5c65a23a2325f34cd...3a2844b7e9c422d3c10d287c895573f7108da1b3)

Updates `ossf/scorecard-action` from 2.4.4 to 2.5.0
- [Release notes](https://github.com/ossf/scorecard-action/releases)
- [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md)
- [Commits](https://github.com/ossf/scorecard-action/compare/2d1146689b8cda280b9bc96326124645441f03bc...fa7117db83c52d787ae5a89f350999701505d78e)

Updates `github/codeql-action/upload-sarif` from 4.38.3 to 4.39.0
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/24c54180a607b1449ed407dd24f251e4e9147c8d...6f2ac81f5cd81fe351a197ba0b00d91d03cd2aee)

Updates `actions/setup-node` from 6.5.0 to 7.1.0
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/249970729cb0ef3589644e2896645e5dc5ba9c38...949feb2413d6458794dcd2491c4babbbce0c15c1)

Updates `KofTwentyTwo/standards/.github/workflows/security.yml` from 0.1.2 to 1.2.1
- [Release notes](https://github.com/koftwentytwo/standards/releases)
- [Changelog](https://github.com/KofTwentyTwo/standards/blob/main/CHANGELOG.md)
- [Commits](https://github.com/koftwentytwo/standards/compare/fdf5ed029603c938615a32b1beca3628b8787945...70b555bd5658273090769991bfc4c9b6681dde18)

---
updated-dependencies:
- dependency-name: KofTwentyTwo/standards/.github/workflows/dotnet.yml
  dependency-version: 1.2.1
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: KofTwentyTwo/standards/.github/workflows/codeql.yml
  dependency-version: 1.2.1
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: KofTwentyTwo/standards/.github/workflows/pr.yml
  dependency-version: 1.2.1
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: KofTwentyTwo/standards/.github/workflows/release-nuget.yml
  dependency-version: 1.2.1
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: actions/github-script
  dependency-version: 9.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: ossf/scorecard-action
  dependency-version: 2.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
- dependency-name: github/codeql-action/upload-sarif
  dependency-version: 4.39.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
- dependency-name: actions/setup-node
  dependency-version: 7.1.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: KofTwentyTwo/standards/.github/workflows/security.yml
  dependency-version: 1.2.1
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-10-26 16:18:44 +00:00
18 changed files with 14 additions and 120 deletions

No files matched your search

+1 -1
View File
@@ -53,7 +53,7 @@ jobs:
artifacts/installed-smoke-*/*.trx
retention-days: 7
ci:
uses: KofTwentyTwo/standards/.github/workflows/dotnet.yml@fdf5ed029603c938615a32b1beca3628b8787945 # v0.1.2
uses: KofTwentyTwo/standards/.github/workflows/dotnet.yml@70b555bd5658273090769991bfc4c9b6681dde18 # v1.2.1
permissions:
contents: read # check out, build, and test; nothing is written
with:
+1 -1
View File
@@ -19,7 +19,7 @@ concurrency:
jobs:
codeql:
uses: KofTwentyTwo/standards/.github/workflows/codeql.yml@fdf5ed029603c938615a32b1beca3628b8787945 # v0.1.2
uses: KofTwentyTwo/standards/.github/workflows/codeql.yml@70b555bd5658273090769991bfc4c9b6681dde18 # v1.2.1
permissions:
contents: read # check out the code
security-events: write # upload CodeQL results to code scanning
+1 -1
View File
@@ -14,7 +14,7 @@ concurrency:
jobs:
pr:
uses: KofTwentyTwo/standards/.github/workflows/pr.yml@fdf5ed029603c938615a32b1beca3628b8787945 # v0.1.2
uses: KofTwentyTwo/standards/.github/workflows/pr.yml@70b555bd5658273090769991bfc4c9b6681dde18 # v1.2.1
permissions:
contents: read # read the commits being merged
pull-requests: read # read the pull request title and dependency diff
+1 -1
View File
@@ -78,7 +78,7 @@ jobs:
release:
needs: [verify, gates, security, codeql, scripts]
uses: KofTwentyTwo/standards/.github/workflows/release-nuget.yml@fdf5ed029603c938615a32b1beca3628b8787945 # v0.1.2
uses: KofTwentyTwo/standards/.github/workflows/release-nuget.yml@70b555bd5658273090769991bfc4c9b6681dde18 # v1.2.1
permissions:
contents: write # create and publish the GitHub release
id-token: write # sign attestations
+1 -1
View File
@@ -29,7 +29,7 @@ jobs:
ref: ${{ github.workflow_sha }}
persist-credentials: false
- name: Verify the current commit review record
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
script: |
const { run } = require('./.github/scripts/review-gate.cjs');
+2 -2
View File
@@ -34,7 +34,7 @@ jobs:
persist-credentials: false
- name: Run Scorecard
uses: ossf/scorecard-action@2d1146689b8cda280b9bc96326124645441f03bc # v2.4.4
uses: ossf/scorecard-action@fa7117db83c52d787ae5a89f350999701505d78e # v2.5.0
with:
results_file: scorecard.sarif
results_format: sarif
@@ -48,7 +48,7 @@ jobs:
retention-days: 30
- name: Upload SARIF to code scanning
uses: github/codeql-action/upload-sarif@24c54180a607b1449ed407dd24f251e4e9147c8d # v4.38.3
uses: github/codeql-action/upload-sarif@6f2ac81f5cd81fe351a197ba0b00d91d03cd2aee # v4.39.0
with:
sarif_file: scorecard.sarif
category: scorecard
+2 -7
View File
@@ -22,7 +22,7 @@ jobs:
with:
persist-credentials: false
- name: Set up Node
uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6
uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
with:
node-version: "24"
- name: Install locked tools without lifecycle scripts
@@ -54,12 +54,7 @@ jobs:
# Analyze each file separately: recursive analysis can crash inside 1.25.0.
foreach($script in Get-ChildItem -LiteralPath build -Recurse -File | Where-Object Extension -In '.ps1', '.psm1', '.psd1')
{
# Run casing separately: the combined analyzer pass crashes in 1.25.0.
# Both passes together retain every configured rule and severity.
$findings = @(
Invoke-ScriptAnalyzer -Path $script.FullName -Settings ./PSScriptAnalyzerSettings.psd1 -IncludeRule PSUseCorrectCasing
Invoke-ScriptAnalyzer -Path $script.FullName -Settings ./PSScriptAnalyzerSettings.psd1 -ExcludeRule PSUseCorrectCasing
)
$findings = @(Invoke-ScriptAnalyzer -Path $script.FullName -Settings ./PSScriptAnalyzerSettings.psd1)
if($findings.Count -gt 0) { $findings | Format-Table; throw "Script analysis failed: $($script.Name)" }
}
- name: Verify script boundary tests
+1 -1
View File
@@ -21,7 +21,7 @@ concurrency:
jobs:
security:
uses: KofTwentyTwo/standards/.github/workflows/security.yml@fdf5ed029603c938615a32b1beca3628b8787945 # v0.1.2
uses: KofTwentyTwo/standards/.github/workflows/security.yml@70b555bd5658273090769991bfc4c9b6681dde18 # v1.2.1
permissions:
contents: read # check out the code and its history
security-events: write # upload Trivy and zizmor SARIF to code scanning
-1
View File
@@ -43,7 +43,6 @@ The command-line tool ships in each release as a self-contained single-file
startup update check on or off. Choices are saved immediately.
- **Help → Activity log:** a live view of the app's log, with an errors-only filter and a
shortcut to the log folder.
- **Help → View on GitHub / Submit an issue… / Community support…:** this app's repository, bug/feature templates and GitHub Discussions.
- **Help → Check for updates** and **Help → About**.
<!--#if (cli) -->
- **Command line:** `kof22-app greet --name Ada`, `kof22-app --version`, `kof22-app --help`.
-7
View File
@@ -7,13 +7,6 @@ repository files, and the shared CI, security, and release workflows. It impleme
This file is not copied into generated apps.
## Default Help menu
Generated apps include gclo's repository, issue-template and community-support
commands. Their URLs use the generated `AppInfo.RepositoryUrl`, so `--owner` and
`-n` point to the new project. Repository setup enables and validates GitHub
Discussions; this is required for Community support to work.
## Create an app
```powershell
-10
View File
@@ -135,16 +135,6 @@ Describe 'Generated repository administration' `
@($script:Writes | Where-Object { $_ -match 'POST|environments/release$' }).Count | Should -Be 0
}
It 'requires community Discussions and detects disabled support without writing' `
{
Invoke-GitHubRepositorySetup -Plan $script:Plan -Mode Apply -CheckSha ('a' * 40) -Confirm:$false
$script:State[$script:Root].has_discussions | Should -BeTrue
$script:State[$script:Root].has_discussions = $false
$script:Writes.Clear()
{ Invoke-GitHubRepositorySetup -Plan $script:Plan -Mode Validate } | Should -Throw '*Configuration mismatch: repos/Example/Notes*'
$script:Writes.Count | Should -Be 0
}
It 'previews all mutations without writing' `
{
Invoke-GitHubRepositorySetup -Plan $script:Plan -Mode Apply -CheckSha ('a' * 40) -WhatIf
+1 -1
View File
@@ -60,7 +60,7 @@ function Get-GitHubRepositoryPlan
@{ Method = 'PATCH'; Path = $root; Body = @{
allow_squash_merge = $true; allow_merge_commit = $false; allow_rebase_merge = $false
squash_merge_commit_title = 'PR_TITLE'; squash_merge_commit_message = 'PR_BODY'
delete_branch_on_merge = $true; has_issues = $true; has_discussions = $true; has_wiki = $false
delete_branch_on_merge = $true; has_issues = $true; has_wiki = $false
homepage = "https://github.com/$Repository#readme"
security_and_analysis = @{
secret_scanning = @{ status = 'enabled' }; secret_scanning_push_protection = @{ status = 'enabled' }
-10
View File
@@ -52,16 +52,6 @@ public static class AppIdentity
/// <summary>The app's bug/feature templates, independent of any upstream project credited in About.</summary>
public static Uri IssuesUrl { get; } = new(Info.RepositoryUrl!.AbsoluteUri.TrimEnd('/') + "/issues/new/choose");
/// <summary>Community questions and tips in the app's own repository.</summary>
public static Uri SupportUrl { get; } = new(Info.RepositoryUrl!.AbsoluteUri.TrimEnd('/') + "/discussions");
/// <summary>Loads and saves <see cref="AppSettings"/> at <see cref="AppPaths.SettingsFile"/>.</summary>
public static SettingsStore<AppSettings> SettingsStore { get; } = new(Paths.SettingsFile, AppSettingsContext.Default.AppSettings);
-45
View File
@@ -1,45 +0,0 @@
/*
* Copyright (c) 2026 James Maes
* SPDX-License-Identifier: MIT
*/
using Microsoft.UI.Xaml;
namespace Kof22App;
/// <summary>Opens only the app's fixed public Help destinations after deliberate native menu actions.</summary>
public sealed partial class MainWindow
{
/// <summary>Shows this Windows app's repository in the user's default browser.</summary>
private async void GitHub_Click(object sender, RoutedEventArgs args) => await OpenHelpPageAsync(AppIdentity.Info.RepositoryUrl!);
/// <summary>Offers the app's issue templates without sending private document data.</summary>
private async void SubmitIssue_Click(object sender, RoutedEventArgs args) => await OpenHelpPageAsync(AppIdentity.IssuesUrl);
/// <summary>Opens community questions and tips in this app's repository.</summary>
private async void CommunitySupport_Click(object sender, RoutedEventArgs args) => await OpenHelpPageAsync(AppIdentity.SupportUrl);
/// <summary>A missing browser or OS launch failure is visible; no document path/content is included.</summary>
private async Task OpenHelpPageAsync(Uri target)
{
try
{
if(!await global::Windows.System.Launcher.LaunchUriAsync(target))
{
StatusText.Text = "The link could not be opened. Check your default browser.";
}
}
catch(Exception exception) when(exception is System.Runtime.InteropServices.COMException or InvalidOperationException or ArgumentException)
{
StatusText.Text = "The link could not be opened. Check your default browser.";
App.Log.Warning(FormattableString.Invariant($"A Help link could not be opened ({exception.GetType().Name}, 0x{exception.HResult:X8})."));
}
}
}
+1 -5
View File
@@ -26,11 +26,7 @@
<ToggleMenuFlyoutItem x:Name="SplashToggle" Text="Show splash at startup" Click="Splash_Click" />
<ToggleMenuFlyoutItem x:Name="UpdateCheckToggle" Text="Check for updates at startup" Click="UpdateCheck_Click" />
</MenuBarItem>
<MenuBarItem Title="Help" AccessKey="H">
<MenuFlyoutItem Text="View on GitHub" AccessKey="G" AutomationProperties.AutomationId="MenuGitHub" Click="GitHub_Click" />
<MenuFlyoutItem Text="Submit an issue…" AccessKey="I" AutomationProperties.AutomationId="MenuSubmitIssue" ToolTipService.ToolTip="Report a bug or request a feature on GitHub" Click="SubmitIssue_Click" />
<MenuFlyoutItem Text="Community support…" AccessKey="S" AutomationProperties.AutomationId="MenuCommunitySupport" ToolTipService.ToolTip="Ask a question or share tips in GitHub Discussions" Click="CommunitySupport_Click" />
<MenuFlyoutSeparator />
<MenuBarItem Title="Help">
<MenuFlyoutItem x:Name="CheckForUpdatesMenuItem" Text="Check for updates" Click="CheckForUpdates_Click" />
<MenuFlyoutItem x:Name="ActivityLogMenuItem" Text="Activity log" Click="ActivityLog_Click" />
<MenuFlyoutSeparator />
@@ -20,8 +20,6 @@ public class AppIdentityTests
Assert.EndsWith("_DATA_DIR", AppIdentity.Info.DataDirectoryVariable, StringComparison.Ordinal);
Assert.NotNull(AppIdentity.Info.RepositoryUrl);
Assert.NotEmpty(AppIdentity.Info.Attributions);
Assert.Equal("https://github.com/KofTwentyTwo/windows-app-template/issues/new/choose", AppIdentity.IssuesUrl.AbsoluteUri);
Assert.Equal("https://github.com/KofTwentyTwo/windows-app-template/discussions", AppIdentity.SupportUrl.AbsoluteUri);
}
+2 -7
View File
@@ -151,12 +151,7 @@ public sealed class AppSession : IDisposable
/// expand (its flyout opens before the menu is ready), so the menu is re-opened
/// until the item appears.
/// </summary>
public void InvokeMenuItem(string menuName, string itemAutomationId) => Invoke(OpenMenuItem(menuName, itemAutomationId));
/// <summary>Opens an owned native menu and returns its item without launching an external destination.</summary>
public AutomationElement OpenMenuItem(string menuName, string itemAutomationId)
public void InvokeMenuItem(string menuName, string itemAutomationId)
{
MainWindow.SetForeground();
AutomationElement menu = WaitFor(
@@ -176,7 +171,7 @@ public sealed class AppSession : IDisposable
Wait.UntilInputIsProcessed();
item = Retry.WhileNull(() => FindInApp(cf => cf.ByAutomationId(itemAutomationId)), timeout: TimeSpan.FromSeconds(3), interval: s_pollInterval, ignoreException: true).Result;
}
return item ?? throw new TimeoutException($"Menu item '{itemAutomationId}' never appeared under '{menuName}'. (app exited: {App.HasExited})");
Invoke(item ?? throw new TimeoutException($"Menu item '{itemAutomationId}' never appeared under '{menuName}'. (app exited: {App.HasExited})"));
}
-17
View File
@@ -36,23 +36,6 @@ public class AppTests
/// <summary>The real Help menu exposes the app's repository, issue reporting and community commands without launching a browser.</summary>
[Fact]
public void Help_PublicDestinations_AreAvailableInTheNativeMenu()
{
using var session = new AppSession();
_ = session.OpenMenuItem("Help", "MenuGitHub");
foreach((string identity, string label) in new[] { ("MenuGitHub", "GitHub"), ("MenuSubmitIssue", "issue"), ("MenuCommunitySupport", "support") })
{
AutomationElement item = session.WaitForElement(identity);
Assert.True(item.IsEnabled);
Assert.False(item.IsOffscreen);
Assert.Contains(label, item.Name, StringComparison.OrdinalIgnoreCase);
}
}
/// <summary>About: shows the build version.</summary>
[Fact]
public void About_ShowsTheBuildVersion()