From 360eadf78fb001e947f3850603152adc413bb3a8 Mon Sep 17 00:00:00 2001 From: Tyler Hoang Date: Sat, 9 May 2026 02:31:10 -0700 Subject: Recipe detail page, menu revamp, and UX improvements MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add recipe detail page (recipe.html) with full ingredients and instructions - Simplify menu tab: cards show name + description only, click through for full recipe - Add description field to Recipe model with DB migration - Add AI-generated descriptions to menu, swap, and import prompts - Add single dish by description (POST /api/menus/current/recipes) - Add grocery item delete without pantry add (DELETE /api/grocery/{id}/items) - Persist grocery checked state server-side (PATCH /api/grocery/{id}/check-item) - Hash-based tab routing — refresh stays on current tab - Logo branding in header and favicon - Dark theme fixes: URL/text inputs, amber accent, muted danger/warning colors - Markdown rendering in chat (bold, italic, code blocks, lists, headers) - Fix instruction step splitting for inline-numbered steps (1. 2. 3.) - Import recipe from URL with JSON-LD structured data + AI fallback Co-Authored-By: Claude Sonnet 4.6 --- models.py | 1 + 1 file changed, 1 insertion(+) (limited to 'models.py') diff --git a/models.py b/models.py index 9e78d65..4059e20 100644 --- a/models.py +++ b/models.py @@ -44,6 +44,7 @@ class Recipe(Base): id = Column(Integer, primary_key=True, autoincrement=True) name = Column(String, nullable=False) + description = Column(Text, nullable=True) meal_type = Column(String, nullable=False) ingredients = Column(Text, nullable=False) instructions = Column(Text, nullable=True) -- cgit v1.3-2-g0d8e