PackageTrack
Sign in Get early access

tracelet_platform_interface

A common platform interface for the Tracelet background geolocation plugin. Used by tracelet_android and tracelet_ios implementations.

3.8.7 9.6K downloads/mo #2996 most downloaded on pub.dev Ikolvi/Tracelet

What this package is like to depend on

Last release 7 days ago

16 Aug 2026

Ships on a steady schedule

a new release about every 8 days

Nearly every release is documented

notes for 148 of 159 stable releases

Nothing withdrawn

no release was ever pulled

6 months old

164 releases · first in 2026

164 releases in the last 12 months

see the full history below

Release timeline

164 releases · Feb 2026 to Aug 2026
Release Pre-release

Releases

latest 60 of 164
  1. 3.8.7 16 Aug 2026
    Release notes

    Tracelet Sync iOS SDK v3.8.7

    Open source →
    Release notes

    Version alignment with tracelet 3.8.7.

    Open source →
  2. 3.8.6 16 Aug 2026
    Release notes

    Tracelet Sync iOS SDK v3.8.6

    Open source →
    Release notes

    Version alignment with tracelet 3.8.6.

    Open source →
  3. 3.8.6-alpha.1 15 Aug 2026 pre-release

    Nothing published for this version

  4. 3.8.5 15 Aug 2026
    Release notes

    Version alignment with tracelet 3.8.5.

    Open source →
  5. 3.8.4 13 Aug 2026
    Release notes

    FEAT: TlForegroundServiceConfig carries notificationStartedAt, notificationShowTimer and notificationOnlyAlertOnce, and TlLiveActivityConfig carries startedAt and showTimer, for the OS-rendered elapsed timer. The fields are appended at the end of each Pigeon class and the generated decoders read those indices unconditionally, so a native package must resolve against this interface version or newer — the platform packages' constraints move with this release (#376).

    FIX: the method-channel fallback sends liveActivityConfig. _iosToMap never wrote the key, so a platform implementation on that path saw no Live Activity configuration at all — timer fields or otherwise (#376).

    Open source →
  6. 3.8.3 12 Aug 2026
    Release notes

    FEAT: TlTelematicsRecord carries speed and value. Both are nullable, so a Dart side newer than the native plugin decodes a missing field as null rather than failing. severity is unchanged (#367).

    Open source →
  7. 3.8.2 11 Aug 2026
    Release notes

    Version alignment with tracelet 3.8.2.

    Open source →
  8. 3.8.1 11 Aug 2026
    Release notes

    Version alignment with tracelet 3.8.1.

    Open source →
  9. 3.8.0 08 Aug 2026
    Release notes

    FIX: every leaf Tl*Config field is nullable, so "the caller did not set this" survives the channel and the platform can leave the persisted value alone instead of overwriting it with a default. The method-channel and web transports omit unset fields rather than sending them as explicit nulls or resolved defaults (#321).

    FIX: TlForegroundServiceConfig fields are nullable, so "the caller did not set this" survives the channel and the platform can leave the persisted value alone instead of overwriting it with a default (#320).

    FIX: the method-channel path serialised no showNotificationOnPauseOnly at all, so the flag never reached the platform over that transport however it was configured — the same class of silent drop as the geofence flag in #305. It is now sent, and the whole foreground-service map omits fields the caller left unset (#320).

    Version alignment with tracelet 3.8.0.

    Open source →
  10. 3.8.0-beta.2 06 Aug 2026 pre-release
    Release notes

    FEAT: Tracelet.getCurrentLocationTuning() reports the location-filter thresholds actually in force, read back from the native processor rather than from the config you set. activeConfig is a Dart-side mirror of the last Config passed in, so it cannot tell you whether a value reached the filter that uses it — and it cannot show a transport-mode auto-tune, which changes these thresholds with no config call at all. Returns null before a tracking session has built a processor, and always null on Web (#303).

    FIX: the method-channel android config block now carries the same geofenceModeHighAccuracy value as the geofence block. Native reads the key from both, so emitting the raw Android-only flag in one and the OR'd value in the other made behavior depend on which block the platform happened to consult (#305).

    FIX: (Android + iOS) the location-filter configuration now reaches the Rust processor at runtime. setConfig() rebuilt the processor only for a short list of location keys, so trackingAccuracyThreshold, odometerAccuracyThreshold, maxImpliedSpeed, filterPolicy, enableAdaptiveMode, rejectMockLocations, mockDetectionLevel, the sparse-update trio and useKalmanFilter were accepted, cached, and then ignored until the next cold start. Because LocationProcessor captured its base thresholds at construction, this also broke the #301 guarantee that disabling autoTuneFromTransportMode restores "the values you configured" — it restored the values captured when the processor was built. A new set_base_tuning carries thresholds in without dropping the positional anchor a rebuild would cost (the reason retune exists, #299); the remaining constructor-only parameters trigger a targeted rebuild, and the Kalman filter is toggled independently of the processor (#303).

    FIX: (iOS) the whole LocationFilter block now reaches the config cache. Every transport serializes it as a filter sub-map nested inside geo, but the iOS ConfigManager flattened only one level and then stored that block as a single opaque value no getter ever read — so trackingAccuracyThreshold, odometerAccuracyThreshold, maxImpliedSpeed, rejectMockLocations, mockDetectionLevel and useKalmanFilter were pinned to their defaults (100 m / 0 m / 80 m/s / off) no matter what was configured, at ready() as well as at runtime. The change detection added above compared key names absent from both config snapshots, so a filter change triggered neither the targeted rebuild nor setBaseTuning — the fix landed on a bridge that was never connected. Caches persisted in the nested shape are lifted on load, because autoResumeTracking() starts the pipeline off the persisted cache with no ready() in between (#303).

    FIX: (Android + iOS) LocationFilter.policy is now applied. It is serialized under policy by every transport, while getFilterPolicy() — and the processor-rebuild key list — read filterPolicy, so the value was cached under a name nothing asked for and the policy stayed at adjust however it was configured. It is renamed during flattening, so both readers see it (#303).

    FIX: (Android + iOS) logMaxDays is now applied. Both platforms pruned logs only by a row count derived from logLevel, so the configured retention window was accepted and discarded — logMaxDays: 3 and logMaxDays: 90 behaved identically. Log pruning now enforces both caps (#304).

    FIX: (iOS) disableLocationAuthorizationAlert is now honored. The permission manager requested authorization unconditionally, so apps that wanted to own their pre-permission UX could not suppress the system prompt. It now reports the current status instead of prompting (#304).

    FIX: (Web) GeofenceConfig.geofenceModeHighAccuracy is now honored. The web plugin read only the deprecated AndroidConfig.geofenceModeHighAccuracy, so setting the documented cross-platform flag had no effect on web. It is now OR'd with the deprecated flag, matching both Pigeon hosts, and geofenceExitAccuracyMax is carried too (#305).

    FIX: the method-channel transport no longer drops geofence configuration. _geofenceToMap emitted two of the five geofence keys, silently discarding geofenceModeHighAccuracy (so no OR was performed on that path), geofenceInitialTrigger, and geofenceExitAccuracyMax — the #276 tunable (#305).

    FIX: the four built-in TraceletProfile presets now set high-accuracy geofencing through the cross-platform geofence block instead of the deprecated android one. TraceletProfile.highAccuracy therefore enables it on iOS as well, and the deprecated field has no remaining internal dependants (#305).

    FIX: the pure-Dart GeofenceEvaluator now applies the geofenceExitAccuracyMax policy (-1 full gating, 0 disabled, N clamp). It is documented as a mirror of the Rust core but gated EXIT on raw accuracy, diverging from both native managers, which pass accuracy through effectiveExitAccuracy first (#276). The parameter defaults to -1, so existing callers are unaffected (#306).

    FIX: the Rust geofence evaluator drops pending exit confirmations for fences a re-index no longer covers. clear() and remove_geofence() both pruned them; index_geofences() did not, so a half-accumulated count survived and could contribute to a later EXIT (#306).

    DEPRECATED: AuditConfig.includeExtrasInHash and AttestationConfig.verificationUrl were never implemented — no platform reads either value. They are now annotated so the analyzer surfaces it, rather than being silently discarded at runtime. Implementing them is not a patch: the first changes what the audit chain hashes and so invalidates every existing chain, and the second needs a token-verification transport (#304).

    Open source →
  11. 3.8.0-beta 06 Aug 2026 pre-release
    Release notes

    Version alignment with tracelet 3.8.0-beta.

    Open source →
  12. 3.8.0-alpha 05 Aug 2026 pre-release
    Release notes

    Version alignment with tracelet 3.8.0-alpha.

    Open source →
  13. 3.7.6 05 Aug 2026
    Release notes

    Version alignment with tracelet 3.7.6.

    Open source →
  14. 3.7.5 04 Aug 2026
    Release notes

    Version alignment with tracelet 3.7.5.

    Open source →
  15. 3.7.4 03 Aug 2026
    Release notes

    Version alignment with tracelet 3.7.4.

    Open source →
  16. 3.7.3 01 Aug 2026
    Release notes

    Version alignment with tracelet 3.7.3.

    Open source →
  17. 3.7.2 01 Aug 2026
    Release notes

    FIX: TlMotionConfig.shakeThreshold, stillThreshold and stillSampleCount are now nullable, so "unset" can be expressed across the platform channel. They were required, which meant Dart's defaults (the Android-tuned values) were transmitted unconditionally and silently overrode each platform's own tuned defaults — on iOS stillThreshold: 0.4 m/s² arrived as 0.04 g, about four times stricter than the 0.15 g iOS default. null now means "use the platform default"; the Pigeon bindings were regenerated from the schema (#288).

    Open source →
  18. 3.7.1 29 Jul 2026
    Release notes

    Version alignment with tracelet 3.7.1.

    Open source →
  19. 3.7.0 29 Jul 2026
    Release notes

    Version alignment with tracelet 3.7.0.

    Open source →
  20. 3.6.15 28 Jul 2026
    Release notes

    Version alignment with tracelet 3.6.15.

    Open source →
  21. 3.6.14 27 Jul 2026
    Release notes

    Version alignment with tracelet 3.6.14.

    Open source →
  22. 3.6.13 26 Jul 2026
    Release notes

    Version alignment with tracelet 3.6.13.

    Open source →
  23. 3.6.12 26 Jul 2026
    Release notes

    Version alignment with tracelet 3.6.12.

    Open source →
  24. 3.6.11 25 Jul 2026
    Release notes

    Version alignment with tracelet 3.6.11.

    Open source →
  25. 3.6.10 24 Jul 2026
    Release notes

    Version alignment with tracelet 3.6.10.

    Open source →
  26. 3.6.9 24 Jul 2026
    Release notes

    Version alignment with tracelet 3.6.9.

    Open source →
  27. 3.6.8 23 Jul 2026
    Release notes

    Version alignment with tracelet 3.6.8.

    Open source →
  28. 3.6.7 23 Jul 2026
    Release notes

    Version alignment with tracelet 3.6.7.

    Open source →
  29. 3.6.6 22 Jul 2026
    Release notes

    Version alignment with tracelet 3.6.6.

    Open source →
  30. 3.6.5 21 Jul 2026
    Release notes

    Version alignment with tracelet 3.6.5.

    Open source →
  31. 3.6.4 20 Jul 2026
    Release notes

    Version alignment with tracelet 3.6.4.

    Open source →
  32. 3.6.3 19 Jul 2026
    Release notes

    Version alignment with tracelet 3.6.3.

    Open source →
  33. 3.6.2 18 Jul 2026
    Release notes

    Version alignment with tracelet 3.6.2.

    Open source →
  34. 3.6.1 17 Jul 2026
    Release notes

    Version alignment with tracelet 3.6.1.

    Open source →
  35. 3.6.0 16 Jul 2026
    Release notes

    FEAT: Tracelet.updateLocationProviderOptions() — live provider-options override without a pipeline restart, on iOS and Android (#241).

    Version alignment with tracelet 3.6.0.

    Open source →
  36. 3.5.7 13 Jul 2026
    Release notes

    FIX: Build fails without AGP built-in Kotlin (AGP <9 / builtInKotlin=false) (#239).

    Open source →
  37. 3.5.6 09 Jul 2026
    Release notes

    FIX: Custom sync body 400 Bad Request HTTP errors now gracefully return fallback results instead of propagating fatal exceptions in native Sync engines (#238).

    Open source →
  38. 3.5.5 07 Jul 2026
    Release notes

    FIX: Ensure foreground service is properly started in periodic mode when configured (#237).

    Open source →
  39. 3.5.4 30 Jun 2026
    Release notes

    FIX: Enrich geofence transition events with real coordinate metrics and battery (#231). FIX: Propagate runtime setConfig changes to active native tracking/sensor loops (#230). FIX: Null-guard subsystems during teardown so Activity destruction never throws (#227). FIX: Android: standard geofence mode no longer runs a foreground service, complying with Google Play's 2026-10-28 foreground-service-for-geofencing policy.

    Open source →
  40. 3.5.3 30 Jun 2026
    Release notes

    FIX: Added explicit ProGuard keep rules for TraceletStartupProvider in the tracelet_android package to prevent ClassNotFoundException on process start when aggressive shrinking (like R8 full mode) is used (#228).

    Open source →
  41. 3.5.2 23 Jun 2026
    Release notes

    FIX: Android continuous tracking no longer silently stops after a while on aggressive OEMs (Samsung One UI, etc.). The foreground-service wakelock used a fixed 10-minute auto-expiry and was never renewed, so once it lapsed the CPU could deep-sleep and FusedLocationProvider stopped delivering updates with no error or callback. The wakelock is now renewed for the lifetime of tracking (#222).

    Open source →
  42. 3.5.1 19 Jun 2026
    Release notes

    FEAT: Crash detection now uses the device barometer as an extra confirmation clue — a serious crash or airbag deployment causes a quick cabin air-pressure change that raises crash confidence on phones with a pressure sensor; phones without one skip it with no downside (#173). FEAT: Stronger crash/fall corroboration — a sudden post-impact speed collapse (#181) and the free-fall → impact → stillness signature (#180) now raise confidence, and confirmation is process-death-safe so a confirmed event survives the app being killed (#182).

    Open source →
  43. 3.5.0 19 Jun 2026
    Release notes

    FEAT: Crash-detection ML model promoted from beta to stable (trained on a CC0 / public-domain dataset, cleared for commercial use) and the on-device model cache now auto-re-downloads on a new published version (#183).

    Open source →
  44. 3.4.2 18 Jun 2026
    Release notes
    • REFACTOR: reformat test files and sync body context for consistent code style. (5552f795)
    Open source →
    Release notes
    • FEAT: implement telematics deduplication with synced-state tracking and improved foreground service fault tolerance. (0581c6e7)
    Open source →
  45. 3.4.1 17 Jun 2026
    Release notes
    • FEAT(geofence): cross-platform geofenceModeHighAccuracy via GeofenceConfig. (491d5b83)
    • DOCS: add Discord community invitation link to READMEs and website documentation. (c3baa1c3)
    Open source →
    Release notes
    • FEAT(geofence): cross-platform geofenceModeHighAccuracy via GeofenceConfig. (491d5b83)
    • DOCS: update FAQ with iOS build setup and geofencing mock location testing details. (063145fe)
    Open source →
  46. 3.4.0 17 Jun 2026
    Release notes
    • REFACTOR: extract issues 185 and 198, fix iOS config mapping. (1d088e0d)
    • FIX: resolve accuracy priority mappings in Android and iOS. (65f5127d)
    Open source →
    Release notes
    • FIX: forward desiredAccuracy and per-call extras through the pigeon options conversion — they were silently dropped, so getCurrentPosition(extras:/desiredAccuracy:) never reached native (#201).
    • REFACTOR: extract issues 185 and 198, fix iOS config mapping. (1d088e0d)
    Open source →
  47. 3.3.4 16 Jun 2026
    Release notes

    CHORE: bump version.

    Open source →
  48. 3.3.3 15 Jun 2026
    Release notes
    • FIX(android): deliver headless geofence events after reboot in high-accuracy mode (#185). (b197dc5f)
    Open source →
    Release notes
    • FIX: Correct the pigeon mock stub for TlGeofenceConfig to accommodate removed fields and update config tests. (065b3bbc)
    • FIX(android): deliver headless geofence events after reboot in high-accuracy mode (#185). (b197dc5f)
    Open source →
  49. 3.3.2 15 Jun 2026
    Release notes
    • FIX(plugin): correct native-map -> Pigeon field mapping (#175). (feb17dcf)
    Open source →
    Release notes
    • FIX (Location data, Android/iOS): Several location-map fields surfaced as static/default values in the Dart layer because the native-map → platform-channel converters dropped or mis-keyed them (#175):

      • getCurrentPosition(extras:, desiredAccuracy:) were silently ignored on Android (never forwarded to the SDK) — now applied.
      • battery.isCharging was always false — the converter read isCharging instead of the native snake_case is_charging.
      • isMoving was always false — read isMoving instead of native is_moving.

      Converters now read the native keys (with camelCase fallback), and field-by-field regression tests over the converters were added on both platforms to prevent recurrence.

    • TUNE (Crash detection): Lowered the default crashGThreshold from 3.0 g to 2.0 g. Validation against the large VZCrash field dataset showed the 3.0 g speed-gated rule missed ~48% of real crashes (median impact ~2.2 g) while the false-positive budget was small. Crash detection is opt-in with a cancel-countdown, so the default now favours recall — raise it if you see too many prompts. See #173. (Crash detection remains beta pending first-party field validation.)

    Open source →
  50. 3.3.0 14 Jun 2026
    Release notes
    • FEAT (Driving & Safety): On-device driving-behavior telematics — harsh_braking / harsh_acceleration / harsh_cornering / speeding via TelematicsConfig + Tracelet.onDrivingEvent (opt-in, default off) (#163).
    • FEAT (Driving & Safety): On-device transport-mode classifier (still/walking/running/cycling/vehicle) fusing accelerometer + GPS via ClassifierConfig + Tracelet.onModeChange (#164).
    • FEAT (Driving & Safety): Crash & fall detection with a cancel-countdown confirmation flow via ImpactConfig + Tracelet.onImpact and Tracelet.confirmImpact / Tracelet.cancelImpact (opt-in, default off) (#165).
    • All three features are default-off and side-channel — no change to existing tracking when disabled. See Driving & Safety.
    Open source →
  51. 3.2.19 13 Jun 2026
    Release notes

    CHORE: version bump for patch release

    Open source →
  52. 3.2.18 12 Jun 2026
    Release notes
    • FIX (Native): ready() / getState() now populate State.config with the active configuration instead of leaving it permanently null (#147).
    • FEAT: Add HttpConfig.syncInterval for interval-based sync — the documented repeating-timer cadence was missing from the Dart config and the Pigeon layer; the native interval timer now flushes the offline queue on this cadence (#149).
    • FIX (Native): destroySyncedLocations() returns the real number of synced-and-pruned locations instead of a hardcoded 0 stub (#154).
    • FEAT: Expose the offline queue with getPendingLocations() and getPendingLocationCount() (#159).
    • FIX (Native): Honor the useKalmanFilter config key so the Extended Kalman Filter is no longer silently disabled by a key mismatch (#148).
    • FIX (Native): Propagate the detected activity (walking / driving / still) into recorded locations — fixes a permanent "activity": "unknown" (#155).
    • FIX (Native): Rebuild the native location processor when ready() applies a new config, so settings such as distanceFilter take effect immediately instead of using stale defaults (#157).
    • FIX (Native): getCount() honors time-bound queries instead of always returning the whole-database total (#152).
    • FIX: Guard the AuditConfig hash-algorithm mapping so configuring sha384 / sha512 no longer crashes with a fatal RangeError during ready() — unsupported variants fall back to sha256 (#150).
    • FIX (Native): The HTTP sync payload now includes each point's motion state is_moving (#151) and its trigger event (location / motionchange / heartbeat / geofence) (#156) — both were previously omitted by the native sync record.
    Open source →
  53. 3.2.17 12 Jun 2026
    Release notes
    • FIX (Native): Resolve iOS auto-sync thread starvation by offloading synchronous HTTP requests to a background DispatchQueue to prevent blocking Swift Concurrency pools (#146).
    • CHORE (Docs): Fix Nextra changelog rendering bug and improve auto-translation glossary script for internationalization.
    Open source →
  54. 3.2.16 12 Jun 2026
    Release notes
    • FIX (Native): Resolve Android/iOS getting stuck in the moving state and never transitioning back to stationary, which kept continuous GPS active and drained the battery. The accelerometer stillness sampler now stays active during the stop-timeout countdown and requires sustained motion — rather than a single noisy or stale sample — to abort it (#142).
    • FIX (Native): Background and post-reboot location captures are persisted (and therefore synced) again. Headless tracking (killed-state relaunch / boot) never calls ready(), so an internal readiness guard silently dropped every captured location before it reached the database, leaving auto-sync with nothing to upload.
    • FIX (Android): The foreground-service notification now reliably appears when the app is backgrounded or terminated with showNotificationOnPauseOnly enabled. The app's own foreground service skewed foreground/background detection (and OS process-importance updates lag), so the pause-only notification was suppressed even though tracking and syncing continued.
    Open source →
  55. 3.2.15 11 Jun 2026
    Release notes
    • FIX (Native): Allow getState() and stop() to be called before ready() is invoked, correctly reporting persistent state and shutting down background services if the app was restarted from a killed state.
    • CHORE: Update dependencies and constraints.
    • FIX: Resolve MissingPluginException and test timing issues with setHasCustomSyncBodyBuilder.
    Open source →
  56. 3.2.14 11 Jun 2026
    Release notes
    • FIX(sync): keep method channel alive to avoid iOS timeout bugs when no builder is registered. (9a083478)
    • FIX(sync): resolve issue 134 where custom sync body timeouts prevented background syncs. (7fa16fdf)
    • FIX(sync): fix background auto-sync abortion when no custom builder is registered (Issue #134). (631542a1)
    • DOCS: add official documentation URL to all package READMEs. (9eb6951e)
    • DOCS: integrate nextra website and update pubspec URLs. (99b7fda8)
    Open source →
    Release notes
    • DOCS: add official documentation URL to all package READMEs. (9eb6951e)
    • DOCS: integrate nextra website and update pubspec URLs. (99b7fda8)
    Open source →
  57. 3.2.13 10 Jun 2026
    Release notes
    • CHORE: Version bump to 3.2.13 to stay in lockstep with the federated set (Android startOnBoot reboot-tracking fix — see tracelet_android). No changes to this package.
    Open source →
  58. 3.2.12 10 Jun 2026
    Release notes
    • CHORE: Re-release to align the full federated package set and native SDKs to a single consistent version. The 3.2.11 release published with mismatched versions across some packages (a few resolved to 3.2.10). No functional code changes.
    Open source →
  59. 3.2.11 09 Jun 2026
    Release notes
    • CHORE: Version bump to align with 3.2.11 platform release.
    Open source →
  60. 3.2.10 09 Jun 2026
    Release notes
    • FIX: streamline geofence event payload handling in fromMap method.
    • FIX: ensure geofence action (ENTER/EXIT/DWELL) is correctly parsed from nested payloads on all platforms and update CI to scan dynamic frameworks for symbols.
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive