From 1f07efb5d823f6f325f7f00d1d12eb070537a712 Mon Sep 17 00:00:00 2001 From: Tommaso Sciortino Date: Tue, 24 Mar 2026 22:43:03 +0000 Subject: [PATCH] fix(cli): only show updating spinner when auto-update is in progress (#23709) --- packages/cli/src/ui/components/AppHeader.tsx | 2 +- packages/cli/src/ui/utils/updateCheck.ts | 1 + packages/cli/src/utils/handleAutoUpdate.test.ts | 6 ++++++ packages/cli/src/utils/handleAutoUpdate.ts | 15 ++++++++++----- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/packages/cli/src/ui/components/AppHeader.tsx b/packages/cli/src/ui/components/AppHeader.tsx index 704b094663..7d0ef75a36 100644 --- a/packages/cli/src/ui/components/AppHeader.tsx +++ b/packages/cli/src/ui/components/AppHeader.tsx @@ -108,7 +108,7 @@ export const AppHeader = ({ version, showDetails = true }: AppHeaderProps) => { Gemini CLI v{version} - {updateInfo && ( + {updateInfo?.isUpdating && ( Updating diff --git a/packages/cli/src/ui/utils/updateCheck.ts b/packages/cli/src/ui/utils/updateCheck.ts index 21dc0f836e..9f80beee08 100644 --- a/packages/cli/src/ui/utils/updateCheck.ts +++ b/packages/cli/src/ui/utils/updateCheck.ts @@ -27,6 +27,7 @@ export interface UpdateInfo { export interface UpdateObject { message: string; update: UpdateInfo; + isUpdating?: boolean; } /** diff --git a/packages/cli/src/utils/handleAutoUpdate.test.ts b/packages/cli/src/utils/handleAutoUpdate.test.ts index 94795bf94e..6035c1e6d1 100644 --- a/packages/cli/src/utils/handleAutoUpdate.test.ts +++ b/packages/cli/src/utils/handleAutoUpdate.test.ts @@ -197,7 +197,9 @@ describe('handleAutoUpdate', () => { expect(updateEventEmitter.emit).toHaveBeenCalledTimes(1); expect(updateEventEmitter.emit).toHaveBeenCalledWith('update-received', { + ...mockUpdateInfo, message: 'An update is available!\nPlease update manually.', + isUpdating: false, }); expect(mockSpawn).not.toHaveBeenCalled(); }); @@ -236,7 +238,9 @@ describe('handleAutoUpdate', () => { expect(updateEventEmitter.emit).toHaveBeenCalledTimes(1); expect(updateEventEmitter.emit).toHaveBeenCalledWith('update-received', { + ...mockUpdateInfo, message: 'An update is available!\nCannot determine update command.', + isUpdating: false, }); expect(mockSpawn).not.toHaveBeenCalled(); }); @@ -253,7 +257,9 @@ describe('handleAutoUpdate', () => { expect(updateEventEmitter.emit).toHaveBeenCalledTimes(1); expect(updateEventEmitter.emit).toHaveBeenCalledWith('update-received', { + ...mockUpdateInfo, message: 'An update is available!\nThis is an additional message.', + isUpdating: false, }); }); diff --git a/packages/cli/src/utils/handleAutoUpdate.ts b/packages/cli/src/utils/handleAutoUpdate.ts index bd0effa53b..4f8ca69ed3 100644 --- a/packages/cli/src/utils/handleAutoUpdate.ts +++ b/packages/cli/src/utils/handleAutoUpdate.ts @@ -102,17 +102,22 @@ export function handleAutoUpdate( combinedMessage += `\n${installationInfo.updateMessage}`; } - updateEventEmitter.emit('update-received', { - message: combinedMessage, - }); - if ( !installationInfo.updateCommand || !settings.merged.general.enableAutoUpdate ) { + updateEventEmitter.emit('update-received', { + ...info, + message: combinedMessage, + isUpdating: false, + }); return; } - + updateEventEmitter.emit('update-received', { + ...info, + message: combinedMessage, + isUpdating: true, + }); if (_updateInProgress) { return; }