Skip to content

feat(history): add automatic transcription history clearing (#463)#504

Open
devzahirul wants to merge 2 commits into
altic-dev:mainfrom
devzahirul:feat/463-auto-clear-history
Open

feat(history): add automatic transcription history clearing (#463)#504
devzahirul wants to merge 2 commits into
altic-dev:mainfrom
devzahirul:feat/463-auto-clear-history

Conversation

@devzahirul

Copy link
Copy Markdown

Summary

Implements #463: an Automatically Clear History setting so users who dictate sensitive content don't have to remember to clear transcription history manually.

Options: Never (default, current behavior), End of Day, After 7 Days, After 30 Days, After 90 Days.

Design

The issue proposes scheduled wipes ("cleared daily at midnight"). Since the app can't rely on being awake at a scheduled moment, this is implemented as retention-based pruning — entries older than the selected window are deleted whenever the store gets a chance:

  • at store load (app launch),
  • before each new entry is added,
  • at midnight while running, via NSCalendarDayChanged (so "End of Day" behaves exactly as the issue describes for long-running sessions),
  • immediately when the user tightens the interval.

Cutoffs are anchored to startOfDay, so a retained day never partially expires (e.g. "After 7 Days" keeps 7 full calendar days plus today). Pruned entries also delete their saved dictation audio via DictationAudioHistoryStore, and the sidebar selection is repaired if the selected entry expires.

Safety

  • Default is Never — zero behavior change unless the user opts in.
  • If changing the setting would immediately delete existing entries, a confirmation alert (matching the existing audio-budget prune flow) states how many entries are affected and that stats/streaks based on them will change. Cancel leaves the setting untouched.
  • The row is disabled while Save Transcription History is off, matching the adjacent audio toggle.
  • Unknown persisted values fall back to Never.

Changes

  • SettingsStore — new HistoryAutoClearInterval enum (display name, help text, cutoffDate) and persisted historyAutoClearInterval setting.
  • TranscriptionHistoryStore — new pruneExpiredEntries(); called from init, addEntry, and a calendar-day-change observer.
  • SettingsView — picker row under the history toggles with the confirmation flow described above.
  • Tests — HistoryAutoClearIntervalTests covering the no-cutoff case, end-of-day boundary (today survives, yesterday expires), start-of-day anchoring for the rolling windows, and raw-value fallback.

Testing

  • swiftlint --strict — 0 violations.
  • xcodebuild build (Fluid scheme) — succeeds.
  • xcodebuild test — full suite green; the 5 new tests pass.

Closes #463

…v#463)

Adds an 'Automatically Clear History' retention setting with Never,
End of Day, After 7 Days, After 30 Days, and After 90 Days options.
Expired entries and their saved audio are pruned at store load, before
each new entry, at midnight via NSCalendarDayChanged, and immediately
(behind a confirmation alert) when the user tightens the interval.
Cutoffs are anchored to start-of-day so a retained day never partially
expires.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 49c4977e9d

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread Sources/Fluid/Persistence/SettingsStore.swift
Adds historyAutoClearInterval to SettingsBackupPayload as an optional
field so restoring a backup preserves the retention policy instead of
silently falling back to Never. Older backups without the key decode as
nil and leave the current setting untouched.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature Request: Automatic Transcription History Clearing

1 participant