11 Commits
Author SHA1 Message Date
james.maes 96fc48d04a Merge pull request 'ci: first run on ci-workflows v1' (#37) from ci/first-run-v1 into main
windows / windows (push) Successful in 1m1s
build / windows (push) Successful in 1m1s
2026-11-08 23:13:50 +00:00
James MaesandClaude Opus 5.5 23ffa01b16 ci: first run on ci-workflows v1 (native workflows)
windows / windows (push) Successful in 59s
build / windows (push) Successful in 59s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 08:26:23 -06:00
james.maes 3ae4a77e22 Merge pull request 'ci: build on the shared ci-workflows Windows workflow' (#36) from ci/shared-windows into main 2026-11-08 13:49:52 +00:00
James MaesandClaude Opus 5.5 5dcbe6a1cd ci: pin the shared workflow to v1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 07:49:39 -06:00
James MaesandClaude Opus 5.5 cbec0cd623 ci: call the shared workflow from ci-workflows main
windows / windows (push) Successful in 59s
build / windows (push) Successful in 59s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 07:46:01 -06:00
James MaesandClaude Opus 5.5 9c97b06cb5 ci: pack the tag version on vX.Y.Z tags
windows / windows (push) Canceled after 0s
build / windows (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 07:43:19 -06:00
James MaesandClaude Opus 5.5 7d951a618d ci: run the coverage gate as a separate pwsh process
windows / windows (push) Successful in 58s
build / windows (push) Successful in 58s
Assert-Coverage.ps1 reports a shortfall with exit 1, which only stops the
build when the script runs as a native process.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 07:35:34 -06:00
James MaesandClaude Opus 5.5 1abae0aa71 ci: build on the shared ci-workflows Windows workflow
windows / windows (push) Canceled after 0s
build / windows (push) Canceled after 0s
Locked restore, warnings-as-errors build, dotnet format, tests with the 100%
coverage gate and the NuGet pack run on the KOF Windows host runner; v* tags
attach the packages and SHA256SUMS to the Gitea release. Removes the note on
the retired central native verification.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 07:33:17 -06:00
forge-recovery aecd0cfe2d docs(ci): document centralized native verification (#32)
KofTwentyTwo/ci-policy: ci / fork-guard (push) Skipped
KofTwentyTwo/ci-policy: ci / gradle-0 (push) Skipped
KofTwentyTwo/ci-policy: ci / gradle-1 (push) Skipped
KofTwentyTwo/ci-policy: ci / java-docker-2 (push) Skipped
KofTwentyTwo/ci-policy: ci / java-maven-3 (push) Skipped
KofTwentyTwo/ci-policy: ci / manifests-4 (push) Skipped
KofTwentyTwo/ci-policy: ci / node-5 (push) Skipped
KofTwentyTwo/ci-policy: ci / rust-6 (push) Skipped
KofTwentyTwo/ci-policy: ci / rust-7 (push) Skipped
KofTwentyTwo/ci-policy: ci / rust-8 (push) Skipped
KofTwentyTwo/ci-policy: ci / not-enrolled (push) Skipped
KofTwentyTwo/ci-policy: native / fork-deny (push) Skipped
KofTwentyTwo/ci-policy: native / swift-1 (push) Skipped
KofTwentyTwo/ci-policy: native / swift-2 (push) Skipped
KofTwentyTwo/ci-policy: native / swift-3 (push) Skipped
KofTwentyTwo/ci-policy: Shared source and config CI / verify (push) Successful in 21s
KofTwentyTwo/ci-policy: Shared source and config CI / secrets (push) Successful in 24s
KofTwentyTwo/ci-policy: Shared .NET CI / secrets (push) Successful in 31s
KofTwentyTwo/ci-policy: Shared source and config CI / gate (push) Successful in 22s
KofTwentyTwo/ci-policy: ci / source-config-9 (push) Successful in 50s
KofTwentyTwo/ci-policy: ci / ci-result (push) Successful in 8s
KofTwentyTwo/ci-policy: Shared .NET CI / verify (push) Successful in 1m24s
KofTwentyTwo/ci-policy: Shared .NET CI / gate (push) Successful in 18s
KofTwentyTwo/ci-policy: native / dotnet-0 (push) Successful in 1m46s
KofTwentyTwo/ci-policy: native / native-result (push) Successful in 7s
2026-11-01 19:52:24 +00:00
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>
v0.1.0
2026-10-09 14:43:17 -05:00
James MaesandClaude Opus 5.5 83f028f188 AppKit: shared foundation packages for KofTwentyTwo Windows apps
Extracts the app-agnostic plumbing proven in gclo 1.0 into four packages that
every future KofTwentyTwo Windows app builds on:

- KofTwentyTwo.AppKit: AppInfo identity, AppPaths, BuildVersion, crash-safe
  FileActivityLog with retention, LogTail, atomic SettingsStore<T> with
  ShellSettings, Credential Manager secret vault, IUserPrompter seam
- KofTwentyTwo.AppKit.Updates: Velopack startup hook, never-throwing GitHub
  Releases update service with stable/dev channel selection, and the shared
  "check for updates" flow (UpdateCoordinator)
- KofTwentyTwo.AppKit.WinUI / .Wpf: code-built splash overlay, About, live log
  viewer, crash net, theme and window helpers, dialog adapters

The two framework-free packages are held to 100% line coverage (109 tests).
WinUI and WPF sample apps exercise every service and are driven end to end by
12 FlaUI tests. BrandTool generates the vector mark and multi-size .ico.

CI mirrors gclo's gates (zero warnings, coverage, UI tests, format, CodeQL,
dependency review); the release workflow packs, checksums, attests build
provenance, publishes a GitHub release, and pushes to nuget.org.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 07:10:42 -05:00