Skip to content

Add speaker archive with configurable retention period#9

Merged
execsumo merged 1 commit into
masterfrom
voracious-thimbleberry
May 20, 2026
Merged

Add speaker archive with configurable retention period#9
execsumo merged 1 commit into
masterfrom
voracious-thimbleberry

Conversation

@execsumo

Copy link
Copy Markdown
Owner

Summary

  • Speakers inactive beyond a configurable retention window are automatically deleted (with their audio clips and embeddings) on each app launch
  • Default retention is 90 days; set to 0 to disable archiving entirely
  • Configurable via Settings → Advanced → Speaker Archive (Picker: Never / 30 / 60 / 90 / 180 / 365 days)
  • Wired in AppModel.bootstrap() alongside other startup cleanup (stale recordings, orphan aggregate devices)
  • Also fixes a pre-existing extraneous } in Views.swift that was preventing SettingsView from compiling — pane helper functions (paneScroll, sectionGroup, settingsBinding) were pushed outside the struct scope, making model inaccessible

Test plan

  • Build cleanly with swift build
  • All 142 tests pass with swift run HeardTests
  • Open Settings → Advanced — confirm "Speaker Archive" section appears with picker defaulting to "90 days"
  • Change picker to "Never" and relaunch — confirm no speakers are deleted
  • Change picker to "30 days", manually set a speaker's lastSeen to 31 days ago in speakers.json, relaunch — confirm that speaker is gone
  • Confirm speaker's audio clips in speaker_clips/ are also removed on archive

🤖 Generated with Claude Code

@execsumo
execsumo force-pushed the voracious-thimbleberry branch from 993a958 to 9b66f07 Compare May 19, 2026 03:08
Speakers inactive for longer than the configured retention period are
automatically deleted (with their audio clips) on the next app launch.
Default is 90 days; set to 0 to disable. Configurable via Advanced →
Speaker Archive (Never / 30 / 60 / 90 / 180 / 365 days).

Also fixes a pre-existing extraneous } in Views.swift that prevented
SettingsView from compiling — pane helper functions were pushed outside
the struct scope, making `model` inaccessible to `settingsBinding`.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@execsumo
execsumo force-pushed the voracious-thimbleberry branch from 9b66f07 to 9a58d62 Compare May 19, 2026 03:13
@execsumo
execsumo merged commit 40b6b45 into master May 20, 2026
4 checks passed
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.

1 participant