Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

@dr1rrb
Copy link
Member

@dr1rrb dr1rrb commented Sep 3, 2025

DRAFT

This include changes from #21191, #21292 and #21386 that has to be merged first

closes https://github.com/unoplatform/uno-private/issues/1489

✨ Feature

Add extensible VSIX channel

What is the current behavior? 🤔

RC.VS package is not able to send message back to the VSIX

What is the new behavior? 🚀

Json RPC channel with IServiceProvider

PR Checklist ✅

Copilot AI review requested due to automatic review settings September 3, 2025 08:15
@github-actions github-actions bot added the area/code-generation Categorizes an issue or PR as relevant to code generation label Sep 3, 2025
@dr1rrb dr1rrb marked this pull request as draft September 3, 2025 08:16
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds support for extensible VSIX channel communication and introduces UDEI (Uno Development Environment Indicator) service contracts. It enables bidirectional communication between the Remote Control VS package and the VSIX extension through JSON RPC channels.

Key changes:

  • Introduces new MetadataUpdatesSupport flags to better categorize hot reload support across different IDE and runtime combinations
  • Adds VSIX channel infrastructure with service contracts for development environment status reporting
  • Refactors hot reload configuration to support new channel communication patterns

Reviewed Changes

Copilot reviewed 22 out of 22 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
ConfigureServer.cs Converted to record type with additional XML documentation and renamed methods
HotReloadMode.cs Added MetadataUpdatesSupport flags enum for better hot reload capability detection
HotReloadInfoHelper.cs New utility class for generating hot reload info attributes and version tracking
ClientHotReloadProcessor.cs Updated to use new metadata updates support flags and hot reload info helper
ClientHotReloadProcessor.Agent.cs Refactored metadata updates support detection with improved IDE/runtime/debugger logic
IUnoDevelopmentEnvironmentIndicatorService.cs New service contract for development environment status notifications
IGlobalPropertiesProvider.cs New service contract for global properties with implementation
Uno.UI.RemoteControl.VS.csproj Updated package references for VS extensibility support
SimpleServiceProvider.cs New lightweight service provider implementation
DTEHelper.cs Minor refactoring and synchronization comments
EntryPoint.cs Added new API for VSIX channel initialization with JSON RPC support
EntryPoint.ActiveProfileSync.cs Refactored project user settings methods for better clarity
ServiceCollectionExtensions.cs Minor formatting cleanup
Uno.UI.RemoteControl.Server.Processors.csproj Added hot reload info helper compilation
ServerHotReloadProcessor.cs Enhanced with hot reload info file generation and improved update processing
ServerHotReloadProcessor.MetadataUpdate.cs Refactored metadata updater initialization and switch statement improvements
Command.cs Added browser opening command helper
DevelopmentEnvironmentStatusIdeMessage.cs New message types for development environment status communication
Uno.UI.Tasks.csproj Added hot reload info helper compilation
HotReloadInfoTask.cs New MSBuild task for generating hot reload info files
Uno.UI.Tasks.targets Added hot reload info generation target
RemoteControlGenerator.cs Added UnoPlatformIDE to MSBuild properties list

@unodevops
Copy link
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-21403/wasm-skia-net9/index.html

@unodevops
Copy link
Contributor

🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-21403/docs/index.html

@unodevops
Copy link
Contributor

⚠️⚠️ The build 175045 has failed on Uno.UI - CI.

@unodevops
Copy link
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-21403/wasm-skia-net9/index.html

@unodevops
Copy link
Contributor

🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-21403/docs/index.html

@github-actions github-actions bot removed the area/code-generation Categorizes an issue or PR as relevant to code generation label Sep 3, 2025
@dr1rrb dr1rrb marked this pull request as ready for review September 3, 2025 15:28
@dr1rrb dr1rrb enabled auto-merge September 3, 2025 15:28
@dr1rrb dr1rrb requested a review from Takoooooo September 3, 2025 15:28
@unodevops
Copy link
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-21403/wasm-skia-net9/index.html

@unodevops
Copy link
Contributor

🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-21403/docs/index.html

@unodevops
Copy link
Contributor

⚠️⚠️ The build 175099 has failed on Uno.UI - CI.

@nventive-devops
Copy link
Contributor

The build 175099 found UI Test snapshots differences: android-28-net9: 23, android-28-net9-Snap: 30, ios: 4, ios-Snap: 42, skia-linux-screenshots: 67, skia-windows-screenshots: 608, wasm: 42, wasm-automated-net10.0-WinUI-Benchmarks-automated: 0, wasm-automated-net10.0-WinUI-Default-automated: 13, wasm-automated-net10.0-WinUI-RuntimeTests-0: 0, wasm-automated-net10.0-WinUI-RuntimeTests-1: 0, wasm-automated-net10.0-WinUI-RuntimeTests-2: 0

Details
  • android-28-net9: 23 changed over 825

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • ListView_SelectedItems_SamplesApp_Windows_UI_Xaml_Controls_ListView_ListViewSelectedItems
    • Popup_PlacementTest_1Default_HSVS_Uno_UI_Samples_Content_UITests_Popup_Popup_HVAlignments
    • SequentialAnimations_SamplesApp_Windows_UI_Xaml_Media_Animation_SequentialAnimationsPage
    • WebView_NavigateToAnchor_Initial
    • WebView_NavigateToLongString_AfterSuccess
    • UpDownEnabledTest_UITests_Shared_Microsoft_UI_Xaml_Controls_NumberBoxTests_NumberBoxPage
    • When_NoSelection_Then_PointersEvents_UITests_Windows_UI_Xaml_Controls_ListView_ListView_Selection_Pointers
    • Detereminate_ProgressRing_Validation25_[#FF0000_#008000_#FF0000_#FF0000]_Progress-Ring-Value-25
    • When_SingleSelectionWithoutItemClick_Then_PointersEvents_UITests_Windows_UI_Xaml_Controls_ListView_ListView_Selection_Pointers
    • DecimalFormatterTest_UITests_Shared_Microsoft_UI_Xaml_Controls_NumberBoxTests_NumberBoxPage
    • NativeCommandBar_Size_Uno_UI_Samples_Content_UITests_CommandBar_CommandBar_Dynamic
    • FlyoutTest_When_NoOverlayInputPassThroughElement_Then_DontPassThrough_woAuto_UITests_Shared_Windows_UI_Xaml_Controls_Flyout_Flyout_OverlayInputPassThroughElement
    • When_Parent_PointerMoved_After_drag_on_non-scrolling_ScrollViewer
    • When_Parent_PointerMoved_After_drag_on_ScrollViewer_-_touch
    • Detereminate_ProgressRing_Validation75_[#FF0000_#008000_#008000_#008000]_Progress-Ring-Value-75
    • ProgressRing_Visibility_Collapsed_UITests_Windows_UI_Xaml_Controls_ProgressRing_WindowsProgressRing_GH1220
    • When_NoSelectionWithItemClick_Then_PointersEvents_UITests_Windows_UI_Xaml_Controls_ListView_ListView_Selection_Pointers
    • When_ExtendedSelectionWithoutItemClick_Then_PointersEvents_UITests_Windows_UI_Xaml_Controls_ListView_ListView_Selection_Pointers
    • Detereminate_ProgressRing_Validation0_[#FF0000_#FF0000_#FF0000_#FF0000]_UITests_Microsoft_UI_Xaml_Controls_ProgressRing_WinUIDeterminateProgressRing
    • When_SingleSelectionWithItemClick_Then_PointersEvents_UITests_Windows_UI_Xaml_Controls_ListView_ListView_Selection_Pointers
  • android-28-net9-Snap: 30 changed over 1073

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • ListView_HorizontalListView_Padding_SamplesApp_Windows_UI_Xaml_Controls_ListView_HorizontalListView_Padding
    • NavigationView_MUXControlsTestApp_NavigationViewRS4Page_MUXControlsTestApp_NavigationViewRS4Page
    • Gesture_Recognizer_Pointer_Events_test_bench_UITests_Shared_Windows_UI_Input_GestureRecognizer_PointersEvents
    • MUX_NumberBox_UITests_Shared_Microsoft_UI_Xaml_Controls_NumberBoxTests_NumberBoxPage
    • RatingControl_UITests_Microsoft_UI_Xaml_Controls_RatingControlTests_RatingControlPage_UITests_Microsoft_UI_Xaml_Controls_RatingControlTests_RatingControlPage
    • TeachingTip_UITests_Microsoft_UI_Xaml_Controls_TeachingTipTests_TeachingTipPage_UITests_Microsoft_UI_Xaml_Controls_TeachingTipTests_TeachingTipPage
    • CommandBarFlyout_MUXControlsTestApp_CommandBarFlyoutPage_MUXControlsTestApp_CommandBarFlyoutPage
    • ListView_ListViewSelectedItems_SamplesApp_Windows_UI_Xaml_Controls_ListView_ListViewSelectedItems
    • Image_UITests_Windows_UI_Xaml_Controls_ImageTests_SvgImageSource_NoSize_UITests_Windows_UI_Xaml_Controls_ImageTests_SvgImageSource_NoSize
    • MUX_UITests_Shared_Microsoft_UI_Xaml_Controls_TreeViewTests_TreeViewPage_UITests_Shared_Microsoft_UI_Xaml_Controls_TreeViewTests_TreeViewPage
    • MediaPlayerElement_Using_3gp_UITests_Shared_Windows_UI_Xaml_Controls_MediaPlayerElement_MediaPlayerElement_3gp_Extension
    • MediaPlayerElement_Using_mp3_Audio_only_UITests_Shared_Windows_UI_Xaml_Controls_MediaPlayerElement_MediaPlayerElement_Mp3_Extension
    • MediaPlayerElement_Using_ogg_UITests_Shared_Windows_UI_Xaml_Controls_MediaPlayerElement_MediaPlayerElement_Ogg_Extension
    • ListView_ListView_With_ListViews_Count_Measure_UITests_Shared_Windows_UI_Xaml_Controls_ListView_ListView_With_ListViews_Count_Measure
    • NavigationView_MUXControlsTestApp_NavigationViewTopNavPage_MUXControlsTestApp_NavigationViewTopNavPage
    • Scrolling_MUXControlsTestApp_ScrollViewDynamicPage_MUXControlsTestApp_ScrollViewDynamicPage
    • Scrolling_MUXControlsTestApp_ScrollViewKeyboardAndGamepadNavigationPage_MUXControlsTestApp_ScrollViewKeyboardAndGamepadNavigationPage
    • SwipeControl_MUXControlsTestApp_SwipeControlPage2_MUXControlsTestApp_SwipeControlPage2
    • TextBlock_UITests_Shared_Windows_UI_Xaml_Controls_TextBlockControl_TextBlock_Layout_UITests_Shared_Windows_UI_Xaml_Controls_TextBlockControl_TextBlock_Layout
    • Transform_Basics_UITests_Shared_Windows_UI_Xaml_Media_Transform_Basics
  • ios: 4 changed over 255

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • ProgressRing_IsEnabled_Running_UITests_Windows_UI_Xaml_Controls_ProgressRing_WindowsProgressRing_GH1220
    • TextBox_UpdatedBinding_On_OneWay_Mode_UITests_Windows_UI_Xaml_Controls_TextBox_TextBox_Bindings
    • ProgressRing_Visibility_Collapsed_UITests_Windows_UI_Xaml_Controls_ProgressRing_WindowsProgressRing_GH1220
    • SequentialAnimations_SamplesApp_Windows_UI_Xaml_Media_Animation_SequentialAnimationsPage
  • ios-Snap: 42 changed over 990

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • Brushes_ImageBrushWithScaleTransform_Uno_UI_Samples_UITests_ImageBrushTestControl_ImageBrushWithScaleTransform
    • Default_SamplesApp_Wasm_Windows_UI_Xaml_Controls_ListView_ListView_IsSelected_SamplesApp_Wasm_Windows_UI_Xaml_Controls_ListView_ListView_IsSelected
    • Pickers_TimePicker_TimePickerFlyoutStyle_UITests_Windows_UI_Xaml_Controls_TimePicker_TimePicker_TimePickerFlyoutStyle
    • ContentControl_ContentControl_SelectorInheritance_Uno_UI_Samples_Content_UITests_ContentControlTestsControl_ContentControl_SelectorInheritance
    • Grid_Grid_DataBound_ColumnRow_Definitions_Uno_UI_Samples_Content_UITests_GridTestsControl_Grid_DataBound_ColumnRow_Definitions
    • NavigationView_MUXControlsTestApp_NavigationViewRS3Page_MUXControlsTestApp_NavigationViewRS3Page
    • NavigationView_MUXControlsTestApp_NavigationViewRS4Page_MUXControlsTestApp_NavigationViewRS4Page
    • Brushes_ImageBrushAlignmentXY_Uno_UI_Samples_UITests_ImageBrushTestControl_ImageBrushAlignmentXY
    • Buttons_Custom_Button_With_ContentTemplate_Uno_UI_Samples_Content_UITests_ButtonTestsControl_Custom_Button_With_ContentTemplate
    • Icons_UITests_Shared_Windows_UI_Xaml_Controls_BitmapIconTests_BitmapIcon_Foreground_UITests_Shared_Windows_UI_Xaml_Controls_BitmapIconTests_BitmapIcon_Foreground
    • Image_UITests_Shared_Windows_UI_Xaml_Controls_ImageTests_Image_Stretch_Algmnt_Inf_Vertical_UITests_Shared_Windows_UI_Xaml_Controls_ImageTests_Image_Stretch_Algmnt_Inf_Vertical
    • Image_UITests_Shared_Windows_UI_Xaml_Controls_ImageTests_Image_Stretch_Alignment_SizeOnControl_UITests_Shared_Windows_UI_Xaml_Controls_ImageTests_Image_Stretch_Alignment_SizeOnControl
    • ItemsRepeater_UITests_Windows_UI_Xaml_Controls_Repeater_ItemsRepeater_Basics_UITests_Windows_UI_Xaml_Controls_Repeater_ItemsRepeater_Basics
    • Image_Uno_UI_Samples_UITests_Image_Image_Stretch_Alignment_Bigger_Uno_UI_Samples_UITests_Image_Image_Stretch_Alignment_Bigger
    • Image_Uno_UI_Samples_UITests_Image_Image_Stretch_Alignment_Equal_Uno_UI_Samples_UITests_Image_Image_Stretch_Alignment_Equal
    • MediaPlayerElement_Sources_UITests_Shared_Windows_UI_Xaml_Controls_MediaPlayerElement_MediaPlayerElement_Sources
    • SwipeControl_MUXControlsTestApp_SwipeControlPage2_MUXControlsTestApp_SwipeControlPage2
    • Border_AutoBorderStretchwithbottommargin_Uno_UI_Samples_UITests_BorderTestsControl_AutoBorderStretchwithbottommargin
    • Brushes_ImageBrushStretch2_Uno_UI_Samples_UITests_ImageBrushTestControl_ImageBrushStretch2
    • Brushes_Uno_UI_Samples_Samples_Shared_Content_UITests_ImageBrushInList_Uno_UI_Samples_Samples_Shared_Content_UITests_ImageBrushInList
  • skia-linux-screenshots: 67 changed over 2286

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • DisplayInformation.png-dark
    • Focus_FocusVisual_Properties.png-dark
    • CalendarView_Theming.png-dark
    • Image_Margin_Large.png-dark
    • Image_Margin_Large.png
    • ClipboardTests.png-dark
    • Buttons.png-dark
    • Buttons.png
    • ClipboardTests.png
    • DropDownButtonPage.png-dark
    • DropDownButtonPage.png
    • Examples.png-dark
    • Examples.png
    • ExpanderColorValidationPage.png-dark
    • ExpanderColorValidationPage.png
    • Gamepad_CurrentReading.png-dark
    • Gamepad_CurrentReading.png
    • Gamepad_Enumeration.png-dark
    • Gamepad_Enumeration.png
    • DoubleImageBrushInList.png-dark
  • skia-windows-screenshots: 608 changed over 2286

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • Attributed_text_Supserscript.png
    • BasicThemeResources.png
    • Border_With_ScaleTransform.png
    • Border_With_TranslateTransform.png-dark
    • CheckBox_Button.png-dark
    • CheckBox_Button.png
    • ContentControl_SelectorInheritance.png-dark
    • ContentControl_SelectorInheritance.png
    • DataContextProperty.png-dark
    • DataContextProperty.png
    • Examples.png-dark
    • Examples.png
    • ExpanderColorValidationPage.png-dark
    • ExpanderColorValidationPage.png
    • FixedWidth.png-dark
    • FixedWidth.png
    • FixedWidthUniform.png-dark
    • FixedWidthUniform.png
    • Focus_FocusVisual_Properties.png-dark
    • Focus_FocusVisual_Properties.png
  • wasm: 42 changed over 1055

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • GenericApp.Views.Samples.Shared.Content.UITests.GridViewMultipleSelectionMode
    • UITests.Windows_UI_Xaml_Media.FontTests.DynamicFont
    • SamplesApp.Wasm.Windows_UI_Xaml_Controls.ListView.ListView_IsSelected
    • SamplesApp.Windows_UI_Xaml_Controls.ListView.ListView_Expandable_Item_Large
    • SamplesApp.Windows_UI_Xaml.Clipping.DoubleAnimationClipping
    • SamplesApp.Windows_UI_Xaml_Controls.ListView.ListView_Image
    • UITests.Shared.Windows_UI_Xaml_Controls.ListView.ListView_DataContext_Propagation
    • UITests.Shared.Windows_UI_Xaml_Controls.ListView.ListView_DataTemplateSelector
    • UITests.Shared.Windows_UI_Xaml_Controls.MediaPlayerElement.MediaPlayerElement_Minimal
    • UITests.Shared.Windows_UI_Xaml_Controls.MediaPlayerElement.MediaPlayerElement_Ogg_Extension
    • UITests.Windows_UI_Xaml.FrameworkElementTests.FrameworkElement_Sizes
    • MUXControlsTestApp.NavigationViewItemTemplatePage
    • SamplesApp.Samples.Windows_UI_Xaml_Controls.NavigationViewTests.NavigationView_BasicNavigation
    • SamplesApp.Windows_UI_Xaml_Controls.ListView.ListViewSelectedItems
    • UITests.Microsoft_UI_Xaml_Controls.RadioButtonsTests.RadioButtonsBasicPage
    • UITests.Shared.Windows_UI_Xaml_Controls.ComboBox.ComboBox_ComboBoxItem_Selection
    • UITests.Windows_UI_Xaml.FocusTests.Focus_FocusState
    • Uno.UI.Samples.Content.UITests.CommandBar.CommandBar_Padding
    • SamplesApp.Windows_UI_Xaml_Controls.ListView.ListViewLegacy
    • UITests.Shared.Microsoft_UI_Xaml_Controls.ExpanderTests.WinUIExpanderPage
  • wasm-automated-net10.0-WinUI-Benchmarks-automated: 0 changed over 1

  • wasm-automated-net10.0-WinUI-Default-automated: 13 changed over 877

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • Default_StrokeThickness_MyPath
    • Default_StrokeThickness_MyPolygon
    • Default_StrokeThickness_MyPolyline
    • ListView_SelectedItems_SamplesApp_Windows_UI_Xaml_Controls_ListView_ListViewSelectedItems
    • SequentialAnimations_SamplesApp_Windows_UI_Xaml_Media_Animation_SequentialAnimationsPage
    • When_ExtendedSelectionWithoutItemClick_Then_PointersEvents_UITests_Windows_UI_Xaml_Controls_ListView_ListView_Selection_Pointers
    • TestProgressRing_InitialState_UITests_Microsoft_UI_Xaml_Controls_ProgressRing_WinUIProgressRing_Features
    • Default_StrokeThickness_MyRect
    • Default_StrokeThickness_MyLine
    • When_NoSelectionWithItemClick_Then_PointersEvents_UITests_Windows_UI_Xaml_Controls_ListView_ListView_Selection_Pointers
    • When_NoSelection_Then_PointersEvents_UITests_Windows_UI_Xaml_Controls_ListView_ListView_Selection_Pointers
    • When_SingleSelectionWithItemClick_Then_PointersEvents_UITests_Windows_UI_Xaml_Controls_ListView_ListView_Selection_Pointers
    • Default_StrokeThickness_MyEllipse
  • wasm-automated-net10.0-WinUI-RuntimeTests-0: 0 changed over 1

  • wasm-automated-net10.0-WinUI-RuntimeTests-1: 0 changed over 1

  • wasm-automated-net10.0-WinUI-RuntimeTests-2: 0 changed over 1

@dr1rrb dr1rrb merged commit c1ac903 into master Sep 4, 2025
92 checks passed
@dr1rrb dr1rrb deleted the dev/dr/udei branch September 4, 2025 13:52
dr1rrb added a commit that referenced this pull request Sep 5, 2025
dr1rrb added a commit that referenced this pull request Sep 5, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants