From 7842b5a01f856f214eecc6b2a6271e9bc11efb4c Mon Sep 17 00:00:00 2001 From: iliya Date: Tue, 7 Apr 2026 10:59:39 +0300 Subject: [PATCH] fix(team): clarify teammate first-contact wording --- .../services/team/TeamProvisioningService.ts | 16 ++++++++-------- .../components/team/TeamProvisioningBanner.tsx | 16 ++++++++-------- src/renderer/utils/memberHelpers.ts | 6 +++--- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/main/services/team/TeamProvisioningService.ts b/src/main/services/team/TeamProvisioningService.ts index 0c5685b2..726d410f 100644 --- a/src/main/services/team/TeamProvisioningService.ts +++ b/src/main/services/team/TeamProvisioningService.ts @@ -1751,9 +1751,9 @@ function buildGeminiPostLaunchHydrationPrompt( : status?.launchState === 'confirmed_alive' ? 'bootstrap confirmed' : status?.runtimeAlive - ? 'runtime started, check-in pending' + ? 'runtime started, first contact pending' : status?.launchState === 'runtime_pending_bootstrap' - ? 'spawn accepted, check-in pending' + ? 'spawn accepted, first contact pending' : status?.status === 'spawning' ? 'spawn in progress' : 'runtime state unclear'; @@ -3011,7 +3011,7 @@ export class TeamProvisioningService { const detail = parsedStatus.reason === 'already_running' ? 'duplicate spawn skipped - already running' - : 'duplicate spawn skipped - check-in pending'; + : 'duplicate spawn skipped - first contact pending'; this.appendMemberBootstrapDiagnostic(run, spawnedMemberName, detail); return; } @@ -6104,7 +6104,7 @@ export class TeamProvisioningService { this.appendMemberBootstrapDiagnostic( run, memberName, - 'respawn blocked as duplicate — teammate already alive or check-in pending' + 'respawn blocked as duplicate — teammate already alive or first contact pending' ); continue; } @@ -6376,13 +6376,13 @@ export class TeamProvisioningService { launchSummary.runtimeAlivePendingCount > 0 && launchSummary.runtimeAlivePendingCount === run.expectedMembers.length; return allRuntimeAlive - ? `${prefix} — teammate runtimes online, waiting for check-ins` + ? `${prefix} — teammate runtimes online, waiting for first contact` : launchSummary.runtimeAlivePendingCount > 0 - ? `${prefix} — ${launchSummary.runtimeAlivePendingCount}/${run.expectedMembers.length} teammate runtime${launchSummary.runtimeAlivePendingCount === 1 ? '' : 's'} online${stillStartingCount > 0 ? `, ${stillStartingCount} still starting` : ''}, waiting for check-ins` - : `${prefix} — teammates are still starting, waiting for check-ins`; + ? `${prefix} — ${launchSummary.runtimeAlivePendingCount}/${run.expectedMembers.length} teammate runtime${launchSummary.runtimeAlivePendingCount === 1 ? '' : 's'} online${stillStartingCount > 0 ? `, ${stillStartingCount} still starting` : ''}, waiting for first contact` + : `${prefix} — teammates are still starting, waiting for first contact`; } - return `${prefix} — ${launchSummary.confirmedCount}/${run.expectedMembers.length} teammates checked in${launchSummary.runtimeAlivePendingCount > 0 ? `, ${launchSummary.runtimeAlivePendingCount} runtime${launchSummary.runtimeAlivePendingCount === 1 ? '' : 's'} waiting for check-in` : ''}${stillStartingCount > 0 ? `${launchSummary.runtimeAlivePendingCount > 0 ? ', ' : ', '}${stillStartingCount} still joining` : ''}`; + return `${prefix} — ${launchSummary.confirmedCount}/${run.expectedMembers.length} teammates made contact${launchSummary.runtimeAlivePendingCount > 0 ? `, ${launchSummary.runtimeAlivePendingCount} runtime${launchSummary.runtimeAlivePendingCount === 1 ? '' : 's'} waiting for first contact` : ''}${stillStartingCount > 0 ? `${launchSummary.runtimeAlivePendingCount > 0 ? ', ' : ', '}${stillStartingCount} still joining` : ''}`; } private buildRuntimeSpawnStatusRecord( diff --git a/src/renderer/components/team/TeamProvisioningBanner.tsx b/src/renderer/components/team/TeamProvisioningBanner.tsx index 661df1cd..cb2d12b1 100644 --- a/src/renderer/components/team/TeamProvisioningBanner.tsx +++ b/src/renderer/components/team/TeamProvisioningBanner.tsx @@ -152,12 +152,12 @@ export const TeamProvisioningBanner = ({ : fallbackTeammateCount === 0 ? 'Team provisioned — lead online' : allTeammatesConfirmedAlive - ? `Team provisioned — all ${fallbackTeammateCount} teammates checked in` + ? `Team provisioned — all ${fallbackTeammateCount} teammates made contact` : allPendingRuntimesStarted - ? 'Team provisioned — teammate runtimes online, waiting for check-ins' + ? 'Team provisioned — teammate runtimes online, waiting for first contact' : processOnlyAliveCount > 0 || pendingSpawnCount > 0 - ? `Team provisioned — ${heartbeatConfirmedCount}/${fallbackTeammateCount} teammates checked in${processOnlyAliveCount > 0 ? `, ${processOnlyAliveCount} runtime${processOnlyAliveCount === 1 ? '' : 's'} online and waiting for check-in` : ''}${pendingSpawnCount > 0 ? `${processOnlyAliveCount > 0 ? ', ' : ', '}${pendingSpawnCount} still starting` : ''}` - : 'Team provisioned — teammate check-ins are still coming in'; + ? `Team provisioned — ${heartbeatConfirmedCount}/${fallbackTeammateCount} teammates made contact${processOnlyAliveCount > 0 ? `, ${processOnlyAliveCount} runtime${processOnlyAliveCount === 1 ? '' : 's'} online and waiting for first contact` : ''}${pendingSpawnCount > 0 ? `${processOnlyAliveCount > 0 ? ', ' : ', '}${pendingSpawnCount} still starting` : ''}` + : 'Team provisioned — teammate first contacts are still coming in'; const readyDetailSeverity = failedSpawnCount > 0 || processOnlyAliveCount > 0 || pendingSpawnCount > 0 ? 'warning' @@ -168,12 +168,12 @@ export const TeamProvisioningBanner = ({ : fallbackTeammateCount === 0 ? 'Team launched — lead online' : allTeammatesConfirmedAlive - ? `Team launched — all ${fallbackTeammateCount} teammates checked in` + ? `Team launched — all ${fallbackTeammateCount} teammates made contact` : allPendingRuntimesStarted - ? 'Team launched — teammate runtimes online, waiting for check-ins' + ? 'Team launched — teammate runtimes online, waiting for first contact' : processOnlyAliveCount > 0 || pendingSpawnCount > 0 - ? `Team launched — ${heartbeatConfirmedCount}/${fallbackTeammateCount} teammates checked in${processOnlyAliveCount > 0 ? `, ${processOnlyAliveCount} runtime${processOnlyAliveCount === 1 ? '' : 's'} online and waiting for check-in` : ''}${pendingSpawnCount > 0 ? `${processOnlyAliveCount > 0 ? ', ' : ', '}${pendingSpawnCount} still starting` : ''}` - : 'Team launched — teammate check-ins are still coming in'; + ? `Team launched — ${heartbeatConfirmedCount}/${fallbackTeammateCount} teammates made contact${processOnlyAliveCount > 0 ? `, ${processOnlyAliveCount} runtime${processOnlyAliveCount === 1 ? '' : 's'} online and waiting for first contact` : ''}${pendingSpawnCount > 0 ? `${processOnlyAliveCount > 0 ? ', ' : ', '}${pendingSpawnCount} still starting` : ''}` + : 'Team launched — teammate first contacts are still coming in'; return (
diff --git a/src/renderer/utils/memberHelpers.ts b/src/renderer/utils/memberHelpers.ts index ce61ff2f..c37b87aa 100644 --- a/src/renderer/utils/memberHelpers.ts +++ b/src/renderer/utils/memberHelpers.ts @@ -101,7 +101,7 @@ export const SPAWN_DOT_COLORS: Record = { export const SPAWN_PRESENCE_LABELS: Record = { offline: 'offline', - waiting: 'check-in pending', + waiting: 'first contact pending', spawning: 'starting', online: 'ready', error: 'spawn failed', @@ -160,13 +160,13 @@ export function getSpawnAwarePresenceLabel( return 'waiting for Agent'; } if (spawnLaunchState === 'runtime_pending_bootstrap' && runtimeAlive) { - return 'check-in pending'; + return 'first contact pending'; } if (spawnStatus === 'waiting') { return SPAWN_PRESENCE_LABELS.waiting; } if (spawnStatus === 'online' && livenessSource === 'process') { - return 'check-in pending'; + return 'first contact pending'; } if (spawnStatus && isTeamProvisioning) { return SPAWN_PRESENCE_LABELS[spawnStatus];