Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
524 commits
Select commit Hold shift + click to select a range
505590d
* Remove documentation files (#3495)
PWagner1 May 23, 2026
987c39f
3490-fix-nightly-rebuild Fix `rebuild-build-nightly.cmd` script for V…
tobitege May 24, 2026
11b5753
3493-vs2022-skip-sdk11-V110 Fix VS2022 builds targeting .NET 11 (#3494)
tobitege May 24, 2026
aa3fc4d
3493-V110 Limit VS2022/26 target frameworks to supported ones (#3501)
tobitege May 24, 2026
412a901
* Catchup 24/05/2026 (#3509)
PWagner1 May 24, 2026
fc49465
* Catchup 26/05/2026 (#3523)
PWagner1 May 26, 2026
690163b
* Add VISX package for item/project templates (#3526)
PWagner1 May 26, 2026
92bd8a0
* Fix CI build failure: ensure shared output directory exists before …
PWagner1 May 26, 2026
582ba16
* Ensures a clean build (#3528)
PWagner1 May 26, 2026
2edf51d
* Catchup 26/05/2026 (#3532)
PWagner1 May 26, 2026
5a341ef
* Scope the **Auto-label PR backup workflow**
PWagner1 May 26, 2026
de77a26
3493-V110-fix-followup (#3538)
tobitege May 27, 2026
1e79a41
TestForm layout sizing fixes-V110 (#3540)
tobitege May 28, 2026
72d430e
3227-alpha-Docking layout fix (#3543)
tobitege May 28, 2026
273809c
* Adds changelog entry for #3514 (V110) (#3549)
PWagner1 May 28, 2026
7a123ed
* Catchup 28/05/2026 (#3553)
PWagner1 May 28, 2026
9656789
3561-V110-Fix net472 TestForm startup resource dependency (#3560)
tobitege May 28, 2026
41bcb69
2926-V110-Fix themed scrollbar sync and painting (#3558)
tobitege May 28, 2026
5af70d4
* Catchup 28/05/2026 - ii (#3564)
PWagner1 May 28, 2026
c023589
3447-V110-Add toolbox bitmaps (#3568)
tobitege May 29, 2026
90372e3
* Catchup - 29/05/2026 (#3576)
PWagner1 May 29, 2026
181a5d5
3493-V110-Regression-Build-Fixes (#3579)
tobitege May 29, 2026
b098197
* Changelog entries (#3582)
PWagner1 May 29, 2026
929673d
3493-V110-Build fix followup (#3594)
tobitege May 30, 2026
7442c29
* Fix disposed docking space load handling (#3600)
PWagner1 May 30, 2026
6853776
* Really fix themed scrollbars part of KryptonListBox (#3601)
PWagner1 May 30, 2026
1e6e1f1
3493-V110-Build system fixup after restore (#3608)
tobitege May 31, 2026
a3c1af6
3598-V110-Fix KryptonContextMenu disposal leaks (#3612)
tobitege May 31, 2026
c216ca0
* Badges for workflows (#3615)
PWagner1 May 31, 2026
4663510
* Implement a automated backup system
PWagner1 May 30, 2026
b78ef6b
* Improvements
PWagner1 May 30, 2026
7aa58a4
* More improvements
PWagner1 May 30, 2026
0a8458a
Update repo-mirror.yml
PWagner1 May 30, 2026
ef0bea5
Update repo-mirror.yml
PWagner1 May 30, 2026
0f6a030
Update repo-mirror.yml
PWagner1 May 31, 2026
7437829
* Remove test branch
PWagner1 May 31, 2026
b58551f
* Include the `alpha-backup` branch
PWagner1 May 31, 2026
c603cb5
* V110 Fix stable workflow for .net 11 (#3629)
tobitege May 31, 2026
b5091ef
2894-V110 Several theme fixes (#3602)
tobitege May 31, 2026
e9ce399
* `KryptonComboBoxUserControl` uses `VisualPopup` as a general `UserC…
PWagner1 May 31, 2026
8cecd15
* Alpha Backup Synchronisation workflow fails to run (#3617)
PWagner1 May 31, 2026
8884fbd
3181-V110-RetroThemes (#3596)
tobitege Jun 1, 2026
7ca0974
397-V110-Fix normal context menu palette colours (#3628)
tobitege Jun 1, 2026
0dce728
1929-V110-Fix folder browser dialog drawing (#3625)
tobitege Jun 1, 2026
e9f3bce
1976-V110-Fix MenuItem theme settings (#3626)
tobitege Jun 1, 2026
f14ce6d
3580-V110-Fix docked header autosizing (#3631)
tobitege Jun 1, 2026
0a5b3a1
* Auto complete issues (V110) (#3627)
PWagner1 Jun 1, 2026
364d80f
* Canary LTS Release workflow fails (V110) (#3619)
PWagner1 Jun 1, 2026
411e8de
3580-V110-followup-fix (#3634)
tobitege Jun 1, 2026
ad457dd
* Improve 'Nightly' Release Workflow (#3637)
PWagner1 Jun 1, 2026
754dc42
* Harden workflows: branch policy and `.github` sync from master (#3638)
PWagner1 Jun 1, 2026
853f925
3640-V110-Fix retro button image scaling (#3647)
tobitege Jun 1, 2026
481d535
3640-v110-Retro theme fixes (Ribbon) (#3650)
tobitege Jun 2, 2026
35f05c0
2862-V110-VisualForm flicker fix in .NET10 (#3655)
tobitege Jun 2, 2026
b54d296
3653-V110-TestForm resizing fixes (#3654)
tobitege Jun 2, 2026
6742858
2926-V110-Scrollbar display fix followup (#3651)
tobitege Jun 2, 2026
1ae290e
* KryptonDataGridView external corner rounding (#3614)
PWagner1 Jun 2, 2026
9712c16
3658-v110-Add accessibility properties across controls (#3659)
tobitege Jun 3, 2026
81f13c3
#3667-V110-Fix WebView2 palette recursion (#3668)
tobitege Jun 3, 2026
adb9a40
Merge pull request #2945 from Krypton-Suite/2944-bug-messagebox-sizin…
PWagner1 Jan 31, 2026
1b941f6
* Move `KryptonToastNotification` feature to `Krypton.Utilities`
PWagner1 Jan 5, 2026
33c0b3b
* Move the public facing version of KryptonExceptionDialog to Krypton…
PWagner1 Dec 20, 2025
1ca0027
* Add a file system list view
PWagner1 Dec 13, 2025
1d9d45e
* `KryptonProgressBar` - Three Colour States
PWagner1 Jan 16, 2026
765cfe7
* Add Badge Support for KryptonButton and KryptonCheckButton (Notific…
PWagner1 Dec 24, 2025
ad45417
* `KryptonPrintPreviewDialog` - Part of #2658
PWagner1 Jan 12, 2026
b428272
* Move `KryptonToastNotification` feature to `Krypton.Utilities`
PWagner1 Jan 5, 2026
499f9bc
* Move `KryptonCommandLink` buttons to `Krypton.Utilities`
PWagner1 Jan 9, 2026
3bc094f
* Move `KryptonCommandLink` buttons to `Krypton.Utilities`
PWagner1 Jan 9, 2026
d5ddd00
* Move `KryptonCommandLink` buttons to `Krypton.Utilities`
PWagner1 Jan 9, 2026
07a92c7
* Bug reporting tool
PWagner1 Dec 17, 2025
06132ce
* A `KryptonSearchBox` control
PWagner1 Dec 2, 2025
08ad916
* Bug reporting tool
PWagner1 Dec 17, 2025
7e076a8
Fix recent document view draw name
tobitege Jun 7, 2026
7debb74
* Detachable Ribbons
PWagner1 Jan 19, 2026
4904a8c
2570-V110-Added-Tab-scrolling-with-mouse-over-Ribbon's-GroupsArea-Upd…
lesandrog Dec 19, 2025
f08c8b3
* Implements All-in-One NuGet (#2657)
PWagner1 Nov 27, 2025
e216e76
* Add a 'Countdown' button
PWagner1 Jan 8, 2026
768544f
* Docking not working correctly
PWagner1 Jan 29, 2026
0555cf1
* RTL underpinnings for `VisualSimpleBase` controls
PWagner1 Jan 14, 2026
452ea1b
* Does Krypton provide the correct UIA providers for the controls it …
PWagner1 Jan 9, 2026
5727643
* `KryptonHelpProvider` - Part of #2658
PWagner1 Dec 21, 2025
a597aab
* Ribbon Notification Banners
PWagner1 Jan 7, 2026
dc69e98
* Taskbar Thumbnail Button support
PWagner1 Jan 24, 2026
e4b5eca
* `KryptonProgressBar` - Three Colour States
PWagner1 Jan 16, 2026
fd888dd
* `KryptonHScrollBar` & `KryptonVScrollBar` - Part of #2658
PWagner1 Jan 18, 2026
4d08c23
* Native support for Font Awesome
PWagner1 Dec 28, 2025
3e517cd
* Commit
PWagner1 Feb 26, 2020
2eadb00
* Add Badge Support for KryptonButton and KryptonCheckButton (Notific…
PWagner1 Dec 24, 2025
32b3fe0
* Floating Window is Empty - V110
PWagner1 Jan 2, 2026
5c40e48
* Fix long names
PWagner1 May 17, 2024
f607abf
* Tests
PWagner1 Dec 28, 2025
8b54f10
* Jump list support
PWagner1 Jan 14, 2026
2d0c867
* Added example
PWagner1 Dec 22, 2025
ee512f8
* Tests
PWagner1 Jan 3, 2026
5b74711
* Controlbox Touchscreen support
PWagner1 Jan 26, 2026
182187c
* Implement #1236
PWagner1 Oct 27, 2024
1bd0684
2641-V110-MDI-Child-Windows-do-not-react-when-minimized
giduac Nov 25, 2025
39fc68b
* `KryptonBindingNavigator` - Part of #2658
PWagner1 Dec 21, 2025
d074b00
* Tests
PWagner1 Jan 3, 2026
814a6eb
* Textbox validation
PWagner1 Dec 27, 2025
5b72209
* Commit
PWagner1 Feb 26, 2020
fb2678c
* KComboBox's should follow the DateTimePicker layout(s)
PWagner1 Jan 7, 2026
cf76017
* `KryptonNotifyIcon` - Part of #2658
PWagner1 Jan 8, 2026
f800cc1
* Fixes
PWagner1 Jan 2, 2026
0f49af8
* `KryptonMenuStrip` - Part of #2658
PWagner1 Nov 29, 2025
efcc168
* `KryptonFlowLayoutPanel` - Part of #2658
PWagner1 Jan 8, 2026
000efb7
* Can the Extended Kit Scrollbars be placed into standard and used by…
PWagner1 Jan 23, 2026
6aaea8d
* `SaveConfigToArray` and `LoadConfigFromArray` not working correctly…
PWagner1 Dec 16, 2025
bb0e6b6
* `KryptonBindingNavigator` - Part of #2658
PWagner1 Dec 21, 2025
4d09c51
Update KryptonBindingNavigator.cs
PWagner1 Dec 29, 2025
c02cfe5
Update KryptonBindingNavigator.cs
PWagner1 Dec 29, 2025
656abdd
* BindingNavigator fixes
PWagner1 Dec 29, 2025
077c29e
Update KryptonBindingNavigator.cs
PWagner1 Jan 2, 2026
68736c6
* Is it possible to have an alternate colour for `##Tracking` - Pt. 1…
PWagner1 Feb 7, 2026
7faea6e
* Add support for .NET 11 (#3027)
PWagner1 Feb 11, 2026
274df44
* Ability to set a number of custom colours for `KryptonColorButton` …
PWagner1 Feb 16, 2026
fbfcd43
* A way to 'dynamically' update the palette theme array with the them…
PWagner1 Feb 17, 2026
b78838d
* Maximized form's size exceeds the screen's working area (V110) (#3087)
PWagner1 Feb 27, 2026
f01f7bf
* Clear warnings (#3138)
PWagner1 Mar 1, 2026
353779c
* JumpList Fixes (#3160)
PWagner1 Mar 10, 2026
941e9cb
* Some samples do not work (V110) (#3175)
PWagner1 Mar 12, 2026
8fd3615
3201-V110-Fix-potential-memory-leaks-in-KryptonDataGridViewRatingColu…
giduac Mar 12, 2026
b907720
Revert "3201-V110-Fix-potential-memory-leaks-in-KryptonDataGridViewRa…
giduac Mar 13, 2026
f87aa60
3201 v110 fix potential memory leaks in krypton data grid view rating…
giduac Mar 13, 2026
8fc3c1f
V110-testform-startscreen-paletteviewer-udate (#3273)
giduac Mar 28, 2026
000262e
* Update license headers (#3293)
PWagner1 Apr 2, 2026
05d7bbe
* Use the new artifacts feature to simplify build paths (#3319)
PWagner1 Apr 14, 2026
053728c
* `KryptonContextMenuComboBox` & `KryptonContextMenuProgressBar` need…
PWagner1 Apr 19, 2026
3142d7d
* `KryptonManager` exception 'The type initializer for 'Krypton.Toolk…
PWagner1 Apr 19, 2026
ba42ad8
* `KryptonThemeComboBox` does not change theme when `SelectedIndex` i…
PWagner1 Apr 21, 2026
fdb9455
* Move methods out of `GlobalStaticVariables` into 'new' `GlobalStati…
PWagner1 Apr 26, 2026
bc33de4
* Vertical text centering on a rounded-corner `KryptonButton` (V110) …
PWagner1 May 6, 2026
00160e7
* Fix `Krypton.Standard.Toolkit` pack output layout; add NuGet push s…
PWagner1 May 12, 2026
98bb0a4
* `ComboBox` with *Any* `UserControl` (#3448)
PWagner1 May 12, 2026
1a9db9f
* Rename `Krypton.Utilities` -> `Krypton.Toolkit.Utilities` (#3456)
PWagner1 May 14, 2026
29c1d35
* Fix: KryptonManager `TypeInitializationException` on .NET Framework…
PWagner1 May 15, 2026
ec54982
* `KryptonManager` `TypeInitializationException` on .NET Framework (#…
PWagner1 May 20, 2026
6338c66
* Catchup 26/05/2026 (#3523)
PWagner1 May 26, 2026
f0352ec
3447-V110-Add toolbox bitmaps (#3568)
tobitege May 29, 2026
3a168f3
3181-V110-RetroThemes (#3596)
tobitege Jun 1, 2026
e944f3e
397-V110-Fix normal context menu palette colours (#3628)
tobitege Jun 1, 2026
cadec96
3640-v110-Retro theme fixes (Ribbon) (#3650)
tobitege Jun 2, 2026
101f54c
* KryptonDataGridView external corner rounding (#3614)
PWagner1 Jun 2, 2026
1452abb
* Move `KryptonToastNotification` feature to `Krypton.Utilities`
PWagner1 Jan 5, 2026
5080afa
* Move `KryptonCommandLink` buttons to `Krypton.Utilities`
PWagner1 Jan 9, 2026
361a3a3
Restore alpha tree to 2d00569b (Catchup 28/05/2026 - ii)
PWagner1 May 30, 2026
0b16804
* Move `KryptonToastNotification` feature to `Krypton.Utilities`
PWagner1 Jan 5, 2026
b5e300a
* Catchup 26/05/2026 (#3523)
PWagner1 May 26, 2026
8bb4be4
* V110 Fix stable workflow for .net 11 (#3629)
tobitege May 31, 2026
b5dd46a
* `KryptonTreeView` items flicker when selected/clicked (#3479)
PWagner1 May 20, 2026
8d58b64
* Catchup 26/05/2026 (#3523)
PWagner1 May 26, 2026
db29fac
* Restore mechanism (#3692)
PWagner1 Jun 7, 2026
e732c20
chore(ci): sync .github from master into alpha
github-actions[bot] Jun 7, 2026
d09f3a7
Fix VS 2019 build (#3690)
tobitege Jun 5, 2026
c027fe7
v110-fix-kdgv-scrolling
tobitege Jun 4, 2026
bcbfaeb
3678-fix-net4-res-dep
tobitege Jun 4, 2026
98b6627
3679-v110-palette-color-fixes
tobitege Jun 4, 2026
6c1909b
* Harden workflows
PWagner1 Jun 4, 2026
e0cb433
* Fixes
PWagner1 Jun 4, 2026
0322df4
Fix AppButton color registration (#3670)
tobitege Jun 4, 2026
72040c1
Add changelog entry
tobitege Jun 4, 2026
8eacee9
* Use glyphs for dropdown arrows (V110)
PWagner1 Jun 3, 2026
db71dda
Update KryptonDataGridViewCellIndicatorImage.cs
PWagner1 Jun 3, 2026
1659e38
* Enhancements
PWagner1 Jun 3, 2026
d31559a
* Some fixes
PWagner1 Jun 3, 2026
a72542b
* KContextMenu items overflow not visible (V110)
PWagner1 Jun 3, 2026
7bd9c1a
Update Changelog.md
PWagner1 Jun 3, 2026
2e5e061
* Fixes
PWagner1 Jun 3, 2026
ff38d6b
* Fix overflow issues
PWagner1 Jun 3, 2026
598526a
Update KryptonDropButton.cs
PWagner1 Jun 3, 2026
be041e9
* Keyboard fixes
PWagner1 Jun 3, 2026
6f8aef5
* macOS Themes
PWagner1 Jun 2, 2026
b4bbb57
Update KryptonForm.cs
PWagner1 Jun 2, 2026
380ad5c
* Additions
PWagner1 Jun 2, 2026
d3d5b2a
Update VisualForm.cs
PWagner1 Jun 2, 2026
b8fc3b7
Update VisualForm.cs
PWagner1 Jun 2, 2026
f29d074
Update README.md
PWagner1 Jun 2, 2026
ac23f57
Update README.md
PWagner1 Jun 2, 2026
f02b6e7
Initial commit to implement 2013Dark/LightGray themes
tobitege May 31, 2026
e9714c1
Fix Office 2013 light gray hover text
tobitege Jun 1, 2026
99807bd
chore(ci): sync .github from master → alpha (#3693)
PWagner1 Jun 7, 2026
3184604
* macOS Themes (#3709)
PWagner1 Jun 7, 2026
3466029
3679-v110-Palette color fixes (Treeview) (#3703)
tobitege Jun 7, 2026
1c16f23
470-V110-Implement 2013 Dark/LightGray themes (#3710)
tobitege Jun 7, 2026
1517266
Merge branch 'alpha' into codex/replace-3683-alpha
tobitege Jun 7, 2026
3a0e7f3
3682-V110-Fix scrolling in themed KryptonDataGridview (#3701)
tobitege Jun 7, 2026
9ed7ec1
Merge branch 'alpha' into codex/replace-3681-alpha
tobitege Jun 7, 2026
c5a374d
Merge branch 'alpha' into codex/replace-3662-alpha
PWagner1 Jun 7, 2026
71e6288
3678-V110-Fix .NET 4.x resource dependencies (#3702)
tobitege Jun 7, 2026
6696fb1
Merge branch 'alpha' into codex/replace-3662-alpha
PWagner1 Jun 7, 2026
93db15c
Merge branch 'alpha' into codex/replace-3671-alpha
tobitege Jun 7, 2026
fb2f391
Merge branch 'alpha' into codex/replace-3691-alpha
tobitege Jun 7, 2026
6d13a42
Merge branch 'alpha' into codex/replace-3666-alpha
PWagner1 Jun 7, 2026
4875505
* Use glyphs for dropdown arrows (V110) (#3707)
tobitege Jun 7, 2026
e1ec696
Merge branch 'alpha' into codex/replace-3691-alpha
tobitege Jun 7, 2026
e8ad128
Bug: Fix VS 2019 build (V110) (#3700)
tobitege Jun 7, 2026
37f5a50
Merge branch 'alpha' into codex/replace-3662-alpha
PWagner1 Jun 7, 2026
c36a533
* KContextMenu items overflow not visible (V110) (#3708)
PWagner1 Jun 7, 2026
bea1960
Merge branch 'alpha' into codex/replace-3671-alpha
tobitege Jun 7, 2026
bc73633
Merge branch 'alpha' into codex/replace-3673-alpha
tobitege Jun 7, 2026
42ccb25
3670-V110-appbutton-color-registration (#3706)
tobitege Jun 7, 2026
eda66d4
3714-v110 Improve ribbon accessibility
tobitege Jun 8, 2026
943e51f
3714-v110 Improve control accessibility
tobitege Jun 8, 2026
f35cb63
3714-v110 Improve list accessibility
tobitege Jun 8, 2026
b070783
* Harden workflows (V110) (#3705)
PWagner1 Jun 8, 2026
abb8d75
3714-v110 Address accessibility review feedback
tobitege Jun 8, 2026
390f3cf
* macOS Themes Enhancements
PWagner1 Jun 8, 2026
e829a09
Show detailed exception info in bug dialog
PWagner1 Jun 8, 2026
4f43cc4
Show detailed exception info in bug dialog (#3721)
PWagner1 Jun 8, 2026
f66b2d0
3714-v110-Improve accessibility of controls (#3715)
tobitege Jun 8, 2026
4a4a9c7
* macOS Themes Enhancements (#3717)
PWagner1 Jun 8, 2026
c5c6e29
Drain TreeView select update batches to fix blanking
PWagner1 Jun 8, 2026
cdc94fd
Merge branch 'alpha' into V110-3720-bug-kryptontreeview-freezes-blank…
PWagner1 Jun 8, 2026
e6f680b
Refactor: replace switches with switch expressions
PWagner1 Jun 8, 2026
fff9108
Drain TreeView select update batches to fix blanking (#3722)
PWagner1 Jun 8, 2026
929296c
Merge branch 'alpha' into 3718-feature-request-use-switch-expression
PWagner1 Jun 8, 2026
c6add85
Add missing utility projects to solution (#3723)
tobitege Jun 8, 2026
f54dad9
Refactor: replace switches with switch expressions (#3723)
PWagner1 Jun 8, 2026
c51eca9
3698-master-Fix master TestForm CI SDK/TFM mismatch (#3699)
tobitege Jun 8, 2026
d5be1fd
chore(ci): sync .github from master into alpha
github-actions[bot] Jun 8, 2026
3629314
Fix net11 package TFM path
tobitege Jun 8, 2026
bdcd9cb
Fix themed DataGridView scrollbar interactions (#3682)
tobitege Jun 8, 2026
b8747fb
chore(ci): sync .github from master → alpha (#3724)
PWagner1 Jun 9, 2026
3eca796
3698-V100-Fix CI build error (#3730)
tobitege Jun 9, 2026
cd6fc6c
Fix DataGridView scrollbar resize sync (#3682)
tobitege Jun 9, 2026
7537d23
3682-V110-Fix KDGridView scrollbars, col resizing (#3731)
tobitege Jun 9, 2026
1a26b05
3736-v110-High DPI scaling followup fixes (#3737)
tobitege Jun 9, 2026
7e92690
* Temporarily remove files for branch parity
PWagner1 Jun 12, 2026
c290052
* Use master files
PWagner1 Jun 12, 2026
25ccacd
* Use master files
PWagner1 Jun 12, 2026
1935a7c
* Branch parity with `alpha` (#3742)
PWagner1 Jun 12, 2026
2d3ffee
* Restore `alpha` files
PWagner1 Jun 12, 2026
eeb17a1
Merge branch 'alpha' of https://github.com/Krypton-Suite/Standard-Too…
PWagner1 Jun 12, 2026
84c3951
* Message indicating that `KryptonCustomPaletteBase` has Not Implemented
PWagner1 Jun 12, 2026
b9629da
* CI Fixes
PWagner1 Jun 12, 2026
11f3c08
* Resolve path to long issue
PWagner1 Jun 12, 2026
27d48b6
* Remove MD files
PWagner1 Jun 13, 2026
b977eed
* OS X Aqua Themes
PWagner1 Jun 13, 2026
bc4a8e6
* Catchup 13/06/2026 (#3749)
PWagner1 Jun 13, 2026
ed00a91
* Message indicating that `KryptonCustomPaletteBase` has Not Implemen…
PWagner1 Jun 13, 2026
804f675
* CI Fixes (#3746)
PWagner1 Jun 13, 2026
cbe2560
Merge branch 'alpha' into 3657-feature-request-os-x-aqua-themes
PWagner1 Jun 13, 2026
daef551
* OS X Aqua Themes (#3748)
PWagner1 Jun 14, 2026
5b514df
chore(ci): sync .github from master into alpha
github-actions[bot] Jun 15, 2026
50f365a
chore(ci): sync .github from master → alpha (#3753)
PWagner1 Jun 15, 2026
5a0c07d
Revert "chore(ci): sync .github from master → alpha"
PWagner1 Jun 16, 2026
9496695
Revert "chore(ci): sync .github from master → alpha" (#3756)
PWagner1 Jun 17, 2026
6f1455d
* `Krypton.Standard.Toolkit.Nightly` NuGet package does not upload
PWagner1 Jun 21, 2026
5635c15
* `Krypton.Standard.Toolkit.Nightly` NuGet package does not upload (#…
PWagner1 Jun 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
###############################################################################
* text=auto

# VSIX manifest: UTF-8 without BOM, LF (VSSDK; avoid CRLF churn in PRs).
*.vsixmanifest text eol=lf

###############################################################################
# Set default behavior for command prompt diff.
#
Expand Down
67 changes: 67 additions & 0 deletions .github/BRANCH_POLICY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# Branch and pull request policy

This repository uses a **warn-then-fail** branch policy enforced in CI ([#3610](https://github.com/Krypton-Suite/Standard-Toolkit/issues/3610)).

**Full developer documentation:** [Branch Policy and Workflow Hardening](https://krypton-suite.github.io/Standard-Toolkit-Online-Help/articles/Contributing/BranchPolicyandWorkflowHardening.html) (architecture, rules, operations, troubleshooting).

## Product vs workflow changes

| Flow | Allowed |
|------|---------|
| Topic branch → `master` | Yes (normal features and fixes) |
| Topic branch → `alpha`, `canary`, LTS lines | Yes |
| `master` → downstream branch | **Only** files under `.github/` |
| `alpha` → `alpha-backup` | Yes (automated backup sync) |
| Release line → `master` | **No** (do not merge `alpha` / `canary` / LTS into `master` via PR) |

**Workflow/CI alignment** with `master` is by **file content** under `.github/`, not by Git ancestry. Use **Sync .github from master** (or a manual PR that only touches `.github/`). Release lines may legitimately diverge from `master` in product history; policy does **not** require merging `master` into every downstream branch.

## Warn vs fail

| Repository variable | Value | Behaviour |
|---------------------|-------|-----------|
| `BRANCH_POLICY_ENFORCE` | unset or `false` | Violations emit **`::warning::`**; the check **passes** |
| `BRANCH_POLICY_ENFORCE` | `true` | Violations emit **`::error::`**; the check **fails** |
| `BRANCH_POLICY_DISABLED` | `true` | Skips the PR policy workflow entirely |

**Rollout:** leave enforce off while teams fix existing PRs, then set `BRANCH_POLICY_ENFORCE=true` and add **PR branch policy** as a required status check on protected branches.

## Deploy on `master` first

These workflows and config files must be present on the **default branch (`master`)**, not only on `alpha`:

- `.github/workflows/sync-github-from-master.yml`
- `.github/workflows/pr-branch-policy.yml`
- `.github/branch-policy.json`
- `.github/scripts/Invoke-BranchPolicyCheck.ps1`

GitHub runs scheduled workflows and uses the default-branch copy of workflow definitions. If a PR merges this feature **only** into `alpha`, **Sync .github from master** does not run on the schedule until the same `.github/` tree exists on `master` (merge, cherry-pick, or a `.github/`-only PR `master` → downstream is not the bootstrap path — use **master** directly or **Sync** after `master` has the files).

If `alpha` is later replaced (e.g. with `alpha-recovered`), commits that exist only on the old `alpha` tip can be lost unless this work is also on the recovered line (replay/cherry-pick the same commits).

## Automated `.github` sync

Workflow **Sync .github from master** (`.github/workflows/sync-github-from-master.yml`) opens PRs that copy only `.github/` from `master` onto configured release branches.

Targets include `alpha`, `canary`, `gold`, `prerelease`, `V105-LTS`, `V85-LTS`, and `V110` (see `syncGithubFromMasterTargets` in `branch-policy.json`). The sync uses `git checkout origin/master -- .github` on the target branch tip (path copy, not a merge of `master`).

## Required checks on `master` vs release branches

When enforcing policy, require **PR branch policy** on release-branch rulesets only — not on `master` — so topic PRs into `master` are not gated by this check. Details in the [developer documentation](https://krypton-suite.github.io/Standard-Toolkit-Online-Help/articles/Contributing/BranchPolicyandWorkflowHardening.html#required-check-only-on-release-branches-not-topic-prs--master).

| Variable | Purpose |
|----------|---------|
| `SYNC_GITHUB_FROM_MASTER_DISABLED` | `true` disables the sync workflow |
| `BRANCH_POLICY_ENFORCE` | Independent; controls PR validation only |

## Configuration

Machine-readable rules: [branch-policy.json](branch-policy.json)

Edit `downstreamBranches` and `syncGithubFromMasterTargets` there when adding a new release line.

## Branch names

- **`canary`** (lowercase) is used by `build.yml` and `release.yml`.
- **`Canary`** (capital C) is used by `canary.yml` only.
- Policy treats both as downstream lines; prefer consolidating to one branch name over time.
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -117,4 +117,5 @@ body:
- Navigator
- Ribbon
- Toolkit
- Utilities
- Workspace
59 changes: 59 additions & 0 deletions .github/branch-policy.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "Pull-request branch pairing rules for Krypton-Suite/Standard-Toolkit. See .github/BRANCH_POLICY.md.",
"downstreamBranches": [
"alpha",
"alpha-backup",
"canary",
"Canary",
"gold",
"prerelease",
"V105-LTS",
"V85-LTS",
"V110"
],
"longLivedHeadBranches": [
"master",
"main",
"alpha",
"alpha-backup",
"canary",
"Canary",
"gold",
"prerelease",
"V105-LTS",
"V85-LTS",
"V110"
],
"syncGithubFromMasterTargets": [
"alpha",
"canary",
"gold",
"prerelease",
"V105-LTS",
"V85-LTS",
"V110"
],
"rules": [
{
"id": "master-github-downstream",
"description": "Workflow changes from master into release lines must touch only .github/",
"baseIn": "downstreamBranches",
"head": "master",
"pathsOnlyPrefix": ".github/"
},
{
"id": "alpha-to-alpha-backup",
"description": "alpha-backup is updated from alpha only",
"base": "alpha-backup",
"head": "alpha"
},
{
"id": "no-long-lived-to-master",
"description": "Do not open product PRs from another release line into master",
"base": "master",
"headIn": "longLivedHeadBranches",
"forbidden": true
}
]
}
2 changes: 1 addition & 1 deletion .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ updates:
directory: "/"
schedule:
interval: "weekly"
target-branch: "alpha"
target-branch: "master"
reviewers:
- "Krypton-Suite/reviewers"
labels:
Expand Down
154 changes: 154 additions & 0 deletions .github/scripts/Invoke-BranchPolicyCheck.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
# New BSD 3-Clause License (https://github.com/Krypton-Suite/Standard-Toolkit/blob/master/LICENSE)
# Modifications by Peter Wagner (aka Wagnerp), Simon Coghlan (aka Smurf-IV), tobitege et al. 2026 - 2026. All rights reserved.
#
# Validates pull-request base/head pairing for Standard-Toolkit (no master ancestry requirement).
# Called from .github/workflows/pr-branch-policy.yml

param(
[Parameter(Mandatory = $true)]
[string]$BaseRef,

[Parameter(Mandatory = $true)]
[string]$HeadRef,

[Parameter(Mandatory = $true)]
[string]$ChangedFilesFile,

[Parameter(Mandatory = $true)]
[string]$PolicyPath,

[Parameter(Mandatory = $true)]
[string]$Enforce,

[Parameter(Mandatory = $true)]
[string]$Repository
)

$ErrorActionPreference = 'Stop'

$ChangedFiles = @()
if (Test-Path -LiteralPath $ChangedFilesFile) {
$ChangedFiles = @(Get-Content -LiteralPath $ChangedFilesFile -Raw | ConvertFrom-Json)
}

function Write-PolicyMessage {
param(
[ValidateSet('Warning', 'Error')]
[string]$Level,
[string]$Message
)

if ($Level -eq 'Error') {
Write-Host "::error::$Message"
} else {
Write-Host "::warning::$Message"
}
}

function Test-BranchInList {
param(
[string]$Branch,
[string[]]$List
)
return $List -contains $Branch
}

function Test-PathsUnderPrefix {
param(
[string[]]$Files,
[string]$Prefix
)

if ($Files.Count -eq 0) {
return $true
}

foreach ($file in $Files) {
$normalized = $file -replace '\\', '/'
if (-not $normalized.StartsWith($Prefix, [System.StringComparison]::OrdinalIgnoreCase)) {
return $false
}
}

return $true
}

function Invoke-PolicyExit {
param(
[int]$ViolationCount,
[string]$EnforceMode
)

if ($ViolationCount -eq 0) {
Write-Host 'Branch policy check passed.'
exit 0
}

$suffix = " ($ViolationCount violation(s))"
if ($EnforceMode -eq 'true') {
Write-Host "Branch policy check failed$suffix."
exit 1
}

Write-Host "::notice::Branch policy is in warn-only mode. Set repository variable BRANCH_POLICY_ENFORCE=true to fail PRs on violations."
Write-Host "Branch policy reported warnings$suffix."
exit 0
}

if ($Repository -ne 'Krypton-Suite/Standard-Toolkit') {
Write-Host "Skipping branch policy for repository '$Repository'."
exit 0
}

if (-not (Test-Path -LiteralPath $PolicyPath)) {
throw "Policy file not found: $PolicyPath"
}

$policy = Get-Content -LiteralPath $PolicyPath -Raw | ConvertFrom-Json
$violations = 0
$enforceMode = $Enforce.ToLowerInvariant()

function Add-Violation {
param(
[string]$RuleId,
[string]$Message
)

$script:violations++
$label = if ($enforceMode -eq 'true') { 'Error' } else { 'Warning' }
Write-PolicyMessage -Level $label -Message "[$RuleId] $Message"
}

# --- Rule: master -> downstream must be .github only ---
$downstream = @($policy.downstreamBranches)
if ($HeadRef -eq 'master' -and (Test-BranchInList -Branch $BaseRef -List $downstream)) {
$prefix = '.github/'
if (-not (Test-PathsUnderPrefix -Files $ChangedFiles -Prefix $prefix)) {
$outside = $ChangedFiles | Where-Object {
$n = $_ -replace '\\', '/'
-not $n.StartsWith($prefix, [System.StringComparison]::OrdinalIgnoreCase)
}
$sample = ($outside | Select-Object -First 5) -join ', '
Add-Violation -RuleId 'master-github-downstream' -Message (
"Pull request master -> $BaseRef must only change files under '.github/'. " +
"Use workflow 'Sync .github from master' or limit the PR to CI files. Outside paths (sample): $sample"
)
}
}

# --- Rule: alpha -> alpha-backup only ---
if ($BaseRef -eq 'alpha-backup' -and $HeadRef -ne 'alpha') {
Add-Violation -RuleId 'alpha-to-alpha-backup' -Message (
"Pull requests into alpha-backup must use head branch 'alpha' (current head: '$HeadRef')."
)
}

# --- Rule: long-lived branch must not target master for product merges ---
$longLived = @($policy.longLivedHeadBranches)
if ($BaseRef -eq 'master' -and (Test-BranchInList -Branch $HeadRef -List $longLived)) {
Add-Violation -RuleId 'no-long-lived-to-master' -Message (
"Pull request $HeadRef -> master is not allowed. Merge topic branches into master, or use a .github-only sync into downstream branches."
)
}

Invoke-PolicyExit -ViolationCount $violations -EnforceMode $enforceMode
Loading
Loading