synheart_behavior 0.4.0
synheart_behavior: ^0.4.0 copied to clipboard
Lightweight Flutter SDK for behavioral signal collection on iOS/Android — taps, scrolls, idle gaps, typing rhythm. No text, content, or PII captured.
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased #
0.4.0 - 2026-05-20 #
This release narrows the SDK's responsibility: it is now a behavioral event producer. Per-session aggregate metrics that the SDK used to compute on-device are no longer produced here — a downstream consumer derives them from the event stream.
Breaking #
- Session-end aggregation removed.
BehaviorSessionSummaryno longer carries computed aggregates.behavioralMetricsis nowBehavioralMetrics?and isnullunless a consumer has populated it;interactionIntensity,taskSwitchRate,burstiness,scrollJitterRate,notificationIgnoreRate,notificationClusteringIndex, andtypingSessionSummaryare no longer emitted at session end.toJsonomitsbehavioral_metricswhen absent;fromJsonyieldsnullwhen the key is missing. Callers that read these fields must null-check, or compute the aggregates themselves from the event stream. - The native plugins (iOS and Android) drop the
behavioral_metrics,notification_ignore_rate,notification_clustering_index, andtyping_session_summarykeys from both the session-end payload andcalculateMetricsForTimeRange().
Added #
BehaviorEvent.appSwitch(...)typed factory — closes a cross-SDK parity gap (Kotlin and Swift already exposedappSwitch). Theapp_switchvalue already existed onBehaviorEventType; this adds the matching Dart constructor.
Changed #
BehaviorStatsexposestypingCadence,interKeyLatency, andburstLengthas nullable fields again, so the stats shape stays symmetric with the Swift and Kotlin SDKs on the wire.
Kept #
- Real-time stats via
getCurrentStats(cheap, last-seen values). - Raw event emission — every event type is unchanged.
- Raw counts on the session summary:
notification_count,notification_ignored,call_count,call_ignored,clipboard_*, and activity totals.
0.3.0 - 2026-05-07 #
OSS-launch refactor pass.
Breaking #
- Removed
motion_state_inferencepublic export and the underlyingMotionFeatureExtractor/MotionSignalCollectorclassifier path. Motion classification is no longer part of the public surface. - Removed
behavior_window_aggregator,behavior_window_features, andbehavior_feature_extractor(already deprecated; window features moved out of the real-time event stream).
Added #
motion_samplemodel export — raw accelerometer sample batching for callers that need to do their own classification.core/loggerexport — pluggable logging shared with the rest of the Synheart SDK family.app_switchevent type and improved gesture/touch handling on both platforms.
Changed #
- Renamed Android package
com.synheart→ai.synheartto match the org-wide naming convention. - Cleaned internal-only language and stale runtime references from source comments and README.
0.2.1 - 2026-05-06 #
Initial open-source release of the Synheart Behavior SDK for Flutter.
The SDK collects privacy-preserving behavioral signals (taps, scrolls,
swipes, app switches, idle gaps, typing session counts) on iOS and
Android. No text, content, or PII is captured. Behavioral and typing
metrics are computed locally by the native iOS / Android implementations
and surfaced through BehaviorSessionSummary (behavioralMetrics,
typingSessionSummary).
Public surface #
SynheartBehavior,BehaviorConfig,BehaviorEvent,BehaviorSession,BehaviorSessionSummary,BehavioralMetrics,TypingSessionSummary,BehaviorStats.- Streaming API for real-time behavioral events; session-tracking API with summaries; manual stats polling.
- On-demand metrics for ended sessions:
calculateMetricsForTimeRange().
Platform support #
- iOS 12.0+
- Android API 21+ (Android 5.0+)
- Flutter 3.10.0+