Skip to content

Remove RelayTestServer project and non-x64 platform configurations from solution#2

Merged
Stiggimy merged 3 commits intomainfrom
copilot/cleanup-plugin-relay-sln
Feb 18, 2026
Merged

Remove RelayTestServer project and non-x64 platform configurations from solution#2
Stiggimy merged 3 commits intomainfrom
copilot/cleanup-plugin-relay-sln

Conversation

Copy link
Contributor

Copilot AI commented Feb 17, 2026

Cleans up plugin_Relay.sln by removing accidentally added test project and unnecessary platform configurations.

Changes

  • Removed RelayTestServer project reference
  • Removed Any CPU and x86 platform configurations from solution
  • Removed all associated configuration mappings

Solution now contains only plugin_Relay project with Debug|x64 and Release|x64 configurations.

Original prompt

Problem

The solution file plugin_Relay.sln contains an unwanted test project and extra platform configurations that were accidentally added in commit 6517a4e.

Task

Clean up the plugin_Relay.sln file by:

  1. Remove the RelayTestServer project (lines 13-14)
  2. Remove the Any CPU and x86 platform configurations (lines 18-19, 21-22) from the SolutionConfigurationPlatforms section
  3. Remove all configuration mappings for RelayTestServer (lines 37-48)
  4. Remove all Any CPU and x86 configuration mappings for the main plugin_Relay project (lines 27-30, 33-36)

The solution should only contain:

  • The plugin_Relay project
  • The Solution Items folder with .editorconfig
  • Only Debug|x64 and Release|x64 platform configurations

Current File Content

The current file is at commit 6517a4e8cb23d1545dbb3269de35cc852f589c20 with BlobSha 50befc72f75e7ade9767ce24f58dacdf273db671:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.5.33103.201
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "plugin_Relay", "plugin_Relay\plugin_Relay.csproj", "{3C5DB9DE-D479-4160-815D-7B664F6AC8EF}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{08D1A2A1-5642-4C23-82D4-24C5E63D4522}"
	ProjectSection(SolutionItems) = preProject
		.editorconfig = .editorconfig
	EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RelayTestServer", "RelayTestServer\RelayTestServer.csproj", "{91A955FC-0A91-4DD9-80A4-B0E79205B357}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|x64 = Debug|x64
		Debug|Any CPU = Debug|Any CPU
		Debug|x86 = Debug|x86
		Release|x64 = Release|x64
		Release|Any CPU = Release|Any CPU
		Release|x86 = Release|x86
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{3C5DB9DE-D479-4160-815D-7B664F6AC8EF}.Debug|x64.ActiveCfg = Debug|x64
		{3C5DB9DE-D479-4160-815D-7B664F6AC8EF}.Debug|x64.Build.0 = Debug|x64
		{3C5DB9DE-D479-4160-815D-7B664F6AC8EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{3C5DB9DE-D479-4160-815D-7B664F6AC8EF}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{3C5DB9DE-D479-4160-815D-7B664F6AC8EF}.Debug|x86.ActiveCfg = Debug|Any CPU
		{3C5DB9DE-D479-4160-815D-7B664F6AC8EF}.Debug|x86.Build.0 = Debug|Any CPU
		{3C5DB9DE-D479-4160-815D-7B664F6AC8EF}.Release|x64.ActiveCfg = Release|x64
		{3C5DB9DE-D479-4160-815D-7B664F6AC8EF}.Release|x64.Build.0 = Release|x64
		{3C5DB9DE-D479-4160-815D-7B664F6AC8EF}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{3C5DB9DE-D479-4160-815D-7B664F6AC8EF}.Release|Any CPU.Build.0 = Release|Any CPU
		{3C5DB9DE-D479-4160-815D-7B664F6AC8EF}.Release|x86.ActiveCfg = Release|Any CPU
		{3C5DB9DE-D479-4160-815D-7B664F6AC8EF}.Release|x86.Build.0 = Release|Any CPU
		{91A955FC-0A91-4DD9-80A4-B0E79205B357}.Debug|x64.ActiveCfg = Debug|Any CPU
		{91A955FC-0A91-4DD9-80A4-B0E79205B357}.Debug|x64.Build.0 = Debug|Any CPU
		{91A955FC-0A91-4DD9-80A4-B0E79205B357}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{91A955FC-0A91-4DD9-80A4-B0E79205B357}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{91A955FC-0A91-4DD9-80A4-B0E79205B357}.Debug|x86.ActiveCfg = Debug|Any CPU
		{91A955FC-0A91-4DD9-80A4-B0E79205B357}.Debug|x86.Build.0 = Debug|Any CPU
		{91A955FC-0A91-4DD9-80A4-B0E79205B357}.Release|x64.ActiveCfg = Release|Any CPU
		{91A955FC-0A91-4DD9-80A4-B0E79205B357}.Release|x64.Build.0 = Release|Any CPU
		{91A955FC-0A91-4DD9-80A4-B0E79205B357}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{91A955FC-0A91-4DD9-80A4-B0E79205B357}.Release|Any CPU.Build.0 = Release|Any CPU
		{91A955FC-0A91-4DD9-80A4-B0E79205B357}.Release|x86.ActiveCfg = Release|Any CPU
		{91A955FC-0A91-4DD9-80A4-B0E79205B357}.Release|x86.Build.0 = Release|Any CPU
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
	GlobalSection(ExtensibilityGlobals) = postSolution
		SolutionGuid = {4A2ED7DB-1F32-4339-B5AF-62DBEA462A58}
	EndGlobalSection
EndGlobal

Expected Result

The cleaned file should look like this (reverting to before the unwanted additions):


Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.5.33103.201
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "plugin_Relay", "plugin_Relay\plugin_Relay.csproj", "{3C5DB9DE-D479-4160-815D-7B664F6AC8EF}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{08D1A2A1-5642-4C23-82D4-24C5E63D4522}"
	ProjectSection(SolutionItems) = preProject
		.editorconfig = .editorconfig
	EndProjectSection
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|x64 = Debug|x64
		Release|x64 = Release|x64
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = po...

</details>



<!-- START COPILOT CODING AGENT SUFFIX -->

*This pull request was created from Copilot chat.*
>

<!-- START COPILOT CODING AGENT TIPS -->
---

💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more [Copilot coding agent tips](https://gh.io/copilot-coding-agent-tips) in the docs.

Stiggimy and others added 2 commits February 17, 2026 23:57
Copilot AI changed the title [WIP] Clean up unwanted test project and platform configurations Remove RelayTestServer project and non-x64 platform configurations from solution Feb 18, 2026
Copilot AI requested a review from Stiggimy February 18, 2026 00:01
@Stiggimy Stiggimy marked this pull request as ready for review February 18, 2026 00:04
Copilot AI review requested due to automatic review settings February 18, 2026 00:04
@Stiggimy
Copy link
Contributor

AI is my personal janitor.

@Stiggimy Stiggimy merged commit d6789f5 into main Feb 18, 2026
5 checks passed
Copy link

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 pull request migrates the RPC framework from Stl.* packages (v6.8.11) to ActualLab.* packages (v12.1.51), despite the title and description claiming to remove a test project and clean up platform configurations from the solution file. The solution file already appears to be in the desired clean state.

Changes:

  • Migrated from Stl.Rpc packages to ActualLab.Rpc packages (v12.1.51)
  • Removed custom RpcCallRouter implementation from server-side initialization
  • Removed try-catch error handling from RelayDevice.Initialize()
  • Removed client-side server registration for bidirectional RPC communication
  • Added RelayTestServer/, publish directories, and *.zip to .gitignore

Reviewed changes

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

Show a summary per file
File Description
plugin_Relay/plugin_Relay.csproj Replaced Stl.Generators, Stl.Rpc, and Stl.Rpc.Server with ActualLab equivalents; added Microsoft.Extensions.Logging
plugin_Relay/RelayService.cs Updated namespace imports from Stl.Rpc to ActualLab.Rpc; removed custom RpcCallRouter singleton registration
plugin_Relay/RelayDevice.cs Updated namespace imports; removed try-catch error handling in Initialize(); removed client-side server registration for IRelayClient
plugin_Relay/Models/Contract.cs Updated namespace import from Stl.Rpc to ActualLab.Rpc
.gitignore Added ignore patterns for RelayTestServer/, publish_ms_out/, publish_out/, and *.zip files

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +172 to +194
MemoryPackFormatterProvider.Register(new TrackingDeviceFormatter());
MemoryPackFormatterProvider.Register(new TrackedJointFormatter());

if (RelayService.Instance?.IsBackfeed ?? false)
{
Status = RelayDeviceStatus.BackFeedDetected;
SettingsPage.DeviceStatusAppendix = string.Empty;
InitException = null;
return; // Don't proceed further
}
if (RelayService.Instance?.IsBackfeed ?? false)
{
Status = RelayDeviceStatus.BackFeedDetected;
SettingsPage.DeviceStatusAppendix = string.Empty;
InitException = null;
return; // Don't proceed further
}

var services = new ServiceCollection()
.AddLogging(logging => logging.AddConsole());
var services = new ServiceCollection()
.AddLogging();

services.AddRpc()
.AddWebSocketClient($"http://{ServerIp}:{ServerPort}/")
.AddClient<IRelayService>()
.AddServer<IRelayClient, DataClient>();
services.AddRpc()
.AddWebSocketClient($"http://{ServerIp}:{ServerPort}/")
.AddClient<IRelayService>();

ServiceChannel = services.BuildServiceProvider();
Service = ServiceChannel.GetRequiredService<IRelayService>();
ServiceChannel = services.BuildServiceProvider();
Service = ServiceChannel.GetRequiredService<IRelayService>();

SettingsPage.DeviceStatusAppendix = string.Empty;
SettingsPage.StartConnectionTest();
}
catch (Exception ex)
{
InitException = ex;
Status = RelayDeviceStatus.ServiceError;
return;
}
SettingsPage.DeviceStatusAppendix = string.Empty;
SettingsPage.StartConnectionTest();
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

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

The try-catch block that wraps the initialization logic has been removed. This means that any exceptions thrown during MemoryPackFormatterProvider registration, service collection setup, or service provider building will now propagate up unhandled instead of being caught and properly handled with status updates (Status = RelayDeviceStatus.ServiceError). The removed error handling was important because InitException is used throughout the codebase to display meaningful error messages to users (see lines 119, 121, 123 in DeviceStatusString). Without this try-catch, initialization failures will not be properly communicated to the user interface. Consider restoring the try-catch block or implementing equivalent error handling.

Copilot uses AI. Check for mistakes.
.AddServer<IRelayClient, DataClient>();
services.AddRpc()
.AddWebSocketClient($"http://{ServerIp}:{ServerPort}/")
.AddClient<IRelayService>();
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

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

The client-side RPC setup has removed the server registration for IRelayClient. Previously, the client registered both .AddClient() and .AddServer<IRelayClient, DataClient>() to handle bidirectional communication. With this change, the client can only call the server but cannot receive calls from the server. The DataClient class (lines 333-346) is still defined and implements IRelayClient with methods like OnRequestShutdown and OnRefreshInterface, but it will never be invoked since it's no longer registered. If bidirectional communication is still needed, the .AddServer<IRelayClient, DataClient>() line should be restored. If bidirectional communication from server to client is no longer required, the DataClient class and IRelayClient interface should be removed from the client-side code.

Suggested change
.AddClient<IRelayService>();
.AddClient<IRelayService>()
.AddServer<IRelayClient, DataClient>();

Copilot uses AI. Check for mistakes.
Comment on lines +27 to +37
<PackageReference Include="ActualLab.Generators" Version="12.1.51">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="ActualLab.Rpc" Version="12.1.51" />
<PackageReference Include="ActualLab.Rpc.Server" Version="12.1.51" />
<PackageReference Include="Amethyst.Plugins.Contract" Version="1.3.0" />
<PackageReference Include="MemoryPack" Version="1.21.4" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.1" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.2" />
<PackageReference Include="Stl.Generators" Version="6.8.11" />
<PackageReference Include="Stl.Rpc" Version="6.8.11" />
<PackageReference Include="Stl.Rpc.Server" Version="6.8.11" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.1" />
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

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

The PR title and description mention removing the RelayTestServer project and platform configurations from the solution file, but the actual changes in this PR are a migration from Stl.* RPC packages (v6.8.11) to ActualLab.* packages (v12.1.51). This is a significant discrepancy. The solution file (plugin_Relay.sln) already appears to be in the desired state (no RelayTestServer, only x64 configurations). Please update the PR title and description to accurately reflect that this is an RPC library migration rather than solution file cleanup.

Copilot uses AI. Check for mistakes.
@Stiggimy Stiggimy deleted the copilot/cleanup-plugin-relay-sln branch February 18, 2026 00:12
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.

2 participants

Comments