diff --git a/frontend/src/views/SettingsView.vue b/frontend/src/views/SettingsView.vue index 4d3b3b0..1321cc4 100644 --- a/frontend/src/views/SettingsView.vue +++ b/frontend/src/views/SettingsView.vue @@ -22,6 +22,7 @@ const retentionSaved = ref(false); const kbInjectEnabled = ref(true); const kbInjectThreshold = ref("0.55"); const kbInjectTopK = ref("3"); +const kbWritePathEnabled = ref(true); const savingKbInject = ref(false); const kbInjectSaved = ref(false); @@ -76,6 +77,9 @@ async function saveKbInject() { kb_autoinject_enabled: kbInjectEnabled.value ? 'true' : 'false', kb_autoinject_threshold: String(t), kb_autoinject_top_k: String(k), + // Its own switch, but deliberately the same threshold/ceiling — see + // WRITEPATH_ENABLED_KEY in services/plugin_context.py. + kb_writepath_enabled: kbWritePathEnabled.value ? 'true' : 'false', }); kbInjectSaved.value = true; setTimeout(() => (kbInjectSaved.value = false), 2000); @@ -459,6 +463,7 @@ onMounted(async () => { if (allSettings.kb_autoinject_top_k !== undefined) { kbInjectTopK.value = allSettings.kb_autoinject_top_k; } + kbWritePathEnabled.value = allSettings.kb_writepath_enabled !== "false"; if (allSettings.notify_task_reminders !== undefined) { notifyTaskReminders.value = allSettings.notify_task_reminders !== "false"; } @@ -1193,6 +1198,19 @@ function formatUserDate(iso: string): string { />

Ceiling on titles surfaced at once (1–10).

+
+ +

+ Checks the file Claude is about to write or edit against your recorded + snippets — what's already kept at that path, and what resembles the code + being written — so a helper you already have is offered before it's + rewritten. Uses the same threshold and ceiling above, and never blocks the + edit. Off = prior art surfaces only on your own prompts. +

+