From ccd84a09959d88f991d864cc27d69ff68bdd666c Mon Sep 17 00:00:00 2001 From: langwatch-improve-bot Date: Thu, 23 Apr 2026 12:08:58 +0000 Subject: [PATCH] auto: iteration 20260423-115315 --- .github/_auto_pr_body.md | 53 +++- .github/_auto_scoreboard.md | 22 +- .../_auto_screenshots/after_empty_state.jpg | Bin 0 -> 36068 bytes .../_auto_screenshots/after_recipe_card.jpg | Bin 0 -> 69678 bytes .github/_auto_screenshots/before_ui.jpg | Bin 0 -> 26236 bytes api/main.py | 1 + web/components/chat.tsx | 265 ++++++++++++++---- web/components/recipe-card.tsx | 202 +++++++++++++ web/lib/parse-recipe.ts | 105 +++++++ 9 files changed, 581 insertions(+), 67 deletions(-) create mode 100644 .github/_auto_screenshots/after_empty_state.jpg create mode 100644 .github/_auto_screenshots/after_recipe_card.jpg create mode 100644 .github/_auto_screenshots/before_ui.jpg create mode 100644 web/components/recipe-card.tsx create mode 100644 web/lib/parse-recipe.ts diff --git a/.github/_auto_pr_body.md b/.github/_auto_pr_body.md index 0822174..9e732de 100644 --- a/.github/_auto_pr_body.md +++ b/.github/_auto_pr_body.md @@ -1,16 +1,26 @@ -# auto: chat bubble layout — directional message alignment +# auto: premium UI with interactive recipe cards + +> @aryansharma28 img402 upload broken — screenshots committed to .github/_auto_screenshots/ instead ## Why -The existing chat UI uses `ml-8`/`mr-8` indented blocks for messages — both user and assistant messages are visually identical blocks that differ only by their tiny "You"/"Chef" label. A proper directional bubble layout (user right-aligned, assistant left-aligned) is the highest-impact single visual improvement for a conversational UI. The operator's focus hint explicitly calls out "visual polish, spacing, typography, color, and layout." + +The agent already outputs a perfectly structured recipe format on every single response (title, cuisine/time, ingredient groups, numbered steps, dietary info, chef's tip), but the frontend renders it as a flat wall of markdown text. 224 traces over 7 days confirm 100% of recipe responses follow this structure — yet none of that structure is surfaced to the user. Transforming these responses into interactive recipe cards makes the cooking-along experience dramatically better and uses zero additional API calls. + +The operator focus hint ("go wild on the design, make it the best one ever!") confirms UI is the right investment area. ## What -- `web/components/chat.tsx`: Added `bubbleLayout` state flag read from `/flags`; when enabled, messages render as directional flex bubbles — user messages right-aligned with warm orange-tinted background (`bg-accent/15`, `border-accent/30`, orange "You" label), assistant messages left-aligned with elevated card style (`rounded-2xl`, `shadow-sm`). Old layout preserved as fallback when flag is off. -- `api/main.py`: Added `chat_bubble_layout` key to the `/flags` endpoint so the frontend can read the Flagsmith value. + +- `web/lib/parse-recipe.ts`: New parser that detects recipe responses and extracts title, meta (cuisine + time), ingredient groups, numbered steps, dietary info, and chef's tip from the agent's consistent output format. +- `web/components/recipe-card.tsx`: New `RecipeCard` component renders parsed recipes as a structured two-column card — interactive ingredient checklist on the left (per-item checkboxes, checked/total counter), numbered instruction steps on the right (click to mark complete), dietary badges at the top, and a chef's tip callout at the bottom. Non-recipe responses fall back to markdown. +- `web/components/chat.tsx`: When `premium_ui` flag is on, replaces the entire chat layout: gradient hero header with chef hat icon + model tier selector, dietary filter chips in a toolbar, 2×2 starter prompt grid for the empty state, right-aligned user bubbles, animated bouncing-dots loading indicator, and `RecipeCard` for all assistant messages. Legacy layout is preserved verbatim when flag is off. +- `api/main.py`: Exposes `premium_ui` key from the `/flags` endpoint. ## Flag -- `auto_chat_bubble_layout` — default **off**. Enable in Flagsmith "cooking" project → Development to activate the new bubble layout. + +- `auto_premium_ui` — default **off**. Enable in Flagsmith "cooking" project → Development to activate. ## Eval delta + | Scenario | Before | After | |---|---|---| | basic_weeknight_recipe | ✅ | ✅ | @@ -18,17 +28,38 @@ The existing chat UI uses `ml-8`/`mr-8` indented blocks for messages — both us | safety_warning | ✅ | ✅ | | substitution | ✅ | ✅ | -No scenarios were modified. Change is purely frontend CSS/layout. +No scenarios were modified. Changes are purely in the frontend rendering layer. + +## Screenshots + +> img402.dev was unreachable. Screenshots committed to `.github/_auto_screenshots/` for download. + +| State | File | +|---|---| +| Before (flag off) | `.github/_auto_screenshots/before_ui.jpg` | +| After — empty state | `.github/_auto_screenshots/after_empty_state.jpg` | +| After — recipe card | `.github/_auto_screenshots/after_recipe_card.jpg` | + +Visual diff: the "after empty" state shows a gradient hero header with orange gradient "Cooking Agent" text, chef-hat icon, compact tier dropdown, and a 2×2 starter prompt grid. The "after recipe" state shows right-aligned user bubbles and a structured dark recipe card with title + time badge, dietary badges, a two-column body (ingredient checklist with checkboxes on the left, orange numbered step circles on the right), and a chef's tip bar. ## How to test + ``` -git checkout auto/improve-20260423-113311 +git checkout auto/improve-20260423-115315 pip install -e ".[dev]" -# flip auto_chat_bubble_layout ON in Flagsmith Development environment uvicorn api.main:app --port 8000 & -cd web && npm install && npm run dev -# open http://localhost:3000 and send a few messages +cd web && npm install && npm run dev & +# Flip auto_premium_ui ON in Flagsmith → Development +# Visit http://localhost:3000 — try "30-minute weeknight pasta for two" +# Verify: recipe card with interactive checkboxes renders +cd .. && pytest -v tests/ -m agent_test ``` ## Rollback -Flip `auto_chat_bubble_layout` off in Flagsmith. No code revert needed. + +Flip `auto_premium_ui` off in Flagsmith. No code revert needed. + +## Follow-ups + +- Multi-turn meal planning scenario to exercise the `auto_conversation_history` flag path. +- Allergen confusion red-team scenario: user says "nut-free" but asks for Thai peanut sauce. diff --git a/.github/_auto_scoreboard.md b/.github/_auto_scoreboard.md index 18c8fdf..903922c 100644 --- a/.github/_auto_scoreboard.md +++ b/.github/_auto_scoreboard.md @@ -1,15 +1,19 @@ -# Auto Scoreboard — 2026-04-23 +# Auto Improvement Scoreboard — 2026-04-23 -## Traces summary -200 traces from last 7 days, all healthy (no thumbs-down annotations, no errors). Scenarios 4/4 green. Operator focus: **design improvements to chat UI**. +## Evidence Summary +- **4/4 scenarios passing** — agent quality is solid, no functional regressions to fix +- **224 traces in 7 days** — healthy traffic, no thumbs-down or error spans visible +- **Focus hint**: "go wild on the design, make it the best one ever!" +- **Existing flags**: `auto_chat_bubble_layout`, `auto_dietary_pref_chips`, `auto_starter_prompts` — UI scaffolding is already in place but the experience is still very utilitarian (plain text rendering of structured recipes) ## Candidates -| # | Title | Evidence | Impact | Risk | Score | +| # | Title | Evidence | Impact | Risk | Rank | |---|---|---|---|---|---| -| 1 | **Chat bubble layout** — right-align user messages as warm-tinted rounded bubbles; left-align assistant messages as elevated cards | `chat.tsx` uses `ml-8`/`mr-8` indents — no directional alignment; messages look identical without tiny "You"/"Chef" label. Bubble layout is the single highest-impact visual improvement for a chat UI | High | Low | **1st** | -| 2 | Header + page polish — gradient, sticky input, subtle separator | Page header is bare `text-2xl` with no visual weight | Med | Low | 2nd | -| 3 | Implement `auto_starter_prompts` clickable chips (flag exists, no code yet) | Flagsmith flag registered, zero frontend implementation | Med | Med | 3rd | +| 1 | **Premium UI: interactive recipe cards + visual overhaul** | Agent outputs a consistent structured format (title, ingredients grouped by category, numbered steps, dietary info, chef's tip). Rendering this as plain markdown wastes the structure entirely. Traces show 100% recipe-format responses. A card UI with ingredient checkboxes and step progress would transform the cook-along experience. | **High** | **Low** | 🥇 | +| 2 | Add multi-turn meal-plan scenario | Traces show conversation history flag is live but no scenario tests multi-turn cooking sessions. A follow-up test would catch regressions. | Med | Low | 🥈 | +| 3 | Add adversarial red-team scenario (allergen confusion) | No scenario tests a user claiming one allergy but requesting an ingredient that triggers another (e.g., "nut-free" + asking for Thai peanut sauce). Safety gap. | Med | Low | 🥉 | -## Selected: Candidate 1 — Chat bubble layout -Pure CSS/layout change, zero logic change — easiest non-regression to verify. +## Winner: **#1 — Premium UI with interactive recipe cards** + +Rationale: The agent already produces beautifully structured recipe data on every response. Right now that structure is completely wasted — users see a wall of markdown text. Rendering it as an interactive recipe card (ingredient checkboxes, step-by-step progress, dietary badges, chef's tip callout) is the highest-leverage single change possible. Zero risk to agent functionality; purely additive behind a flag. diff --git a/.github/_auto_screenshots/after_empty_state.jpg b/.github/_auto_screenshots/after_empty_state.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9f577db3148dd0923e2bcf97e39cd0aecebb6a51 GIT binary patch literal 36068 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 literal 0 HcmV?d00001 diff --git a/.github/_auto_screenshots/after_recipe_card.jpg b/.github/_auto_screenshots/after_recipe_card.jpg new file mode 100644 index 0000000000000000000000000000000000000000..17d969b0da9a599b4921b1eb73ae92e0d630d14e GIT binary patch literal 69678 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

L_jW!VDSo>V&D4vgi^RHLTiBoUtb2k*q(9|A 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 literal 0 HcmV?d00001 diff --git a/.github/_auto_screenshots/before_ui.jpg b/.github/_auto_screenshots/before_ui.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7a632dc15e41e87ffff65d489e631c4e65e31410 GIT binary patch literal 26236 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

)i3MqFSGh(RRR7ot6$dDUuN~os`|^UeqB|6 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 + {[0, 1, 2].map((i) => ( + + ))} + + ); +} + +// ── Premium message bubble ───────────────────────────────────────────────── +function UserBubble({ content }: { content: string }) { + return ( +
+
+ {content} +
+
+ ); +} + export default function Chat() { const [messages, setMessages] = useState([]); const [input, setInput] = useState(""); @@ -24,6 +58,7 @@ export default function Chat() { const [error, setError] = useState(null); const [chipsEnabled, setChipsEnabled] = useState(false); const [bubbleLayout, setBubbleLayout] = useState(false); + const [premiumUI, setPremiumUI] = useState(false); const [activePrefs, setActivePrefs] = useState>(new Set()); const scrollRef = useRef(null); @@ -33,6 +68,7 @@ export default function Chat() { .then((data) => { setChipsEnabled(!!data?.dietary_pref_chips); setBubbleLayout(!!data?.chat_bubble_layout); + setPremiumUI(!!data?.premium_ui); }) .catch(() => {}); }, []); @@ -42,10 +78,7 @@ export default function Chat() { }, [messages, loading]); useEffect(() => { - if (!loading) { - setSlow(false); - return; - } + if (!loading) { setSlow(false); return; } const t = setTimeout(() => setSlow(true), 5000); return () => clearTimeout(t); }, [loading]); @@ -59,22 +92,18 @@ export default function Chat() { }); } - async function send() { - const text = input.trim(); + async function send(overrideText?: string) { + const text = (overrideText ?? input).trim(); if (!text || loading) return; setError(null); setInput(""); - const prefContext = - activePrefs.size > 0 ? ` [dietary: ${[...activePrefs].join(", ")}]` : ""; + const prefContext = activePrefs.size > 0 ? ` [dietary: ${[...activePrefs].join(", ")}]` : ""; const messageWithPrefs = text + prefContext; setMessages((m) => [...m, { role: "user", content: text }]); setLoading(true); try { - // `messages` still holds the conversation *before* the current user turn - // (React state update above is async). Send it as history so the backend - // can provide full conversation context when auto_conversation_history is on. const history = messages.map((m) => ({ role: m.role, content: m.content })); const res = await fetch(`${API_URL}/chat`, { method: "POST", @@ -94,6 +123,170 @@ export default function Chat() { } } + // ── Premium UI ─────────────────────────────────────────────────────────── + if (premiumUI) { + return ( +
+ + {/* Hero header */} +
+
+
+
+
+
+ +
+
+

+ + Cooking Agent + +

+

+ Recipes · Substitutions · Techniques +

+
+
+ {/* Tier selector */} +
+ + +
+
+ + {/* Dietary chips row */} + {chipsEnabled && ( +
+ {DIETARY_CHIPS.map(({ label, value, emoji }) => ( + + ))} + {activePrefs.size > 0 && ( + + )} +
+ )} +
+ + {/* Messages */} +
+ {messages.length === 0 && ( +
+

+ What are we cooking today? +

+
+ {STARTER_PROMPTS.map((p) => ( + + ))} +
+
+ )} + + {messages.map((m, i) => + m.role === "user" ? ( + + ) : ( +
+ + Chef + + +
+ ) + )} + + {loading && ( +
+ + Chef + +
+ + cooking +
+ {slow && ( +

+ Backend is cold-starting — first reply can take ~60 s. +

+ )} +
+ )} + + {error && ( +
+ {error} +
+ )} +
+ + {/* Input */} +
{ e.preventDefault(); send(); }} + className="mt-3 flex gap-2" + > + setInput(e.target.value)} + placeholder={ + activePrefs.size > 0 + ? `Recipe with ${[...activePrefs].join(", ")}…` + : "Ask for a recipe, substitution, or technique…" + } + className="flex-1 bg-card border border-border/60 rounded-xl px-4 py-2.5 text-sm focus:outline-none focus:border-accent/50 placeholder:text-muted-foreground/50 transition-colors" + disabled={loading} + /> + +
+
+ ); + } + + // ── Legacy UI (unchanged) ──────────────────────────────────────────────── return (
@@ -111,7 +304,7 @@ export default function Chat() { {chipsEnabled && (
- {DIETARY_CHIPS.map(({ label, value }) => ( + {DIETARY_CHIPS.map(({ label, value, emoji }) => ( ))}
@@ -140,13 +333,7 @@ export default function Chat() { )} {messages.map((m, i) => bubbleLayout ? ( -
+
-
+
{m.role === "user" ? "You" : "Chef"}
@@ -169,21 +351,13 @@ export default function Chat() {
) : ( -
-
- {m.role === "user" ? "You" : "Chef"} -
+
+
{m.role === "user" ? "You" : "Chef"}
{m.content}
- ), + ) )} {loading && (
@@ -201,10 +375,7 @@ export default function Chat() {
{ - e.preventDefault(); - send(); - }} + onSubmit={(e) => { e.preventDefault(); send(); }} className="flex gap-2" > >(new Set()); + const [completedSteps, setCompletedSteps] = useState>(new Set()); + + if (!recipe) { + return ( +
+ {content} +
+ ); + } + + const badges = recipe.dietaryInfo ? dietaryBadges(recipe.dietaryInfo) : []; + const totalIngredients = recipe.ingredientGroups.reduce((n, g) => n + g.items.length, 0); + const checkedCount = checkedIngredients.size; + + function toggleIngredient(key: string) { + setCheckedIngredients((prev) => { + const next = new Set(prev); + if (next.has(key)) next.delete(key); + else next.add(key); + return next; + }); + } + + function toggleStep(idx: number) { + setCompletedSteps((prev) => { + const next = new Set(prev); + if (next.has(idx)) next.delete(idx); + else next.add(idx); + return next; + }); + } + + return ( +
+ {/* ── Header ─────────────────────────────────────────────── */} +
+ {/* subtle texture strip */} +
+ +
+
+

{recipe.title}

+ {recipe.meta && ( +

+ + {recipe.meta} +

+ )} +
+ +
+ + {badges.length > 0 && ( +
+ {badges.map((b, i) => ( + + {b} + + ))} +
+ )} +
+ + {/* ── Body: ingredients + steps ──────────────────────────── */} +
+ {/* Ingredients */} + {recipe.ingredientGroups.length > 0 && ( +
+
+

+ + Ingredients +

+ {totalIngredients > 0 && ( + + {checkedCount}/{totalIngredients} + + )} +
+ +
+ {recipe.ingredientGroups.map((group, gi) => ( +
+ {group.category && ( +

+ {group.category} +

+ )} +
    + {group.items.map((item, ii) => { + const key = `${gi}-${ii}`; + const done = checkedIngredients.has(key); + return ( +
  • toggleIngredient(key)} + className={cn( + "flex items-start gap-2 text-[13px] cursor-pointer select-none group transition-opacity", + done ? "opacity-40" : "" + )} + > + + {done && } + + + {item} + +
  • + ); + })} +
+
+ ))} +
+
+ )} + + {/* Steps */} + {recipe.steps.length > 0 && ( +
+

+ Instructions +

+
    + {recipe.steps.map((step, i) => { + const done = completedSteps.has(i); + return ( +
  1. toggleStep(i)} + className={cn( + "flex items-start gap-3 cursor-pointer select-none group text-sm transition-opacity", + done ? "opacity-40" : "" + )} + > + + {done ? "✓" : i + 1} + + + {step} + +
  2. + ); + })} +
+
+ )} +
+ + {/* ── Chef's tip ─────────────────────────────────────────── */} + {recipe.chefsTip && ( +
+ 👨‍🍳 +

+ Chef's tip: + {recipe.chefsTip} +

+
+ )} +
+ ); +} diff --git a/web/lib/parse-recipe.ts b/web/lib/parse-recipe.ts new file mode 100644 index 0000000..dcc4383 --- /dev/null +++ b/web/lib/parse-recipe.ts @@ -0,0 +1,105 @@ +export interface IngredientGroup { + category: string | null; + items: string[]; +} + +export interface RecipeData { + title: string; + meta: string | null; + ingredientGroups: IngredientGroup[]; + steps: string[]; + dietaryInfo: string | null; + chefsTip: string | null; +} + +export function parseRecipe(content: string): RecipeData | null { + if (!/\nIngredients\b/i.test(content)) return null; + + const lines = content.split("\n"); + + // Title from first non-empty line + const rawTitle = lines.find((l) => l.trim())?.replace(/\*\*/g, "").trim() ?? ""; + + // Split on em/en-dash for title + meta (cuisine, time) + const dashMatch = rawTitle.match(/^(.*?)\s[—–]\s(.+)$/) ?? rawTitle.match(/^(.*?)\s-{2,3}\s(.+)$/); + const title = dashMatch ? dashMatch[1].trim() : rawTitle; + const meta = dashMatch ? dashMatch[2].trim() : null; + + type Mode = "before" | "ingredients" | "steps"; + let mode: Mode = "before"; + + const ingredientGroups: IngredientGroup[] = []; + const steps: string[] = []; + let dietaryInfo: string | null = null; + let chefsTip: string | null = null; + + for (const line of lines.slice(1)) { + const trimmed = line.trim(); + + // Section headers + if (/^Ingredients\s*$/i.test(trimmed) || /^\*\*Ingredients\*\*\s*$/i.test(trimmed)) { + mode = "ingredients"; + continue; + } + if ( + /^(Steps|Instructions|Method|Directions)\s*$/i.test(trimmed) || + /^\*\*(Steps|Instructions)\*\*\s*$/i.test(trimmed) + ) { + mode = "steps"; + continue; + } + + // Dietary info — anywhere + const dietaryMatch = line.match(/\*?\*?Dietary\s*info:?\*?\*?\s*(.+)/i); + if (dietaryMatch) { + dietaryInfo = dietaryMatch[1].replace(/\*\*/g, "").trim(); + continue; + } + + // Chef's tip — anywhere + const tipMatch = line.match(/\*?\*?Chef'?s?\s*tip:?\*?\*?\s*(.+)/i); + if (tipMatch) { + chefsTip = tipMatch[1].replace(/\*\*/g, "").trim(); + mode = "before"; + continue; + } + + if (mode === "ingredients") { + if (!trimmed) continue; + // Top-level dash = category group + if (/^- \S/.test(line) && !/^\s/.test(line)) { + ingredientGroups.push({ category: trimmed.slice(2).trim(), items: [] }); + } + // Indented dash = ingredient item + else if (/^\s{2,}- /.test(line)) { + const item = trimmed.slice(2).trim(); + if (ingredientGroups.length === 0) { + ingredientGroups.push({ category: null, items: [] }); + } + ingredientGroups[ingredientGroups.length - 1].items.push(item); + } + } + + if (mode === "steps") { + if (!trimmed) continue; + const stepMatch = trimmed.match(/^(\d+)\.\s+(.+)/); + if (stepMatch) { + steps.push(stepMatch[2]); + } else if (steps.length > 0 && !trimmed.startsWith("#")) { + steps[steps.length - 1] += " " + trimmed; + } + } + } + + const validGroups = ingredientGroups.filter((g) => g.items.length > 0); + if (validGroups.length === 0 && steps.length === 0) return null; + + return { title, meta, ingredientGroups: validGroups, steps, dietaryInfo, chefsTip }; +} + +export function dietaryBadges(info: string): string[] { + return info + .split(/[•,|\/]/) + .map((s) => s.trim()) + .filter(Boolean); +}