From adc88e63b06eb5aa83d77ea3a780c27cbb2b045d Mon Sep 17 00:00:00 2001 From: Arnaud Date: Sun, 12 Jul 2026 21:35:32 +0200 Subject: [PATCH] fix: cooking chatbot button too high; chatbots leaked underlying model name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Moved the homepage cooking-assistant button from bottom-24 to bottom-16 — still clears the recipe list's floating bulk-action bar, just not as far. Both chat system prompts (cooking-chat and the per-recipe chat) now explicitly identify as "Epicure" and are told never to name the underlying model/provider if asked — previously they'd just answer honestly with whatever the model calls itself. Verified locally: screenshotted the new button position, and asked "what model or AI are you" through the real UI — response identified as Epicure with no model name. --- apps/web/app/api/v1/ai/cooking-chat/route.ts | 2 +- apps/web/app/api/v1/ai/recipe-chat/route.ts | 2 +- apps/web/components/recipe/cooking-assistant-panel.tsx | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/web/app/api/v1/ai/cooking-chat/route.ts b/apps/web/app/api/v1/ai/cooking-chat/route.ts index 3635a81..5d6e597 100644 --- a/apps/web/app/api/v1/ai/cooking-chat/route.ts +++ b/apps/web/app/api/v1/ai/cooking-chat/route.ts @@ -40,7 +40,7 @@ export async function POST(req: NextRequest) { const result = await withAiQuota(session!.user.id, session!.user.tier as "free" | "pro", () => generateText({ model, - system: `You are a helpful culinary assistant answering general cooking questions — not tied to any specific recipe (techniques, substitutions, timing, equipment, food safety, etc). If a question has nothing to do with cooking or food, politely redirect. Keep answers under 200 words. Respond in ${lang}.${bioContext}`, + system: `You are Epicure, a helpful culinary assistant answering general cooking questions — not tied to any specific recipe (techniques, substitutions, timing, equipment, food safety, etc). If asked who you are or what model/AI you're built on, say you're Epicure — never name the underlying model or provider. If a question has nothing to do with cooking or food, politely redirect. Keep answers under 200 words. Respond in ${lang}.${bioContext}`, prompt: parsed.data.question, }) ); diff --git a/apps/web/app/api/v1/ai/recipe-chat/route.ts b/apps/web/app/api/v1/ai/recipe-chat/route.ts index 8ad799d..86970c6 100644 --- a/apps/web/app/api/v1/ai/recipe-chat/route.ts +++ b/apps/web/app/api/v1/ai/recipe-chat/route.ts @@ -76,7 +76,7 @@ ${stepList || "None listed"} const result = await withAiQuota(session!.user.id, session!.user.tier as "free" | "pro", () => generateText({ model, - system: `You are a helpful culinary assistant. Answer questions about the following recipe concisely and accurately. If a question is not related to the recipe or cooking, politely redirect. Keep answers under 200 words. Respond in ${lang}. + system: `You are Epicure, a helpful culinary assistant. Answer questions about the following recipe concisely and accurately. If asked who you are or what model/AI you're built on, say you're Epicure — never name the underlying model or provider. If a question is not related to the recipe or cooking, politely redirect. Keep answers under 200 words. Respond in ${lang}. ${recipeContext}${bioContext}`, prompt: parsed.data.question, diff --git a/apps/web/components/recipe/cooking-assistant-panel.tsx b/apps/web/components/recipe/cooking-assistant-panel.tsx index f71fc7f..e0613a4 100644 --- a/apps/web/components/recipe/cooking-assistant-panel.tsx +++ b/apps/web/components/recipe/cooking-assistant-panel.tsx @@ -70,10 +70,10 @@ export function CookingAssistantPanel() {