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>
26 lines
833 B
C#
26 lines
833 B
C#
using System.Windows;
|
|
using KofTwentyTwo.AppKit.Logging;
|
|
using KofTwentyTwo.AppKit.Updates;
|
|
using KofTwentyTwo.AppKit.Wpf;
|
|
|
|
namespace AppKit.Sample.Wpf;
|
|
|
|
/// <summary>Entry point: Velopack hooks first, then the WPF application.</summary>
|
|
public static class Program
|
|
{
|
|
/// <summary>The app-wide activity log.</summary>
|
|
internal static IActivityLog Log { get; } = FileActivityLog.ForApp(SampleApp.Info, SampleApp.Paths);
|
|
|
|
[STAThread]
|
|
private static void Main()
|
|
{
|
|
VelopackStartup.Run();
|
|
|
|
var app = new Application { ShutdownMode = ShutdownMode.OnMainWindowClose };
|
|
WpfShell.InstallCrashNet(app, () => Log);
|
|
WpfShell.ApplyTheme(app, SampleApp.SettingsStore.Load().ThemeKind);
|
|
Log.Info($"{SampleApp.Info.DisplayName} (WPF) started.");
|
|
app.Run(new MainWindow());
|
|
}
|
|
}
|