EmakiCoreLib Changelog [2.3.0] - 2026-04-09 Added Expression-aware name and lore replacement
ItemRenderService now supports name_append_if_unchanged and name_append_if_changed, which helps strengthen and forge pipelines decide whether another suffix should be appended after a previous name change.
Regex replacement in names and lore now supports capture groups and expression blocks inside the replacement template, making it easier to combine matched text with runtime variables.
ExpressionEngine.replaceVariables is now exposed as a reusable entry point so name templates, lore templates, and replacement templates share the same variable-expansion behavior.
Startup diagnostics and loader issue collection
Startup logs now print the list of economy providers that actually became available, so operators can verify Vault and other backends more quickly.
YamlDirectoryLoader now accumulates load issues, allowing upper-layer plugins to expose lint, self-check, or admin diagnostics directly.
Improved Rendering and bridge infrastructure hardening
RegexLoreSearchMatcher now caches compiled regex patterns to reduce repeated compile overhead during frequent lore searches.
CacheManager now tracks hits, misses, evictions, and expirations with atomic counters, which keeps shared cache statistics more stable.
Item source bridges now report more specific details while in WAITING or INCOMPATIBLE state, making load-order and API-compatibility diagnosis easier.
Fixed
ExpressionEngine now rejects overly long expressions, dangerous characters, and NaN / Infinity results so broken templates do not poison runtime calculations.
Regex-based rendering no longer flattens replacements too early, so $1-style capture groups and expression blocks can work together correctly.
Upgrade Notes
If your name or lore templates already use $1-style regex capture groups or [ ... ] expression blocks, regression-test those displays after upgrading.
Upper-layer plugins can now read YamlDirectoryLoader.issues() directly when implementing config self-checks or admin diagnostics.
Startup logs will now print ready economy providers; if an expected backend does not appear, first verify dependency startup order and provider registration.