diff --git a/CHANGELOG.md b/CHANGELOG.md index 66e2d61..8fd0f73 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Roo Cline Changelog +## [2.1.13] + +- Fix https://github.com/RooVetGit/Roo-Cline/issues/50 where sound effects were not respecting settings + ## [2.1.12] - Incorporate JoziGila's [PR](https://github.com/cline/cline/pull/158) to add support for editing through diffs diff --git a/README.md b/README.md index 24280bc..13eebb0 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ A fork of Cline, an autonomous coding agent, with some added experimental config - Support for OpenRouter compression - Support for editing through diffs -Creating a snake game with "Always approve write operations" and "Always approve browser actions": +Here's an example of Roo-Cline autonomously creating a snake game with "Always approve write operations" and "Always approve browser actions" turned on: https://github.com/user-attachments/assets/c2bb31dc-e9b2-4d73-885d-17f1471a4987 diff --git a/package-lock.json b/package-lock.json index 616c474..e2d9044 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "roo-cline", - "version": "2.1.12", + "version": "2.1.13", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "roo-cline", - "version": "2.1.12", + "version": "2.1.13", "dependencies": { "@anthropic-ai/bedrock-sdk": "^0.10.2", "@anthropic-ai/sdk": "^0.26.0", diff --git a/package.json b/package.json index d0346eb..e62a6c3 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "displayName": "Roo Cline", "description": "A fork of Cline, an autonomous coding agent, with some added experimental configuration and automation features.", "publisher": "RooVeterinaryInc", - "version": "2.1.12", + "version": "2.1.13", "icon": "assets/icons/rocket.png", "galleryBanner": { "color": "#617A91", diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index f846479..d89bf71 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -539,6 +539,7 @@ export class ClineProvider implements vscode.WebviewViewProvider { case "soundEnabled": const soundEnabled = message.bool ?? true await this.updateGlobalState("soundEnabled", soundEnabled) + setSoundEnabled(soundEnabled) // Add this line to update the sound utility await this.postStateToWebview() break case "diffEnabled": diff --git a/src/core/webview/__tests__/ClineProvider.test.ts b/src/core/webview/__tests__/ClineProvider.test.ts index 240cf0c..d2e8773 100644 --- a/src/core/webview/__tests__/ClineProvider.test.ts +++ b/src/core/webview/__tests__/ClineProvider.test.ts @@ -1,6 +1,7 @@ import { ClineProvider } from '../ClineProvider' import * as vscode from 'vscode' import { ExtensionMessage, ExtensionState } from '../../../shared/ExtensionMessage' +import { setSoundEnabled } from '../../../utils/sound' // Mock dependencies jest.mock('vscode', () => ({ @@ -25,6 +26,11 @@ jest.mock('vscode', () => ({ } })) +// Mock sound utility +jest.mock('../../../utils/sound', () => ({ + setSoundEnabled: jest.fn() +})) + // Mock ESM modules jest.mock('p-wait-for', () => ({ __esModule: true, @@ -233,4 +239,23 @@ describe('ClineProvider', () => { expect(state).toHaveProperty('soundEnabled') expect(state).toHaveProperty('diffEnabled') }) + + test('updates sound utility when sound setting changes', async () => { + provider.resolveWebviewView(mockWebviewView) + + // Get the message handler from onDidReceiveMessage + const messageHandler = (mockWebviewView.webview.onDidReceiveMessage as jest.Mock).mock.calls[0][0] + + // Simulate setting sound to enabled + await messageHandler({ type: 'soundEnabled', bool: true }) + expect(setSoundEnabled).toHaveBeenCalledWith(true) + expect(mockContext.globalState.update).toHaveBeenCalledWith('soundEnabled', true) + expect(mockPostMessage).toHaveBeenCalled() + + // Simulate setting sound to disabled + await messageHandler({ type: 'soundEnabled', bool: false }) + expect(setSoundEnabled).toHaveBeenCalledWith(false) + expect(mockContext.globalState.update).toHaveBeenCalledWith('soundEnabled', false) + expect(mockPostMessage).toHaveBeenCalled() + }) })