What's Changed
- [Android] Avoid crash if not set the RefreshColor property - #5092 (@jsuarezruiz)
- Respect UserAppTheme in RequestedTheme - #5071 (@mattleibow)
- Update SkiaSharp again - #5076 (@mattleibow)
- Switch to dispatcher so Dispose is called after DestroyView - #5064 (@PureWeen)
- Remove unsupported targets in Device class - #4491 (@jsuarezruiz)
- Remove all usage of Device throughout the repo - #4982 (@mattleibow)
- Implement IBorder on Windows - #5008 (@jsuarezruiz)
- [shell] minor performance improvements - #5013 (@jonathanpeppers)
- Fix iOS CollectionView update when not visible - #5011 (@jfversluis)
- Add a PropertyMapper for FormattedText - #5029 (@cshung)
- Make sure RadioButtonExtensions.UpdateTextColor applies to RadioButton only - #4998 (@cshung)
- [Android] Hide Keyboard in Android Entry and Editor when back key is pressed - #4827 (@jsuarezruiz)
- Remove Application.Properties implementation - #4976 (@eerhardt)
- Don't set the text on android if value matches - #4992 (@PureWeen)
- [core] use StringComparison.Ordinal everywhere - #4988 (@jonathanpeppers)
- Windows FlowDirection - #4936 (@PureWeen)
- Update powershell version - #4973 (@sbomer)
- Update DEVELOPMENT.md - #4977 (@Clancey)
- Fix up tests after Shell runs - #4970 (@PureWeen)
- Add Emscripten back to rollback file - #4971 (@Redth)
- [Android] Update the DatePicker Dialog if the display info changes - #4815 (@jsuarezruiz)
- [iOS] Custom implementation in ScrollView IsEnabled property - #4881 (@jsuarezruiz)
- Move TabbedPageHandler to TabbedViewHandler - #4893 (@PureWeen)
- [Android] Clear focus and hide keyboard submitting the text or disabling the View - #4828 (@jsuarezruiz)
- Remove
IPlatformServices.RequestedTheme
and use Essentials - #4964 (@mattleibow) - Use bash to install dotnet rather than sh - #4916 (@dellis1972)
- Remove IImageSourceServiceConfiguration - #4954 (@mattleibow)
- Update PULL_REQUEST_TEMPLATE.md - #4965 (@Eilon)
- Add more APIs to IDispatcher - #4944 (@mattleibow)
- remove generation of __InitComponentRuntime - #4911 (@StephaneDelcroix)
- Interfaced handler for SwipeItemView - #4939 (@antonfirsov)
- Enable File Picker in Blazor Android WebView - #4928 (@TanayParikh)
- Refactor VersionTracking into interface - #4891 (@Redth)
- Implement WebView navigation events - #4443 (@jsuarezruiz)
- [android] refactor font loading - #4933 (@jonathanpeppers)
- [Windows] Detect when image failed to load in Windows ImageButton - #4816 (@jsuarezruiz)
- Ensure InvokeAsync(Func) is properly awaited - #4873 (@pranavkm)
- IBorder now works again for iOS/Android - #4909 (@Clancey)
- [Android] Hide Keyboard in Android Entry and Editor when back key is pressed - #4827 (@jsuarezruiz)
- [iOS][macOS] Remove more superflous version checks - #4906 (@pjcollins)
- [Essentials] Fix maciOS version checks - #4908 (@pjcollins)
- [android] add projects to record AOT profiles - #4859 (@jonathanpeppers)
- Add doc comments for BlazorWebView APIs - #4904 (@pranavkm)
- Update LICENSE - #4905 (@jamesmontemagno)
- Implement RefreshViewHandler on Windows - #3299 (@jsuarezruiz)
- Interfaced handlers for RefreshView and SearchBar - #4847 (@antonfirsov)
- Generate the Windows manifests as well - #2704 (@mattleibow)
- Blazor Open Links in Browser with Configurability - #4645 (@TanayParikh)
- [iOS] Fix issues running on iOS12 - #4892 (@rmarinho)
- Wire up build targets to exclude content items from iOS and Android checks - #4861 (@pranavkm)
- Refactor SecureStorage into an interface - #4668 (@antonfirsov)
- Essentials.FileSystem refactored to interface and singleton - #4633 (@moljac)
- Move Android Shell to Compatibility - #4857 (@PureWeen)
- Refactor Screenshot to use an interface - #4699 (@antonfirsov)
- Moved
GetPlatformSize
logic into a new service - #4885 (@mattleibow) - Refactor Essentials.Launcher into interface - #4886 (@Redth)
- Fix Razor compilation when running inside WPF's GenerateTemporaryTargetAssembly sub-build - #4884 (@SteveSandersonMS)
- Interfaced WebViewHandler, add missing CommandMapper to WindowHandler - #4875 (@antonfirsov)
- Interfaced handler for RadioButton - #4846 (@antonfirsov)
- Essentials.WebAuthenticator refactored to interface and singleton - #4757 (@moljac)
- Menubar - #4839 (@PureWeen)
- Interfaced handlers for ShapeView, Slider, Stepper - #4865 (@antonfirsov)
- Interfaced handler for Switch and TimePicker - #4872 (@antonfirsov)
- Essentials.Magnetometer refactored to interface and singleton - #4652 (@moljac)
- Interfaced handlers for Picker and ProgressBar - #4843 (@antonfirsov)
- Interfaced handlers for Label, NavigationView, Page - #4841 (@antonfirsov)
- Interfaced handler for SwipeItemMenuItem, update ISwipeViewHandler - #4867 (@antonfirsov)
- Update LayoutHandler to use current conventions - #4842 (@antonfirsov)
- Essentials.Geolocation refactored to interface and singleton - #4634 (@moljac)
- Essentials.Compass refactored to interface and singleton - #4615 (@moljac)
- Essentials.Gyroscope refactored to interface and singleton - #4649 (@moljac)
- Essentials.OrientationSensor refactored to interface and singleton - #4662 (@moljac)
- Don't generate xamlc debug on design time builds - #4858 (@Redth)
- Change 'Blazor component' naming - #4856 (@guardrex)
- [iOS] Allow to customize the WebView Delegate using the Mapper - #4854 (@jsuarezruiz)
- Force shell creation on UI thread - #4845 (@hartez)
- Interfaced IndicatorViewHandler - #4840 (@antonfirsov)
- Interfaced BorderHandler and CheckBoxHandler - #4676 (@antonfirsov)
- Update ImageHandler and ImageButtonHandler to current conventions - #4784 (@antonfirsov)
- Fix tests screenshot - #4833 (@rmarinho)
- Add handling and tests for TextTransform for SearchBar/Editor/Entry - #4554 (@hartez)
- [iOS] Implement pending custom WKWebKitDelegate in WebViewHandler - #4817 (@jsuarezruiz)
- Implement Cookies property in WebView - #4419 (@jsuarezruiz)
- [Windows] Implement IsFocused property and Focus(), Unfocus() methods - #4562 (@jsuarezruiz)
- Remove dead code from MauiFactory - #4789 (@eerhardt)
- Essentials.HapticFeedback refactored to interface and singleton - #4651 (@moljac)
- Essentials.Vibration refactored to interface and singleton - #4727 (@moljac)
- Essentials Barometer - alternate approach - #4761 (@Redth)
- Essentials.Email refactored to interface and singleton - #4623 (@moljac)
- [Core] Implement SizeChanged event - #4541 (@jsuarezruiz)
- Use unelevated button style on Android - #4722 (@hartez)
- Address CreateInstance ILLink warnings - #4769 (@eerhardt)
- Remove packages not used directly by MAUI [WIP] - #4776 (@rmarinho)
- Add pending Picker events and notify items collection changes - #4346 (@jsuarezruiz)
- Annotate web Content items to avoid workarounds in Xamarin and iOS SDKs - #4728 (@pranavkm)
- Interfaced handlers for ContentView, DatePicker, Editor - #4763 (@antonfirsov)
- Interfaced handlers for Entry, FlyoutView, GraphicsView - #4780 (@antonfirsov)
- In BlazorWebView WinForms/WPF, don't require wwwroot to exist in bin dir in development - #4782 (@SteveSandersonMS)
- [Windows] Implement Border properties in RadioButtonHandler - #4416 (@jsuarezruiz)
- Essentials.Browser refactored to interface and singleton - #4605 (@moljac)
- Essentials.TextToSpeech refactored to interface and singleton - #4747 (@moljac)
- Essentials.Clipboard refactored to interface and singleton - #4612 (@moljac)
- Essentials.Connectivity refactored to interface and singleton - #4622 (@moljac)
- [Android] Implement IsFocused property and Focus(), Unfocus() methods - #4587 (@jsuarezruiz)
- Essentials.AppActions refactored to interface and singleton - #4596 (@moljac)
- [WinUI] Use XamlRoot for GetViewTransform - #4689 (@drasticactions)
- Remove debug checks - #4738 (@Eilon)
- [iOS] Implement IsFocused property and Focus(), Unfocus() methods - #4588 (@jsuarezruiz)
- [templates] define a %(BaseSize) for images - #4759 (@jonathanpeppers)
- Allow to use string to define StrokeShape in XAML - #3256 (@jsuarezruiz)
- [iOS, Catalyst] Shell View Handler - #4616 (@PureWeen)
- Add GetHostedWindow - #4706 (@drasticactions)
- remove RegisterSourceInfo from Xamlc - #4710 (@StephaneDelcroix)
- use TypeRefComparer for finding converters - #4713 (@StephaneDelcroix)
- Essentials.Battery refactored to interface and singleton - #4629 (@moljac)
- Refactor Share to use an interface - #4674 (@antonfirsov)
- Update current .NET MAUI version in bug issue template - #4718 (@jfversluis)
- Remove storage read from essentials android - file/media picker - #4697 (@jamesmontemagno)
- Refactor Accelerometer into an interface - #4630 (@antonfirsov)
- Shapes Handlers - #4472 (@jsuarezruiz)
- Renaming public APIs Native --> Platform - #4599 (@rachelkang)
- Refactor SemanticScreenReader to use an interface - #4673 (@antonfirsov)
- Initial work to get unpackaged WinUI apps - #4460 (@mattleibow)
- Some optimization to speed up device test discovery - #4698 (@hartez)
- [tests] Add Task.Delay to some unreliable tests - #4637 (@rmarinho)
- Essentials.MediaPicker refactored to interface and singleton - #4663 (@moljac)
- Implement image caching functionality for iOS - #4515 (@rachelkang)
- Identify Setter property target in VSG case - #4607 (@StephaneDelcroix)
- [iOS] Replace UIDevice.CheckSystemVersion checks - #4635 (@pjcollins)
- Remove IToolbar from IStackNavigationView - #4654 (@PureWeen)
- Add ExecutionPolicy and NoProfile to powershell command - #4678 (@eerhardt)
- [Android] Fix the math for GenerateAdornerOffset - #4677 (@drasticactions)
- use compiled converter for Color - #4687 (@StephaneDelcroix)
- [Core] Implement IsReadOnly property in SearchBar - #3391 (@jsuarezruiz)
- Update Android Gallery to use Maui - #1558 (@PureWeen)
- Fix cell parenting when using Retain Caching - #4636 (@PureWeen)
- [Windows] CarouselViewHandler - #4200 (@jsuarezruiz)
- [iOS] Add pending events in EntryHandler - #4347 (@jsuarezruiz)
- product name / terminology corrections - #4661 (@mikeirvingweb)
- [WinUI] Fix Flyout Background Color and Locked Flyout Margins - #4639 (@PureWeen)
- [Android] Implement RadioButton Border properties - #4626 (@jsuarezruiz)
- Moved IPlatformServices.GetNamedSize into a separate service - #4570 (@mattleibow)
- Refactored Preferences into an Interface - #4582 (@sps014)
- Run BlazorWebView tests only on Android API level 28+ - #4625 (@SteveSandersonMS)
- Make sure to use the correct p/invoke for 32-bit - #4600 (@mattleibow)
- Remove all GetAssemblies() implementations - #4583 (@mattleibow)
- Refactored SMS into an Interface - #4584 (@sps014)
- iOS TabbedPage and NavigationPage measuring fixes - #4576 (@PureWeen)
- Allow to create custom layouts using Layout - #4558 (@jsuarezruiz)
- Refactored Map to an interface - #4557 (@sps014)
- Make Device.Idiom and Device.RuntimePlatform use Essentials - #4548 (@mattleibow)
- iOS NavigationRend-andler - #3969 (@PureWeen)
- Add CarouselView handlers on Controls [iOS] - #3141 (@rmarinho)
- Contacts Refactored to Singleton/Interface - #4539 (@sps014)
- fix copyright headers - #4560 (@StephaneDelcroix)
- Increase BlazorWebView test timeouts - #4543 (@SteveSandersonMS)
- refactored Geocoding to an interface - #4527 (@sps014)
- Removed obsolete APIs from project templates - #4535 (@jsuarezruiz)
- Template xaml encoding - #4532 (@StephaneDelcroix)
- Remove MS.Extensions.Hosting from Maui - #4505 (@eerhardt)
- Flyout should always update the details when it changes. - #4519 (@Clancey)
- Refactor FlashLight to use an Interface - #4525 (@sps014)
- Refactor DeviceInfo to use an interface - #4465 (@mattleibow)
- [templates] add xml encoding directive - #4495 (@StephaneDelcroix)
- EvaluateJavaScriptAsync with CommandMapper (Version 2) - #4507 (@hartez)
- Shell WinUI Handler - #4501 (@PureWeen)
- Don't force a min size of zero for controls - #4422 (@hartez)
- Remove
IPlatformInvalidate
andDevice.Invalidate()
- #4479 (@mattleibow) - Refactor PhoneDialer into interface - #4466 (@Redth)
- Refactor AppInfo into interface - #4464 (@Redth)
- Remove Device.Flags/SetFlags() - #4478 (@mattleibow)
- Delete the extra UAP project - #4494 (@mattleibow)
- Remove Device.GetNamedColor - #4492 (@mattleibow)
- updated Microsoft.TemplateEngine.Tasks version - #4489 (@vlada-shubina)
- Add microsoft.net.workload.mono.toolchain back into the rollback.json - #4481 (@mattleibow)
- Essentials: Port xamarin/Essentials#1760 - #2763 (@dimonovdd)
- Fix INativeViewHandler to return more expected NativeView - #4432 (@PureWeen)
- Remove ambiguity in updates in WinUI - #4454 (@mattleibow)
- Backport preview 13 fixes - #4434 (@Redth)
- Add drag-drop item reordering to CollectionView #3767 - #3768 (@billvenhaus)
- [WinUI] Wire up the rest of the TabbedPage properties - #4429 (@PureWeen)
- Shell page dependency injection now uses IServiceProvider.GetService() - #4281 (@brunck)
New Contributors
- @billvenhaus made their first contribution in #3768
- @vlada-shubina made their first contribution in #4489
- @sps014 made their first contribution in #4525
- @SteveSandersonMS made their first contribution in #4543
- @mikeirvingweb made their first contribution in #4661
- @moljac made their first contribution in #4663
- @pranavkm made their first contribution in #4728
- @guardrex made their first contribution in #4856
- @dellis1972 made their first contribution in #4916
- @sbomer made their first contribution in #4973
Full Changelog: 6.0.200-preview.13.2...6.0.200-preview.14.2
Known Issues
- 6.0.300 SDK workload CLI cannot install Preview 14 workloads on macOS
- Visual Studio 17.2 Preview 2.0 connects to a remote iOS build agent but cannot debug an iOS app
(NOTE: This will be fixed in an upcoming 17.2 Preview servicing release)
macOS / macOS Build Host Preview 14 installation workaround:
- Install the latest 6.0.201 SDK: https://dotnet.microsoft.com/en-us/download/dotnet/6.0
- Install a preview of the 6.0.300 SDK: https://github.com/dotnet/installer#table
- Open a terminal window
- Create a new working folder:
mkdir ./p14
andcd ./p14
- Create a global.json file to use the 6.0.201 SDK version specifically:
dotnet new globaljson --sdk-version 6.0.201
- Run the following workload command to install iOS:
sudo dotnet workload install ios \
--from-rollback-file https://aka.ms/dotnet/maui/preview.14.json
--source https://api.nuget.org/v3/index.json
- Delete the global.json file
rm ./global.json
- Delete the 6.0.3xx sdk workload manifests from your global install if they exist, and replace them with the ones the previous command just installed into the 6.0.2xx manifests folder (note: the default global dotnet SDK location is assumed):
sudo rm -rf /usr/local/share/dotnet/sdk-manifests/6.0.300/*
sudo cp -R /usr/local/share/dotnet/sdk-manifests/6.0.200/* /usr/local/share/dotnet/sdk-manifests/6.0.300
- Run the following workload command to install the copied manifests into the 6.0.3xx SDK:
sudo dotnet workload install ios \
--skip-manifest-update \
--from-rollback-file https://aka.ms/dotnet/maui/preview.14.json \
--source https://api.nuget.org/v3/index.json
- Next, fix the remote iOS build host SDK's installation (this assumes you are logged in as the same user you will connect to from windows, otherwise replace the user path as appropriate):
rm -rf ~/Library/Caches/Xamarin/XMA/SDKs/dotnet/sdk-manifests/6.0.300/*
cp -R /usr/local/share/dotnet/sdk-manifests/6.0.200/* ~/Library/Caches/Xamarin/XMA/SDKs/dotnet/sdk-manifests/6.0.300
- Run the workload command in the build host sdk install directory:
~/Library/Caches/Xamarin/XMA/SDKs/dotnet/dotnet workload install ios \
--skip-manifest-update \
--from-rollback-file https://aka.ms/dotnet/maui/preview.14.json \
--source https://api.nuget.org/v3/index.json