v1.2.0
-
Feat (options): warn when an explicit
api_urlsdisables automatic failover (qfg-41nh.26). The default (and everyQUONFIG_DOMAIN-derived)api_urlslist carries a primary AND a secondary leg, and the HTTP config-fetch hedges/fails over between them (the secondary runs on separate infrastructure). An explicitapi_urls:replaces that list wholesale, so a single-entry override silently dropped the secondary and disabled automatic failover. The client now logs one WARN at init when the caller explicitly setapi_urlsand the resolved list has fewer than two legs, pointing at the fix (pass both a primary and a secondary URL). Behavior is otherwise unchanged; no new dependencies. A new README "Failover &QUONFIG_DOMAIN" section documents the URL derivation and the failover model. -
Feat (telemetry): emit failover-behavior signals on the existing telemetry wire (qfg-41nh.18). The SDK now folds three additive failover counters into the periodic telemetry flush so the failover dashboards can be built — previously no SDK emitted any failover signal. Each flush window that saw failover activity ships one
failoverevent alongside the existingsummaries/contextShapes/exampleContextsevents:hedgeFired(config-fetch cycles where the parallel primary+secondary hedge fired its secondary leg),guardRejected(installs dropped by the reject-older ordering guard, counted on BOTH the HTTP config-fetch path and the SSE message path), andresolvedFromPrimary/resolvedFromSecondary(which upstream leg served each successful HTTP install; SSE/datadir installs are not counted).resolvedFromLkgis reserved and always0. The event is emitted only when at least one counter is non-zero in the window, so a steady-state client with no config churn emits nothing. Recording rides the existing telemetry opt-out (nothing is emitted unless telemetry is enabled) and adds only a per-config-refresh mutex increment — no new dependencies, no per-evaluation overhead. Wire shape is additive and matches sdk-go exactly (an older api-telemetry strips the unknown field). -
Add
Prefab.get('key')style usage after aPrefab.init()call [#151] -
Add
add_context_keysandwith_context_keysmethod for LoggerClient [#145]