diff --git a/.editorconfig b/.editorconfig
index c04a279..2cd5f5b 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -9,7 +9,9 @@ charset = utf-8
indent_style = space
indent_size = 4
tab_width = 4
-end_of_line = crlf
+# LF on every platform, matching the `* text=auto eol=lf` default in .gitattributes.
+# Overrides below must stay in step with the eol pins in that file.
+end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
@@ -17,7 +19,7 @@ trim_trailing_whitespace = true
[*.{cs,csx,cake,fs,fsx,vb,vbx}]
indent_style = tab
-file_header_template = Copyright (c) ktsu.dev\nAll rights reserved.\nLicensed under the MIT license.
+file_header_template = Copyright (c) 2023-2026 ktsu-dev contributors
# Default severity for all .NET Code Style rules
dotnet_analyzer_diagnostic.severity = error
@@ -503,4 +505,9 @@ indent_style = tab
# Shell scripts
[*.sh]
end_of_line = lf
-indent_size = 2
\ No newline at end of file
+indent_size = 2
+
+# Windows batch scripts and Visual Studio solution files keep CRLF on every platform.
+# These match the eol=crlf pins in .gitattributes.
+[*.{cmd,bat,sln}]
+end_of_line = crlf
\ No newline at end of file
diff --git a/.gitattributes b/.gitattributes
index d67e40c..a0bea35 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -4,20 +4,25 @@
# Git Line Endings #
###############################
-# Set default behaviour to automatically normalize line endings.
-* text=auto
+# Normalize all text files to LF in the repository, and check them out as LF on every
+# platform. The explicit eol overrides each machine's core.autocrlf, so the working tree
+# is byte-identical on Windows, Linux and macOS. This must stay in step with the
+# end_of_line settings in .editorconfig.
+* text=auto eol=lf
-# csharp files to match .editorconfig
-*.cs text eol=crlf
+# Force bash scripts to always use LF line endings so that if a repo is accessed
+# in Unix via a file share from Windows, the scripts will work. Redundant with the
+# default above, kept explicit because these files break outright with CRLF.
+*.sh text eol=lf
# Force batch scripts to always use CRLF line endings so that if a repo is accessed
# in Windows via a file share from Linux, the scripts will work.
-*.{cmd,[cC][mM][dD]} text eol=crlf
-*.{bat,[bB][aA][tT]} text eol=crlf
+*.cmd text eol=crlf
+*.bat text eol=crlf
-# Force bash scripts to always use LF line endings so that if a repo is accessed
-# in Unix via a file share from Windows, the scripts will work.
-*.sh text eol=lf
+# Visual Studio rewrites solution files with CRLF regardless of the checkout, so pin
+# them to avoid a spurious whole-file diff every time the solution is opened.
+*.sln text eol=crlf
###############################
# Git Large File System (LFS) #
diff --git a/.runsettings b/.runsettings
index 3c3169d..9bd9f05 100644
--- a/.runsettings
+++ b/.runsettings
@@ -1,25 +1,6 @@
-
- .\coverage
+ TestResults
-
-
- .\coverage
-
-
-
-
-
-
-
- opencover
- coverage.opencover.xml
- [*Test*]*,[*Tests*]*
- **/obj/**/*
-
-
-
-
diff --git a/Directory.Packages.props b/Directory.Packages.props
index 6e35baa..3331697 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -7,13 +7,11 @@
-
-
diff --git a/Keybinding.Core/AssemblyInfo.cs b/Keybinding.Core/AssemblyInfo.cs
index 291bbf7..80a1d25 100644
--- a/Keybinding.Core/AssemblyInfo.cs
+++ b/Keybinding.Core/AssemblyInfo.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
using System.Runtime.CompilerServices;
diff --git a/Keybinding.Core/Constants.cs b/Keybinding.Core/Constants.cs
index 77e65aa..d6e1679 100644
--- a/Keybinding.Core/Constants.cs
+++ b/Keybinding.Core/Constants.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core;
diff --git a/Keybinding.Core/Contracts/ICommandRegistry.cs b/Keybinding.Core/Contracts/ICommandRegistry.cs
index 82a146d..1ed012f 100644
--- a/Keybinding.Core/Contracts/ICommandRegistry.cs
+++ b/Keybinding.Core/Contracts/ICommandRegistry.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Contracts;
diff --git a/Keybinding.Core/Contracts/IKeybindingConfiguration.cs b/Keybinding.Core/Contracts/IKeybindingConfiguration.cs
index 70be1fc..137be70 100644
--- a/Keybinding.Core/Contracts/IKeybindingConfiguration.cs
+++ b/Keybinding.Core/Contracts/IKeybindingConfiguration.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Contracts;
diff --git a/Keybinding.Core/Contracts/IKeybindingManagerFactory.cs b/Keybinding.Core/Contracts/IKeybindingManagerFactory.cs
index 8272b1c..6402b41 100644
--- a/Keybinding.Core/Contracts/IKeybindingManagerFactory.cs
+++ b/Keybinding.Core/Contracts/IKeybindingManagerFactory.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Contracts;
diff --git a/Keybinding.Core/Contracts/IKeybindingRepository.cs b/Keybinding.Core/Contracts/IKeybindingRepository.cs
index 8938afc..b7afea1 100644
--- a/Keybinding.Core/Contracts/IKeybindingRepository.cs
+++ b/Keybinding.Core/Contracts/IKeybindingRepository.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Contracts;
diff --git a/Keybinding.Core/Contracts/IKeybindingService.cs b/Keybinding.Core/Contracts/IKeybindingService.cs
index 3be9d19..a7782e3 100644
--- a/Keybinding.Core/Contracts/IKeybindingService.cs
+++ b/Keybinding.Core/Contracts/IKeybindingService.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Contracts;
diff --git a/Keybinding.Core/Contracts/IProfileManager.cs b/Keybinding.Core/Contracts/IProfileManager.cs
index 784fc4d..da7cdda 100644
--- a/Keybinding.Core/Contracts/IProfileManager.cs
+++ b/Keybinding.Core/Contracts/IProfileManager.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Contracts;
diff --git a/Keybinding.Core/Extensions/ServiceCollectionExtensions.cs b/Keybinding.Core/Extensions/ServiceCollectionExtensions.cs
index bb4ec0a..83775ce 100644
--- a/Keybinding.Core/Extensions/ServiceCollectionExtensions.cs
+++ b/Keybinding.Core/Extensions/ServiceCollectionExtensions.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Extensions;
diff --git a/Keybinding.Core/Helpers/AsyncBatchHelper.cs b/Keybinding.Core/Helpers/AsyncBatchHelper.cs
index 687a80f..c6296bf 100644
--- a/Keybinding.Core/Helpers/AsyncBatchHelper.cs
+++ b/Keybinding.Core/Helpers/AsyncBatchHelper.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Helpers;
diff --git a/Keybinding.Core/Helpers/DisposalHelper.cs b/Keybinding.Core/Helpers/DisposalHelper.cs
index ead3a70..e6bd1e3 100644
--- a/Keybinding.Core/Helpers/DisposalHelper.cs
+++ b/Keybinding.Core/Helpers/DisposalHelper.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Helpers;
diff --git a/Keybinding.Core/Helpers/OperationHelper.cs b/Keybinding.Core/Helpers/OperationHelper.cs
index 8326df0..bd59999 100644
--- a/Keybinding.Core/Helpers/OperationHelper.cs
+++ b/Keybinding.Core/Helpers/OperationHelper.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Helpers;
diff --git a/Keybinding.Core/Helpers/ValidationHelper.cs b/Keybinding.Core/Helpers/ValidationHelper.cs
index 64ec75d..c54b659 100644
--- a/Keybinding.Core/Helpers/ValidationHelper.cs
+++ b/Keybinding.Core/Helpers/ValidationHelper.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Helpers;
diff --git a/Keybinding.Core/KeybindingManager.cs b/Keybinding.Core/KeybindingManager.cs
index b9a627b..53946c2 100644
--- a/Keybinding.Core/KeybindingManager.cs
+++ b/Keybinding.Core/KeybindingManager.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core;
diff --git a/Keybinding.Core/Models/ChordSequence.cs b/Keybinding.Core/Models/ChordSequence.cs
index 7cf440a..84fe2ef 100644
--- a/Keybinding.Core/Models/ChordSequence.cs
+++ b/Keybinding.Core/Models/ChordSequence.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Models;
diff --git a/Keybinding.Core/Models/Command.cs b/Keybinding.Core/Models/Command.cs
index a3d21df..2ed0653 100644
--- a/Keybinding.Core/Models/Command.cs
+++ b/Keybinding.Core/Models/Command.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Models;
diff --git a/Keybinding.Core/Models/CommandCategory.cs b/Keybinding.Core/Models/CommandCategory.cs
index 05c923e..77e7a75 100644
--- a/Keybinding.Core/Models/CommandCategory.cs
+++ b/Keybinding.Core/Models/CommandCategory.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Models;
diff --git a/Keybinding.Core/Models/CommandDescription.cs b/Keybinding.Core/Models/CommandDescription.cs
index 586386a..7654f45 100644
--- a/Keybinding.Core/Models/CommandDescription.cs
+++ b/Keybinding.Core/Models/CommandDescription.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Models;
diff --git a/Keybinding.Core/Models/CommandId.cs b/Keybinding.Core/Models/CommandId.cs
index 196c292..0bf8ba4 100644
--- a/Keybinding.Core/Models/CommandId.cs
+++ b/Keybinding.Core/Models/CommandId.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Models;
diff --git a/Keybinding.Core/Models/CommandName.cs b/Keybinding.Core/Models/CommandName.cs
index ecd5a87..35fe021 100644
--- a/Keybinding.Core/Models/CommandName.cs
+++ b/Keybinding.Core/Models/CommandName.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Models;
diff --git a/Keybinding.Core/Models/Enums.cs b/Keybinding.Core/Models/Enums.cs
index e252223..e80df34 100644
--- a/Keybinding.Core/Models/Enums.cs
+++ b/Keybinding.Core/Models/Enums.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Models;
diff --git a/Keybinding.Core/Models/KeybindingConfiguration.cs b/Keybinding.Core/Models/KeybindingConfiguration.cs
index 92e7321..c44ce3d 100644
--- a/Keybinding.Core/Models/KeybindingConfiguration.cs
+++ b/Keybinding.Core/Models/KeybindingConfiguration.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Models;
diff --git a/Keybinding.Core/Models/KeybindingSummary.cs b/Keybinding.Core/Models/KeybindingSummary.cs
index 3cfc00f..3390c25 100644
--- a/Keybinding.Core/Models/KeybindingSummary.cs
+++ b/Keybinding.Core/Models/KeybindingSummary.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Models;
diff --git a/Keybinding.Core/Models/ModifierKeys.cs b/Keybinding.Core/Models/ModifierKeys.cs
index d4ac0fc..9eaa58a 100644
--- a/Keybinding.Core/Models/ModifierKeys.cs
+++ b/Keybinding.Core/Models/ModifierKeys.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Models;
diff --git a/Keybinding.Core/Models/MusicalSemanticTypes.cs b/Keybinding.Core/Models/MusicalSemanticTypes.cs
index 63143a9..e9ee9fc 100644
--- a/Keybinding.Core/Models/MusicalSemanticTypes.cs
+++ b/Keybinding.Core/Models/MusicalSemanticTypes.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Models;
diff --git a/Keybinding.Core/Models/MusicalTypes.cs b/Keybinding.Core/Models/MusicalTypes.cs
index 4bfab5e..88c6502 100644
--- a/Keybinding.Core/Models/MusicalTypes.cs
+++ b/Keybinding.Core/Models/MusicalTypes.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Models;
diff --git a/Keybinding.Core/Models/NoteName.cs b/Keybinding.Core/Models/NoteName.cs
index 6c3b326..fc98942 100644
--- a/Keybinding.Core/Models/NoteName.cs
+++ b/Keybinding.Core/Models/NoteName.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Models;
diff --git a/Keybinding.Core/Models/Profile.cs b/Keybinding.Core/Models/Profile.cs
index af66eb0..d3e4696 100644
--- a/Keybinding.Core/Models/Profile.cs
+++ b/Keybinding.Core/Models/Profile.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Models;
diff --git a/Keybinding.Core/Models/ProfileId.cs b/Keybinding.Core/Models/ProfileId.cs
index 186a119..eff5714 100644
--- a/Keybinding.Core/Models/ProfileId.cs
+++ b/Keybinding.Core/Models/ProfileId.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Models;
diff --git a/Keybinding.Core/Models/ProfileName.cs b/Keybinding.Core/Models/ProfileName.cs
index 9926606..8f9a88b 100644
--- a/Keybinding.Core/Models/ProfileName.cs
+++ b/Keybinding.Core/Models/ProfileName.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Models;
diff --git a/Keybinding.Core/Models/SpecialKeys.cs b/Keybinding.Core/Models/SpecialKeys.cs
index 30460ca..aaffc4b 100644
--- a/Keybinding.Core/Models/SpecialKeys.cs
+++ b/Keybinding.Core/Models/SpecialKeys.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Models;
diff --git a/Keybinding.Core/Services/CommandRegistry.cs b/Keybinding.Core/Services/CommandRegistry.cs
index ba3abcd..324b84a 100644
--- a/Keybinding.Core/Services/CommandRegistry.cs
+++ b/Keybinding.Core/Services/CommandRegistry.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Services;
diff --git a/Keybinding.Core/Services/JsonKeybindingRepository.cs b/Keybinding.Core/Services/JsonKeybindingRepository.cs
index 304e256..a98c957 100644
--- a/Keybinding.Core/Services/JsonKeybindingRepository.cs
+++ b/Keybinding.Core/Services/JsonKeybindingRepository.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Services;
diff --git a/Keybinding.Core/Services/KeybindingManagerFactory.cs b/Keybinding.Core/Services/KeybindingManagerFactory.cs
index ed9117c..661b20e 100644
--- a/Keybinding.Core/Services/KeybindingManagerFactory.cs
+++ b/Keybinding.Core/Services/KeybindingManagerFactory.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Services;
diff --git a/Keybinding.Core/Services/KeybindingService.cs b/Keybinding.Core/Services/KeybindingService.cs
index 3a0b01e..6f4fcaa 100644
--- a/Keybinding.Core/Services/KeybindingService.cs
+++ b/Keybinding.Core/Services/KeybindingService.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Services;
diff --git a/Keybinding.Core/Services/ProfileManager.cs b/Keybinding.Core/Services/ProfileManager.cs
index 7f19ae6..23a6b0a 100644
--- a/Keybinding.Core/Services/ProfileManager.cs
+++ b/Keybinding.Core/Services/ProfileManager.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Core.Services;
diff --git a/Keybinding.Demo/AssemblyInfo.cs b/Keybinding.Demo/AssemblyInfo.cs
index 291bbf7..80a1d25 100644
--- a/Keybinding.Demo/AssemblyInfo.cs
+++ b/Keybinding.Demo/AssemblyInfo.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
using System.Runtime.CompilerServices;
diff --git a/Keybinding.Demo/MusicalDemo.cs b/Keybinding.Demo/MusicalDemo.cs
index 62701df..837b8de 100644
--- a/Keybinding.Demo/MusicalDemo.cs
+++ b/Keybinding.Demo/MusicalDemo.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Demo;
diff --git a/Keybinding.Demo/Program.cs b/Keybinding.Demo/Program.cs
index 7030de7..7c5c69e 100644
--- a/Keybinding.Demo/Program.cs
+++ b/Keybinding.Demo/Program.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Demo;
diff --git a/Keybinding.Test/AssemblyInfo.cs b/Keybinding.Test/AssemblyInfo.cs
index bd736af..b1051b2 100644
--- a/Keybinding.Test/AssemblyInfo.cs
+++ b/Keybinding.Test/AssemblyInfo.cs
@@ -1,5 +1,3 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
[assembly: Parallelize(Scope = ExecutionScope.MethodLevel)]
diff --git a/Keybinding.Test/Extensions/ServiceCollectionExtensionsTests.cs b/Keybinding.Test/Extensions/ServiceCollectionExtensionsTests.cs
index 738cb54..1b4b194 100644
--- a/Keybinding.Test/Extensions/ServiceCollectionExtensionsTests.cs
+++ b/Keybinding.Test/Extensions/ServiceCollectionExtensionsTests.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Test.Extensions;
diff --git a/Keybinding.Test/Helpers/AsyncBatchHelperTests.cs b/Keybinding.Test/Helpers/AsyncBatchHelperTests.cs
index 18459c4..9d4f689 100644
--- a/Keybinding.Test/Helpers/AsyncBatchHelperTests.cs
+++ b/Keybinding.Test/Helpers/AsyncBatchHelperTests.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Test.Helpers;
diff --git a/Keybinding.Test/Helpers/DisposalHelperTests.cs b/Keybinding.Test/Helpers/DisposalHelperTests.cs
index 1a0f192..af24672 100644
--- a/Keybinding.Test/Helpers/DisposalHelperTests.cs
+++ b/Keybinding.Test/Helpers/DisposalHelperTests.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Test.Helpers;
diff --git a/Keybinding.Test/Helpers/OperationHelperTests.cs b/Keybinding.Test/Helpers/OperationHelperTests.cs
index 6b9d5ba..aab0da6 100644
--- a/Keybinding.Test/Helpers/OperationHelperTests.cs
+++ b/Keybinding.Test/Helpers/OperationHelperTests.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Test.Helpers;
diff --git a/Keybinding.Test/Helpers/ValidationHelperTests.cs b/Keybinding.Test/Helpers/ValidationHelperTests.cs
index e9251a3..0a1a396 100644
--- a/Keybinding.Test/Helpers/ValidationHelperTests.cs
+++ b/Keybinding.Test/Helpers/ValidationHelperTests.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Test.Helpers;
diff --git a/Keybinding.Test/KeybindingManagerTests.cs b/Keybinding.Test/KeybindingManagerTests.cs
index 75fac2a..c421cc6 100644
--- a/Keybinding.Test/KeybindingManagerTests.cs
+++ b/Keybinding.Test/KeybindingManagerTests.cs
@@ -1,6 +1,4 @@
-// Copyright (c) ktsu.dev
-// All rights reserved.
-// Licensed under the MIT license.
+// Copyright (c) 2023-2026 ktsu-dev contributors
namespace ktsu.Keybinding.Test;
diff --git a/global.json b/global.json
index 15c86b6..39f7683 100644
--- a/global.json
+++ b/global.json
@@ -5,15 +5,15 @@
},
"msbuild-sdks": {
"MSTest.Sdk": "4.3.3",
- "ktsu.Sdk": "2.18.0",
- "ktsu.Sdk.ConsoleApp": "2.18.0",
- "ktsu.Sdk.Tool": "2.18.0",
- "ktsu.Sdk.App": "2.18.0",
- "ktsu.Sdk.Windows": "2.18.0",
- "ktsu.Sdk.Linux": "2.18.0",
- "ktsu.Sdk.macOS": "2.18.0",
- "ktsu.Sdk.iOS": "2.18.0",
- "ktsu.Sdk.Android": "2.18.0"
+ "ktsu.Sdk": "2.21.1",
+ "ktsu.Sdk.ConsoleApp": "2.21.1",
+ "ktsu.Sdk.Tool": "2.21.1",
+ "ktsu.Sdk.App": "2.21.1",
+ "ktsu.Sdk.Windows": "2.21.1",
+ "ktsu.Sdk.Linux": "2.21.1",
+ "ktsu.Sdk.macOS": "2.21.1",
+ "ktsu.Sdk.iOS": "2.21.1",
+ "ktsu.Sdk.Android": "2.21.1"
},
"test": {
"runner": "Microsoft.Testing.Platform"