mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 21:01:08 +02:00
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>
|
||
|---|---|---|
| .. | ||
| api | ||
| calc/packages/shared | ||
| calendar | ||
| cards | ||
| chat | ||
| citycorners | ||
| contacts | ||
| context | ||
| docs | ||
| guides | ||
| inventory | ||
| mana | ||
| manavoxel | ||
| memoro | ||
| moodlit | ||
| mukke | ||
| news | ||
| nutriphi | ||
| photos | ||
| picture | ||
| planta | ||
| presi | ||
| questions | ||
| skilltree | ||
| storage | ||
| times | ||
| todo | ||
| traces | ||
| uload | ||
| zitare/packages/content | ||