Browse Source

Fix issue where sound effects setting wasn't working (#51)

Matt Rubens 1 year ago
parent
commit
c78216af30

+ 4 - 0
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

+ 1 - 1
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
 

+ 2 - 2
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",

+ 1 - 1
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",

+ 1 - 0
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":

+ 25 - 0
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()
+    })
 })