From 2d183ac1dc8f26240e9c9e4ad3ab24b523979b43 Mon Sep 17 00:00:00 2001 From: Karan Singh Date: Fri, 10 Jul 2026 18:07:27 +0530 Subject: [PATCH] fix: clearAll() deletes backing audio files instead of leaking them (#101) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit HistoryService.clearAll() removed transcript items but left their audio files on disk forever, so "Clear All" leaked storage. Delete each item's audio file first, matching deleteItem's deleteAudioFile: true default. Stats are intentionally left untouched — the Clear All dialog explicitly promises "keeps your statistics history," so resetting statsEntries would contradict documented behavior. Fixes #101. --- speaktype/Services/HistoryService.swift | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/speaktype/Services/HistoryService.swift b/speaktype/Services/HistoryService.swift index 08be90c..25d0829 100644 --- a/speaktype/Services/HistoryService.swift +++ b/speaktype/Services/HistoryService.swift @@ -90,6 +90,10 @@ class HistoryService: ObservableObject { } func clearAll() { + // Delete the audio files backing every transcript so they don't leak on + // disk (matches `deleteItem`'s `deleteAudioFile: true` default). Stats are + // intentionally preserved — the Clear All dialog promises to keep them. + items.forEach(removeAudioFileIfNeeded(for:)) items.removeAll() saveHistory() }