From 3aab14ca85f704cfda95f3e4d3769fb6f5cca4c7 Mon Sep 17 00:00:00 2001 From: Tam Nhu Tran Date: Wed, 10 Jun 2026 15:25:55 -0400 Subject: [PATCH] fix(bar): correct the already-running reinstall hint 'open -a' only activates a running app, so suggesting 'ccs bar' as an alternative to quitting could not load the new binary. The hint now says to quit from the menu bar first, then run 'ccs bar' to relaunch the updated app. --- src/commands/bar/install-subcommand.ts | 2 +- tests/unit/commands/bar-command.test.ts | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/commands/bar/install-subcommand.ts b/src/commands/bar/install-subcommand.ts index af5b2670..c51d740a 100644 --- a/src/commands/bar/install-subcommand.ts +++ b/src/commands/bar/install-subcommand.ts @@ -681,7 +681,7 @@ export async function handleBarInstall( if (barIsRunning && !forceLaunch) { console.log( - '[!] CCS Bar is currently running the previous version. Quit and reopen it (or run `ccs bar`) to use the update.' + '[!] CCS Bar is currently running an older build. Quit it from the menu bar, then run `ccs bar` to relaunch the updated app.' ); } else if (forceLaunch) { await launchBar([]); diff --git a/tests/unit/commands/bar-command.test.ts b/tests/unit/commands/bar-command.test.ts index 4ad796f7..9c1f7c8d 100644 --- a/tests/unit/commands/bar-command.test.ts +++ b/tests/unit/commands/bar-command.test.ts @@ -2622,8 +2622,9 @@ describe('bar install: already-running detection (Finding 3)', () => { const allOutput = consoleOutput.join('\n'); // Must print the restart hint - expect(allOutput).toMatch(/currently running the previous version/i); - expect(allOutput).toMatch(/Quit and reopen/i); + expect(allOutput).toMatch(/currently running an older build/i); + expect(allOutput).toMatch(/Quit it from the menu bar/i); + expect(allOutput).toMatch(/run `ccs bar` to relaunch/i); }); it('when not running after install: prompt path unchanged', async () => { @@ -2646,7 +2647,7 @@ describe('bar install: already-running detection (Finding 3)', () => { expect(promptCalled).toBe(true); const allOutput = consoleOutput.join('\n'); // The restart hint must NOT appear when bar is not running - expect(allOutput).not.toMatch(/currently running the previous version/i); + expect(allOutput).not.toMatch(/currently running an older build/i); }); it('pgrep error treated as not running: prompt path unchanged', async () => { @@ -2670,7 +2671,7 @@ describe('bar install: already-running detection (Finding 3)', () => { // pgrep error treated as not running → normal prompt flow expect(promptCalled).toBe(true); const allOutput = consoleOutput.join('\n'); - expect(allOutput).not.toMatch(/currently running the previous version/i); + expect(allOutput).not.toMatch(/currently running an older build/i); }); it('--launch with bar already running: launchBar still invoked', async () => { @@ -2693,7 +2694,7 @@ describe('bar install: already-running detection (Finding 3)', () => { expect(launchCalled).toBe(true); // Restart hint must NOT appear when --launch is passed const allOutput = consoleOutput.join('\n'); - expect(allOutput).not.toMatch(/currently running the previous version/i); + expect(allOutput).not.toMatch(/currently running an older build/i); }); });