Skip to content

* Canary June 2026#3734

Merged
PWagner1 merged 524 commits into
canaryfrom
alpha
Jun 22, 2026
Merged

* Canary June 2026#3734
PWagner1 merged 524 commits into
canaryfrom
alpha

Conversation

@PWagner1

@PWagner1 PWagner1 commented Jun 9, 2026

Copy link
Copy Markdown
Contributor
  • Canary June 2026 - TBR: 23/06/2026

PWagner1 and others added 30 commits June 7, 2026 08:10
* Moved affected files to 'Online Help' repo
…S 2022/6 (#3491)

* Fix `rebuild-build-nightly.cmd` script for improved path handling and user prompts

## Summary
- Added `setlocal EnableExtensions` for better script handling.
- Introduced `SCRIPT_DIR` variable to dynamically reference the script's directory.
- Updated MSBuild command to use the new `SCRIPT_DIR` variable for log file paths.
- Improved user input handling for task continuation with case-insensitive checks.

## Changes
- Enhanced path management for log files.
- Streamlined user prompt logic for clarity and efficiency.

* Fix VS 2022 nightly rebuild
* Fix VS2022 builds targeting .NET 11

* Fix VS2022 IDE net11 targeting
* Limit VS2022 target frameworks to net9

* Fix current build target selection and clean guards
#3527)

…GenerateDepsFile

# Fix CI build failure: ensure shared output directory exists before
GenerateDepsFile

## Summary

- Fixes `DirectoryNotFoundException` during `GenerateDepsFile` when CI
builds modern target frameworks (`net9.0-windows`, `net10.0-windows`,
`net11.0-windows`).
- Adds a shared MSBuild target in `Directory.Build.targets` so all
Krypton component projects create `$(OutputPath)` before
`GenerateBuildDependencyFile` runs.
- Resolves
[#3493](#3493).

## Problem

The **Build** workflow fails on `Rebuild` with errors similar to:

```text
System.IO.DirectoryNotFoundException: Could not find a part of the path
'D:\a\Standard-Toolkit\Standard-Toolkit\Bin\Release\net9.0-windows'
```

The failure occurs in the `GenerateDepsFile` task (via
`GenerateBuildDependencyFile`) for multiple modern TFMs.

### Root cause

Krypton component projects use a **shared per-TFM output directory**
(`UseCommonOutputDirectory=true`) under:

- `Bin\<Configuration>\<TargetFramework>\` (legacy), or
- `artifacts\bin\<Configuration>\<TargetFramework>\` when
`UseArtifactsOutput=true` (CI).

CI invokes `msbuild ... nightly.proj /t:Rebuild`, which runs **Clean**
before **Build**. Clean removes those shared folders. On the subsequent
build, `GenerateDepsFile` can run **before** compile/copy recreates the
output directory, so writing `*.deps.json` fails.

## Solution

Add `EnsureOutputDirectoryExists` to `Source/Krypton
Components/Directory.Build.targets`:

```xml
<Target Name="EnsureOutputDirectoryExists" BeforeTargets="GenerateBuildDependencyFile" Condition="'$(TargetFramework)' != ''">
  <MakeDir Directories="$(OutputPath)" Condition="!Exists('$(OutputPath)')" />
</Target>
```

This target:

- Runs only for inner (per-TFM) builds, not the outer cross-targeting
project.
- Uses the same `$(OutputPath)` already set from
`$(KryptonBuildOutputRoot)$(Configuration)\$(TargetFramework)\`.
- Applies to **all** projects under `Source/Krypton Components/`, not
only `Krypton.Toolkit`.

Placing the fix in `Directory.Build.targets` avoids duplicating the
target across individual `.csproj` files and keeps behavior aligned with
the shared output layout.

## Files changed

| File | Change |
|------|--------|
| `Source/Krypton Components/Directory.Build.targets` | Add
`EnsureOutputDirectoryExists` MSBuild target |

## Test plan

- [ ] Local rebuild of a single modern TFM: ```cmd cd Source\Krypton
Components\Krypton.Toolkit dotnet build "Krypton.Toolkit 2022.csproj" -c
Release -f net9.0-windows -p:TFMs=all -t:Rebuild ```
- [ ] Local orchestrated rebuild (matches CI `Rebuild` path): ```cmd
msbuild /m Scripts\Build\nightly.proj /t:Rebuild /restore
/p:Configuration=Release /p:Platform="Any CPU"
/p:UseArtifactsOutput=true ```
- [ ] Confirm **Build** workflow passes on a PR (all TFMs including
`net9.0-windows`, `net10.0-windows`, `net11.0-windows`).
- [ ] Confirm `Bin\Release\<tfm>\` or `artifacts\bin\Release\<tfm>\`
contains expected DLLs and `.deps.json` after build.

## Notes

- No breaking API or behavioral changes for consumers; build-time only.
- Changelog entry for
[#3493](#3493)
already exists in the current nightly section.
* Ensures a clean build
## Summary

- Scope the **Auto-label PR backup workflow** so it only fires for pull requests that **merge into `alpha-backup`**, using `pull_request.branches`.
- Further restrict the job with **`if: github.head_ref == 'alpha'`** so only PRs whose **source branch is `alpha`** are considered (the usual alpha → alpha-backup backup sync path).
- Update the workflow header comment to describe that **alpha → alpha-backup** routing; existing behavior is unchanged: when `.github/workflows/alpha-backup-sync.yml` is among the changed files, the workflow adds the `chore:automatic-backup` label if it is not already present.

## Rationale

Previously, the workflow ran on every eligible `pull_request` event repository-wide. Restricting **base** and **head** avoids unnecessary runs and mis-labeling on unrelated PRs while keeping the automatic backup label aligned with the intended sync workflow.

## Test plan

- [ ] Confirm repository label **`chore:automatic-backup`** exists (workflow logs a warning and does not fail if the label is missing).
- [ ] Open or update a PR **from `alpha` into `alpha-backup`** that touches `.github/workflows/alpha-backup-sync.yml`; verify the workflow runs and the label is applied (or noop if already present).
- [ ] Open a PR **into another base branch** with the same workflow file change; verify this workflow either does not trigger or the job is skipped (`branches` filter).
- [ ] Open a PR **into `alpha-backup` from a branch other than `alpha`** that changes `alpha-backup-sync.yml`; verify the job is skipped due to **`github.head_ref == 'alpha'`**.

## Notes

- **`pull_request.branches`** filters the **base** branch only; the **head** branch check requires an explicit **`if`** on the job.
- Fork PRs still expose `github.head_ref` as the contributor’s branch name; if backup PRs are always from the same repo’s `alpha` branch, this matches the intended use. If you rely on fork PRs with a differently named head branch, adjust the condition accordingly.
3493-V110 Restore VS2022 TFM filtering and align TestForm CI
Improve TestForm start screen layout
* Fix disposed docking space load handling (#3227)
* Adds changelog entry for #3514 (V110)
Fix net472 TestForm startup resource dependency

Ensures the .NET Framework preserialized resource dependency copy and binding redirect logic uses resolved `ReferenceCopyLocalPaths`, so `System.Resources.Extensions` and related runtime DLLs are present for `TestForm` startup.
Fix themed scrollbar synchronization and painting

Respect KryptonListBox instance scrollbar settings and keep the themed ListBox scrollbars synchronized with the accepted native scroll position.

Use the actual DPI-scaled scrollbar paint bounds instead of fixed 15px interiors so dragging does not leave stale edge pixels.
Add missing toolbox bitmap images

Refs #3447. Adds toolbox bitmap images for KryptonDataGridViewImageColumn, KryptonDataGridViewRatingColumn, KryptonThemeComboBox, and KryptonThemeListBox, and wires the related control attributes.
Fix regressions across local build system
* Update changelog to include #3566 & #3550
Fix local VS build fallback follow-up
* Reintroduces fixes from PR #3543

Co-authored-by: tobitege <10787084+tobitege@users.noreply.github.com>
* Restores fixes from PR #3558

Co-authored-by: tobitege <10787084+tobitege@users.noreply.github.com>
* Fix restored build scripts

The alpha restore reintroduced batch script paths that depended on the caller's working directory. That made run.cmd option a fail with MSB1009 because MSBuild received nightly.proj as a bare relative path.

Anchor rebuild, solution, and debug MSBuild project paths to the script directory across the VS2022, Current, and Build script trees. Also restore the VS2022 nightly script to the VS2022 MSBuild discovery paths instead of VS 2026.

Validation: git diff --check passed. Static script scan found no remaining MSBuild .proj calls without a script-directory-qualified path and no VS2022 scripts pointing at VS 2026.

* Document build script guidance updates

Update AGENTS.md with concrete examples for tool invocation mistakes seen while preparing the build-script fixup. The notes now prefer PowerShell for normal agent shell calls and reserve cmd.exe for batch-script behavior.

Refresh the build command section so the examples match PowerShell invocation, cover both VS2022 and VS2026 script trees, and describe the actual output and target-framework selection rules.

Update the changelog entry for #3493 to mention the AGENTS.md instruction update.

Validation: git diff --check passed.

* Reduce routine check noise in docs

Add explicit guidance that commit messages and PR descriptions should not include routine check summaries unless they add useful context or were specifically requested.
Fix KryptonContextMenu disposal leaks (#3598)

Fixes #3598 for V110

Dispose the navigator context button's owned KryptonContextMenu so FocusLostMenuHelper deregisters it.
Dispose owned context menus in KryptonColorButton, KryptonPropertyGrid, KryptonGallery, and ribbon color button variants.
Dispose docking workspace drop-down and transient context menus on detach, close, and dispose.
* Use workflow dispatch until it hits master
Followup fix for #3682 (changelog entry already exists)

- Fix themed KryptonDataGridView horizontal scrollbar metrics when
columns are resized.
- Avoid full-grid invalidation when temporarily toggling double
buffering for column resize feedback.
- Keep detached horizontal scrollbar sync aligned with
`HorizontalScrollingOffset` so thumb release does not snap away from the
edge.
@PWagner1

PWagner1 commented Jun 9, 2026

Copy link
Copy Markdown
Contributor Author

Replace Canary with current alpha once, this is the pre-recovery version still?

No, it was the recovered master branch. The same happens with master & gold. Is it better to create the gold, canary & alpha branches from the current master then copy everything over from the 'current' alpha into the 'new' alpha (not purge etc)?

tobitege and others added 3 commits June 9, 2026 17:41
PWagner1 and others added 14 commits June 12, 2026 08:09
* `alpha` should be ahead of `master`
# Fix custom palette "Not Implemented" prompts in designer (#3741)

## Summary

- Fixes [#3741](#3741): assigning `KryptonManager.GlobalCustomPalette` in the designer triggered `DebugTools.NotImplemented` dialogs for grid palette lookups using `PaletteState.Tracking` or `PaletteState.ContextNormal`.
- Maps grid background `Tracking` and `ContextNormal` to `StateNormal.Background` in `KryptonCustomPaletteBase.GetPaletteBackGridBackground` (grid background has no dedicated tracking/context entries, consistent with grid data cells and builtin palettes).
- Extends `PaletteRedirectGrids` inheritance routing so `ContextNormal` falls through with `Normal` for back, border, and content, and `Tracking` includes `GridBackground*` styles mapped to `StateNormal.Background`.

## Test plan

- [ ] Add a `KryptonCustomPaletteBase` and `KryptonManager` to a form; set `GlobalCustomPalette` — confirm no "Not Implemented" dialog appears in the designer.
- [ ] Open a form with `KryptonDataGridView` under a global custom palette; hover column/row headers and confirm no prompts or visual regressions.
- [ ] Open `TreeViewExample` (or another TreeGrid scenario) with a global custom palette and confirm grid/content rendering is unchanged.
* Various CI Fixes
* Implemented #3657
…ted (#3745)

# Fix custom palette "Not Implemented" prompts in designer (#3741)

## Summary

- Fixes
[#3741](#3741):
assigning `KryptonManager.GlobalCustomPalette` in the designer triggered
`DebugTools.NotImplemented` dialogs for grid palette lookups using
`PaletteState.Tracking` or `PaletteState.ContextNormal`.
- Maps grid background `Tracking` and `ContextNormal` to
`StateNormal.Background` in
`KryptonCustomPaletteBase.GetPaletteBackGridBackground` (grid background
has no dedicated tracking/context entries, consistent with grid data
cells and builtin palettes).
- Extends `PaletteRedirectGrids` inheritance routing so `ContextNormal`
falls through with `Normal` for back, border, and content, and
`Tracking` includes `GridBackground*` styles mapped to
`StateNormal.Background`.

## Test plan

- [ ] Add a `KryptonCustomPaletteBase` and `KryptonManager` to a form;
set `GlobalCustomPalette` — confirm no "Not Implemented" dialog appears
in the designer.
- [ ] Open a form with `KryptonDataGridView` under a global custom
palette; hover column/row headers and confirm no prompts or visual
regressions.
- [ ] Open `TreeViewExample` (or another TreeGrid scenario) with a
global custom palette and confirm grid/content rendering is unchanged.
* Various CI Fixes
github-actions Bot and others added 4 commits June 15, 2026 09:42
Automated PR: copies only `.github/` from `master` onto this branch.

Part of branch policy
([#3610](#3610)).
Do not add product code in this PR.

*Triggered by Sync .github from master workflow.*
@PWagner1

Copy link
Copy Markdown
Contributor Author

@Krypton-Suite/reviewers

Ready to release tomorrow

PWagner1 and others added 2 commits June 21, 2026 15:32
## Summary

Fixes [#3751](#3751) — the `Krypton.Standard.Toolkit.Nightly` NuGet package was never produced during nightly (or canary) CI runs, so the workflow had nothing to push to nuget.org.

`KryptonPack` in `Scripts/Build/Krypton.Orchestration.targets` only packed the five individual component packages. The aggregate `Krypton.Standard.Toolkit` project was removed from orchestration in [#3594](#3594) to fix local build regressions; nightly and canary workflows never regained that step (unlike stable Release, which still packs the aggregate via `PackLite` in `build.proj`).

This change restores build and pack for the aggregate package and its satellite assemblies, keeping those steps **sequential** to avoid shared-output races on `Bin/` / `artifacts/bin/`.

## Changes

- **`Scripts/Build/Krypton.Orchestration.targets`**
  - **`KryptonBuild`**: after the five core libraries, sequentially build `Krypton.Toolkit.JumpList`, `Krypton.Navigator.Utilities`, and `Krypton.Toolkit.Utilities`.
  - **`KryptonPack`**: after the five core packages are packed, build `JumpList` (bundled in the aggregate package but not a project reference) and pack `Krypton.Standard.Toolkit` last.
- **`Documents/Changelog/Changelog.md`**: changelog entry for #3751.

## Packages affected

| Channel | Package ID |
|---------|------------|
| Nightly (alpha) | `Krypton.Standard.Toolkit.Nightly` |
| Canary | `Krypton.Standard.Toolkit.Canary` |

Individual component packages (`Krypton.Toolkit.Nightly`, etc.) are unchanged.

## Test plan

- [ ] Merge to `alpha` (nightly workflow checks out `alpha`).
- [ ] Trigger **Nightly Release** via `workflow_dispatch` (or wait for the scheduled run after a commit in the last 24 hours).
- [ ] Confirm **Pack Nightly** produces `artifacts/packages/Nightly/Krypton.Standard.Toolkit.Nightly.*.nupkg` (or `Bin/Packages/Nightly/` without `UseArtifactsOutput`).
- [ ] Confirm package size is ≥ 10 MiB (passes `StandardToolkitNupkgGuard.ps1`).
- [ ] Confirm **Push NuGet Packages** logs a successful push for `Krypton.Standard.Toolkit.Nightly`.
- [ ] Optional: verify `Krypton.Standard.Toolkit.Canary` on the canary workflow after merge to `canary`.

### Local verification (optional)

```powershell
msbuild /m "Scripts/Build/nightly.proj" /t:Pack /p:Configuration=Nightly /p:UseArtifactsOutput=true
Get-ChildItem artifacts/packages/Nightly/Krypton.Standard.Toolkit.Nightly*.nupkg |
  Select-Object Name, @{N='MiB';E={[math]::Round($_.Length/1MB,2)}}
```
…3760)

## Summary

Fixes
[#3751](#3751) —
the `Krypton.Standard.Toolkit.Nightly` NuGet package was never produced
during nightly (or canary) CI runs, so the workflow had nothing to push
to nuget.org.

`KryptonPack` in `Scripts/Build/Krypton.Orchestration.targets` only
packed the five individual component packages. The aggregate
`Krypton.Standard.Toolkit` project was removed from orchestration in
[#3594](#3594) to
fix local build regressions; nightly and canary workflows never regained
that step (unlike stable Release, which still packs the aggregate via
`PackLite` in `build.proj`).

This change restores build and pack for the aggregate package and its
satellite assemblies, keeping those steps **sequential** to avoid
shared-output races on `Bin/` / `artifacts/bin/`.

## Changes

- **`Scripts/Build/Krypton.Orchestration.targets`**
- **`KryptonBuild`**: after the five core libraries, sequentially build
`Krypton.Toolkit.JumpList`, `Krypton.Navigator.Utilities`, and
`Krypton.Toolkit.Utilities`.
- **`KryptonPack`**: after the five core packages are packed, build
`JumpList` (bundled in the aggregate package but not a project
reference) and pack `Krypton.Standard.Toolkit` last.
- **`Documents/Changelog/Changelog.md`**: changelog entry for #3751.

## Packages affected

| Channel | Package ID |
|---------|------------|
| Nightly (alpha) | `Krypton.Standard.Toolkit.Nightly` | | Canary |
`Krypton.Standard.Toolkit.Canary` |

Individual component packages (`Krypton.Toolkit.Nightly`, etc.) are
unchanged.

## Test plan

- [ ] Merge to `alpha` (nightly workflow checks out `alpha`).
- [ ] Trigger **Nightly Release** via `workflow_dispatch` (or wait for
the scheduled run after a commit in the last 24 hours).
- [ ] Confirm **Pack Nightly** produces
`artifacts/packages/Nightly/Krypton.Standard.Toolkit.Nightly.*.nupkg`
(or `Bin/Packages/Nightly/` without `UseArtifactsOutput`).
- [ ] Confirm package size is ≥ 10 MiB (passes
`StandardToolkitNupkgGuard.ps1`).
- [ ] Confirm **Push NuGet Packages** logs a successful push for
`Krypton.Standard.Toolkit.Nightly`.
- [ ] Optional: verify `Krypton.Standard.Toolkit.Canary` on the canary
workflow after merge to `canary`.

### Local verification (optional)

```powershell
msbuild /m "Scripts/Build/nightly.proj" /t:Pack /p:Configuration=Nightly /p:UseArtifactsOutput=true
Get-ChildItem artifacts/packages/Nightly/Krypton.Standard.Toolkit.Nightly*.nupkg |
  Select-Object Name, @{N='MiB';E={[math]::Round($_.Length/1MB,2)}}
```
@PWagner1 PWagner1 merged commit bbf2839 into canary Jun 22, 2026
12 of 13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

version:110 All things to do with V110.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants