<feed xmlns='http://www.w3.org/2005/Atom'>
<title>commis.git/static/index.html, branch master</title>
<subtitle>Personal chef</subtitle>
<id>https://git.tylerhoang.xyz/commis.git/atom?h=master</id>
<link rel='self' href='https://git.tylerhoang.xyz/commis.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/commis.git/'/>
<updated>2026-05-12T10:44:40Z</updated>
<entry>
<title>Pantry-first AI prompts, recipe editing, and grocery copy</title>
<updated>2026-05-12T10:44:40Z</updated>
<author>
<name>Tyler Hoang</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-12T10:44:40Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/commis.git/commit/?id=9c8332d4442ddd569aacc37f2000fb0afe36111e'/>
<id>urn:sha1:9c8332d4442ddd569aacc37f2000fb0afe36111e</id>
<content type='text'>
- Rewrite menu generation to build recipes around existing pantry
  ingredients (max 4-5 extras per recipe); add in_pantry flag per
  ingredient for downstream accuracy
- Flip grocery list logic to ONLY include items not in the pantry,
  with explicit cross-check rule instead of include-everything default
- Strengthen no-menu grocery prompt to handle empty vs. stocked pantry
- Rewrite Commis chat system prompt to treat kitchen context as source
  of truth with explicit response rules per query type
- Align replacement/single-recipe prompts to prefer pantry coverage
- Update system_prompt default to reflect pantry-first identity
- Add PUT /api/recipes/:id endpoint for recipe editing
- Add inline edit mode to recipe detail page (name, type, ingredients,
  instructions, time, servings)
- Add Copy button to grocery list (exports markdown checklist)

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Recipe detail page, menu revamp, and UX improvements</title>
<updated>2026-05-09T09:31:10Z</updated>
<author>
<name>Tyler Hoang</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-09T09:31:10Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/commis.git/commit/?id=360eadf78fb001e947f3850603152adc413bb3a8'/>
<id>urn:sha1:360eadf78fb001e947f3850603152adc413bb3a8</id>
<content type='text'>
- 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 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Simplify pantry UX and persist grocery check state server-side</title>
<updated>2026-05-09T08:19:08Z</updated>
<author>
<name>Tyler Hoang</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-09T08:19:08Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/commis.git/commit/?id=75ce40635736260ce5a19b7a33856305ee516ccc'/>
<id>urn:sha1:75ce40635736260ce5a19b7a33856305ee516ccc</id>
<content type='text'>
- Remove quantity, unit, expiry, and category fields from pantry form; auto-detect category via keyword map
- Persist grocery item checked/unchecked state in DB via PATCH /api/grocery/{id}/check-item
- Fix unchecking: previously bailed early and never removed the checked class
- Fix NOT NULL constraint on ingredients.unit by defaulting to empty string

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Add recipe suggestions, chat tab, and major workflow improvements</title>
<updated>2026-05-08T10:24:36Z</updated>
<author>
<name>Tyler Hoang</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-08T10:24:36Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/commis.git/commit/?id=3de7c5eed5ba262abf0d746211e33800db6d66df'/>
<id>urn:sha1:3de7c5eed5ba262abf0d746211e33800db6d66df</id>
<content type='text'>
- Replace 7-day grid menu with browsable recipe suggestion cards (swap, remove, make this)
- Add Chat tab: conversational AI with full pantry/menu/grocery context
- Grocery list works without a menu (pantry-only mode)
- Individual grocery checkboxes auto-add items to pantry
- Swap modal with optional preference input
- User notes textarea on menu and grocery generation
- Clear button for menu and grocery list
- LLM notes/summary displayed after generation, persisted to DB
- Favicon linked in HTML
- Category dropdown styled for dark theme
- System prompt configurable via SYSTEM_PROMPT in .env
- Fix startup error (ollama_timeout default), DB migration for menu_plans.notes
- Simplify: batch N+1 queries, extract _current_monday(), merge chat sync fns,
  asyncio.get_running_loop(), fix currentGroceryId bug, cap chat history

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Initial commit — Commis personal chef app</title>
<updated>2026-05-08T08:58:48Z</updated>
<author>
<name>Tyler Hoang</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-08T08:58:48Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/commis.git/commit/?id=2e0a94e88c847a5ed8dc6ad5fa49715cd631bdfe'/>
<id>urn:sha1:2e0a94e88c847a5ed8dc6ad5fa49715cd631bdfe</id>
<content type='text'>
AI-powered local chef tool: pantry tracking, meal logging, rotating weekly
menu generation, and grocery list optimization via Ollama (llama3).
FastAPI backend, SQLite, vanilla JS frontend.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
