Conversation
PWagner1
commented
Jun 9, 2026
Contributor
- Canary June 2026 - TBR: 23/06/2026
* 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
* Adds changelog entry for #3517
#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)
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
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.
* Implements #3611
* 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.
Contributor
Author
No, it was the recovered |
* Fix touchscreen DPI scaling artifacts (#2844) * Add changelog for proper Issue
# 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
* Implemented #3657
Reverts #3753, restore corrected workflow
Contributor
Author
|
@Krypton-Suite/reviewers Ready to release tomorrow |
## 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)}} ```
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.