Add history pruning with configurable max entries and max days

- Add history_max_entries (default 50) and history_max_days (default 30)
  to AppConfig
- Add prune() method to HistoryStore that removes old entries by age
  and count limits
- Call prune after each history entry is added in the GUI
- Preserve history settings through settings dialog save/load cycle
This commit is contained in:
2026-03-06 15:22:17 +02:00
parent 5e83cb09ef
commit 1e3ffaadd3
4 changed files with 41 additions and 0 deletions

View File

@@ -1629,6 +1629,11 @@ fn show_results(
output_files,
});
// Prune old history entries
let config_store = pixstrip_core::storage::ConfigStore::new();
let app_config = config_store.load().unwrap_or_default();
let _ = history.prune(app_config.history_max_entries, app_config.history_max_days);
// Show toast
let savings = if result.total_input_bytes > 0 {
let pct =

View File

@@ -271,6 +271,10 @@ pub fn build_settings_dialog() -> adw::PreferencesDialog {
});
}
// Preserve history settings from current config (not exposed in UI yet)
let hist_max_entries = config.history_max_entries;
let hist_max_days = config.history_max_days;
// Save settings when the dialog closes
dialog.connect_closed(move |_| {
let new_config = AppConfig {
@@ -305,6 +309,8 @@ pub fn build_settings_dialog() -> adw::PreferencesDialog {
high_contrast: contrast_row.is_active(),
large_text: large_text_row.is_active(),
reduced_motion: motion_row.is_active(),
history_max_entries: hist_max_entries,
history_max_days: hist_max_days,
};
let store = ConfigStore::new();