Features
- Stamp the device echo’s layout digest
- Allow redistribution of the sdk inside games
- Publish to the public registry behind packages.pioneeroptimisation.com
Features
- Send and persist the server-minted user proof
- Generate typed payload accessors and detect schema drift
- Expose the chosen option’s payload on DecisionResult
- Stamp device fields on every event envelope
- Stamp the install anchor on every client event
- Apply the serving overlay on device
- Local by default with a sampled parity probe
Fixes
- Recover auth after a degraded init and re-wire decisions
- Hand the package link.xml to the linker so SQLite survives stripping
- Stop setting MaxConnectionsPerServer, which throws in players
- Compile PioStateNative.m with objc exceptions enabled
- Sync PioVersion, gate the drift, isolate harness queues
Breaking changes
- Remove TrackReward
Changes
- Removed
PIO.TrackReward; report outcomes withPIO.TrackEvent(eventType, value)so reward signals can be derived by the platform.
Features
- Generate lifecycle-aware action IDs
- Add RoutingDecisionSource + LocalDecisionSource + bundle cache
- Handle cold-start fallback policy
- Add numeric event values
- Auto-mark editor and dev-build events as internal
- Emit pause-aware dwell heartbeats
- Remove TrackReward
- Local kv record store with served_state echo
- Pio-oxide P/Invoke bindings + UPM Plugins packaging
- Vendor v0.2.12 natives + wire local routing at init
- Honour child_directed by suppressing ATT and ad-id capture
- Collect device_region for geo-country mismatch
Features
- Embed the Worker’s served-state echo into decision events
- Implement 9 missing baseline state collectors
- Implement the 16 m2 baseline state fields
Breaking changes
- Backend URLs move from /accounts/{account_id}/games/{game_id}/… to /accounts/{account_id}/projects/{project_id}/…; the studio config property PioSettings.GameId is renamed to ProjectId (existing PioSettings.asset values auto-migrate via [FormerlySerializedAs(“GameId”)]).
Features
- Stamp contract_version and model_version into decision events
- Rename SDK backend URLs to /projects/ and studio config to ProjectId
Fixes
- Ship SQLite native libs for Android and iOS
Features
- Add in-game debug overlay (PioConfig.ShowDebugOverlay)
- Add Roslyn analyser for TrackEvent/SetState key validation
- Add POST /auth JWT exchange with retry and background refresh
- Generate PioActions, schema diff, and focus auto-refresh
- Add a PioSettings asset + zero-arg PIO.Init()
- Add consent-driven tracking mode with CMP integration point
- M8 decision api: getdecision, clouddecisionsource, event emission
- Consolidate menus under PIO; restyle Decision Simulator
- Drive Decision Simulator form from the model feature contract
- Play-mode diagnostics windows (Inspector, Event Log, validator)
- Polish PIO Inspector + Event Log UI
- Setup wizard, verify integration and decision simulator
- Unify SDK config on PioSettings across wizard, codegen, verify
- Custom error reporter and PIO.OnError API
- Add trackEvent, trackReward, setState and editor codegen
- Disk-backed event pipeline with SQLite queue and flush worker
- Add HTTPS connection warming before auth
- Add PIO.Init API, state machine, ULID user_id persistence
- Add offline/mock mode (PioOptions.OfflineMode)
- Collapse PioEnvironment to Production + URL overrides
- Add session lifecycle with ULID session_id and auto timeout
- M4 state capture: collectors, registry, snapshot serialization
Fixes
- Degrade to fallbacks on auth failure at init instead of failing
- Close SQLite event queue before domain reload (Editor crash)
- Rename processor_frequency → cpu_frequency, mono_used_mb → mono_used