From c663532fd45f85a16f995f2884bdeb269715b581 Mon Sep 17 00:00:00 2001
From: Bryan Van Deusen
Date: Tue, 12 May 2026 14:43:59 -0400
Subject: [PATCH] feat(profile): Settings toggle for nightly journal closeout
Co-Authored-By: Claude Opus 4.7 (1M context)
---
frontend/src/views/SettingsView.vue | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/frontend/src/views/SettingsView.vue b/frontend/src/views/SettingsView.vue
index 084ee11..422eb99 100644
--- a/frontend/src/views/SettingsView.vue
+++ b/frontend/src/views/SettingsView.vue
@@ -582,6 +582,17 @@ function toggleProfileWorkDay(day: string) {
profile.value.work_schedule = { ...profile.value.work_schedule, days }
}
+async function onToggleCloseout(enabled: boolean) {
+ journalConfig.value.closeout_enabled = enabled
+ try {
+ await saveJournalConfig(journalConfig.value)
+ toastStore.show(enabled ? 'Nightly closeout enabled' : 'Nightly closeout disabled')
+ } catch {
+ journalConfig.value.closeout_enabled = !enabled // revert UI on failure
+ toastStore.show('Failed to update closeout setting', 'error')
+ }
+}
+
async function runConsolidate() {
consolidating.value = true
try {
@@ -600,6 +611,7 @@ const journalConfig = ref({
prep_hour: 5,
prep_minute: 0,
day_rollover_hour: 4,
+ closeout_enabled: true,
locations: { home: { label: 'Home', address: '' }, work: { label: 'Work', address: '' } },
temp_unit: 'C',
})
@@ -620,6 +632,7 @@ async function loadJournalConfig() {
prep_hour: cfg.prep_hour ?? 5,
prep_minute: cfg.prep_minute ?? 0,
day_rollover_hour: cfg.day_rollover_hour ?? 4,
+ closeout_enabled: cfg.closeout_enabled ?? true,
morning_end_hour: cfg.morning_end_hour,
midday_end_hour: cfg.midday_end_hour,
locations: {
@@ -1901,6 +1914,19 @@ function formatUserDate(iso: string): string {
The assistant observes patterns from your journal and chat conversations and builds a summary over time. The summary is included in the journal's system prompt so the daily prep can reference what it knows about you.
{{ profile.observations_count }} raw observation{{ profile.observations_count !== 1 ? 's' : '' }} stored.
+
+
+
{{ profile.learned_summary }}
No learned summary yet. Observations accumulate from journal and chat conversations.