fix: voice wake logging privacy (PR #438 @xadenryan)
This commit is contained in:
@@ -18,6 +18,7 @@
|
|||||||
- Auto-reply: removed `autoReply` from Discord/Slack/Telegram channel configs; use `requireMention` instead (Telegram topics now support `requireMention` overrides).
|
- Auto-reply: removed `autoReply` from Discord/Slack/Telegram channel configs; use `requireMention` instead (Telegram topics now support `requireMention` overrides).
|
||||||
|
|
||||||
### Fixes
|
### Fixes
|
||||||
|
- macOS: harden Voice Wake tester/runtime (pause trigger, mic persistence, local-only tester) and keep transcript logs private. Thanks @xadenryan for PR #438.
|
||||||
- Doctor/Daemon: surface gateway runtime state + port collision diagnostics; warn on legacy workspace dirs.
|
- Doctor/Daemon: surface gateway runtime state + port collision diagnostics; warn on legacy workspace dirs.
|
||||||
- Discord: format slow listener logs in seconds to match shared duration style.
|
- Discord: format slow listener logs in seconds to match shared duration style.
|
||||||
- CLI: show colored table output for `clawdbot cron list` (JSON behind `--json`).
|
- CLI: show colored table output for `clawdbot cron list` (JSON behind `--json`).
|
||||||
|
|||||||
@@ -399,11 +399,11 @@ actor VoiceWakeRuntime {
|
|||||||
return "\(seg.text)@\(start)-\(end)"
|
return "\(seg.text)@\(start)-\(end)"
|
||||||
}.joined(separator: ", ")
|
}.joined(separator: ", ")
|
||||||
|
|
||||||
self.logger.info(
|
self.logger.debug(
|
||||||
"voicewake runtime transcript='\(transcript, privacy: .public)' textOnly=\(textOnly) " +
|
"voicewake runtime transcript='\(transcript, privacy: .private)' textOnly=\(textOnly) " +
|
||||||
"isFinal=\(isFinal) timing=\(timingCount)/\(segments.count) " +
|
"isFinal=\(isFinal) timing=\(timingCount)/\(segments.count) " +
|
||||||
"capturing=\(capturing) fallback=\(usedFallback) " +
|
"capturing=\(capturing) fallback=\(usedFallback) " +
|
||||||
"\(matchSummary) segments=[\(segmentSummary, privacy: .public)]")
|
"\(matchSummary) segments=[\(segmentSummary, privacy: .private)]")
|
||||||
}
|
}
|
||||||
|
|
||||||
private func noteAudioTap(rms: Double) {
|
private func noteAudioTap(rms: Double) {
|
||||||
|
|||||||
@@ -282,10 +282,10 @@ final class VoiceWakeTester {
|
|||||||
"match=true gap=\(String(format: "%.2f", $0.postGap))s cmdLen=\($0.command.count)"
|
"match=true gap=\(String(format: "%.2f", $0.postGap))s cmdLen=\($0.command.count)"
|
||||||
} ?? "match=false"
|
} ?? "match=false"
|
||||||
|
|
||||||
self.logger.info(
|
self.logger.debug(
|
||||||
"voicewake test transcript='\(transcript, privacy: .public)' textOnly=\(textOnly) " +
|
"voicewake test transcript='\(transcript, privacy: .private)' textOnly=\(textOnly) " +
|
||||||
"isFinal=\(isFinal) timing=\(timingCount)/\(segments.count) " +
|
"isFinal=\(isFinal) timing=\(timingCount)/\(segments.count) " +
|
||||||
"\(matchSummary) gaps=[\(gaps, privacy: .public)] segments=[\(segmentSummary, privacy: .public)]")
|
"\(matchSummary) gaps=[\(gaps, privacy: .private)] segments=[\(segmentSummary, privacy: .private)]")
|
||||||
}
|
}
|
||||||
|
|
||||||
private static func debugSegments(_ segments: [WakeWordSegment]) -> String {
|
private static func debugSegments(_ segments: [WakeWordSegment]) -> String {
|
||||||
|
|||||||
Reference in New Issue
Block a user