Releases: CommunityToolkit/Maui
v15.0.0 Prevent Breaking Changes in .NET 11
.NET 11 Compatibility
This release provides compatibility with the upcoming release of .NET 11.
In .NET 11, CommunityToolkit.Maui will no longer have access to internal .NET MAUI APIs. This release removes our use of internal .NET MAUI APIs to ensure compatibility with .NET 11.
Important
We recommend every .NET MAUI app preparing for .NET 11 install this release, v15.0.0 (or later), before .NET 11 is released in November. Apps running CommunityToolkit.Maui v14.2.2 and earlier will not be compatible with .NET 11.
What's Changed
- Remove MAUI internal API usage by @jfversluis in #3251
- Hardcode NuGet trusted publishing user by @jfversluis in #3266
Housekeeping
- Bump actions/setup-dotnet from 5.4.0 to 6.0.0 by @dependabot[bot] in #3268
- Bump actions/setup-java from 5.5.0 to 5.6.0 by @dependabot[bot] in #3267
Full Changelog: 14.2.2...14.2.3
14.2.2: Prevent Popup Race Conditions, (Windows) Folder Picker Initial Path
Note: 14.2.2 supersedes 14.2.1, which was not published to NuGet.org due to an expired publishing credential.
Just a couple bug fixes in this one!
- Prevent Race Conditions when closing a Popup
- Set initial folder for FilePicker and FolderPicker on Windows
What's Changed
- Prevent Race Condition Allowing Simultaneous Calling of
Navigation.PushModalAsync()/Shell.GotoAsync()inPopupExtensionsby @TheCodeTraveler in #3234 - Add
SemaphoreSlimSupport forPopupCloseAsyncto Avoid Race Conditions by @TheCodeTraveler in #3235 - Set Windows Folder Picker Initial Path by @TheCodeTraveler in #3078
Housekeeping
- Bump actions/checkout from 6.0.2 to 6.0.3 by @dependabot[bot] in #3236
- Bump Microsoft.Testing.Extensions.CodeCoverage from 18.7.0 to 18.8.0 by @dependabot[bot] in #3237
- Bump System.Formats.Asn1 from 10.0.8 to 10.0.9 by @dependabot[bot] in #3238
- Bump actions/checkout from 6.0.3 to 7.0.0 by @dependabot[bot] in #3245
- Bump actions/setup-java from 5.2.0 to 5.3.0 by @dependabot[bot] in #3246
- Bump actions/setup-java from 5.3.0 to 5.4.0 by @dependabot[bot] in #3256
- Bump actions/setup-dotnet from 5.3.0 to 5.4.0 by @dependabot[bot] in #3257
- Bump actions/setup-java from 5.4.0 to 5.5.0 by @dependabot[bot] in #3264
- Use trusted publishing for NuGet release by @jfversluis in #3261
Full Changelog: 14.2.0...14.2.2
14.2.1: Prevent Popup Race Conditions, (Windows) Folder Picker Initial Path
Just a couple bug fixes in this one!
- Prevent Race Conditions when closing a Popup
- Set initial folder for FilePicker and FolderPicker on Windows
What's Changed
- Prevent Race Condition Allowing Simultaneous Calling of
Navigation.PushModalAsync()/Shell.GotoAsync()inPopupExtensionsby @TheCodeTraveler in #3234 - Add
SemaphoreSlimSupport forPopupCloseAsyncto Avoid Race Conditions by @TheCodeTraveler in #3235 - Set Windows Folder Picker Initial Path by @TheCodeTraveler in #3078
Housekeeping
- Bump actions/checkout from 6.0.2 to 6.0.3 by @dependabot[bot] in #3236
- Bump Microsoft.Testing.Extensions.CodeCoverage from 18.7.0 to 18.8.0 by @dependabot[bot] in #3237
- Bump System.Formats.Asn1 from 10.0.8 to 10.0.9 by @dependabot[bot] in #3238
- Bump actions/checkout from 6.0.3 to 7.0.0 by @dependabot[bot] in #3245
- Bump actions/setup-java from 5.2.0 to 5.3.0 by @dependabot[bot] in #3246
- Bump actions/setup-java from 5.3.0 to 5.4.0 by @dependabot[bot] in #3256
- Bump actions/setup-dotnet from 5.3.0 to 5.4.0 by @dependabot[bot] in #3257
- Bump actions/setup-java from 5.4.0 to 5.5.0 by @dependabot[bot] in #3264
Full Changelog: 14.2.0...14.2.1
14.2.0: Popup Android Screen Reader Accessibility
CommunityToolkit.Maui v14.2.0
Thanks to @IeuanWalker, Android Screen Reader now properly reads Popup v2! Previously the screen reader would default to the underlying PopupPage, now it defaults directly to the content of your Popup:
| Before | After |
|---|---|
android-before.mp4 |
android-after.mp4 |
What's Changed
- Fix Windows DrawingView image rendering so exported/rendered strokes use the correct (round) line caps by @MFinkBK in #3216
- Popup: Android screen reader accessibility by @IeuanWalker in #2959
Housekeeping
- Use SHA Pinning by @TheCodeTraveler in eecd5d5
- Bump actions/setup-dotnet from 5.2.0 to 5.3.0 by @dependabot[bot] in #3230
- Bump PolySharp from 1.15.0 to 1.16.0 by @dependabot[bot] in #3228
- Bump Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing from 1.1.3 to 1.1.4 by @dependabot[bot] in #3227
- Bump Microsoft.CodeAnalysis.CSharp.CodeFix.Testing from 1.1.3 to 1.1.4 by @dependabot[bot] in #3226
- Bump System.Formats.Asn1 from 10.0.7 to 10.0.8 by @dependabot[bot] in #3217
- Bump Microsoft.CodeAnalysis.CSharp.Analyzer.Testing from 1.1.3 to 1.1.4 by @dependabot[bot] in #3224
- Bump Microsoft.Testing.Extensions.CodeCoverage from 18.6.2 to 18.7.0 by @dependabot[bot] in #3221
- Prevent NETSDK1102 on MacCatalyst by @TheCodeTraveler in adce47b
New Contributors
@MFinkBK made their first contribution in #3216
Full Changelog: 14.1.1...14.2.0
MediaElement v10.0.0: StreamMediaSource
CommunityToolkit.Maui.MediaElement v10.0.0
Introducing MediaSource.FromStream(Stream)
Thanks to @matt-goldman, MediaElement now supports streaming sources!
Use MediaSource.FromStream(Stream) to assign the MediaElement.Source to a Stream:
const string buckBunnyVideo = "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/1080/Big_Buck_Bunny_1080_10s_30MB.mp4";
await using var networkStream = await httpClient.GetStreamAsync(buckBunnyVideo);
var sourceStream = new MemoryStream();
await stream.CopyToAsync(sourceStream);
sourceStream.Position = 0;
MediaElement.Source = MediaSource.FromStream(sourceStream);Learn More:
https://learn.microsoft.com/dotnet/communitytoolkit/maui/views/mediaelement
What's Changed
- Add stream media source by @matt-goldman in #3181
Full Changelog: 14.1.1...10.0.0-mediaelement
Camera v6.1.0: `IsTorchOn`
CommunityToolkit.Maui.Camera v6.1.0
Introducing IsTorchOn 🔦
Thanks to @MFinkBK, bool CameraView.IsTorchOn { get; set; } is now supported!
When IsTorchOn == true the device's torch (aka flashlight) will turn on; when IsTorchOn == false the device's torch (aka flashlight) will turn off.
https://learn.microsoft.com/dotnet/communitytoolkit/maui/views/camera-view
CameraViewPage.xaml.cs
<toolkit:CameraView
x:Name="Camera"
IsTorchOn="{Binding IsTorchOn, Mode=TwoWay}" />CameraViewViewModel.cs
[ObservableProperty]
public partial bool IsTorchOn { get; set; }What's Changed
- CameraView torch support by @MFinkBK in #3211
- fix: allow camera usage when microphone permission is denied on Windows by @AopBK in #3140
New Contributors
Full Changelog: 14.1.1...6.1.0-camera
14.1.1: Add Popup Extension for `NavigatingFromEventArgs.`, Fix `StatusBar` + `SpeechToText` Auto-timeout bugs
CommunityToolkit.Maui v14.1.1
New Popup Extension
public static bool IsDestinationPageACommunityToolkitPopupPage(this NavigatingFromEventArgs args);You can now use NavigatingFromEventArgs to determine if the previous page was a Popup: https://learn.microsoft.com/en-us/dotnet/communitytoolkit/maui/views/popup#lifecycle-behavior
protected override void OnNavigatingFrom(NavigatingFromEventArgs args)
{
base.OnNavigatingFrom(args);
if (args.IsDestinationPageACommunityToolkitPopupPage())
{
// If true, `OnNavigatingFrom` was called by starting a Popup
}
}SpeechToText Bug Fix
- Fix AutoStopSilenceTimeout for SpeechToTextOptions doesn't work on iOS
StatusBar Bug Fix
- Fix
StatusBar.SetColor()when usingStatusBarBehavior - Update StatusBar Size On Device Orientation Change
Microsoft.Maui.Controls Dependency
- Increase dependency to Microsoft.Maui.Controls v10.0.60
What's Changed
- Added OnNavigatingFrom extension for popup related navigation by @dartasen in #3099
- Remove
RestartTimer()fromAvAudioNodeCallback by @TheCodeTraveler in #3196 - FIX: [BUG] Using StatusBarBehavior Breaks StatusBar.SetColor() #3197 API36 by @Pastajello in #3202
- Add compile-time property initializer for default values in BindableProperty source generator by @matt-goldman in #3204
- Update StatusBar Size On Device Orientation Change by @TheCodeTraveler in #3208
Housekeeping
- Explicitly target iOS and macOS to osx and Windows platforms (only) by @matt-goldman in #3186
- Bump Microsoft.Testing.Extensions.CodeCoverage from 18.5.2 to 18.6.2 by @dependabot[bot] in #3193
- Bump System.Formats.Asn1 from 10.0.6 to 10.0.7 by @dependabot[bot] in #3209
- Bump Microsoft.Extensions.Http.Resilience from 10.4.0 to 10.5.0 by @dependabot[bot] in #3199
- Bump System.Formats.Asn1 from 10.0.5 to 10.0.6 by @dependabot[bot] in #3201
- Bump Microsoft.Extensions.Logging.Debug from 10.0.5 to 10.0.6 by @dependabot[bot] in #3200
New Contributors
Full Changelog: 14.1.0...14.1.1
14.1.0: SpeechToText `AutostopSilenceTimeout`, StatusBar Bug Fixes, Popup Bug Fixes, AvatarView Bug Fixes, and Public Exceptions
CommunityToolkit.Maui v14.1.0
SpeechToText
- We've added
SpeechToTextOptions.AutostopSilenceTimeoutto allow you to auto-stopISpeechToText
Public Custom Exceptions
We heard your feedback! The following exceptions are now public allowing you to properly catch them inside a try/catch block:
SoftKeyboardExceptionPopupNotFoundExceptionPopupBlockedExceptionInvalidPopupOperationException
StatusBar Bug Fixes
StatusBarBehaviornow works when used inside a Modal Page on AndroidStatusBarBehaviornow uses the correct height for Android API 36+
Popup Fixes
Popupnow works when used in a Modal Page
AvatarView
AvatarViewnow correctly updates its size whenImageSourcechanges
What's Changed
- Make custom exceptions public by @FabriBertani in #3134
- Filter out non-public types in TextColorToGenerator assembly scanning by @jfversluis in #3161
- Add Support for Popups inside a Modal
NavigationPageby @StefanRailcube in #3164 - Fix for Bug 2761 (AppThemeResource not finding keys) by @misterspeak in #3159
- Add Support for
StatusBarBehaviorin Android Modal Page by @TheCodeTraveler in #3123 - Fix: [BUG] StatusBar too large in landscape mode (in API 36+) #3170 by @Pastajello in #3182
- Fix: [BUG] AvatarView changes size when setting its ImageSource #3153 by @Pastajello in #3183
- SpeechToText AutostopSilenceTimeout by @VladislavAntonyuk in #3111
New Contributors
- @StefanRailcube made their first contribution in #3164
- @misterspeak made their first contribution in #3159
- @Pastajello made their first contribution in #3182
Full Changelog: 14.0.1...14.1.0
MediaElement v9.0.0: UriMediaSource HttpHeaders
CommunityToolkit.Maui.MediaElement v9.0.0
Introducing UriMediaSource.HttpHeaders
We heard your feedback! You can now use Http Headers for UriMediaSource:
var headers = new Dictionary<string, string>
{
["Authorization"] = "Bearer my-token"
};
mediaElement.Source = MediaSource.FromUri(new Uri("https://example.com/stream.m3u8"), headers);What's Changed
- Add DynamicDependency to MauiMediaElement constructors by @ne0rrmatrix in #3116
- UriMediaSource HttpHeaders by @Kaaybi in #3169
New Contributors
- @Kaaybi made their first contribution in #3169
Full Changelog: 14.0.1...9.0.0-mediaelement
Camera v6.0.1: Fix Photo + Video Orientation
CommunityToolkit.Maui.Camera v6.0.1
What's Changed
- CameraView fix for iOS: orientation and video recording by @zhitaop in #3167
- CameraView fix for Android: video recording and rotation by @zhitaop in #3168
Full Changelog: 14.0.1...6.0.1-camera