diff --git a/packages/core/src/renderer.ts b/packages/core/src/renderer.ts index 1ebcfc904..e14f1c26e 100644 --- a/packages/core/src/renderer.ts +++ b/packages/core/src/renderer.ts @@ -1653,6 +1653,11 @@ export class CliRenderer extends EventEmitter implements RenderContext { this.flushStdoutCache(this._splitHeight, true) } + // Prevents mouse clicks appearing as garbage text in shell after exit + if (this._useMouse) { + this.disableMouse() + } + if (this.stdin.setRawMode) { this.stdin.setRawMode(false) } diff --git a/packages/core/src/tests/renderer.useMouse.test.ts b/packages/core/src/tests/renderer.useMouse.test.ts index 258e0771c..8349e6746 100644 --- a/packages/core/src/tests/renderer.useMouse.test.ts +++ b/packages/core/src/tests/renderer.useMouse.test.ts @@ -47,4 +47,18 @@ describe("useMouse configuration", () => { renderer.destroy() }) + + test("destroy disables mouse tracking", async () => { + const { renderer } = await createTestRenderer({ + useMouse: true, + exitOnCtrlC: false, + useAlternateScreen: false, + }) + + expect(renderer.useMouse).toBe(true) + + renderer.destroy() + + expect(renderer.useMouse).toBe(false) + }) })