Skip to content

Commit 49eca7f

Browse files
asv-soft-u01etogoodasv-soft-u03asvolasv-soft-u04
authored
Update version to 1.0.1 (#321)
* feat: add "Save as" button * Create Build for Windows Asana: https://app.asana.com/0/1206009821057985/1207478687634539/f * Change executable workflow * feat(planning): refactor mission saving logic and clean up code Streamline the mission saving implementation in PlaningMissionSavingBrowserViewModel by removing unneeded code and improving readability. Minimized property visibility where not necessary, and removed unused imports within different files across the project. Also, cleaned up CompatibilitySuppressions.xml by removing redundant suppressions. Asana: https://app.asana.com/0/1203851531040615/1207411924258622/f * feat (planning): update file and mission naming mechanism Removed hard-coded watermark from TextBox in 'PlaningMissionSavingBrowserView.axaml'. Adapted "FileName" and "Name" properties in 'PlaningMissionSavingBrowserViewModel.cs' and 'PlaningMissionViewModel.cs' to accept null. Edited the instantiation of 'PlaningMissionSavingBrowserViewModel' in 'PlaningPageViewModel.cs' to include the current mission name. Asana: https://app.asana.com/0/1203851531040615/1207411924258622/f * feat(api): update API version and remove NLog dependency The API version has been updated from 0.3.2 to 0.3.3. Also, some other version upgrades have been carried out, such as AsvCommonVersion and AsvMavlinkVersion. Furthermore, the NLog dependency has been removed from the project Asv.Drones.Gui. * feat(api-mavlink): update mavlink nuget;add RFSA device * feat(actions): release action (#303) Add release action for new version * feat(plugins): update plugins to include API version compatibility check Updated the plugin system to support API version compatibility. All plugins are now required to specify their API version, which is then checked for compatibility with the application's API version. If the versions do not match, the plugin will not be loaded. The API version has also been added to the application version display for transparency. * fix: Update GetRfsaByFullId method return type and source Renamed the return type of GetRfsaByFullId method from IAdsbClientDevice to IRfsaClientDevice in MavlinkDevicesService class. The data source was also shifted from AdsbDevices to RfsaDevices, and the associated DiagnosticId was adjusted consequently in CompatibilitySuppressions.xml. * fix: Update API version to 0.3.6 In Directory.Build.props, the API version was updated from 0.3.5 to 0.3.6. The previous API version was also adjusted accordingly, from 0.3.4 to 0.3.5. * fix: Include RfsaDevices in AllDevices and update suppressions file In the MavlinkDevicesService, it now includes RfsaDevices in the AllDevices merge. Moreover, certain suppressions related to ApiVersion in the CompatibilitySuppressions.xml for Asv.Drones.Gui.Api have been removed. * feat: Add RFSA device class in MavlinkHelper The commit introduces a new device class, RFSA, in the MavlinkHelper. It maps the new RFSA class to a specific icon (Waveform). The default icon was also updated to 'HelpNetworkOutline' for any device class not explicitly defined. * feat: add default app.args file * feat: Update visibility binding and enhance logging The code updates have reorganized the compile instruction order for 'RS.Designer.cs' in the project file. The ScrollViewer's visibility binding in the MapPageView is now dependent on 'LeftWidgets' and 'RightWidgets' count. Borders visibility binding is now dependent on 'BottomWidgets' and 'MapActions' count, improving UI responsiveness. A 'CatchToLog' method has also been added to ReactiveCommand in the logging service, enhancing error handling by directing thrown exceptions to the log. * fix(anchor editor): add icon margin in actions (#305) asana: https://app.asana.com/0/1203851531040615/1207643849991134/f * fix(Uav): move the mode button (#306) asana: https://app.asana.com/0/1203851531040615/1207643849991144/f * fix(uav): refactor MissionStatusView layout and FlightUavView (#309) asana: https://app.asana.com/0/1203851531040615/1207643986818660/f https://app.asana.com/0/1203851531040615/1207654116236034/f * fix(log-service): add filters to different levels of errors according to Nlog documentation. Add Logger message save (#308) Asana: https://app.asana.com/0/1206009821057985/1207643849991142/f * fix(uav): fix MissionStatusView margin (#312) asana: https://app.asana.com/0/1206118975886649/1207674317434296/f * Fix size optimization and ArgumentNullException in AnchorEditor widget (#310) * fix(anchor-editor): descending sorting of uav actions Asana: https://app.asana.com/0/1203851531040615/1207643849991138/f * fix(anchor-editor): check actions collections for null to avoid ArgumentNullException Asana: https://app.asana.com/0/1203851531040615/1207664866852418/f * fix(anchor-editor): actions size-optimization with more short locales Asana: https://app.asana.com/0/1203851531040615/1207643849991138/f * fix(anchor-editor): add scrolls to actions and coordinates part of widget Asana: https://app.asana.com/0/1203851531040615/1207654116236041/f * fix(anchor-editor): short locales to reboot/shutdown action Asana: https://app.asana.com/0/1203851531040615/1207643849991138/f * fix(anchor-editor): better flyout menu style and refactor scroll viewers Asana: https://app.asana.com/0/1203851531040615/1207654116236041/f * fix(anchor-editor): update layout and visual changes in AnchorsEditorView Reduced the width of the second column in the Grid from 10 to 2. The Border element was replaced with a Rectangle for better visual clarity. Minor adjustments were made to clean up the code format, maintaining consistency in layout and improving overall readability. Asana: https://app.asana.com/0/1203851531040615/1207654116236041/f * fix(anchor-editor): fix actions collection sharing when selected item changed, fix localization and anchor title layout Asana: https://app.asana.com/0/1203851531040615/1207654116236041/f * fix(anchor-editor): update AnchorsEditorView layout properties The properties of TextBlock and Rectangle in the AnchorsEditorView file have been revised. Specifically, the TextBlock has been assigned a name "ActionsTextBlock". Additionally, the fill color of the rectangle now relies on the foreground of ActionsTextBlock, ensuring better UI consistency. Asana: https://app.asana.com/0/1203851531040615/1207654116236041/f --------- Co-authored-by: u01 <[email protected]> * fix(hierarchical-store): add scroll viewer at list of tasks (#311) * fix(hierarchical-store): add scroll viewer at list of tasks Asana: https://app.asana.com/0/1203851531040615/1207644963134958/f * fix(hierarchical-store): more height to list of tasks to reduce empty space Asana: https://app.asana.com/0/1203851531040615/1207644963134958/f * fix: progress bar (#313) Asana: https://app.asana.com/0/1203851531040615/1207644963134966/f * feat: update API and product version to 1.0.0 The commit adds Asv.Avalonia.Toolkit as a reference in both Asv.Drones.Gui.Api and Asv.Drones.Gui projects. It also changes the "CopyToOutputDirectory" property of "app.args" to "Never". The version numbers for Product, API, and various dependencies have been upgraded to 1.0.0 in Directory.Build.props file. * feat: add api release action for GitHub+Nuget and GitHub only (#315) Asana: https://app.asana.com/0/1203851531040615/1207693167811054/f * feat: add support for Rsga devices Added functionality for Rsga devices in the Mavlink helper and devices service. This includes methods to get Rsga device by ID and observe changes on Rsga devices. Also updated the project to use the upgraded Mavlink version 3.10.0 and target framework net8.0. --------- Co-authored-by: etogood <[email protected]> Co-authored-by: Eugene <[email protected]> Co-authored-by: Alexey <[email protected]> Co-authored-by: Maxim <[email protected]> Co-authored-by: Lev <[email protected]>
1 parent 437423a commit 49eca7f

File tree

9 files changed

+124
-32
lines changed

9 files changed

+124
-32
lines changed

.github/workflows/ApiReleaseDeployAction.yml

Lines changed: 20 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ on:
55
tags:
66
- "api-v*"
77

8+
env:
9+
NUGET_SOURCE_URL: 'https://api.nuget.org/v3/index.json'
10+
GITHUB_PACKAGES_URL: 'https://nuget.pkg.github.com/asv-soft/index.json'
11+
PROJECT_NAME: 'Asv.Drones.Gui.Api'
12+
PROPS_VERSION_VAR_NAME: 'ApiVersion'
13+
814
jobs:
915
build:
1016
runs-on: ubuntu-latest
@@ -18,29 +24,14 @@ jobs:
1824
with:
1925
dotnet-version: '8.0.x'
2026

21-
- name: Setup NuGet config
22-
env:
23-
NUGET_USERNAME: ${{ secrets.USER_NAME }}
24-
NUGET_PASSWORD: ${{ secrets.GIHUB_NUGET_AUTH_TOKEN }}
25-
run: |
26-
echo "<configuration>" > nuget.config
27-
echo "<packageSources>" >> nuget.config
28-
echo "<add key=\"nuget.org\" value=\"https://api.nuget.org/v3/index.json\" protocolVersion=\"3\" />" >> nuget.config
29-
echo "<add key=\"asv\" value=\"https://nuget.pkg.github.com/asv-soft/index.json\" />" >> nuget.config
30-
echo "</packageSources>" >> nuget.config
31-
echo "<packageSourceCredentials>" >> nuget.config
32-
echo "<asv>" >> nuget.config
33-
echo "<add key=\"Username\" value=\"$NUGET_USERNAME\" />" >> nuget.config
34-
echo "<add key=\"ClearTextPassword\" value=\"$NUGET_PASSWORD\" />" >> nuget.config
35-
echo "</asv>" >> nuget.config
36-
echo "</packageSourceCredentials>" >> nuget.config
37-
echo "</configuration>" >> nuget.config
27+
- name: Add NuGet source
28+
run: dotnet nuget add source ${{ env.GITHUB_PACKAGES_URL }} \--username '${{secrets.USER_NAME}}' \--password '${{secrets.GIHUB_NUGET_AUTH_TOKEN}}' \--store-password-in-clear-text
3829

3930
- name: Install dependencies
40-
run: dotnet restore ./src/Asv.Drones.Gui.Api/Asv.Drones.Gui.Api.csproj
31+
run: dotnet restore ./src/${{env.PROJECT_NAME}}/${{env.PROJECT_NAME}}.csproj
4132

4233
- name: Build
43-
run: dotnet build ./src/Asv.Drones.Gui.Api/Asv.Drones.Gui.Api.csproj --configuration Release --no-restore
34+
run: dotnet build ./src/${{env.PROJECT_NAME}}/${{env.PROJECT_NAME}}.csproj --configuration Release --no-restore
4435

4536
- name: Set version variable
4637
env:
@@ -49,20 +40,25 @@ jobs:
4940

5041
- name: Read version from Directory.Build.props
5142
id: read-version
52-
run: echo "::set-output name=version::$(grep -oP '<ApiVersion>\K[^<]+' ./src/Directory.Build.props)"
53-
43+
run: |
44+
version=$(grep -oP '<${{env.PROPS_VERSION_VAR_NAME}}>\K[^<]+' ./src/Directory.Build.props)
45+
echo "PropsVersion=${version}" >> $GITHUB_ENV
46+
5447
- name: Compare tag with NuGet package version
5548
run: |
56-
if [ "${{ steps.read-version.outputs.version }}" != "${{ env.VERSION }}" ]; then
49+
if [ "${{ env.PropsVersion }}" != "${{ env.VERSION }}" ]; then
5750
echo "Error: Tag does not match NuGet package version"
5851
exit 1
5952
fi
6053
6154
- name: Pack package
62-
run: dotnet pack ./src/Asv.Drones.Gui.Api/Asv.Drones.Gui.Api.csproj -c Release /p:Version=${VERSION} --no-build -o .
55+
run: dotnet pack ./src/${{env.PROJECT_NAME}}/${{env.PROJECT_NAME}}.csproj -c Release /p:Version=${VERSION} --no-build -o .
6356

6457
- name: List output files
6558
run: ls -la
6659

6760
- name: Push package to GitHub
68-
run: dotnet nuget push Asv.Drones.Gui.Api.${VERSION}.nupkg --api-key ${{ secrets.GIHUB_NUGET_AUTH_TOKEN }} --skip-duplicate --source "https://nuget.pkg.github.com/asv-soft/index.json"
61+
run: dotnet nuget push ${{env.PROJECT_NAME}}.${VERSION}.nupkg --api-key ${{ secrets.GIHUB_NUGET_AUTH_TOKEN }} --skip-duplicate --source ${{ env.GITHUB_PACKAGES_URL }}
62+
63+
- name: Push package to Nuget
64+
run: dotnet nuget push ${{env.PROJECT_NAME}}.${VERSION}.nupkg --api-key ${{ secrets.NUGET_AUTH_TOKEN }} --skip-duplicate --source ${{ env.NUGET_SOURCE_URL }}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
name: Build and Publish Api Github only
2+
3+
on:
4+
push:
5+
tags:
6+
- "dev-api-v*"
7+
8+
env:
9+
GITHUB_PACKAGES_URL: 'https://nuget.pkg.github.com/asv-soft/index.json'
10+
PROJECT_NAME: 'Asv.Drones.Gui.Api'
11+
PROPS_VERSION_VAR_NAME: 'ApiVersion'
12+
13+
jobs:
14+
build:
15+
runs-on: ubuntu-latest
16+
if: startsWith(github.ref, 'refs/tags/dev-api-v')
17+
steps:
18+
- name: Checkout repository
19+
uses: actions/checkout@v3
20+
21+
- name: Setup .NET
22+
uses: actions/setup-dotnet@v1
23+
with:
24+
dotnet-version: '8.0.x'
25+
26+
- name: Add NuGet source
27+
run: dotnet nuget add source ${{ env.GITHUB_PACKAGES_URL }} \--username '${{secrets.USER_NAME}}' \--password '${{secrets.GIHUB_NUGET_AUTH_TOKEN}}' \--store-password-in-clear-text
28+
29+
- name: Install dependencies
30+
run: dotnet restore ./src/${{env.PROJECT_NAME}}/${{env.PROJECT_NAME}}.csproj
31+
32+
- name: Build
33+
run: dotnet build ./src/${{env.PROJECT_NAME}}/${{env.PROJECT_NAME}}.csproj --configuration Release --no-restore
34+
35+
- name: Set version variable
36+
env:
37+
TAG: ${{ github.ref_name }}
38+
run: |
39+
newTag=$(echo $TAG | sed 's/dev-api-v//')
40+
newTag="${newTag}-dev"
41+
echo "VERSION=${newTag}" >> $GITHUB_ENV
42+
43+
- name: Read version from Directory.Build.props
44+
id: read-version
45+
run: |
46+
version=$(grep -oP '<${{env.PROPS_VERSION_VAR_NAME}}>\K[^<]+' ./src/Directory.Build.props)
47+
echo "PropsVersion=${version}" >> $GITHUB_ENV
48+
49+
- name: Compare tag with NuGet package version
50+
run: |
51+
if [ "${{ env.PropsVersion }}-dev" != "${{ env.VERSION }}" ]; then
52+
echo "Error: Tag does not match NuGet package version"
53+
exit 1
54+
fi
55+
56+
- name: Pack package
57+
run: dotnet pack ./src/${{env.PROJECT_NAME}}/${{env.PROJECT_NAME}}.csproj -c Release /p:Version=${VERSION} --no-build -o .
58+
59+
- name: List output files
60+
run: ls -la
61+
62+
- name: Push package to GitHub
63+
run: dotnet nuget push ${{env.PROJECT_NAME}}.${VERSION}.nupkg --api-key ${{ secrets.GIHUB_NUGET_AUTH_TOKEN }} --skip-duplicate --source ${{ env.GITHUB_PACKAGES_URL }}

src/.run/Linux-arm64.run.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<component name="ProjectRunConfigurationManager">
22
<configuration default="false" name="Linux-arm64" type="DotNetFolderPublish" factoryName="Publish to folder">
3-
<riderPublish configuration="Release" delete_existing_files="true" include_native_libs_for_self_extract="true" platform="Any CPU" produce_single_file="true" runtime="linux-arm64" self_contained="true" target_folder="$PROJECT_DIR$/../publish/linux-arm64/app" target_framework="net7.0" uuid_high="-6069974389149972757" uuid_low="-5498245974063364756" />
3+
<riderPublish configuration="Release" delete_existing_files="true" include_native_libs_for_self_extract="true" platform="Any CPU" produce_single_file="true" runtime="linux-arm64" self_contained="true" target_folder="$PROJECT_DIR$/../publish/linux-arm64/app" target_framework="net8.0" uuid_high="-6069974389149972757" uuid_low="-5498245974063364756" />
44
<method v="2" />
55
</configuration>
66
</component>

src/Asv.Drones.Gui.Api/Asv.Drones.Gui.Api.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
<Description>API reference for Asv.Drones GUI application</Description>
1212
<Copyright>https://github.com/asv-soft</Copyright>
1313
<EnablePackageValidation>true</EnablePackageValidation>
14-
<PackageVersion>$(ApiVersion)</PackageVersion>
1514
<ApiCompatGenerateSuppressionFile>true</ApiCompatGenerateSuppressionFile>
1615
<PackageValidationBaselineVersion>$(ApiPrevVersion)</PackageValidationBaselineVersion>
1716

src/Asv.Drones.Gui.Api/CompatibilitySuppressions.xml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,14 @@
1010
</Suppression>
1111
<Suppression>
1212
<DiagnosticId>CP0006</DiagnosticId>
13-
<Target>M:Asv.Drones.Gui.Api.IMavlinkDevicesService.GetRfsaByFullId(System.UInt16)</Target>
13+
<Target>M:Asv.Drones.Gui.Api.IMavlinkDevicesService.GetRsgaByFullId(System.UInt16)</Target>
14+
<Left>lib/net8.0/Asv.Drones.Gui.Api.dll</Left>
15+
<Right>lib/net8.0/Asv.Drones.Gui.Api.dll</Right>
16+
<IsBaselineSuppression>true</IsBaselineSuppression>
17+
</Suppression>
18+
<Suppression>
19+
<DiagnosticId>CP0006</DiagnosticId>
20+
<Target>P:Asv.Drones.Gui.Api.IMavlinkDevicesService.RsgaDevices</Target>
1421
<Left>lib/net8.0/Asv.Drones.Gui.Api.dll</Left>
1522
<Right>lib/net8.0/Asv.Drones.Gui.Api.dll</Right>
1623
<IsBaselineSuppression>true</IsBaselineSuppression>

src/Asv.Drones.Gui.Api/Services/Mavlink/IMavlinkDevicesService.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,5 +62,7 @@ public interface IMavlinkDevicesService
6262
IAdsbClientDevice? GetAdsbVehicleByFullId(ushort id);
6363
IObservable<IChangeSet<IRfsaClientDevice, ushort>> RfsaDevices { get; }
6464
IRfsaClientDevice? GetRfsaByFullId(ushort id);
65+
IObservable<IChangeSet<IRsgaClientDevice, ushort>> RsgaDevices { get; }
66+
IRsgaClientDevice? GetRsgaByFullId(ushort id);
6567
}
6668
}

src/Asv.Drones.Gui.Api/Services/Mavlink/MavlinkHelper.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ public static MaterialIconKind GetIcon(DeviceClass type)
5555
DeviceClass.GbsRtk => MaterialIconKind.RouterWireless,
5656
DeviceClass.Adsb => MaterialIconKind.Radar,
5757
DeviceClass.Rfsa => MaterialIconKind.Waveform,
58+
DeviceClass.Rsga => MaterialIconKind.CellphoneWireless,
5859
_ => MaterialIconKind.HelpNetworkOutline,
5960
};
6061
}

src/Asv.Drones.Gui/Services/Mavlink/MavlinkDevicesService.cs

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public class MavlinkDeviceServiceConfig
3434
public AdsbClientDeviceConfig Adsb { get; set; } = new();
3535
public bool WrapToV2ExtensionEnabled { get; set; } = true;
3636
public RfsaClientDeviceConfig Rfsa { get; set; } = new();
37+
public RfsaClientDeviceConfig Rsga { get; set; } = new();
3738
}
3839

3940
[Export(typeof(IMavlinkDevicesService))]
@@ -163,11 +164,17 @@ public MavlinkDevicesService(IConfiguration config, IPacketSequenceCalculator se
163164
.Transform(CreateRfsaDevice)
164165
.DisposeMany()
165166
.RefCount();
167+
RsgaDevices = Devices
168+
.Filter(d => d.Type == (MavType)Mavlink.V2.AsvRsga.MavType.MavTypeAsvRsga)
169+
.Transform(CreateRsgaDevice)
170+
.DisposeMany()
171+
.RefCount();
166172

167173
AllDevices = Vehicles.Transform(x => (IClientDevice)x)
168174
.MergeChangeSets(BaseStations.Transform(x => (IClientDevice)x))
169175
.MergeChangeSets(Payloads.Transform(x => (IClientDevice)x))
170176
.MergeChangeSets(RfsaDevices.Transform(x => (IClientDevice)x))
177+
.MergeChangeSets(RsgaDevices.Transform(x => (IClientDevice)x))
171178
.MergeChangeSets(AdsbDevices.Transform(x => (IClientDevice)x));
172179

173180
#endregion
@@ -191,6 +198,16 @@ public MavlinkDevicesService(IConfiguration config, IPacketSequenceCalculator se
191198
#endregion
192199
}
193200

201+
private IRsgaClientDevice CreateRsgaDevice(IMavlinkDevice device)
202+
{
203+
return new RsgaClientDevice(Router, new MavlinkClientIdentity
204+
{
205+
TargetSystemId = device.SystemId,
206+
TargetComponentId = device.ComponentId,
207+
SystemId = _systemId.Value,
208+
ComponentId = _componentId.Value,
209+
}, InternalGetConfig(c => c.Rsga), _sequenceCalculator, RxApp.MainThreadScheduler);
210+
}
194211
private IRfsaClientDevice CreateRfsaDevice(IMavlinkDevice device)
195212
{
196213
return new RfsaClientDevice(Router, new MavlinkClientIdentity
@@ -323,7 +340,14 @@ private string TryGetName(StatustextPacket pkt)
323340
using var autoDispose = RfsaDevices.BindToObservableList(out var list).Subscribe();
324341
return list.Items.FirstOrDefault(d => d.FullId == id);
325342
}
326-
343+
344+
public IObservable<IChangeSet<IRsgaClientDevice, ushort>> RsgaDevices { get; }
345+
public IRsgaClientDevice? GetRsgaByFullId(ushort id)
346+
{
347+
using var autoDispose = RsgaDevices.BindToObservableList(out var list).Subscribe();
348+
return list.Items.FirstOrDefault(d => ((IClientDevice)d).FullId == id);
349+
}
350+
327351
private IVehicleClient? CreateVehicle(IMavlinkDevice device)
328352
{
329353
//if (device.Autopilot == MavAutopilot.MavAutopilotArdupilotmega)

src/Directory.Build.props

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
<Project>
22
<PropertyGroup>
3-
<ProductVersion>1.0.0</ProductVersion>
4-
<ApiVersion>1.0.0</ApiVersion>
5-
<ApiPrevVersion>0.3.6</ApiPrevVersion>
3+
<ProductVersion>1.0.1</ProductVersion>
4+
<ApiVersion>1.0.1</ApiVersion>
5+
<ApiPrevVersion>1.0.0</ApiPrevVersion>
66
<AvaloniaVersion>11.0.6</AvaloniaVersion>
77
<AsvCommonVersion>2.0.2</AsvCommonVersion>
88
<AsvAvaloniaToolkitVersion>1.0.1</AsvAvaloniaToolkitVersion>
99
<AsvAvaloniaMapVersion>2.0.5</AsvAvaloniaMapVersion>
10-
<AsvMavlinkVersion>3.9.2</AsvMavlinkVersion>
10+
<AsvMavlinkVersion>3.10.0</AsvMavlinkVersion>
1111
<FluentAvaloniaUIVersion>2.0.5</FluentAvaloniaUIVersion>
1212
<ReactiveUIVersion>19.5.41</ReactiveUIVersion>
1313
<SystemReactiveVersion>6.0.0</SystemReactiveVersion>

0 commit comments

Comments
 (0)