feat(frontend): auto-consolidate tasks toggle in General settings
New Tasks section in the General tab with a single checkbox controlling whether the consolidation pipeline fires automatically. Persists to the auto_consolidate_tasks user setting (string 'true'/'false'). Manual 'Re-consolidate' in the task editor bypasses the gate.
This commit is contained in:
@@ -19,6 +19,21 @@ const defaultModel = ref("");
|
|||||||
const userTimezone = ref("");
|
const userTimezone = ref("");
|
||||||
const savingTimezone = ref(false);
|
const savingTimezone = ref(false);
|
||||||
const timezoneSaved = 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() {
|
function detectTimezone() {
|
||||||
userTimezone.value = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
userTimezone.value = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
||||||
@@ -754,6 +769,8 @@ onMounted(async () => {
|
|||||||
defaultModel.value = allSettings.default_model ?? "";
|
defaultModel.value = allSettings.default_model ?? "";
|
||||||
backgroundModel.value = allSettings.background_model ?? "";
|
backgroundModel.value = allSettings.background_model ?? "";
|
||||||
userTimezone.value = allSettings.user_timezone ?? "";
|
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
|
chatRetentionDays.value = allSettings.chat_retention_days !== undefined
|
||||||
? Number(allSettings.chat_retention_days)
|
? Number(allSettings.chat_retention_days)
|
||||||
: 90;
|
: 90;
|
||||||
@@ -1510,6 +1527,29 @@ function formatUserDate(iso: string): string {
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<!-- Tasks -->
|
||||||
|
<section class="settings-section full-width">
|
||||||
|
<h2>Tasks</h2>
|
||||||
|
<p class="section-desc">
|
||||||
|
Task bodies are auto-summarized from accumulated work logs. The summary runs every few logs, plus on task close.
|
||||||
|
</p>
|
||||||
|
<div class="field">
|
||||||
|
<label class="checkbox-label">
|
||||||
|
<input
|
||||||
|
type="checkbox"
|
||||||
|
v-model="autoConsolidateTasks"
|
||||||
|
:disabled="savingAutoConsolidate"
|
||||||
|
@change="saveAutoConsolidate"
|
||||||
|
/>
|
||||||
|
Auto-consolidate task bodies
|
||||||
|
</label>
|
||||||
|
<p class="field-hint">
|
||||||
|
When off, the task body is only refreshed when you click "Re-consolidate"
|
||||||
|
on a task. Existing summaries remain in place.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
<!-- Timezone -->
|
<!-- Timezone -->
|
||||||
<section class="settings-section full-width">
|
<section class="settings-section full-width">
|
||||||
<h2>Timezone</h2>
|
<h2>Timezone</h2>
|
||||||
|
|||||||
Reference in New Issue
Block a user