WIP: feat: complete AppKit foundation and release readiness #25

Draft
KofTwentyTwo wants to merge 12 commits from docs/appkit-release-0.1.0-handoff into main
pull from: docs/appkit-release-0.1.0-handoff
12 Commits
Author SHA1 Message Date
james.maesandCodex 09f9e0777e fix(ci): analyze PowerShell files individually
Avoid the pinned analyzer recursive-analysis crash while preserving the full configured rules, all build scripts and failure on every finding or exception.

Refs #26

Co-Authored-By: Codex (GPT-6) <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-10 17:54:30 -05:00
james.maesandCodex bbf7efdba8 fix(signing): reject malformed source executables
Validate owned and preserved PE headers before catalog writes. Keep non-PE package formats and unrelated excluded files outside this check. Replace initial text fixtures with real PE payloads and retain distinct culture-specific bytes.

Validation: 40 signing/Azure/coverage boundary tests, changed-file PowerShell analysis, hooks and shared-policy Markdown. Exact earlier accepted malformed dependency now fails before catalog/manifest output. Real Azure signing and hosted rollout remain unproved.

Refs: KofTwentyTwo/AppKit#24, KofTwentyTwo/AppKit#12, KofTwentyTwo/AppKit#20

Co-Authored-By: Codex (GPT-6) <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-10 17:22:07 -05:00
james.maesandCodex 1461389575 fix(releases): require dependencies in final archives
Reject missing third-party payloads in portable, full update and CLI archives. Preserve exact dependency bytes and Velopack default helper exclusions. Document observed gclo signing, published standards 1.0.0 limits and the remaining AppKit identity/signature proof.

Validation: 36 AppKit script tests, PSScriptAnalyzer, file hygiene and secret hooks, signing documentation lint with shared standards rules.

Refs: #12, #22

Co-Authored-By: Codex (GPT-6) <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-10 16:31:55 -05:00
james.maesandCodex 8cbd3d1154 fix(samples): keep Velopack startup visible to its packer
Call VelopackApp.Build().Run() directly in both sample entry points and the
README integration example. The packer cannot recognize the indirect wrapper.
Retain VelopackStartup for compatibility and document the static-check limit.

Validation: zero-warning x64 solution build, solution formatting, fourteen UI
tests across both samples. Real starter packing accepts the direct call.

Refs: #11, #20, #21
Co-Authored-By: Codex (GPT-6) <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-10 15:50:01 -05:00
james.maesandCodex a8d9cf7efe feat(signing): prepare verified Azure release signing and block unsigned publication
Add read-only deployed-profile discovery, additive repository-scoped OIDC and profile signer setup, local SignTool integration, final-package verification, and 27 signing/admin regression checks. Keep publication blocked until the prepared shared builder is published and actual Azure values and signing evidence are established.

Co-Authored-By: Codex (GPT-6) <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-10 14:34:20 -05:00
james.maesandCodex ed19eaf69e test: audit library mutations before release publication
Pin repository-local Stryker.NET, run both full library projects, retain
reports from trusted Windows jobs and rerun mutation analysis before releases.
Strengthen assertions for settings, logging, identity, secrets and updates,
including genuine asynchronous UI and backend context affinity.

Record all remaining survivors and native-boundary limitations. The complete
unit suite passes 161 tests and retains 100% core/updates line coverage.
Mutation scores improve to 96.27% core and 89.61% updates.

Refs #4, #20

Co-Authored-By: Codex (GPT-6) <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-10 13:50:05 -05:00
james.maesandCodex b2f0686ac0 fix(logging): keep truncation notices visible while following
Show the bounded-tail notice in both viewer toolbars and scroll the WPF
viewer after layout so its newest entry is visible on first open.
Exercise huge logs through both sample apps and use physical coordinates
for synchronous UI tests on scaled desktops.

Refs #18, #20

Co-Authored-By: Codex (GPT-6) <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-10 13:26:27 -05:00
james.maesandCodex 7f70c31517 feat(logging): preserve structured templates, fields, and scopes
Adapt existing IActivityLog sinks to standard ILogger without adding interface
requirements. Store original templates, rendered messages, typed JSON scalar
fields, event identity and async scopes. Preserve full exception text, daily
retention, failure containment, and thread-safe writes.

Migrate update events, framework crash nets and samples to source-generated
logging. Pin Microsoft.Extensions.Logging.Abstractions 10.0.12 (MIT) rather
than implementing template parsing. Advance the unreleased minor to 0.2.0
and document legacy API compatibility and explicit scalar/JSON value policy.

Validation: 146 unit tests, 12 sample UI tests, 100% core/updates coverage,
zero-warning build, formatting and hooks passed. Dependency scan reported
no known vulnerabilities. Starter migration and public rollout remain #5.

Refs: #5, #8
Co-Authored-By: Codex (GPT-6) <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-10 13:07:45 -05:00
james.maesandCodex 8768281f69 fix(logging): bound log viewer reads and single-line allocations
Seek directly to at most 1 MiB of trailing input plus a four-byte BOM header.
Preserve UTF-8 and BOM-marked UTF-16/UTF-32 code-unit alignment, cap queue
preallocation, and disclose omitted input in both framework log viewers.
Keep existing read/display signatures available for binary compatibility.

Validation: 130 unit tests and 12 sample UI tests pass; core and updates
retain 100% line coverage. Zero-warning solution build and full formatting
verification pass (workspace-loading warnings remain). Regression tests cover
128 MiB input, a 4 MiB single line, byte limits and all supported encodings.

Refs: #18
Co-Authored-By: Codex (GPT-6) <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-10 12:58:47 -05:00
james.maesandCodex 36886cbaae ci: enforce release, script, and review quality gates
Pin reusable workflows to published standards 0.1.2. Require tagged commits
on main, rerun the main quality and security gates before release, and fail
preflight when NuGet publishing configuration is missing.

Add pinned pre-commit hooks, JavaScript lint and dependency verification,
PowerShell analysis and coverage-gate regression tests, and a trusted
current-commit review-record check. Document the single-maintainer limitations
and the unfinished OpenSSF assessment without claiming certification.

Validation: seven Node and four Pester tests passed, lint and workflow checks
passed, and 83 npm registry signatures plus 20 attestations verified. Full
AppKit build, unit coverage and UI gates passed. Live check enforcement and
owner attestations remain tracked follow-up work.

Refs: #4, #6, #7, #8, #13, #15, #18
Co-Authored-By: Codex (GPT-6) <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-10 12:50:05 -05:00
james.maesandCodex 4cea46bb1d test: exercise generated inputs and foreground sample menus
Add four FsCheck properties with 500 cases each for settings and log input
handling. Foreground the intended UI sample before invoking its menu so mouse
fallback reaches the correct window. Normalize dependency lock file endings.

Validation: 119 unit tests and 12 UI tests passed; core and updates retain
100% line coverage. Full solution build passed with zero warnings.

Refs: #14, #20
Co-Authored-By: Codex (GPT-6) <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-10 12:49:46 -05:00
james.maesandCodex d7533375de docs(repo): add contributor guide and release history
Record the published 0.1.0 release and advance the unreleased development
version. Preserve the contributor guide created during repository recovery.

Co-Authored-By: Codex (GPT-6) <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-10 12:49:29 -05:00