From 1cdfeb66334ef360ae8b9efa35b1693c22a721a7 Mon Sep 17 00:00:00 2001 From: Coco Sheng Date: Mon, 27 Apr 2026 12:15:04 -0400 Subject: [PATCH] fix(cli): provide manual update command when automatic update fails (#26052) --- packages/cli/src/utils/handleAutoUpdate.test.ts | 10 ++++++---- packages/cli/src/utils/handleAutoUpdate.ts | 10 ++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/packages/cli/src/utils/handleAutoUpdate.test.ts b/packages/cli/src/utils/handleAutoUpdate.test.ts index 6035c1e6d1..198e19c5b0 100644 --- a/packages/cli/src/utils/handleAutoUpdate.test.ts +++ b/packages/cli/src/utils/handleAutoUpdate.test.ts @@ -301,7 +301,7 @@ describe('handleAutoUpdate', () => { expect(updateEventEmitter.emit).toHaveBeenCalledWith('update-failed', { message: - 'Automatic update failed. Please try updating manually. (command: npm i -g @google/gemini-cli@2.0.0)', + 'Automatic update failed. Please try updating manually:\n\nnpm i -g @google/gemini-cli@2.0.0', }); }); @@ -325,7 +325,7 @@ describe('handleAutoUpdate', () => { expect(updateEventEmitter.emit).toHaveBeenCalledWith('update-failed', { message: - 'Automatic update failed. Please try updating manually. (error: Spawn error)', + 'Automatic update failed. Please try updating manually. (error: Spawn error)\n\nnpm i -g @google/gemini-cli@2.0.0', }); }); @@ -435,13 +435,15 @@ describe('setUpdateHandler', () => { }); it('should handle update-failed event', () => { - updateEventEmitter.emit('update-failed', { message: 'Failed' }); + updateEventEmitter.emit('update-failed', { + message: 'Failed message with command', + }); expect(setUpdateInfo).toHaveBeenCalledWith(null); expect(addItem).toHaveBeenCalledWith( { type: MessageType.ERROR, - text: 'Automatic update failed. Please try updating manually', + text: 'Failed message with command', }, expect.any(Number), ); diff --git a/packages/cli/src/utils/handleAutoUpdate.ts b/packages/cli/src/utils/handleAutoUpdate.ts index 4f8ca69ed3..cdd3f6ed18 100644 --- a/packages/cli/src/utils/handleAutoUpdate.ts +++ b/packages/cli/src/utils/handleAutoUpdate.ts @@ -148,7 +148,7 @@ export function handleAutoUpdate( }); } else { updateEventEmitter.emit('update-failed', { - message: `Automatic update failed. Please try updating manually. (command: ${updateCommand})`, + message: `Automatic update failed. Please try updating manually:\n\n${updateCommand}`, }); } }); @@ -156,7 +156,7 @@ export function handleAutoUpdate( updateProcess.on('error', (err) => { _updateInProgress = false; updateEventEmitter.emit('update-failed', { - message: `Automatic update failed. Please try updating manually. (error: ${err.message})`, + message: `Automatic update failed. Please try updating manually. (error: ${err.message})\n\n${updateCommand}`, }); }); return updateProcess; @@ -184,12 +184,14 @@ export function setUpdateHandler( }, 60000); }; - const handleUpdateFailed = () => { + const handleUpdateFailed = (data?: { message: string }) => { setUpdateInfo(null); addItem( { type: MessageType.ERROR, - text: `Automatic update failed. Please try updating manually`, + text: + data?.message || + `Automatic update failed. Please try updating manually`, }, Date.now(), );