Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Announcing: WinUI 3 - Windows App SDK 0.8! 🎉✨ #5260

Closed
anawishnoff opened this issue Jun 24, 2021 · 16 comments
Closed

Announcing: WinUI 3 - Windows App SDK 0.8! 🎉✨ #5260

anawishnoff opened this issue Jun 24, 2021 · 16 comments
Labels
announcement discussion General discussion

Comments

@anawishnoff
Copy link
Contributor

anawishnoff commented Jun 24, 2021

We've just shipped the latest stable version of WinUI 3, which is a part of Windows App SDK v0.8! This release includes lots of bug fixes and stability improvements. This version of WinUI 3 can be used for shipping production apps to the Microsoft Store.

Shipping WinUI 3 as a part of the Windows App SDK

In order to use this version of WinUI 3, you'll download the Project Reunion Visual Studio Extension (VSIX) to get started. The Project Reunion VSIX includes WinUI Project Templates that you'll use to build your WinUI 3 app, as well as access to other Windows App SDK components. The Windows App SDK package includes a reference to the WinUI 3 NuGet package.

For more on the Windows App SDK, see their documentation and repository. For installation instructions, see Set up your development environment.

NOTE: The Windows App SDK was previously known by the code name Project Reunion. Some SDK assets such as the VSIX extension and NuGet packages still use the code name, but these assets will be renamed in a future release. Some areas of this doc still use Project Reunion when referring to an existing asset or a specified earlier release.

What's new

These are all of the new changes in WinUI 3 since the release of Project Reunion 0.5.

  • The Pivot control has been added back in and can now be used in any WinUI 3 app.

  • All bug fixes from Project Reunion v0.5.5, v0.5.6, and v0.5.7 are included with this release.

  • The ColorHelper.ToDisplayName API is no longer available.

  • The following types have been removed:

    • Microsoft.Graphics.IGeometrySource2D
    • Microsoft.Graphics.IGeometrySource2DInterop

    Please use Windows.Graphics.IGeometrySource2D and Windows.Graphics.IGeometrySource2DInterop instead.

  • All types in the Microsoft.System namespace have been moved to the Microsoft.UI.Dispatching namespace, including the DispatcherQueue class.

  • The AcrylicBrush.BackgroundSource property has been removed, since HostBackdrop is not supported as a BackgroundSource in WinUI 3.

Bug fixes

This is the list of all bugs fixed in WinUI 3 since Project Reunion 0.5.

Experimental Features

This release does not include experimental features. If you'd like to continue using experimental features in your app, feel free to continue using the latest Project Reunion 0.8 Preview.

Known Issues

For a list of all the known issues for the Windows App SDK 0.8, please see the Windows App SDK release notes.

Getting started

First, you'll need to set up your dev environment with the appropriate technologies. See our documentation for installation instructions and more information on project types:

Install the Windows App SDK

Create WinUI 3 Projects

While you're developing, check out the API Reference documentation.

Take a look at our walk-through docs:

You can also update your existing WinUI 3 app to use the new Windows App SDK 0.8 release using these instructions: Update existing projects to the latest release of the Windows App SDK.

We love feedback! We encourage you to file any bug, big or small, on our repo using this template. Knowing which issues and features are important and/or critical to our customers highly influences which ones we tackle. Even though we ship with the Windows App SDK, please continue to file WinUI-specific bugs on this repo.

Using WinUI 3 - Windows App SDK 0.8 with our ecosystem partners

This latest release is in the process of being integrated into several other important ecosystem technologies. To test out and follow that progress, check out some of our partner technologies below:

  • Actipro Software is migrating their vast UI control offerings over to WinUI 3, including their SyntaxEditor code editor, propertygrid, native type edit boxes, docking/MDI, charts, and more.

  • DevExpress: DevExpress has released 20 new WinUI controls with Windows App SDK 0.8 support, including the Data Grid, Scheduler, Charts, Ribbon Toolbar, and more. All 20 UI components are available free-of-charge.

  • Esri: ArcGIS Runtime SDK for .NET adds mapping, spatial analytics, and location intelligence capabilities to your apps on Android, iOS, and Windows. Support for WinUI 3 is now available.

  • GrapeCity plans to bring their popular desktop UI controls to WinUI later this year! Learn more about their data connection service components for WinUI.

  • Infragistics: Ultimate UI for WinUI brings business critical, high performing, and feature rich line of business controls to your apps that target any platform that runs Windows (including Windows on ARM64).

  • Syncfusion: Updated their projects to Microsoft.ProjectReunion from Microsoft.WinUI following upgrade instructions. All their controls are working fine.

  • Telerik UI for WinUI: the market first UI controls suite for crafting Win32 and UWP apps with WinUI 3, comes with feature-rich controls like Ribbon, DataGrid, Charts, Gauges, Barcode, and more.

  • Uno Platform: Use WinUI 3 – Windows App SDK 0.8, XAML and C# to build pixel-perfect, single-codebase, native applications that can run on Web, Desktop and Mobile. It is free, open-source and available today.

  • Windows Community Toolkit (Microsoft): The WCT is currently working on supporting Reunion 0.8 release candidate. It provides tons of new controls and capabilities for use in your WinUI app. You can check out their open source repo here.

What's next

To keep up with progress being made on WinUI 3, please see our feature roadmap which gets updated regularly. We also give monthly updates on our WinUI Community Calls, where you can directly ask the team any questions you have.


Update #1 - Windows App SDK 0.8.1 is now available

Windows App SDK 0.8.1 is a stable servicing release that fixes a few critical bugs.

Bugs fixed in Windows App SDK 0.8.1:

  • Windows App SDK cannot run on latest Insider build
  • Crash in editable ComboBox when entering a value that does not appear in dropdown
  • WebView2 doesn't allow user to tab out once focused has been received
  • Fully qualify Windows.Foundation.Metadata.DefaultOverload namespace in WinUI generated code to avoid namespace ambiguity
  • Security fix – see CVE-2021-34489 for more details.

The limitations and known issues for v0.8 also apply to v0.8.1, unless marked otherwise in our documentation.


Update #2 - Windows App SDK 0.8.2 is now available

Windows App SDK 0.8.2 is a stable servicing release that a couple more critical bugs for 0.8.0.

Bugs fixed in Windows App SDK 0.8.2:

  • Windows App SDK and WinUI 3 are now supported in Visual Studio 2022 Preview 2 and above.
  • For .NET apps, you may receive the following error when passing in an array of enums: Object contains non-primitive or non-blittable data.
  • Writing using the HandWriting Panel inside a textbox causes a crash
  • Icons/images always load at their 100% scale value rather than based on the monitor scale value
  • Garbage collection of EventSource<T> causes subsequent failure to unsubscribe handlers (see GitHub issue for more details)
  • Security fix – see CVE-2021-34533 for more details.
  • SwapChainPanel.CompositionScaleChanged sometimes returning incorrect CompositionScale values after changing display scale

The limitations and known issues for v0.8 also apply to v0.8.2, unless marked otherwise in our documentation.

@anawishnoff anawishnoff added the discussion General discussion label Jun 24, 2021
@ghost ghost added the needs-triage Issue needs to be triaged by the area owners label Jun 24, 2021
@thomasclaudiushuber
Copy link
Contributor

Congrats on getting this out.

Windows App SDK, I like it, it is what it is, this name is sooo much clearer and better than Project Reunion.

@anawishnoff anawishnoff pinned this issue Jun 24, 2021
@marcelwgn
Copy link
Collaborator

marcelwgn commented Jun 24, 2021

Out of curiosity, why was ColorHelper.ToDisplayName removed? There isn't much of an alternative to it is there?

Also totally agree with @thomasclaudiushuber, Windows App SDK is a good name and better than Project Reunion.

@Marv51
Copy link
Contributor

Marv51 commented Jun 25, 2021

Hi, could you clarify how much of the fixes and UI changes of 2.6 are in 0.8?

@jschwizer99
Copy link

When updating from 0.8.0 preview to 0.8.0 I had to fix an incompatibility in the WinUI WinRT C++ projects that is a result of the namespace change from Microsoft::System to Microsoft::UI::Dispatching. The WinRT C++ helper function winrt::resume_foreground() cannot handle the new namespace and only works for the Windows and the old Microsoft.System namespace. I'm not sure who is in charge of the required modifications, the WinRT or WinUI team? Please forward this information to the appropriate team.

As a work-around it is possible to define a local version (as a copy) by exchanging the namespaces:

inline auto resume_foreground(
        Microsoft::UI::Dispatching::DispatcherQueue const& dispatcher,
        Microsoft::UI::Dispatching::DispatcherQueuePriority const priority = Microsoft::UI::Dispatching::DispatcherQueuePriority::Normal) noexcept
    {
        struct awaitable
        {
            awaitable(Microsoft::UI::Dispatching::DispatcherQueue const& dispatcher, Microsoft::UI::Dispatching::DispatcherQueuePriority const priority) noexcept :
                m_dispatcher(dispatcher),
                m_priority(priority)
            {
            }

            bool await_ready() const noexcept
            {
                return false;
            }

            bool await_resume() const noexcept
            {
                return m_queued;
            }

            bool await_suspend(impl::coroutine_handle<> handle)
            {
                return m_dispatcher.TryEnqueue(m_priority, [handle, this]
                    {
                        m_queued = true;
                        handle();
                    });
            }

        private:
            Microsoft::UI::Dispatching::DispatcherQueue const& m_dispatcher;
            Microsoft::UI::Dispatching::DispatcherQueuePriority const m_priority;
            bool m_queued{};
        };

        return awaitable{ dispatcher, priority };
    };

Beside the loss of winrt::Microsoft::UI::ColorHelper::ToDisplayName the transition worked well after the essential manual project file edits. Many thanks for the detailed upgrade description.

With each upgrade step bewteen preview and 'non-preview' (I did not name it stable release on purpose) I need to readjust my usage of some preview features e.g. TextAlignment="Right" for NumberBox. There are other features that are in this 'half-done' state for a long time. I appreciate a lot if this features could transition to a proper 'done' state. As a bonus some tickets could be closed that are open for a long time.

@StephenLPeters StephenLPeters removed the needs-triage Issue needs to be triaged by the area owners label Jun 29, 2021
@jtorjo
Copy link

jtorjo commented Jul 2, 2021

Initially I wanted to start a new discussion, but I'll just drop it here.

I'd really appreciate an ETA of when will win2d be ported to WinUI Desktop. This is pretty much what's holding me from using WinUI Desktop.

(please let me know if I should ask in another repository)

More info

I know there is work in progress regarding porting win2d to WinUI Desktop (https://github.com/Microsoft/Win2D/tree/reunion_master), but

  • I know it's not in the official roadmap, which is really sad
  • I've asked in other repositories (WindowsAppSDK, win2d), but I never get a clear answer as to/if will happen
  • I'm pretty sure I'm far from alone in using UWP just because of win2d.
  • And you've clearly mentioned UWP is pretty much dead in the water, so I want to port my app to WinUI3 Desktop. But how can I do that without support for win2d?

@asklar
Copy link
Member

asklar commented Jul 14, 2021

When updating from 0.8.0 preview to 0.8.0 I had to fix an incompatibility in the WinUI WinRT C++ projects that is a result of the namespace change from Microsoft::System to Microsoft::UI::Dispatching. The WinRT C++ helper function winrt::resume_foreground() cannot handle the new namespace and only works for the Windows and the old Microsoft.System namespace. I'm not sure who is in charge of the required modifications, the WinRT or WinUI team? Please forward this information to the appropriate team.

As a work-around it is possible to define a local version (as a copy) by exchanging the namespaces:

inline auto resume_foreground(
        Microsoft::UI::Dispatching::DispatcherQueue const& dispatcher,
        Microsoft::UI::Dispatching::DispatcherQueuePriority const priority = Microsoft::UI::Dispatching::DispatcherQueuePriority::Normal) noexcept
    {
        struct awaitable
        {
            awaitable(Microsoft::UI::Dispatching::DispatcherQueue const& dispatcher, Microsoft::UI::Dispatching::DispatcherQueuePriority const priority) noexcept :
                m_dispatcher(dispatcher),
                m_priority(priority)
            {
            }

            bool await_ready() const noexcept
            {
                return false;
            }

            bool await_resume() const noexcept
            {
                return m_queued;
            }

            bool await_suspend(impl::coroutine_handle<> handle)
            {
                return m_dispatcher.TryEnqueue(m_priority, [handle, this]
                    {
                        m_queued = true;
                        handle();
                    });
            }

        private:
            Microsoft::UI::Dispatching::DispatcherQueue const& m_dispatcher;
            Microsoft::UI::Dispatching::DispatcherQueuePriority const m_priority;
            bool m_queued{};
        };

        return awaitable{ dispatcher, priority };
    };

Beside the loss of winrt::Microsoft::UI::ColorHelper::ToDisplayName the transition worked well after the essential manual project file edits. Many thanks for the detailed upgrade description.

With each upgrade step bewteen preview and 'non-preview' (I did not name it stable release on purpose) I need to readjust my usage of some preview features e.g. TextAlignment="Right" for NumberBox. There are other features that are in this 'half-done' state for a long time. I appreciate a lot if this features could transition to a proper 'done' state. As a bonus some tickets could be closed that are open for a long time.

@jschwizer99 the resume_foreground issue you mention is microsoft/WindowsAppSDK#957. @sylveon had a proposed fix for it in cppwinrt (see microsoft/cppwinrt#973) but that PR is not going to be landing.

@codendone
Copy link
Contributor

@asklar #include <microsoft.ui.dispatching.co_await.h> to get the resume_foreground functionality.

@asklar
Copy link
Member

asklar commented Jul 14, 2021

yeah that's basically what the PR did, it would be nice to get it out of the box :)
Perhaps something to consider to add to the winui3 targets via a ForceInclude

@sylveon
Copy link
Contributor

sylveon commented Jul 14, 2021

Please don't - such implicit include behavior is unexpected, not controllable from anywhere in the user's source, and forces every file to include the bulk of cppwinrt.

I would suggest to make the templates include it in the PCH, and to better document this change for people coming from previous versions of the App SDK.

@anawishnoff
Copy link
Contributor Author

@jtorjo I believe Win2d is supported in WinUI 3/Windows App SDK 0.8 (link to NuGet package here) for desktop apps. Is there a feature or something in particular that you're looking for that hasn't been ported over yet?

@jtorjo
Copy link

jtorjo commented Jul 15, 2021

@anawishnoff Last time I checked (Reunion 0.5), CanvasBitmap and CanvasAnimatedControl weren't working. I will definitely give this a go -- it would be awesome if we could know what was implemented since Reunion 0.5, since the documentation on win2d is really obsolete.

@anawishnoff
Copy link
Contributor Author

@jtorjo I see - I do think those two are still in the progress of being ported over. I'll let you know if I can find an update on their status.

@Lukespacewalker
Copy link

Is Mica material supported in Windows App SDK 0.8.1?

@dylech30th
Copy link

@Lukespacewalker No, 0.8.1 is a small patch including some critical bug fixes, you can see the more detailed information at Windows App SDK. IMO if you are waiting for the Mica material support you have to wait until the Windows App SDK 1.0 or at least its preview build

@gabbybilka
Copy link
Member

gabbybilka commented Nov 23, 2021

Check out #6325 to see features from this release in Windows App SDK 1.0 and leave any additional comments.

@michael-hawker
Copy link
Collaborator

@bpulliam ToDisplayName still appear to be missing in the latest release, this never seemed resolved here on how we're supposed to upgrade these code paths. Also see: MicrosoftDocs/winrt-api#2120

This effects our ColorToDisplayNameConverter in the toolkit, so not sure what to do with our comment here:

        // return global::Microsoft.UI.Xaml.ColorDisplayNameHelper.ToDisplayName(color);
        // Removed on Reunion 0.8-RC. Not sure what to replace with.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
announcement discussion General discussion
Projects
None yet
Development

No branches or pull requests