Files
james.maesandClaude Opus 5.5 839fb72bec chore: adopt the KofTwentyTwo standards (#2)
## What

Brings AppKit into conformance with
[KofTwentyTwo/standards](https://github.com/KofTwentyTwo/standards).
Reviewable commit by commit:

| Commit | Change |
| --- | --- |
| build | Quality gate from `configs/dotnet` (analyzers incl. Meziantou,
warnings as errors), `packages.lock.json` per project, locked-mode
restore |
| style | Kingsrook layout and LF line endings, produced mechanically by
`dotnet format` (formatting only) |
| docs | SPDX license header on every C# file |
| refactor | Real code changes: analyzer findings fixed (one type per
file, regex timeouts, async void, …) and header comments on every type
and member |
| ci | Old workflows replaced by callers of the shared standards
workflows (PR gates, security, CodeQL, .NET CI, NuGet release with SBOM
+ attestation + trusted publishing), Scorecard |
| docs | README, CONTRIBUTING (GitHub Flow, DCO, signing), SECURITY,
CODEOWNERS, templates, Dependabot, threat model, ADRs, RELEASING |

Also includes `dev`'s CI fix, so it supersedes #1; the `dev` branch goes
away under GitHub Flow.

## Why

AppKit is the first Product repository to adopt the standards. Static
conformance before: 16 FAIL; after: 0 FAIL, 0 WARN (the remaining
UNKNOWN rows are GitHub settings and rulesets, applied separately).

## How tested

Locally with `CI=true` (lock files enforced): locked restore x64 and
ARM64; zero-warning x64 build; 115 unit tests with 100% line coverage of
`KofTwentyTwo.AppKit` and `KofTwentyTwo.AppKit.Updates`; 12 FlaUI UI
tests (WinUI + WPF samples); `dotnet format --verify-no-changes
--severity warn` clean; pack produces 4 packages + symbols; actionlint,
zizmor (pedantic), gitleaks clean.

The UI tests caught a regression introduced while fixing MA0147 (the WPF
splash stopped dismissing because no UI context existed yet); fixed by
starting the countdown through the dispatcher in both packages.

## Notes

- `ci.yml` and `release.yml` are pinned to KofTwentyTwo/standards#3's
head commit; they are repinned after that PR merges.
- This pull request's new check names become required checks once the
repository's rulesets are updated.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Signed-off-by: James Maes <james@kof22.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 14:43:17 -05:00

47 lines
2.3 KiB
XML

<Window
x:Class="AppKit.Sample.Wpf.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="900"
Height="600"
MinWidth="640"
MinHeight="420">
<Grid x:Name="RootGrid">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Menu>
<MenuItem Header="_File">
<MenuItem Header="E_xit" Click="Exit_Click" />
</MenuItem>
<MenuItem Header="_View">
<MenuItem x:Name="ThemeSystem" Header="System theme" Tag="System" IsCheckable="True" Click="Theme_Click" />
<MenuItem x:Name="ThemeLight" Header="Light theme" Tag="Light" IsCheckable="True" Click="Theme_Click" />
<MenuItem x:Name="ThemeDark" Header="Dark theme" Tag="Dark" IsCheckable="True" Click="Theme_Click" />
<Separator />
<MenuItem x:Name="SplashToggle" Header="Show splash at startup" IsCheckable="True" Click="Splash_Click" />
</MenuItem>
<MenuItem Header="_Help">
<MenuItem x:Name="CheckForUpdatesMenuItem" Header="Check for _updates" Click="CheckForUpdates_Click" />
<MenuItem x:Name="ActivityLogMenuItem" Header="Activity _log" Click="ActivityLog_Click" />
<Separator />
<MenuItem x:Name="AboutMenuItem" Header="_About AppKit Sample" Click="About_Click" />
</MenuItem>
</Menu>
<StackPanel Grid.Row="1" Margin="32" MaxWidth="560" HorizontalAlignment="Left">
<TextBlock x:Name="GreetingText" FontSize="28" FontWeight="SemiBold" />
<TextBlock Margin="0,12,0,0" TextWrapping="Wrap" Text="Each control below exercises one AppKit service. Settings persist to %LOCALAPPDATA%\appkit-sample\settings.json; the log lives beside it." />
<StackPanel Margin="0,12,0,0" Orientation="Horizontal">
<Button Content="Write a log entry" Click="LogInfo_Click" />
<Button Margin="8,0,0,0" Content="Log a handled error" Click="LogError_Click" />
<Button x:Name="ThrowButton" Margin="8,0,0,0" Content="Throw unhandled" Click="Throw_Click" />
</StackPanel>
<TextBlock x:Name="StatusText" Margin="0,12,0,0" Opacity="0.7" />
</StackPanel>
</Grid>
</Window>