diff --git a/frontend/src/views/SettingsView.vue b/frontend/src/views/SettingsView.vue index 1fd2d78..fbf138f 100644 --- a/frontend/src/views/SettingsView.vue +++ b/frontend/src/views/SettingsView.vue @@ -19,6 +19,21 @@ const defaultModel = ref(""); const userTimezone = ref(""); const savingTimezone = ref(false); const timezoneSaved = ref(false); +const autoConsolidateTasks = ref(true); +const savingAutoConsolidate = ref(false); + +async function saveAutoConsolidate() { + savingAutoConsolidate.value = true; + try { + await apiPut('/api/settings', { + auto_consolidate_tasks: autoConsolidateTasks.value ? "true" : "false", + }); + } catch { + toastStore.show('Failed to save setting', 'error'); + } finally { + savingAutoConsolidate.value = false; + } +} function detectTimezone() { userTimezone.value = Intl.DateTimeFormat().resolvedOptions().timeZone; @@ -754,6 +769,8 @@ onMounted(async () => { defaultModel.value = allSettings.default_model ?? ""; backgroundModel.value = allSettings.background_model ?? ""; userTimezone.value = allSettings.user_timezone ?? ""; + // Default true if unset; explicit "false" disables auto-consolidation. + autoConsolidateTasks.value = (allSettings.auto_consolidate_tasks ?? "true") !== "false"; chatRetentionDays.value = allSettings.chat_retention_days !== undefined ? Number(allSettings.chat_retention_days) : 90; @@ -1510,6 +1527,29 @@ function formatUserDate(iso: string): string { + + + Tasks + + Task bodies are auto-summarized from accumulated work logs. The summary runs every few logs, plus on task close. + + + + + Auto-consolidate task bodies + + + When off, the task body is only refreshed when you click "Re-consolidate" + on a task. Existing summaries remain in place. + + + + Timezone
+ Task bodies are auto-summarized from accumulated work logs. The summary runs every few logs, plus on task close. +
+ When off, the task body is only refreshed when you click "Re-consolidate" + on a task. Existing summaries remain in place. +