diff --git a/web/packages/teleterm/src/mainProcess/fixtures/mocks.ts b/web/packages/teleterm/src/mainProcess/fixtures/mocks.ts
index 7ec59d99a921b..7ec394fb8a805 100644
--- a/web/packages/teleterm/src/mainProcess/fixtures/mocks.ts
+++ b/web/packages/teleterm/src/mainProcess/fixtures/mocks.ts
@@ -156,6 +156,7 @@ export const makeRuntimeSettings = (
installationId: '123e4567-e89b-12d3-a456-426614174000',
arch: 'arm64',
osVersion: '22.2.0',
+ // Should be kept in sync with the default proxyVersion of makeRootCluster.
appVersion: '11.1.0',
isLocalBuild: runtimeSettings?.appVersion === '1.0.0-dev',
username: 'alice',
diff --git a/web/packages/teleterm/src/services/tshd/testHelpers.ts b/web/packages/teleterm/src/services/tshd/testHelpers.ts
index 9f97830fdcd85..fef24a5cb3677 100644
--- a/web/packages/teleterm/src/services/tshd/testHelpers.ts
+++ b/web/packages/teleterm/src/services/tshd/testHelpers.ts
@@ -63,7 +63,7 @@ export const makeRootCluster = (
proxyHost: 'teleport-local:3080',
authClusterId: 'fefe3434-fefe-3434-fefe-3434fefe3434',
loggedInUser: makeLoggedInUser(),
- proxyVersion: '1.0.0',
+ proxyVersion: '11.1.0',
...props,
});
diff --git a/web/packages/teleterm/src/ui/ConnectMyComputer/DocumentConnectMyComputerSetup/DocumentConnectMyComputerSetup.story.tsx b/web/packages/teleterm/src/ui/ConnectMyComputer/DocumentConnectMyComputerSetup/DocumentConnectMyComputerSetup.story.tsx
index f15a692f1f2ab..5f7f3e3ca8f37 100644
--- a/web/packages/teleterm/src/ui/ConnectMyComputer/DocumentConnectMyComputerSetup/DocumentConnectMyComputerSetup.story.tsx
+++ b/web/packages/teleterm/src/ui/ConnectMyComputer/DocumentConnectMyComputerSetup/DocumentConnectMyComputerSetup.story.tsx
@@ -54,6 +54,16 @@ export function Success() {
const appContext = new MockAppContext({ appVersion: cluster.proxyVersion });
appContext.connectMyComputerService.waitForNodeToJoin = async () =>
makeServer();
+ // Report the agent as running so that the autostart behavior doesn't kick in and attempt to start
+ // the agent over and over.
+ appContext.mainProcessClient.subscribeToAgentUpdate = (
+ rootClusterUri,
+ callback
+ ) => {
+ callback({ status: 'running' });
+
+ return { cleanup: () => {} };
+ };
return ;
}
diff --git a/web/packages/teleterm/src/ui/DocumentCluster/ClusterResources/Servers/Servers.tsx b/web/packages/teleterm/src/ui/DocumentCluster/ClusterResources/Servers/Servers.tsx
index 21766b15c3abc..f95a94aa6ae93 100644
--- a/web/packages/teleterm/src/ui/DocumentCluster/ClusterResources/Servers/Servers.tsx
+++ b/web/packages/teleterm/src/ui/DocumentCluster/ClusterResources/Servers/Servers.tsx
@@ -58,7 +58,8 @@ function ServerList(props: State) {
const { documentsService, rootClusterUri } = useWorkspaceContext();
const { clusterUri } = useClusterContext();
const loggedInUser = useWorkspaceLoggedInUser();
- const { canUse: canUseConnectMyComputer } = useConnectMyComputerContext();
+ const { canUse: hasPermissionsForConnectMyComputer, agentCompatibility } =
+ useConnectMyComputerContext();
const servers = fetchAttempt.data?.agentsList.map(makeServer) || [];
const disabled = fetchAttempt.status === 'processing';
@@ -70,13 +71,16 @@ function ServerList(props: State) {
agentFilter.search || agentFilter.query,
canAddResources
);
+ const canUseConnectMyComputer =
+ isRootCluster &&
+ hasPermissionsForConnectMyComputer &&
+ agentCompatibility === 'compatible';
let { emptyText, emptyHint } = getEmptyTableText(emptyTableStatus, 'servers');
let emptyButton: JSX.Element;
if (
emptyTableStatus.status === 'no-resources' &&
emptyTableStatus.showEnrollingResourcesHint &&
- isRootCluster &&
canUseConnectMyComputer
) {
emptyHint =
diff --git a/web/packages/teleterm/src/ui/DocumentCluster/DocumentCluster.story.tsx b/web/packages/teleterm/src/ui/DocumentCluster/DocumentCluster.story.tsx
index 4cf22132e1d90..065da37b4d8c8 100644
--- a/web/packages/teleterm/src/ui/DocumentCluster/DocumentCluster.story.tsx
+++ b/web/packages/teleterm/src/ui/DocumentCluster/DocumentCluster.story.tsx
@@ -269,8 +269,8 @@ function renderState({
const appContext = new MockAppContext({ platform });
appContext.clustersService.state = state;
+ const rootClusterUri = routing.ensureRootClusterUri(doc.clusterUri);
appContext.workspacesService.setState(draftState => {
- const rootClusterUri = routing.ensureRootClusterUri(doc.clusterUri);
draftState.rootClusterUri = rootClusterUri;
draftState.workspaces[rootClusterUri] = {
localClusterUri: doc.clusterUri,
@@ -286,7 +286,7 @@ function renderState({
return (
-
+