sankofa_flutter 0.2.0
sankofa_flutter: ^0.2.0 copied to clipboard
Sankofa Flutter SDK — Deploy (OTA patches via KBC interpreter), Analytics, Replay, Catch, Switch, Config, and Pulse, with offline queueing and Ed25519-signed envelopes.
Changelog #
0.2.0 — Sankofa Deploy: Flutter Code (OTA patches via KBC interpreter) #
- Sankofa Deploy module — Path C iOS OTA via the Sankofa-fork
Flutter engine's
dart::Interpreter::Run. No App Store resubmission, no JIT entitlement. Patches ship asSANKOFA_KBC_ENVELOPE v1files signed with project-bound Ed25519 keypairs. Sankofa.deploy.fetchAndApplyKbcPatch— single-call fetch + verify + apply path for Tier-A and Tier-B patches.Sankofa.deploy.tryApplyStagedKbcPatch— boot-time re-apply for OTA persistence across cold restart.- Rollback safety — boot-counter auto-disables a patch
after
kbcRollbackThreshold(default 3) consecutive crashes; host callsnotifyKbcPatchReadyafter first frame to reset. - Ed25519 envelope verification —
SankofaDeployOptions. signingPubkeyB64opt-in; SDK refuses unsigned or non-verifying envelopes when set. Handshake-distributed pubkeys merge with the host-embedded key for graceful rotation. - Telemetry —
kbc_apply_success/_failed,kbc_boot_apply_success/_failed/_skipped_rollbackfire on every apply path with error-message + cause-class context for dashboard rollups. Sankofa.deploy.getStagedKbcPatchInfo— read-only view of the active patch (label, dartVersion, engineCommit, signed flag, size, modifiedAt) for debug screens.
Hardening (data integrity, privacy, crash durability, robustness) #
- Pulse auto-show — surveys flagged
auto_showin the dashboard now present automatically (parity with iOS/Android). NewSankofaPulse.setNavigatorKey(GlobalKey<NavigatorState>)gives the pump a presentation anchor; honours per-survey cooldown + delay and re-evaluates on app foreground / after each fetch. Screen/URL targeting now works (the eligibility context populates the current screen).refreshSurveys()forces a fresh fetch afteridentify(). - Analytics queue — per-status delivery disposition (transient failures retry, client errors drop) instead of all-or-nothing, plus a hard size cap + 48h TTL and single-flight flush. Custom property numbers/booleans keep their native JSON type.
- Session replay privacy — automatic masking of text inputs
(always for obscured fields),
SankofaMaskregions, and optional text/images; the servermask_all_inputsflag is now enforced. Bounded frame/event buffers, no data loss on failed uploads, serialized uploads. - Crash durability — fatal crashes are spooled synchronously and
recovered (with full payload) + flushed on the next launch; fatals
are never sampled out;
PlatformDispatcher.onErrorpreserves the host's default error propagation. - Lifecycle — correct cold-start session rotation,
paused/hidden-only backgrounding, race-free init, andreset()re-points replay to the new anonymous id. - Config/Switch —
config.get<bool>coerces 1/0 and "true"/"false"; change listeners deliver a consistent snapshot.
0.1.0 #
- Added high-fidelity session replay mode.
- Implemented remote configuration fetching for dynamic sampling.
- Added event-based high-fidelity recording triggers.
- Updated dependency management for cleaner integration.
0.0.1 #
- Initial release of Sankofa Flutter SDK.
- Modular architecture for easier maintenance.
- Support for event tracking, identity management, and session replay (wireframe & screenshot modes).
- Automatic UTM parameter capturing from deep links.
- App lifecycle observation for automatic event tracking and queue flushing.