From 6a9085a71c8339f2f82dc0914eae59a8ab36d133 Mon Sep 17 00:00:00 2001 From: Logan Yang Date: Sun, 20 Apr 2025 16:14:54 -0700 Subject: [PATCH] Add a toggle to turn custom prompt templating off (#1460) --- src/constants.ts | 1 + src/customPromptProcessor.ts | 8 +++++++- src/settings/model.ts | 6 ++++++ src/settings/v2/components/AdvancedSettings.tsx | 10 ++++++++++ 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/constants.ts b/src/constants.ts index 04c4e7dc..5730d6b8 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -550,6 +550,7 @@ export const DEFAULT_SETTINGS: CopilotSettings = { inlineEditCommands: DEFAULT_INLINE_EDIT_COMMANDS, lastDismissedVersion: null, passMarkdownImages: true, + enableCustomPromptTemplating: true, }; export const EVENT_NAMES = { diff --git a/src/customPromptProcessor.ts b/src/customPromptProcessor.ts index 49021764..301887bb 100644 --- a/src/customPromptProcessor.ts +++ b/src/customPromptProcessor.ts @@ -76,7 +76,8 @@ async function extractVariablesFromPrompt( .map((note) => `## ${note.name}\n\n${note.content}`) .join("\n\n"); variablesMap.set(variableName, markdownContent); - } else { + } else if (variableName.toLowerCase() !== "activenote") { + // Only log warning for non-activeNote variables console.warn(`No notes found for variable: ${variableName}`); } } @@ -93,6 +94,11 @@ export async function processPrompt( vault: Vault, activeNote?: TFile | null ): Promise { + const settings = getSettings(); + if (!settings.enableCustomPromptTemplating) { + return customPrompt; + } + const variablesMap = await extractVariablesFromPrompt(customPrompt, vault, activeNote); let processedPrompt = customPrompt; diff --git a/src/settings/model.ts b/src/settings/model.ts index 175ce5f4..5b7fc8af 100644 --- a/src/settings/model.ts +++ b/src/settings/model.ts @@ -95,6 +95,7 @@ export interface CopilotSettings { isPlusUser: boolean | undefined; inlineEditCommands: InlineEditCommandSettings[] | undefined; passMarkdownImages: boolean; + enableCustomPromptTemplating: boolean; } export const settingsStore = createStore(); @@ -217,6 +218,11 @@ export function sanitizeSettings(settings: CopilotSettings): CopilotSettings { sanitizedSettings.passMarkdownImages = DEFAULT_SETTINGS.passMarkdownImages; } + // Ensure enableCustomPromptTemplating has a default value + if (typeof sanitizedSettings.enableCustomPromptTemplating !== "boolean") { + sanitizedSettings.enableCustomPromptTemplating = DEFAULT_SETTINGS.enableCustomPromptTemplating; + } + return sanitizedSettings; } diff --git a/src/settings/v2/components/AdvancedSettings.tsx b/src/settings/v2/components/AdvancedSettings.tsx index f3570c28..a62c6c7f 100644 --- a/src/settings/v2/components/AdvancedSettings.tsx +++ b/src/settings/v2/components/AdvancedSettings.tsx @@ -19,6 +19,16 @@ export const AdvancedSettings: React.FC = () => { />
+ { + updateSetting("enableCustomPromptTemplating", checked); + }} + /> +