managarten/apps
Till JS 967f938e84 feat(mana/web/body): full i18n + calorie × weight correlation chart
Two complementary improvements that take the body module from "works
in DE/EN" to "works for every Mana user" and surface the highest-
value cross-module integration the merged module unlocks.

i18n — finish the rollout
  it/fr/es JSON files were already present from the initial body
  drop but only had the original copy. Add the new keys introduced
  by the quick-win commits last week:
    - phase.{start,end,startNew}
    - progression
    - routines.{title,start,empty}
    - exercisePicker.{title,pick,search,empty,create}
    - muscle.* (13 muscle group labels)
    - calorieWeight (used by the new chart below)
  de.json + en.json get the calorieWeight key for the new section.
  Translations are real (not machine-default fallbacks) so the
  Body module is now first-class in all five supported locales.

CalorieWeightChart — Body × Nutriphi correlation
  The whole point of having both modules in the same app is being
  able to ask "did the cut work?" without exporting CSVs. This
  component overlays daily calorie intake (summed across nutriphi
  meals) against bodyweight readings over the last 8 weeks, with
  an optional dashed target-weight line driven by the active phase.

  Key design choices:
    - Two y-axes auto-scaled independently (calories left, weight
      right) so a 2000kcal swing and a 1kg swing both stay visible.
    - Days without data are omitted from the path; the line draws
      "M ... L" gaps so a missed weigh-in doesn't show as a hard
      drop to zero.
    - Target-weight overlay only renders when it falls inside the
      visible weight range — clamping it to the edge would create
      a meaningless boundary stripe.
    - Cut-friendly delta colors: weight DOWN is green (you're on
      track), weight UP is red. Calorie deltas use the same scheme
      (down = restriction working).
    - Pure SVG, no chart-lib dependency, same auto-scale primitive
      we already use for WeightChart and ExerciseProgressionChart.

  Cross-module read: new `useNutriphiMealsSince(date)` helper in
  body/queries.ts — lives in body (not nutriphi) because the body
  module owns the integration boundary, and putting the cross-table
  read in one place keeps the import graph from getting circular if
  nutriphi ever wants to reach back.

  The hook decrypts the nutriphi `meals` table (already encrypted at
  rest by the meals registry entry) and projects to a thin
  MealWithNutrition shape for the chart. Decrypt cost on a few
  hundred meal rows is negligible vs. the value of the chart.

  Wired into the body layout as a 7th context (`bodyNutriphiMeals`)
  with `dateNDaysAgo(56)` — 8 weeks covers a typical cut/bulk
  cycle. ListView renders a new "Kalorien × Gewicht" card between
  the Weight section and the Daily Check.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 17:19:20 +02:00
..
api refactor(api): use Vercel AI SDK + Zod for nutriphi/planta vision routes 2026-04-09 16:59:51 +02:00
calc/packages/shared chore: delete 25 web-archived directories, remove stale stubs, clean workspace config 2026-04-03 13:03:49 +02:00
calendar refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
cards chore: complete ManaCore → Mana rename (docs, go modules, plists, images) 2026-04-07 12:26:10 +02:00
chat refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
citycorners chore: complete ManaCore → Mana rename (docs, go modules, plists, images) 2026-04-07 12:26:10 +02:00
contacts refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
context chore(workspace): remove redundant nested lockfiles + workspace.yaml 2026-04-09 11:57:11 +02:00
docs docs: Phase 9 documentation roundup — close encryption-shaped doc gaps 2026-04-08 11:47:59 +02:00
guides refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
inventory refactor(mana): rename inventar → inventory across the codebase 2026-04-09 15:50:24 +02:00
mana feat(mana/web/body): full i18n + calorie × weight correlation chart 2026-04-09 17:19:20 +02:00
manavoxel chore(workspace): unify vitest to ^4.1.2 across all packages 2026-04-07 13:58:29 +02:00
memoro chore: remove abandoned per-product workspace artifacts 2026-04-09 11:56:51 +02:00
moodlit refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
mukke feat: rename ManaCore to Mana across entire codebase 2026-04-05 20:00:13 +02:00
news refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
nutriphi refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
photos chore: complete ManaCore → Mana rename (docs, go modules, plists, images) 2026-04-07 12:26:10 +02:00
picture refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
planta chore(planta): remove orphan apps/planta/packages/shared 2026-04-09 14:06:11 +02:00
presi refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
questions refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
skilltree chore: delete 25 web-archived directories, remove stale stubs, clean workspace config 2026-04-03 13:03:49 +02:00
storage refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
times chore: complete ManaCore → Mana rename (docs, go modules, plists, images) 2026-04-07 12:26:10 +02:00
todo refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
traces refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
uload refactor(shared-tailwind): rewrite themes.css to single-layer shadcn convention 2026-04-09 01:13:06 +02:00
zitare/packages/content chore: delete 25 web-archived directories, remove stale stubs, clean workspace config 2026-04-03 13:03:49 +02:00