Cairn v1.5.1 — honest nutrition progress
What is new
A real multi-week nutrition read
- Progress → Fuel → Intake adds a calm 35-day view across Energy, Protein, Carbs, Fat, and Fiber.
- Daily timelines keep unlogged and unknown days visible as gaps instead of silently counting them as zero.
- Open-day intake stays visible but is excluded from completed-day averages and trends.
- Historical target markers follow the reference that was actually active on each date, with honest per-nutrient provenance.
- Macro balance, observation density, sampled food-quality context, and relevant health context help turn logging into one useful next move rather than another score.
Better food and fat estimates
- Food enrichment can now estimate saturated and unsaturated fat when the food, total fat, cooking method, and cooking oil support a defensible split.
- Explicit preparation details such as grilling with olive oil take precedence over generic assumptions.
- Estimates are clearly labeled, internally checked against total fat, and left unknown when the evidence is too weak.
- Older food history remains categorical where gram-level estimates were not captured.
- Durable memory is reduced locally to canonical cooking-method and cooking-fat tokens before a food prompt is sent; unrelated health, family, medication, address, or free-text memory is not forwarded.
Fuel is clearer without becoming primary navigation
- Today and the editable day-fuel view now show Energy, Protein, Carbs, Fat, and Fiber.
- Unknown or pending nutrients render as unknown rather than fabricated zeroes.
- The primary Today fuel action still opens Plan → Food; the detailed read lives under Progress → Fuel → Intake.
- REST
GET /api/nutrition/progressand MCPget_nutrition_progressexpose the same deterministic analysis.
Reliability and compatibility
- Existing
/api/nutrition/dayand MCPget_day_intakenumeric totals remain backward compatible; additiveknownflags let newer clients render incomplete data honestly. - Nutrition progress describes record observation density, not claimed meal completeness, and target comparisons remain conditional unless the records reflect most of the day.
- Health-context intake data is memory-only in the browser cache.
- Background enrichment refreshes an open Intake read when estimates settle.
- No database migration is required. PWA cache:
cairn-v518.
Install or update
Download the attached docker-compose.yml, which is pinned to:
ghcr.io/zilet/cairn:v1.5.1
Images are published for linux/amd64 and linux/arm64.
Full changelog: v1.5.0...v1.5.1