<feed xmlns='http://www.w3.org/2005/Atom'>
<title>food, branch master</title>
<subtitle>Meal planning system (Django)</subtitle>
<id>https://git.tomflux.xyz/food/atom?h=master</id>
<link rel='self' href='https://git.tomflux.xyz/food/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.tomflux.xyz/food/'/>
<updated>2026-04-02T22:23:20+00:00</updated>
<entry>
<title>Add food.tomflux.xyz to ALLOWED_HOSTS</title>
<updated>2026-04-02T22:23:20+00:00</updated>
<author>
<name>Caine</name>
<email>caine@jihakuz.xyz</email>
</author>
<published>2026-04-02T22:23:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tomflux.xyz/food/commit/?id=520789d3615ecbf335f4fec1c2507a639f0a89e6'/>
<id>urn:sha1:520789d3615ecbf335f4fec1c2507a639f0a89e6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Pantry move/expiry edit + smart shopping list with summary</title>
<updated>2026-04-02T22:18:01+00:00</updated>
<author>
<name>Caine</name>
<email>caine@jihakuz.xyz</email>
</author>
<published>2026-04-02T22:18:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tomflux.xyz/food/commit/?id=557758b188d58a2e00114be21a2e27864db3edea'/>
<id>urn:sha1:557758b188d58a2e00114be21a2e27864db3edea</id>
<content type='text'>
- Move items between fridge↔freezer (freezer→fridge sets +7d or shelf life expiry, fridge→freezer clears expiry)
- Inline expiry date editor on fridge items (📅 button)
- Smart shopping list now shows recipe gaps (missing required slot ingredients)
- Summary card shows breakdown: X staple restocks, Y expiring, Z recipe gaps
</content>
</entry>
<entry>
<title>CSRF exempt HTMX views (localhost-only app)</title>
<updated>2026-04-02T22:12:16+00:00</updated>
<author>
<name>Caine</name>
<email>caine@jihakuz.xyz</email>
</author>
<published>2026-04-02T22:12:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tomflux.xyz/food/commit/?id=2f279ac89d66c777e12e4e9f2a0ff0d0aed8883a'/>
<id>urn:sha1:2f279ac89d66c777e12e4e9f2a0ff0d0aed8883a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix CSRF for HTMX POST requests</title>
<updated>2026-04-02T22:10:52+00:00</updated>
<author>
<name>Caine</name>
<email>caine@jihakuz.xyz</email>
</author>
<published>2026-04-02T22:10:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tomflux.xyz/food/commit/?id=dfa573a4ea90b300b6261d6d055ea90f0fe904fa'/>
<id>urn:sha1:dfa573a4ea90b300b6261d6d055ea90f0fe904fa</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Phase 4: HTMX frontend with dark palette</title>
<updated>2026-04-02T22:08:43+00:00</updated>
<author>
<name>Caine</name>
<email>caine@jihakuz.xyz</email>
</author>
<published>2026-04-02T22:08:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tomflux.xyz/food/commit/?id=c4ca4348edc5c4fd6cc36e9833fbb9c697f3bf9d'/>
<id>urn:sha1:c4ca4348edc5c4fd6cc36e9833fbb9c697f3bf9d</id>
<content type='text'>
- 4 pages: Pantry, Recipes, Shopping List, Cook Log
- HTMX-powered: add/delete pantry items, toggle shopping, generate smart list
- Custom 13-colour palette from Lospec (dark bg, yellow accent)
- Mobile-responsive
- Whitenoise for static files in production
- All routes under /app/
- API (/api/) stays internal, frontend (/app/) for browser use
</content>
</entry>
<entry>
<title>Add rating + preferences fields, log first cook feedback</title>
<updated>2026-04-02T21:50:49+00:00</updated>
<author>
<name>Caine</name>
<email>caine@jihakuz.xyz</email>
</author>
<published>2026-04-02T21:50:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tomflux.xyz/food/commit/?id=963ca2dd5549843e992af718053d08c10d5ec843'/>
<id>urn:sha1:963ca2dd5549843e992af718053d08c10d5ec843</id>
<content type='text'>
- Ingredient.preferences: qualitative notes on how Tom likes things cooked
- CookLog.rating: 1-5 score
- CookLog.notes: help text updated for feedback
- Migration 0002
- First cook logged: Baked Pasta with lardons, rated 2/5
- Bacon lardons preference: don't oven bake, fry separately, not solo protein
</content>
</entry>
<entry>
<title>Add create-meta-recipe endpoint with nested slots/options/bases</title>
<updated>2026-04-02T16:51:12+00:00</updated>
<author>
<name>Caine</name>
<email>caine@jihakuz.xyz</email>
</author>
<published>2026-04-02T16:51:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tomflux.xyz/food/commit/?id=946c7de20cab78a47edbeae8fa65fe86a51511dd'/>
<id>urn:sha1:946c7de20cab78a47edbeae8fa65fe86a51511dd</id>
<content type='text'>
- POST /api/create-meta-recipe/ creates full meta-recipe in one call
- PUT /api/create-meta-recipe/ updates existing (requires id)
- Auto-resolves ingredients by name/alias, creates new if not found
- Returns full nested response with _created_ingredients list
- New writable serializers: MetaRecipeWriteSerializer, SlotWriteSerializer, etc.
</content>
</entry>
<entry>
<title>Phase 2+3: bulk pantry add, smart shopping list, recipe URL import</title>
<updated>2026-04-02T15:50:56+00:00</updated>
<author>
<name>Caine</name>
<email>caine@jihakuz.xyz</email>
</author>
<published>2026-04-02T15:50:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tomflux.xyz/food/commit/?id=27f91fb877f4502804c932a28546ab6c745cc103'/>
<id>urn:sha1:27f91fb877f4502804c932a28546ab6c745cc103</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add recipe-scrapers dependency</title>
<updated>2026-04-02T15:46:55+00:00</updated>
<author>
<name>Caine</name>
<email>caine@jihakuz.xyz</email>
</author>
<published>2026-04-02T15:46:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tomflux.xyz/food/commit/?id=da6cd28c3a8b4830fba3e1232e97cb2ae141ed2e'/>
<id>urn:sha1:da6cd28c3a8b4830fba3e1232e97cb2ae141ed2e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Update README: Phase 2 complete, API docs, file structure</title>
<updated>2026-04-02T15:42:06+00:00</updated>
<author>
<name>Caine</name>
<email>caine@jihakuz.xyz</email>
</author>
<published>2026-04-02T15:42:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tomflux.xyz/food/commit/?id=ecb0f7c07a2f9bd42944ef04054cb94262ba0c07'/>
<id>urn:sha1:ecb0f7c07a2f9bd42944ef04054cb94262ba0c07</id>
<content type='text'>
</content>
</entry>
</feed>
