@@ -39,6 +39,7 @@ import { BrowserSession } from "../../services/browser/BrowserSession"
3939import { discoverChromeInstances } from "../../services/browser/browserDiscovery"
4040import { fileExistsAtPath } from "../../utils/fs"
4141import { playSound , setSoundEnabled , setSoundVolume } from "../../utils/sound"
42+ import { playTts , setTtsEnabled , setTtsSpeed } from "../../utils/tts"
4243import { singleCompletionHandler } from "../../utils/single-completion-handler"
4344import { searchCommits } from "../../utils/git"
4445import { getDiffStrategy } from "../diff/DiffStrategy"
@@ -356,6 +357,11 @@ export class ClineProvider extends EventEmitter<ClineProviderEvents> implements
356357 setSoundEnabled ( soundEnabled ?? false )
357358 } )
358359
360+ // Initialize tts enabled state
361+ this . getState ( ) . then ( ( { ttsEnabled } ) => {
362+ setTtsEnabled ( ttsEnabled ?? false )
363+ } )
364+
359365 webviewView . webview . options = {
360366 // Allow scripts in the webview
361367 enableScripts : true ,
@@ -1233,6 +1239,23 @@ export class ClineProvider extends EventEmitter<ClineProviderEvents> implements
12331239 setSoundVolume ( soundVolume )
12341240 await this . postStateToWebview ( )
12351241 break
1242+ case "ttsEnabled" :
1243+ const ttsEnabled = message . bool ?? true
1244+ await this . updateGlobalState ( "ttsEnabled" , ttsEnabled )
1245+ setTtsEnabled ( ttsEnabled ) // Add this line to update the tts utility
1246+ await this . postStateToWebview ( )
1247+ break
1248+ case "ttsSpeed" :
1249+ const ttsSpeed = message . value ?? 1.0
1250+ await this . updateGlobalState ( "ttsSpeed" , ttsSpeed )
1251+ setTtsSpeed ( ttsSpeed )
1252+ await this . postStateToWebview ( )
1253+ break
1254+ case "playTts" :
1255+ if ( message . text ) {
1256+ playTts ( message . text )
1257+ }
1258+ break
12361259 case "diffEnabled" :
12371260 const diffEnabled = message . bool ?? true
12381261 await this . updateGlobalState ( "diffEnabled" , diffEnabled )
@@ -2333,6 +2356,8 @@ export class ClineProvider extends EventEmitter<ClineProviderEvents> implements
23332356 alwaysAllowModeSwitch,
23342357 alwaysAllowSubtasks,
23352358 soundEnabled,
2359+ ttsEnabled,
2360+ ttsSpeed,
23362361 diffEnabled,
23372362 enableCheckpoints,
23382363 checkpointStorage,
@@ -2392,6 +2417,8 @@ export class ClineProvider extends EventEmitter<ClineProviderEvents> implements
23922417 . filter ( ( item : HistoryItem ) => item . ts && item . task )
23932418 . sort ( ( a : HistoryItem , b : HistoryItem ) => b . ts - a . ts ) ,
23942419 soundEnabled : soundEnabled ?? false ,
2420+ ttsEnabled : ttsEnabled ?? false ,
2421+ ttsSpeed : ttsSpeed ?? 1.0 ,
23952422 diffEnabled : diffEnabled ?? true ,
23962423 enableCheckpoints : enableCheckpoints ?? true ,
23972424 checkpointStorage : checkpointStorage ?? "task" ,
@@ -2551,6 +2578,8 @@ export class ClineProvider extends EventEmitter<ClineProviderEvents> implements
25512578 taskHistory : stateValues . taskHistory ,
25522579 allowedCommands : stateValues . allowedCommands ,
25532580 soundEnabled : stateValues . soundEnabled ?? false ,
2581+ ttsEnabled : stateValues . ttsEnabled ?? false ,
2582+ ttsSpeed : stateValues . ttsSpeed ?? 1.0 ,
25542583 diffEnabled : stateValues . diffEnabled ?? true ,
25552584 enableCheckpoints : stateValues . enableCheckpoints ?? true ,
25562585 checkpointStorage : stateValues . checkpointStorage ?? "task" ,
0 commit comments