fix(auto-update): suppress npx nag for transient installs (#10276)

Co-authored-by: Tommaso Sciortino <sciortino@gmail.com>
This commit is contained in:
Shehab
2025-10-02 23:55:32 +03:00
committed by GitHub
parent f63561dce4
commit 69e1239698
2 changed files with 29 additions and 1 deletions

View File

@@ -123,6 +123,24 @@ describe('handleAutoUpdate', () => {
expect(mockSpawn).not.toHaveBeenCalled();
});
it.each([
PackageManager.NPX,
PackageManager.PNPX,
PackageManager.BUNX,
])('should suppress update notifications when running via %s', (packageManager) => {
mockGetInstallationInfo.mockReturnValue({
updateCommand: undefined,
updateMessage: `Running via ${packageManager}, update not applicable.`,
isGlobal: false,
packageManager,
});
handleAutoUpdate(mockUpdateInfo, mockSettings, '/root', mockSpawn);
expect(mockUpdateEventEmitter.emit).not.toHaveBeenCalled();
expect(mockSpawn).not.toHaveBeenCalled();
});
it('should emit "update-received" but not update if no update command is found', () => {
mockGetInstallationInfo.mockReturnValue({
updateCommand: undefined,

View File

@@ -6,7 +6,7 @@
import type { UpdateObject } from '../ui/utils/updateCheck.js';
import type { LoadedSettings } from '../config/settings.js';
import { getInstallationInfo } from './installationInfo.js';
import { getInstallationInfo, PackageManager } from './installationInfo.js';
import { updateEventEmitter } from './updateEventEmitter.js';
import type { HistoryItem } from '../ui/types.js';
import { MessageType } from '../ui/types.js';
@@ -32,6 +32,16 @@ export function handleAutoUpdate(
settings.merged.general?.disableAutoUpdate ?? false,
);
if (
[
PackageManager.NPX,
PackageManager.PNPX,
PackageManager.BUNX
].includes(installationInfo.packageManager)
) {
return;
}
let combinedMessage = info.message;
if (installationInfo.updateMessage) {
combinedMessage += `\n${installationInfo.updateMessage}`;