From ab45f957908537eb9239df9066a7e2b8a2f9cc91 Mon Sep 17 00:00:00 2001 From: Alan Wizemann Date: Tue, 31 Mar 2026 14:03:34 -0400 Subject: [PATCH] Fix TTS toggle state reversed on voice enable Hermes auto-enables TTS when voice mode turns on (auto_tts config). Our ttsEnabled started as false, so the UI showed off when TTS was actually on. Now reads auto_tts from config.yaml when voice enables and sets the initial state to match. Co-Authored-By: Claude Opus 4.6 (1M context) --- scarf/scarf/Core/Models/HermesConfig.swift | 4 +++- scarf/scarf/Core/Services/HermesFileService.swift | 3 ++- scarf/scarf/Features/Chat/ViewModels/ChatViewModel.swift | 2 ++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/scarf/scarf/Core/Models/HermesConfig.swift b/scarf/scarf/Core/Models/HermesConfig.swift index 9cb2107..bd5d91a 100644 --- a/scarf/scarf/Core/Models/HermesConfig.swift +++ b/scarf/scarf/Core/Models/HermesConfig.swift @@ -13,6 +13,7 @@ struct HermesConfig: Sendable { var streaming: Bool var showReasoning: Bool var verbose: Bool + var autoTTS: Bool static let empty = HermesConfig( model: "unknown", @@ -26,7 +27,8 @@ struct HermesConfig: Sendable { nudgeInterval: 0, streaming: true, showReasoning: false, - verbose: false + verbose: false, + autoTTS: true ) } diff --git a/scarf/scarf/Core/Services/HermesFileService.swift b/scarf/scarf/Core/Services/HermesFileService.swift index 2b764e2..e94d785 100644 --- a/scarf/scarf/Core/Services/HermesFileService.swift +++ b/scarf/scarf/Core/Services/HermesFileService.swift @@ -42,7 +42,8 @@ struct HermesFileService: Sendable { nudgeInterval: Int(values["memory.nudge_interval"] ?? "") ?? 0, streaming: values["display.streaming"] != "false", showReasoning: values["display.show_reasoning"] == "true", - verbose: values["agent.verbose"] == "true" + verbose: values["agent.verbose"] == "true", + autoTTS: values["voice.auto_tts"] != "false" ) } diff --git a/scarf/scarf/Features/Chat/ViewModels/ChatViewModel.swift b/scarf/scarf/Features/Chat/ViewModels/ChatViewModel.swift index d96128a..7b70175 100644 --- a/scarf/scarf/Features/Chat/ViewModels/ChatViewModel.swift +++ b/scarf/scarf/Features/Chat/ViewModels/ChatViewModel.swift @@ -5,6 +5,7 @@ import SwiftTerm @Observable final class ChatViewModel { private let dataService = HermesDataService() + private let fileService = HermesFileService() var recentSessions: [HermesSession] = [] var sessionPreviews: [String: String] = [:] @@ -63,6 +64,7 @@ final class ChatViewModel { } else { sendToTerminal(tv, text: "/voice on\r") voiceEnabled = true + ttsEnabled = fileService.loadConfig().autoTTS } }