### Classification / Scanner
- **Recipe data can now contest keyword classifications**, not just append to them. Confidence is computed honestly over the combined keyword+recipe signal instead of being copied from the keyword match items with disagreeing names/recipes, which can now be flagged UNCERTAIN. Winner-changing overrides are opt-in per category via `contestable_values`; with none configured (the shipped default), no classification winners change, only confidence/UNCERTAIN flags.
- Scanner-side recipe merge no longer silently drops contesting recipe mass. Expect the next scanner run to surface more multi-value/ambiguous items than before. This is intentional.
- New `RecipeInheritanceResolver.collectContributions` walks the *entire* recipe tree instead of stopping at the first confident match, the root cause fix for the "calzone" bug class.
- `CommunityTagResolutionStage`'s tag directory is now per-mod configurable instead of hardcoded.
- `compositeRatioThreshold` default raised (a stray secondary tag no longer silently attaches an unrelated category to an item).
- `SourceClassificationRegistry` overrides now actually reach
- `SourceRegistry` (previously silently ignored) and now fully lock out competing tag/API registrations for that item instead of leaking through.
- New `calories` field on `source_classifications.json`, with corrected precedence so classification no longer zeroes/miscalculates an item's calorie total.
### New UI subsystems
- **Command Center**: pluggable sidebar+card dashboard for consumer mods, now drag/resizable with clipped/scrollable content and corrected rendering (blur order, sizing, translation key fixes).
- **Notifications**: generic client-side toast stack above the XP bar with merge-by-key support.
- **Scale Config panel**: replaces the old full-screen scale config; generic embeddable per-component text/padding adjustment.
- **Edit Mode / Snap Registry**: generalized double-click edit mode and cross-mod magnetic-edge snapping for draggable HUD components.
- **Color system**: `ColorKey`/`ColorDefinition`/`MarieColors` layer for defaults/overrides, plus `withOpacity`/`shade` helpers and a generic color-row config widget.
- New `dev.marie.framework.ui.api "facade package" consolidating all of the above's public entry points.
### Tracking & Sync
- New generic tracker/period-history framework (`MarieTracking`) and parallel tracker-milestone system, both with datapack support.
- Two-tier client sync for trackers (throttled dirty-flag sweep + full login snapshot) fixes previously stale client-side tracker reads.
- New generic config/registry sync API (`MarieResourcesAPI`) so mods don't need to hand-roll their own sync payloads.
- Client caches now correctly clear on disconnect (previously never happened at all).
### Breaking changes
- `MarieNotifications`, `MarieCommandCenter`, `EditModeCoordinator` moved to `dev.marie.framework.ui.api`. Old import paths no longer exist.
- `MarieAPI`'s tracker methods (`registerTracker`, `incrementTracker`, etc.) were removed; use `MarieTracking` instead.
- Old `ContentScaleConfigScreen`/`ScaleSliderButton` deleted use `ScaleConfigPanel`.
### Notable fixes
- Reload/registration gap: Tracker and color registrations made at mod-init were being silently wiped on every world boot with no re-registration path now correctly hooked into both `/reload` and server startup.
- Tracker milestone datapack entries were silently dropped (missing callback override).
- Login snapshot no longer misses tracker values in edge cases (CUSTOM-period trackers with no history yet).
- The swim tick trigger no longer keeps firing briefly after leaving the water.
- Oversized-packet check now happens before a full NBT decode instead of after (DoS hardening).
- Several NPE fixes around item-agnostic triggers passing `null` instead of the documented empty-item sentinel. [v0.1.1-
The full changelog can always be found here
[beta.4...v0.1.1-beta.5](https://github.com/kgbcupcake/MariesLib/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" }