Skip to content

Commit 6384ba0

Browse files
sharpninjaCopilot
andcommitted
Add FR-19/20, TR-21/22: server profiles and mobile chat UX requirements
- FR-19: Server profiles with persistent connection settings per host:port - FR-20: Mobile chat UX (Enter sends, server-only mode, nav hidden until connected, gRPC-only) - TR-21: Implementation details for server profile storage (LiteDB, shared model, auto-save) - TR-22: Implementation details for mobile Enter key, connection mode, visibility, gRPC migration - Updated FR-2.5/2.6 and TR-5.7 to reflect platform-specific Enter behavior - Updated requirements-test-coverage.md with FR-17..20 and TR-19..22 entries Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 41796c9 commit 6384ba0

3 files changed

Lines changed: 96 additions & 3 deletions

File tree

docs/functional-requirements.md

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
- **FR-2.2** Agent output (stdout/stderr) shall be **streamed to the app in real time** and displayed in the chat.
2525
- **FR-2.3** Agent output in the chat shall be **formatted with a markdown parser** (e.g. bold, code, lists) so that Cursor output is readable and structured.
2626
- **FR-2.4** The user shall be able to **connect** to the service (host/port) and **disconnect**; connecting shall start a session with the agent; disconnecting shall stop the session and the agent.
27-
- **FR-2.5** Chat text entry shall support **multi-line input**; pressing **Enter/Return** shall insert a newline in the request text.
28-
- **FR-2.6** On desktop clients, pressing **Ctrl+Enter** in the chat editor shall submit the request.
27+
- **FR-2.5** Chat text entry shall support **multi-line input** on desktop; on mobile, Enter sends the message.
28+
- **FR-2.6** On desktop clients, pressing **Ctrl+Enter** in the chat editor shall submit the request; on mobile clients, pressing **Enter** shall submit the request.
2929
- **FR-2.7** On mobile clients, session establishment shall begin in a **dedicated connection view** and transition to the **chat view** after successful connection.
3030

3131
*See:* [TR-3](technical-requirements.md#3-service-architecture), [TR-4](technical-requirements.md#4-protocol-grpc), [TR-5](technical-requirements.md#5-app-architecture).
@@ -203,3 +203,26 @@
203203
- **FR-18.2** All interactive and display controls in the Avalonia desktop app shall have a uniform **4px margin** applied via a global style.
204204

205205
*See:* [TR-20](technical-requirements.md#20-desktop-ux-refinements).
206+
207+
---
208+
209+
## 19. Server profiles and persistent connection settings
210+
211+
- **FR-19.1** Both mobile and desktop apps shall **persist server connection details** (host, port, API key, display name) after a successful connection, keyed by **host:port**.
212+
- **FR-19.2** The Settings page (mobile) and Server Setup panel (desktop) shall display a **list of saved server profiles** with the ability to **add, edit, and remove** entries.
213+
- **FR-19.3** Each saved server profile shall store a configurable **per-request context** (text prepended to every chat message) and a **default session context** (context seeded into new sessions).
214+
- **FR-19.4** Connecting to a previously saved server shall **auto-load** the stored per-request context into the workspace (without overriding user-entered values).
215+
- **FR-19.5** Saving or updating a server profile shall not affect **existing active sessions**; changes apply only to subsequent connections.
216+
217+
*See:* [TR-21](technical-requirements.md#21-server-profiles-and-persistent-connection-settings).
218+
219+
---
220+
221+
## 20. Mobile chat UX
222+
223+
- **FR-20.1** On mobile clients, pressing **Enter** in the chat input shall **send the message** (submit the request).
224+
- **FR-20.2** On mobile clients, the **connection mode shall be fixed to "server"**; no mode-selection dialog shall be shown.
225+
- **FR-20.3** Navigation items (Settings, Account, MCP Registry) shall be **hidden until a connection is established**; the connection card shall be **hidden once connected**.
226+
- **FR-20.4** All client-to-server API calls shall use **gRPC exclusively**; no REST/HTTP fallback endpoints shall be used by the mobile client.
227+
228+
*See:* [TR-22](technical-requirements.md#22-mobile-chat-ux).

docs/requirements-test-coverage.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,27 @@ Coverage status values:
8686
| FR-15.1 | Covered | `ConnectionProtectionServiceTests.*` (`tests/RemoteAgent.Service.Tests/ConnectionProtectionServiceTests.cs`), `AgentGatewayServiceIntegrationTests_ManagementApis.*` (`tests/RemoteAgent.Service.IntegrationTests/AgentGatewayServiceIntegrationTests_ManagementApis.cs`) |
8787
| FR-15.2 | Covered | `ConnectionProtectionServiceTests.*` (`tests/RemoteAgent.Service.Tests/ConnectionProtectionServiceTests.cs`) |
8888
| FR-16.1 | Covered | `AgentGatewayServiceIntegrationTests_NoCommand.*` (`tests/RemoteAgent.Service.IntegrationTests/AgentGatewayServiceIntegrationTests_NoCommand.cs`), `AgentGatewayServiceIntegrationTests_ManagementApis.*` (`tests/RemoteAgent.Service.IntegrationTests/AgentGatewayServiceIntegrationTests_ManagementApis.cs`) |
89+
| FR-17.1 | Partial | `ScanQrCodeHandlerTests.*` (`tests/RemoteAgent.App.Tests/ScanQrCodeHandlerTests.cs`), `MobileHandlerTests.*` (`tests/RemoteAgent.App.Tests/MobileHandlerTests.cs`) |
90+
| FR-17.2 | Partial | `SetPairingUserHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SetPairingUserHandlerTests.cs`) |
91+
| FR-17.3 | None | None |
92+
| FR-17.4 | None | None |
93+
| FR-17.5 | None | None |
94+
| FR-17.6 | Partial | `ScanQrCodeHandlerTests.*` (`tests/RemoteAgent.App.Tests/ScanQrCodeHandlerTests.cs`) |
95+
| FR-17.6.1 | None | None |
96+
| FR-17.6.2 | None | None |
97+
| FR-17.7 | None | None |
98+
| FR-17.8 | Partial | `MobileHandlerTests.*` (`tests/RemoteAgent.App.Tests/MobileHandlerTests.cs`) |
99+
| FR-18.1 | None | None |
100+
| FR-18.2 | None | None |
101+
| FR-19.1 | Partial | `MobileHandlerTests.*` (`tests/RemoteAgent.App.Tests/MobileHandlerTests.cs`), `SaveServerRegistrationHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SaveServerRegistrationHandlerTests.cs`) |
102+
| FR-19.2 | Partial | `SaveServerRegistrationHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SaveServerRegistrationHandlerTests.cs`), `RemoveServerRegistrationHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/RemoveServerRegistrationHandlerTests.cs`) |
103+
| FR-19.3 | Partial | `SaveServerRegistrationHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SaveServerRegistrationHandlerTests.cs`) |
104+
| FR-19.4 | None | None |
105+
| FR-19.5 | None | None |
106+
| FR-20.1 | None | None |
107+
| FR-20.2 | Covered | `MobileHandlerTests.*` (`tests/RemoteAgent.App.Tests/MobileHandlerTests.cs`) |
108+
| FR-20.3 | None | None |
109+
| FR-20.4 | Covered | `MobileHandlerTests.*` (`tests/RemoteAgent.App.Tests/MobileHandlerTests.cs`) |
89110

90111
## Technical Requirements (TR)
91112

@@ -203,3 +224,26 @@ Coverage status values:
203224
| TR-18.2 | Covered | `RefreshOpenSessionsHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/RefreshOpenSessionsHandlerTests.cs`), `BanPeerHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/BanPeerHandlerTests.cs`), `DeleteAuthUserHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/DeleteAuthUserHandlerTests.cs`), `ClearAppLogHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/ClearAppLogHandlerTests.cs`), `SendDesktopMessageHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SendDesktopMessageHandlerTests.cs`), `SaveAppLogHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SaveAppLogHandlerTests.cs`), `ExpandStatusLogPanelHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/ExpandStatusLogPanelHandlerTests.cs`), `RemoveServerRegistrationHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/RemoveServerRegistrationHandlerTests.cs`), `SetManagementSectionHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SetManagementSectionHandlerTests.cs`), `TerminateDesktopSessionHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/TerminateDesktopSessionHandlerTests.cs`), `DeleteMcpServerHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/DeleteMcpServerHandlerTests.cs`), `SavePluginsHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SavePluginsHandlerTests.cs`), `UnbanPeerHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/UnbanPeerHandlerTests.cs`), `RefreshAuthUsersHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/RefreshAuthUsersHandlerTests.cs`), `SeedSessionContextHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SeedSessionContextHandlerTests.cs`), `DeletePromptTemplateHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/DeletePromptTemplateHandlerTests.cs`), `OpenNewSessionHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/OpenNewSessionHandlerTests.cs`), `StartLogMonitoringHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/StartLogMonitoringHandlerTests.cs`), `RefreshSecurityDataHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/RefreshSecurityDataHandlerTests.cs`), `StructuredLogServiceTests.*` (`tests/RemoteAgent.Service.Tests/StructuredLogServiceTests.cs`), `SaveAgentMcpMappingHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SaveAgentMcpMappingHandlerTests.cs`), `CheckSessionCapacityHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/CheckSessionCapacityHandlerTests.cs`), `ServiceProviderRequestDispatcherTests.*` (`tests/RemoteAgent.App.Tests/Cqrs/ServiceProviderRequestDispatcherTests.cs`), `CheckLocalServerHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/CheckLocalServerHandlerTests.cs`), `ApplyLocalServerActionHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/ApplyLocalServerActionHandlerTests.cs`), `SaveServerRegistrationHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SaveServerRegistrationHandlerTests.cs`), `SaveMcpServerHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SaveMcpServerHandlerTests.cs`), `SaveAuthUserHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SaveAuthUserHandlerTests.cs`), `ConnectionSettingsDialogViewModelTests.*` (`tests/RemoteAgent.Desktop.UiTests/ViewModels/ConnectionSettingsDialogViewModelTests.cs`), `TerminateOpenServerSessionHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/TerminateOpenServerSessionHandlerTests.cs`), `RefreshMcpRegistryHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/RefreshMcpRegistryHandlerTests.cs`), `RefreshPromptTemplatesHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/RefreshPromptTemplatesHandlerTests.cs`), `SavePromptTemplateHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SavePromptTemplateHandlerTests.cs`), `RefreshPluginsHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/RefreshPluginsHandlerTests.cs`) |
204225
| TR-18.3 | Covered | `RefreshOpenSessionsHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/RefreshOpenSessionsHandlerTests.cs`), `BanPeerHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/BanPeerHandlerTests.cs`), `DeleteAuthUserHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/DeleteAuthUserHandlerTests.cs`), `ClearAppLogHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/ClearAppLogHandlerTests.cs`), `SendDesktopMessageHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SendDesktopMessageHandlerTests.cs`), `SaveAppLogHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SaveAppLogHandlerTests.cs`), `ExpandStatusLogPanelHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/ExpandStatusLogPanelHandlerTests.cs`), `RemoveServerRegistrationHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/RemoveServerRegistrationHandlerTests.cs`), `SetManagementSectionHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SetManagementSectionHandlerTests.cs`), `TerminateDesktopSessionHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/TerminateDesktopSessionHandlerTests.cs`), `DeleteMcpServerHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/DeleteMcpServerHandlerTests.cs`), `SavePluginsHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SavePluginsHandlerTests.cs`), `UnbanPeerHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/UnbanPeerHandlerTests.cs`), `RefreshAuthUsersHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/RefreshAuthUsersHandlerTests.cs`), `SeedSessionContextHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SeedSessionContextHandlerTests.cs`), `DeletePromptTemplateHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/DeletePromptTemplateHandlerTests.cs`), `OpenNewSessionHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/OpenNewSessionHandlerTests.cs`), `StartLogMonitoringHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/StartLogMonitoringHandlerTests.cs`), `RefreshSecurityDataHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/RefreshSecurityDataHandlerTests.cs`), `SaveAgentMcpMappingHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SaveAgentMcpMappingHandlerTests.cs`), `CheckSessionCapacityHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/CheckSessionCapacityHandlerTests.cs`), `ServiceProviderRequestDispatcherTests.*` (`tests/RemoteAgent.App.Tests/Cqrs/ServiceProviderRequestDispatcherTests.cs`), `CheckLocalServerHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/CheckLocalServerHandlerTests.cs`), `ApplyLocalServerActionHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/ApplyLocalServerActionHandlerTests.cs`), `SaveServerRegistrationHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SaveServerRegistrationHandlerTests.cs`), `SaveMcpServerHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SaveMcpServerHandlerTests.cs`), `SaveAuthUserHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SaveAuthUserHandlerTests.cs`), `ConnectionSettingsDialogViewModelTests.*` (`tests/RemoteAgent.Desktop.UiTests/ViewModels/ConnectionSettingsDialogViewModelTests.cs`), `TerminateOpenServerSessionHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/TerminateOpenServerSessionHandlerTests.cs`), `RefreshMcpRegistryHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/RefreshMcpRegistryHandlerTests.cs`), `RefreshPromptTemplatesHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/RefreshPromptTemplatesHandlerTests.cs`), `SavePromptTemplateHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SavePromptTemplateHandlerTests.cs`), `RefreshPluginsHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/RefreshPluginsHandlerTests.cs`) |
205226
| TR-18.4 | Covered | `RefreshOpenSessionsHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/RefreshOpenSessionsHandlerTests.cs`), `BanPeerHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/BanPeerHandlerTests.cs`), `DeleteAuthUserHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/DeleteAuthUserHandlerTests.cs`), `ClearAppLogHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/ClearAppLogHandlerTests.cs`), `SendDesktopMessageHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SendDesktopMessageHandlerTests.cs`), `SaveAppLogHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SaveAppLogHandlerTests.cs`), `ExpandStatusLogPanelHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/ExpandStatusLogPanelHandlerTests.cs`), `RemoveServerRegistrationHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/RemoveServerRegistrationHandlerTests.cs`), `SetManagementSectionHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SetManagementSectionHandlerTests.cs`), `TerminateDesktopSessionHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/TerminateDesktopSessionHandlerTests.cs`), `DeleteMcpServerHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/DeleteMcpServerHandlerTests.cs`), `SavePluginsHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SavePluginsHandlerTests.cs`), `UnbanPeerHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/UnbanPeerHandlerTests.cs`), `RefreshAuthUsersHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/RefreshAuthUsersHandlerTests.cs`), `SeedSessionContextHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SeedSessionContextHandlerTests.cs`), `DeletePromptTemplateHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/DeletePromptTemplateHandlerTests.cs`), `OpenNewSessionHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/OpenNewSessionHandlerTests.cs`), `StartLogMonitoringHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/StartLogMonitoringHandlerTests.cs`), `RefreshSecurityDataHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/RefreshSecurityDataHandlerTests.cs`), `SaveAgentMcpMappingHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SaveAgentMcpMappingHandlerTests.cs`), `CheckSessionCapacityHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/CheckSessionCapacityHandlerTests.cs`), `CheckLocalServerHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/CheckLocalServerHandlerTests.cs`), `ApplyLocalServerActionHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/ApplyLocalServerActionHandlerTests.cs`), `SaveServerRegistrationHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SaveServerRegistrationHandlerTests.cs`), `SaveMcpServerHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SaveMcpServerHandlerTests.cs`), `SaveAuthUserHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SaveAuthUserHandlerTests.cs`), `ConnectionSettingsDialogViewModelTests.*` (`tests/RemoteAgent.Desktop.UiTests/ViewModels/ConnectionSettingsDialogViewModelTests.cs`), `TerminateOpenServerSessionHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/TerminateOpenServerSessionHandlerTests.cs`), `RefreshMcpRegistryHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/RefreshMcpRegistryHandlerTests.cs`), `RefreshPromptTemplatesHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/RefreshPromptTemplatesHandlerTests.cs`), `SavePromptTemplateHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SavePromptTemplateHandlerTests.cs`), `RefreshPluginsHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/RefreshPluginsHandlerTests.cs`) |
227+
| TR-19.1 | Partial | `SetPairingUserHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SetPairingUserHandlerTests.cs`) |
228+
| TR-19.2 | None | None |
229+
| TR-19.3 | None | None |
230+
| TR-19.4 | None | None |
231+
| TR-19.5 | None | None |
232+
| TR-19.6 | Partial | `ScanQrCodeHandlerTests.*` (`tests/RemoteAgent.App.Tests/ScanQrCodeHandlerTests.cs`) |
233+
| TR-19.7 | Partial | `ScanQrCodeHandlerTests.*` (`tests/RemoteAgent.App.Tests/ScanQrCodeHandlerTests.cs`) |
234+
| TR-19.8 | Partial | `SetPairingUserHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SetPairingUserHandlerTests.cs`) |
235+
| TR-19.9 | Partial | `ScanQrCodeHandlerTests.*` (`tests/RemoteAgent.App.Tests/ScanQrCodeHandlerTests.cs`) |
236+
| TR-20.1 | None | None |
237+
| TR-20.2 | None | None |
238+
| TR-21.1 | Partial | `MobileHandlerTests.*` (`tests/RemoteAgent.App.Tests/MobileHandlerTests.cs`) |
239+
| TR-21.2 | None | None |
240+
| TR-21.3 | Covered | `SaveServerRegistrationHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SaveServerRegistrationHandlerTests.cs`) |
241+
| TR-21.4 | Partial | `MobileHandlerTests.*` (`tests/RemoteAgent.App.Tests/MobileHandlerTests.cs`) |
242+
| TR-21.5 | None | None |
243+
| TR-21.6 | Covered | `SaveServerRegistrationHandlerTests.*` (`tests/RemoteAgent.Desktop.UiTests/Handlers/SaveServerRegistrationHandlerTests.cs`) |
244+
| TR-21.7 | None | None |
245+
| TR-22.1 | None | None |
246+
| TR-22.2 | Covered | `MobileHandlerTests.*` (`tests/RemoteAgent.App.Tests/MobileHandlerTests.cs`) |
247+
| TR-22.3 | None | None |
248+
| TR-22.4 | None | None |
249+
| TR-22.5 | Covered | `MobileHandlerTests.*` (`tests/RemoteAgent.App.Tests/MobileHandlerTests.cs`) |

0 commit comments

Comments
 (0)