## Highlights
> This is a big one. New activity-driven nutrient system (mining, combat, sprinting, swimming, starvation) with its own HUD panel and trackers, food-eaten notifications, a unified "edit all HUDs" mode, a full visual restyle across every HUD panel, and a Command Center that's now a proper command launcher. Underneath it, MariesLib got a major rework to its recipe/keyword classification merge closing the long-standing calzone/createfood multi-value bug plus a batch of new generic UI, tracking, and sync subsystems that all of the above is built on.
## Nourished changes
### Added
- **Food-eaten notifications**: eating a food that actually changes calories or nutrients now shows a client-side notification above the XP bar (name + calorie delta, e.g., "Veggie Salad +203 Calories"). Rapid consecutive eats merge into one notification slot instead of stacking. Only fires on real eating events, decay ticks, login, and state-refresh syncs never trigger it.
- **Activity-driven nutrients**: five new independently toggleable modules: `SprintDecayModule`, `SwimDecayModule`, `MiningModule` (per-block cost), `CombatModule` (per-kill cost), `StarvationModule` (one-time penalty when a nutrient crosses critical). New config category for toggles, costs, and per-module HUD log colors. Config migrated off TOML onto a JSON registry (`ActivityDrivenNutrientRegistry`) with datapack override support, synced via MarieLib's new generic config-sync mechanism.
- **Activity Log HUD panel**: new draggable/resizable panel (default keybind `K`) showing recent activity effects.
- Five new daily trackers: `activity/mining_blocks`, `activity/combat_kills`, `activity/starvation_crossings`, `activity/sprint_distance`, `activity/swim_distance`. Sprint/swim now tracks real blocks moved (with teleport/dimension-change/discontinuity guarding) instead of ticks active. All five wired into MarieLib's new tracker-milestone system and exposed to KubeJS via `NourishedAPI.registerTrackerMilestone`"
- **Command Center is now a command launcher.** "Nourished Tools" category: Export All, Audit Tags, Debug Activity Log, Reload, Invalidate Cache, Unassigned Sources, NBT Paths, List Profiles, My Profile. "Framework" category: Status, Mods, API, Registries. All run as real network-dispatched commands with permission checks, same as typing them.
- **Unified HUD editing**: new global "edit all HUDs" keybind (`EDIT_ALL_HUDS`) toggles edit mode on the Calorie HUD, Activity Log HUD, and nutrient HUD together. The nutrient HUD joined the same group.
- Diet Screen, Calorie HUD, and Activity Log HUD panels each gained their own scale-config card for adjusting text scale/padding via sliders, auto-shown alongside edit mode. New `OPEN_SCALE_CONFIG "keybind" for the Diet Screen's version.
- All three HUD panels now snap to each other's edges when dragged/resized (MarieLib's new `SnapRegistry`).
- Nutrient HUD migrated onto the same content-scale system as the other panels.
- Added `zh_cn.json': full Simplified Chinese translation (first-pass machine-assisted; native review recommended).
- Tagged ~60 untagged createfood intermediate items (dough variants, cut vegetables, ground meats, dairy intermediates, cocoa/confectionery items, etc.) into `nutrients/* "tags" so recipe inheritance can correctly classify finished dishes made from them.
### Changed
- Updated all imports/construction sites for MarieLib's facade package consolidation (`MarieNotifications`, `MarieCommandCenter`, `EditModeCoordinator`, `MarieScaleConfig`).
- HUD edit-mode registration switched to MarieLib's new group-capable API, fixing a bug where only the last-registered HUD's overlay actually rendered when toggling edit mode on all HUDs at once.
- Food-eaten notification simplified to name + calorie delta only (per-nutrient lines removed), now rendered as one line instead of two.
- Diet Screen's other edit-mode entry points (J keybind, toggle button) now also show the scale-config sliders, matching the Command Center's behavior.
- Double-click-to-zoom on Calorie HUD / Activity Log HUD / Diet Screen sub-boxes now goes through MarieLib's generic `ContentScaleController` instead of each hand-rolling its own logic. Right-double-click now adjusts an independent padding value instead of just exiting zoom.
- Calorie HUD and Activity Log HUD restyled to match the rounded-card look used elsewhere, with colored title headers.
- Activity Log HUD rows now read live tracker values (today's accumulated total) instead of session-only "last event" counts: whole numbers for mining/combat/starvation and one-decimal distance for sprint/swim.
- Both panels' rows redesigned as icon + label + colored bar + value, matching the nutrient-bar convention. Calorie rows bar against the daily goal (green, red past 100%); activity rows bar against each tracker's own historical max.
### Removed
- "Diet Screen" Command Center category and its scale-config shortcut card Command Center is command-launcher-only now; the scale panel is still reachable via edit mode.
- The old double-click/scroll-only interaction for text scale/padding across all seven modules' editing is now exclusively through each module's scale-config card.
### Fixed
- **Closed the calzone/create food multi-value gap for good.** Recipe inheritance now walks the entire ingredient graph instead of stopping at the first confident match, so a strong tag-based match (e.g., cheese + dough) several hops down an intermediate item is no longer invisible to classification.
- Activity distance tracking now respects its own module's enable/disable toggle (was previously running unconditionally).
- Activity Log HUD bars no longer compete on one shared scale; each tracker now bars against its own historical max, fixing small-count trackers (mining/combat) reading as permanently empty next to large sprint/swim distances.
- Scale-config panels now correctly show when entering edit mode via the group "edit all HUDs" toggle (previously only whichever HUD's individual keybind was last pressed showed its sliders).
- Diet Screen's scale-config sliders are no longer unreachable once edit mode swaps to the overlay screen.
- Content scale/padding no longer resets on drag/resize and no longer changes size just from resizing a box it's now always exactly the user's saved adjustment.
- `registerCompatEntry` was never wired up all 34 datapack compat entries were silently discarded and never applied. Fixed.
- `CommunityTagStage` was a broken duplicate of MariesLib's real implementation (never terminated properly, skipped instance-tags). Now delegates to the real one.
- Config screen no longer crashes on save with `IllegalStateException: cannot register while frozen`.
- Eating no longer gets silently blocked by heavy-source rules regardless of hunger state — now only blocks when the player actually can't eat.
- External classifications (e.g. porkchop → proteins) are no longer diluted by low-confidence recipe-resolver noise.
- Tracker milestone datapack entries were parsed but never registered — now wired up.
- HUD panels can now be shrunk below their natural size instead of being locked at minimum content size.
- Live color preview while editing hex values in the config screen (was previously save + reopen only); "Reset All" no longer force-closes the config screen.
- Several `hideGui`/F1 fixes so HUD panels stop drawing over a hidden GUI.
- Fixed a mistagged item (`chocolate_donut_base` was tagged``, moved to `grains`).
### CI / Tooling
- Added a weekly GitHub Actions workflow to check for MariesLib updates and open a PR against `dev` when a newer version is available.
The full changelog can always be found here
[v0.2.7-beta...v0.2.7-beta.1](https://github.com/kgbcupcake/nourished/blob/main/CHANGELOG.md)
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }