Releases: FoxsterDev/DevAccelerationSystem
4.0.0
4.0.0 — Loqui localization package
Introduces Loqui, a fallback-first localization package for Unity (com.foxsterdev.loqui), shipped hardened after a full-SDK review. EditMode Loqui.Tests 96/96 green on Unity 2022.3.62f3.
✨ Highlights
- New Loqui localization system — keep your code literal as the default, override only per language and per platform.
- No hard logging dependency; optional TheBestLogger adapter.
- Clean UPM import, IL2CPP-safe stripping, deterministic editor tooling.
Added — Loqui
- Fallback-first API:
Loc.Get(key, literal)returns the literal when no override exists and never throws on a missing key. - ScriptableObject catalog with per-language and per-platform (
iOS/Android) values + build-time validation. - TMP integration via the
LocalizedTextcomponent, aLanguageDropdown, and runtime font swap per language. - Locale-aware
FormatNumber/FormatCurrency/FormatPercent/FormatShortDate/FormatDateTime. - Opt-in remote overrides: parse + validate a sparse
JsonUtility-compatible payload, then apply at runtime viaLoc.ApplyOverrides(...)/Loc.ClearOverrides()(per-language, per-platform, survives language switches). - Editor scanner with deterministic, collision-free key generation.
⚠️ Changed / Breaking (for integrators)
- Logging is now optional.
Loc.Initialize(...)takes anILoquiLog(passnullto stay silent). Ifcom.foxsterdev.thebestloggeris present, the gatedLoqui.Integrations.TheBestLoggeradapter compiles automatically — wrap withnew TheBestLoggerLoquiLog(logger). Loqui no longer hard-depends on TheBestLogger. - Minimum Unity raised to
2022.3. LocalizationServiceis constructed only throughLoc(constructor is nowinternal).Loc.Readyis level-triggered — subscribing after init fires immediately.
Fixed / Hardened
LocalizationEvent.Raiseis re-entrancy-safe (aLanguageChangedhandler may switch language without corrupting dispatch).- Main-thread contract documented and asserted in editor/development builds.
FormatCurrencycaches itsNumberFormatInfo(no per-call clone) and groups by the currency's country forUSD/BRL/GBP/JPY.- Non-ASCII source text (CJK / Cyrillic / Arabic) no longer collapses to colliding keys.
- C# scanner ignores commented-out code (string/verbatim-aware); scan order and key disambiguation are deterministic.
LanguageDropdownlifecycle is null-safe;SetLanguageno-ops on the already-active language.
Packaging
- Declares
com.unity.ugui+com.unity.textmeshpro(clean import into a fresh project). - Ships a Unity-recognized
link.xmlso IL2CPP managed stripping preserves Loqui types. - Author prompts moved to
Documentation~(excluded from the imported package payload).
Validation
- ✅ EditMode
Loqui.Tests96/96 passing on Unity 2022.3.62f3 (compile clean). - ⏳ Pending: PlayMode lane (
LoquiSample.PlayModeTests) and an IL2CPP + managed-stripping device build.
Install (UPM, git)
"com.foxsterdev.loqui": "https://github.com/FoxsterDev/DevAccelerationSystem.git?path=DevAccelerationSystem/Assets/Loqui#4.0.0"3.0.1
Full Changelog: 3.0.0...3.0.1
3.0.0
TheBestLogger [3.0.0] - 2026-05-03
- Breaking change: removed the public GetCurrentLogTargetConfigurations() API.
- Breaking change: removed the public typed runtime-update APIs based on LogTargetConfiguration objects.
- Added
TryApplyRemoteConfigurationPatch(string targetName, string rawJsonPatch, out string error)as the single-target public remote-config entrypoint. - Added
TryApplyRemoteConfigurationDocument(IReadOnlyDictionary<string, string> rawJsonPatches, out string error)as the batch public remote-config entrypoint. - Added explicit client-facing error reporting for remote-config application through
bool+out string error. - Made batch remote-config document application atomic so mixed valid/invalid batches are rejected without partial apply.
- Added package-owned generic integration examples for:
- app-level logger facade
- remote-config normalization into
targetName -> rawJsonPatch
- Added
MIGRATION_3_0_0.mdas a human-readable upgrade guide for existing project integrations. - Added a package-owned AI prompt for upgrading project integrations to
3.0.0and reviewing log usage against package best practices. - Updated
README.mdwith generic integration wiring examples and references to both the human migration guide and the package-owned AI migration/review prompt. - Hardened remote-config application so malformed or rejected public patches are not persisted into startup cache.
- Hardened target apply flow so one bad applied config restores the previous target state or falls back to a muted quarantine configuration instead of poisoning logger runtime state.
- Hardened
IMGUIRuntimeLogTargetConfigurationnumeric inputs andIMGUIRuntimeLogTargetfallback behavior against semantically invalid external config values. - Added regression coverage for public-API hardening, cache behavior, snapshot isolation, and invalid remote-config inputs.
2.2.15
[2.2.15] - 2026-05-03
- Added broad hardening coverage across editor, playmode, performance, and tracked consumer-validation surfaces.
- Added production-oriented regression coverage for logger lifecycle, concurrency, batching, main-thread dispatch, target fault isolation,
OpenSearchconfig compatibility, delivery behavior, andStabilityHub. - Added performance measurements through Unity Performance Testing.
- Added repository-level logger integration and audit docs for public use.
- Added direct scripted bootstrap paths and sample-scene support for switching between resource-driven, QA, and production logger initialization flows.
- Added
DebugMode.SessionDebugRolloutPercentagefor per-target session-random debug activation. - Added
LogTargetCategory.SessionRolloutPercentagefor per-category rollout-gated target overrides, includingDebugMode.OverrideCategories. - Replaced Unity global-random rollout usage with deterministic rollout sampling so logger rollout decisions no longer advance shared
UnityEngine.Randomstate. - Made
DebugModerollout sticky for the current logger session and explicitdebugIdactivation target-specific. - Added runtime configuration startup-cache overlay support for target patches across launches.
- Updated remote-config behavior so partial nested
DebugModepatches preserve absent fields, partial target patches keep absent values intact, andDebugMode.Enabled = falseturns target debug off immediately. - Expanded logger README guidance with concrete partial
OpenSearchLogTargetConfigurationremote-patch scenarios, rollout examples, and category-rollout partial-patch cases. - Fixed generic
LogFormatforwarding for multi-argument overloads. - Fixed batch snapshot and duplicate-delivery risks in concurrent batch-drain paths.
- Fixed Apple exception-message handling and safer crash-path intake behavior.
- Fixed
AppleSystemLogTargetpayload decoration so default emptyLogAttributesno longer change plain batch/runtime messages. - Fixed async-disposal deadlock risk in
FileBackgroundAsyncWriter. - Fixed
TaskExtensions.HandleExceptions(...)fallback scheduling so missing or unusableSynchronizationContextno longer emits an internal exception log before falling back. - Fixed
UnityDebugLogSourcehandler replacement to be instance-safe under repeated test or runtime setup. - Fixed repeated pre-initialization usage so
LogManagerwarns only once before a valid initialize.
2.2.14
- Adding [HideInCallstack] to LogTrace extension method to fix the click in Unity console
Full Changelog: 2.2.12...2.2.14
2.2.13
Full Changelog: 2.2.11...2.2.12
Deprecated void LogFormat(LogLevel logLevel, string message, LogAttributes logAttributes = null, params object[] args) use void LogFormat instead
Added LogTrace extension method to be cut during compilation for non-Unity Editor and non-Unity development builds
Format message improvements
To migrate from LogTrace interface method usage to extension LogTrace, you have to reference TheBestLogger.Core and add using TheBestLogger;
2.2.11
What's Changed
- Added android log target
- Added display logattributes in unity editor console
- Notify directly into unity editor console when network issues with open search log targetby @FoxsterDev in #4
Full Changelog: 2.2.10...2.2.11
2.2.10
Full Changelog: 2.2.9...2.2.10
2.2.9
What's Changed
- hide api key in examples opensearch log target by @FoxsterDev in #3
Full Changelog: 2.2.8...2.2.9
2.2.8
What's Changed
- Added subcategory to logger + added profile markers for log target updates
- Fix extra allocation when GetLogsBatch
- Added LogTrace method for UnityEditor and Development builds into ILogger
API changes
Added LogTrace for UnityEditor and Development builds into ILogger
error CS0535: 'YourCustomLogger' does not implement interface member 'ILogger.LogTrace(string, LogAttributes)'
Full Changelog: 2.2.7...2.2.8