Releases: CommunityToolkit/Maui
v5.1.0: LazyView, Keyboard Extensions & Bugfixes!
Happy Friday! Almost weekend, but before you go... Here is the latest release of the .NET MAUI Community Toolkit, our best release yet!
LazyView
A good developer is a lazy developer? If that's true for you, then we have just the control for that!
You might already know and love the LazyView
from the Xamarin Community Toolkit. With the LazyView
control you can delay the initialization of any given View
in .NET MAUI. You can read all about what it is, and more importantly, how to use it in our docs!
All this amazing work is done by our very own @kphillpotts, thanks mate!
Keyboard Extensions
OK, sit down, this is an important one although you might not realize it. There is a lot to do about the keyboard behavior in .NET MAUI.
With these keyboard extensions, now available in .NET MAUI Community Toolkit, you will have more control over how the (soft)keyboard behaves. You can easily check if the keyboard is currently shown, hide it or show it as you please in your .NET MAUI app.
A-MA-ZING, right?! This should send you off into the weekend with a great feeling. Oh, you wonder how to work with it? Say no more, we got the docs right here.
Thank you for your great work on this @PureWeen! Here is your virtual margarita 🍸
All the details
We got a lot of bugfixes and other small changes included in this version as well. Check them out below and let us know your favorite one!
Who am I kidding... No one has a favorite bugfix.
- FileSaver does not truncate existing files by @farmergreg in #1050
- Fixes FileSaver filename on Apple by @VladislavAntonyuk in #1065
- Fix FileSaver exception {"The parameter is incorrect.\r\n"} by @VladislavAntonyuk in #1074
- Fix FileSaver doesn't handle non-seekable streams by @VladislavAntonyuk in #1078
- No need to create choose intent by @VladislavAntonyuk in #1087
- Implementation of LazyView + Sample + Unit Tests by @kphillpotts in #1102
- KeyboardExtensions by @PureWeen in #1064
Housekeeping, no one cares but us
- Bump CommunityToolkit.Maui.Markup from 3.0.0 to 3.1.0 in /samples by @dependabot in #1051
- [Housekeeping] Increase Toolkit .NET Version to v7.0.200 by @brminnick in #1070
- Bump Newtonsoft.Json from 13.0.2 to 13.0.3 in /samples by @dependabot in #1076
- [Housekeeping] Enable
AccelerateBuildsInVisualStudio
by @brminnick in #1079 - [Housekeeping] Fix
Directory.Build.targets
for macOS by @brminnick in #1081 - Bump Microsoft.Extensions.Http.Polly from 7.0.3 to 7.0.4 in /samples by @dependabot in #1096
- Bump Microsoft.Extensions.Http.Polly from 7.0.4 to 7.0.5 in /samples by @dependabot in #1137
New Contributors
- @farmergreg made their first contribution in #1050
Full Changelog: 5.0.0...5.1.0
v5.0.0: SemanticOrderView, FileSaver, FolderPicker and StateContainer love!
Hello again! 👋 It's the .NET MAUI Community Toolkit team with another wonderful release!
SemanticOrderView
In this release we'd love to (re)introduce to you the SemanticOrderView
. The SemanticOrderView
provides the ability to control the order of VisualElement
s for screen readers and improve the accessibility of an application. Phew, now that sounds important, so go check it out in our docs and start implementing it!
FileSaver & FolderPicker
Actually this is more about the FileSaverResult
and FolderPickerResult
. Before, you would get an exception thrown your way when the user cancelled the file save/folder pick action. Now, we've introduced these two objects that will give you a bit more information and control! As a bonus, we fixed the selection of the initial folder on Android.
The docs have also been updated so you can see how to work with this amazing new stuff!
StateContainer
First, we fixed a nasty bug in StateContainer
so it will crash less, that's always good news.
Second, we introduced StateContainer.ChangeStateWithAnimation()
which allows you to customize the behavior or animations whenever the state changes. And who doesn't love some great animations? I know you do!
Did we mention the docs got updates? Well, we made no exception for StateContainer
check it out here.
Highlights
But there is much more to unpack here, we just won't spell everything out because who reads docs anyway? 🤷♂️
Here is the management summary for this release, watch out for those breaking changes:
- 💥 Breaking Change: The minimum dependency of .NET MAUI has increased to .NET MAUI v7.0.59; ie .NET MAUI Community Toolkit now requires .NET MAUI v7.0.59 or higher
- 💥 Breaking Change:
StateContainer.ShouldAnimateOnStateChange
Property replaced withStateContainer.ChangeStateWithAnimation()
method - 💥 Breaking Change:
IFileSaver.SaveAsync()
now returns FileSaverResult (previously returned string) - 💥 Breaking Change:
IFolderPicker.PickAsync()
now returns FolderPickerResult (previously returned string) SemanticOrderView
has been ported from XCT to MCTExpander
now supportsCollectionView
DrawingView.GetImageStream()
now properly sizes the imageSnackbar.ActionButtonFont
now allows supports custom Fonts like Font AwesomeEmailValidationBehavior
now supports email addresses using Domain Names, IPv4 and IPv6EmailValidationBehavior
performance optimized by usingGeneratedRegex
All the details
- Bump Microsoft.Windows.SDK.BuildTools from 10.0.22621.1 to 10.0.22621.755 in /samples by @dependabot in #919
- Postpone popup show until platform is ready by @bijington in #934
- Fix Expander in CollectionView on Apple by @VladislavAntonyuk in #751
- Fix FolderPicker Error when trying to open a second time on MacCatalyst by @VladislavAntonyuk in #956
- Bump CommunityToolkit.Maui.Markup from 2.1.0 to 3.0.0 in /samples by @dependabot in #963
- [Sample App] Implement Typed Bindings by @brminnick in #96
- Bump FluentAssertions from 6.9.0 to 6.10.0 in /samples by @dependabot in #987
- Bump Microsoft.Extensions.Http.Polly from 7.0.2 to 7.0.3 in /samples by @dependabot in #996
- Bump AutoFixture.Xunit2 from 4.17.0 to 4.18.0 in /samples by @dependabot in #1023
- Bump Microsoft.NET.Test.Sdk from 17.4.1 to 17.5.0 in /samples by @dependabot in #1022
- Bump NuGet.Protocol from 6.4.0 to 6.5.0 in /samples by @dependabot in #1025
- Bump Microsoft.CodeAnalysis.CSharp.Workspaces from 4.4.0 to 4.5.0 in /samples by @dependabot in #1028
- Bump Microsoft.CodeAnalysis from 4.4.0 to 4.5.0 in /samples by @dependabot in #1030
- Bump Microsoft.CodeAnalysis.Analyzers from 3.3.3 to 3.3.4 in /samples by @dependabot in #1031
- Fix DrawingView ImageSize by @VladislavAntonyuk in #1037
- StateContainer, Add
ChangeStateWithAnimation()
by @VladislavAntonyuk in #1021 - Add
FileSaverResult
andFolderPickerResult
, Fix Initial folder on Android by @VladislavAntonyuk in #1009 - Use font in Snackbar by @VladislavAntonyuk in #1036
- Update
EmailValidationBehavior
by @brminnick in #770 - Semantic OrderView by @PureWeen in #1011
New Contributors
Full Changelog: 4.0.0...5.0.0
If you made it until here, please tweet at me to get a virtual donut 🍩
v1.0.2 MediaElement: Adding `ShouldMute` and bugfixes!
This release adds the mute functionality to the MediaElement
, but maybe even more important: there are some good bugfixes in here!
We're getting the first real-life feedback from you, thank you for that! And that also means you are using the MediaElement
in ways that we could not foresee. That meant, there were a couple of crashes when using MediaElement
on iOS in different page types and with or without .NET MAUI Shell. And there was a crash when you would clean up the MediaElement
on Windows. Additionally, setting ShouldAutoPlay
to false on iOS did not always have effect, that should be better now too.
We fixed the ones we knew about right now, so it should be much more stable! If you still run into anything, of course please let us know!
What's Changed
- [iOS]
ShouldAutoPlay=false
should not auto play by @jfversluis in #954 - Update ExoPlayer binding dependencies by @jfversluis in #973
- Relax ViewController detection for iOS MediaElement to enable non-Shell usage by @jfversluis in #999
- Fix disposal of MediaElement for Windows by @jfversluis in #1002
- Bump Xam.Plugins.Android.ExoPlayer from 2.18.9 to 2.18.10 in /samples by @dependabot in #1005
- Bump Xam.Plugins.Android.ExoPlayer.Transformer from 2.18.9 to 2.18.10 in /samples by @dependabot in #1006
- Provide parent view controller to MediaElement iOS by @jfversluis in #1008
- Implement Mediaelement ShouldMute by @jfversluis in #953
Full Changelog: 1.0.1-mediaelement...1.0.2-mediaelement
v1.0.1 MediaElement: No more WindowsAppSDK issues and minor bugfixes
This version has a couple of small fixes. The main one being that we removed the explicit WindowsAppSDK dependency. This would cause issues when installing on your .NET MAUI app and you'd have to manually add that explicit reference as well which was not a great experience.
If you did add that explicit reference in your .NET MAUI app csproj, you can remove it after installing this version. For more details see the linked pull request below.
What's Changed
- Various MediaElement fixes by @jfversluis in #928
Full Changelog: 1.0.0-mediaelement...1.1.0-mediaelement
v4.0.0: Lots of new goodies!
New Features
Introducing two new services, IFileSaver.SaveAsync()
and IFolderPicker.PickAsync()
!
Read more in the documentation here: https://learn.microsoft.com/dotnet/communitytoolkit/maui/essentials/
Breaking Change
ToastNotificationExtensions.BuildToastNotificationContent()
was removed when migrating ToastNotificationManager
to AppNotificationManager
: https://github.com/CommunityToolkit/Maui/pull/900/files#diff-9af18ed6af5f7deac7b241d2224fa643a67671f280faf56450e1f716bd345fbb
What's Changed
- Use raw string literals in source generators by @brminnick in #823
- Transparent popup by @VladislavAntonyuk in #789
- Add
StateContainer.CanStateChangeProperty
by @brminnick in #811 - [housekeeping] Automated PR to fix formatting errors by @github-actions in #828
- Fix 827 by @jaigupta91 in #831
- Do not use shared default value for LinesProperty by @Ghostbird in #862
- TokenSource field is never assigned by @GeorgeLeithead in #875
- Close Needs Reproduction issues after 5 days by @VladislavAntonyuk in #826
- Update Contributing guide with opening a bug step ♻️ by @pictos in #885
- Create
IFileSaver.SaveAsync()
andIFolderPicker.PickAsync()
by @VladislavAntonyuk in #699 - Update
ReadMe.txt
Code Snippet To Match the .NET MAUI Templates by @CliffAgius in #869 - Improve bindings on tintcolor by @pictos in #847
- StatusBar. Check for Android Activity for null. by @VladislavAntonyuk in #893
- Use AppNotificationManager instead of ToastNotificationManager by @VladislavAntonyuk in #900
- Fix CharactersValidationBehavior Bindings missing #474 by @VladislavAntonyuk in #896
- Fix Label background color in CompareConverter Sample #796 by @VladislavAntonyuk in #897
- Make ToastNotificationExtensions internal by @VladislavAntonyuk in #913
- Update build pipeline to enable separate MediaElement release by @jfversluis in #916
- Fix Multiple StackLayouts inside of UniformItemsLayout do not show up by @VladislavAntonyuk in #914
- DateTimeOffsetConverter fix ArgumentException by @VladislavAntonyuk in #915
New Contributors
- @jaigupta91 made their first contribution in #831
- @Ghostbird made their first contribution in #862
Full Changelog: 3.1.0...4.0.0
v1.0.0: Welcome MediaElement!
This is the very first release of the .NET MAUI Community Toolkit MediaElement 🎉
Docs with all the features can be found here: https://learn.microsoft.com/dotnet/communitytoolkit/maui/views/mediaelement
v3.1.0: No more slow IntelliSense!
Whoops! Look like our smart little source generators were causing slow IntelliSense in your .NET MAUI apps. We've fixed that and also added some other improvements to this new and shiny v3.1.0 release. And yes, we're again releasing this on a Friday 😌
What's Changed
- Use
[GeneratedRegex]
by @brminnick in #763 - [BUG] DrawingView GetImageStream cuts off lines on edge of image #773 by @VladislavAntonyuk in #788
- fix: Removed wrong attributes on ExpanderPage. by @HavenDV in #790
- Include link and brief description to the projects board in the readme by @bijington in #731
- IsInRangeConverter by @GeorgeLeithead in #582
- Update ToastDuration options documentation with actual duration by @jfversluis in #793
- Make
TextColorTo
Generated Classes for .NET MAUI Controls Internal by @brminnick in #791 - Fix the Incremental behavior of our Source Generator by @pictos in #815
- Bumped a bunch of dependencies
New Contributors
Full Changelog: 3.0.0...3.1.0
v3.0.0: .NET MAUI Community Toolkit built against .NET 7
And just like that, within 24 hours of the .NET 7 release, the .NET MAUI Community Toolkit has a release built against .NET 7! Same day support!
Just to give you the full context, we have releases a couple of versions after on another, a quick overview.
- Version 1.4.0: adds Expander, DockLayout & StateContainer (and of course a lot of bugfixes!) - full release notes
- Version 2.0.0: adds full Tizen support for all of out features, including the changes from v1.4.0 about - full release notes
- Version 3.0.0: everything from v1.4.0 and v2.0.0 but now built against .NET 7!
With this strategy we aim to empower as many people as possible: everyone on .NET 6 can get all the features we've merged so far, including Tizen support if that's what you need.
From here on out it will be .NET 7 only and expect amazing new features! Or, of course, contribute yourself 😉
As always, thank you everyone for making this possible, thank you community for working with us and using our stuff! <3
What's Changed
- [housekeeping] Automated PR to fix formatting errors by @github-actions in #743
- Bump CommunityToolkit.Maui.Markup from 1.2.0 to 1.2.1 in /samples by @dependabot in #744
- Prepare to .NET 7 release by @VladislavAntonyuk in #681
Full Changelog: 2.0.0...3.0.0
v2.0.0 Tizen Support!
This release adds Tizen Support to the .NET MAUI Community Toolkit!
Huge thanks to @myroot, from the Samsung .NET Tizen team, for submitting the Tizen PR!
We are also honored to have @JoonghyunCho, also from the Samsung .NET Tizen team, joining us as a core maintainer on the .NET MAUI Community Toolkit team! You can learn more about Tizen + .NET MAUI and meet @JoonghyunCho in our November 2022 Community Toolkit Standup!
Breaking Change
👀 You may have noticed we increased the Major Version to v2.0.0 👀
To support Tizen, we increased our minimum .NET dependency from v6.0.300
to v6.0.400
, because Tizen was not added to .NET MAUI until v6.0.400.
What's Changed
New Contributors
Full Changelog: 1.4.0...2.0.0
v1.4.0: Expander, DockLayout & StateContainer
This is getting old but... This is the best release EVER! I know, that's what I always say, and it's true every time!
Just look at the list of changes that went in 👇 those are a lot of bugfixes. But not just bugfixes...
Welcome back to three old friends from the Xamarin Community Toolkit, now available for .NET MAUI: Expander, DockLayout and StateContainer. Two of these are actually done by our amazing community members. Big shoutout to @nicjay and @profix898.
And of course, our rockstar core team member @VladislavAntonyuk for making the Expander happen.
Note Expander is not currently supported inside of CollectionView or ListView: #742
Go try it out, and let us know what you think!
Just FYI... This is the second to last release that will support .NET 6. The next release, 2.0, will add Tizen support for all of the goodness in .NET MAUI Community Toolkit and then version 3 will bring .NET 7 support and even more features. Those releases will follow each other pretty quickly, so hang on to your hats!
What's Changed
- Bump CommunityToolkit.Maui.Markup from 1.0.1 to 1.1.1 in /samples by @dependabot in #640
- Pj/status bar hot fix by @pictos in #638
- [BUG] GetImageStream wrong when lines populated from code #649 by @VladislavAntonyuk in #653
- Moved SemanticProperites.Description setting out of ImageSource by @kphillpotts in #656
- Bump Microsoft.NET.Test.Sdk from 17.3.1 to 17.3.2 in /samples by @dependabot in #657
- Fixed light dismiss on android by @pictos in #661
- Swap to using IValueConverter for the EventToCommandBehavior by @bijington in #665
- Bump Microsoft.CodeAnalysis.CSharp.Workspaces from 4.3.0 to 4.3.1 in /samples by @dependabot in #670
- Bump Microsoft.CodeAnalysis from 4.3.0 to 4.3.1 in /samples by @dependabot in #671
- Remove obsolete APIs, Implement IDisposable by @VladislavAntonyuk in #659
- Fix Calculation of
Snackbar
Parent View by @VladislavAntonyuk in #666 - Removed the MauiContext from ToPlatform call by @pictos in #683
- Bump Microsoft.Extensions.DependencyInjection from 6.0.0 to 6.0.1 in /samples by @dependabot in #686
- Bump Microsoft.Extensions.Http.Polly from 6.0.9 to 6.0.10 in /samples by @dependabot in #687
- FIX: AvatarView clipping on Android isn't applied correctly by @GeorgeLeithead in #668
- Make sure Popup will set the Window at the Content by @pictos in #674
- Update pipeline by @VladislavAntonyuk in #701
- [ANDROID] Implement the new API to change the StatusBar style by @maxkoshevoi in #694
- Bump FluentAssertions from 6.7.0 to 6.8.0 in /samples by @dependabot in #710
- Bump coverlet.collector from 3.1.2 to 3.2.0 in /samples by @dependabot in #718
- For Source Generators, Ensure
GetGenericTypeConstraintsAsString
Includes Namespace for Type by @brminnick in #720 - StateContainer by @nicjay in #673
- Bump CommunityToolkit.Maui.Markup from 1.1.1 to 1.2.0 in /samples by @dependabot in #730
- Bump Microsoft.Extensions.DependencyInjection from 6.0.1 to 7.0.0 in /samples by @dependabot in #738
- Bump Microsoft.Extensions.Http.Polly from 6.0.10 to 7.0.0 in /samples by @dependabot in #739
- Bump Microsoft.NET.Test.Sdk from 17.3.2 to 17.4.0 in /samples by @dependabot in #740
- Bump Microsoft.Extensions.Configuration.Abstractions from 6.0.0 to 7.0.0 in /samples by @dependabot in #741
- Add DockLayout (docks views to the edges of the layout container) by @profix898 in #635
- Expander by @VladislavAntonyuk in #478
New Contributors
- @nicjay made their first contribution in #673
- @profix898 made their first contribution in #635
Full Changelog: 1.3.0...1.4.0