tracelet_doctor
Drop-in diagnostic overlay widget for Tracelet. Visualizes permissions, battery health, OEM compatibility, sensor availability, and tracking state with actionable fix suggestions.
3.8.7
4.4K downloads/mo
#4026 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 79 of 86 stable releases
2 versions withdrawn
withdrawn after publishing
3 months old
91 releases · first in 2026
91 releases in the last 12 months
see the full history below
Release timeline
91 releases · May 2026 to Aug 2026Releases
latest 60 of 91-
3.8.716 Aug 2026Release notes
Open source →FIX: the bug report names the Tracelet version that produced it, and gained a Location stream health section — stalls, recoveries and battery-budget throttle movements lifted out of the general log, each stall line carrying the rejection histogram, the gate the last fix was measured against, the configured gate beside it and the thresholds in force. These are written on the always-on lifecycle channel, so the section is populated even for an app running at the default
logLevel(#397, #398). -
3.8.616 Aug 2026 -
3.8.515 Aug 2026 -
3.8.413 Aug 2026Release notes
Open source →FEAT: the foreground-service card renders
suppressedas a state of its own. A notification hidden on purpose byshowNotificationOnPauseOnlyused to read as "not confirmed yet", indistinguishable from the OS refusing a promotion; it is now labelled and explained as the configured behaviour it is — tracking continues, the service is promoted again when the app backgrounds, and the setting is ignored entirely understopOnTerminate: false(#378). -
3.8.312 Aug 2026 -
3.8.211 Aug 2026 -
3.8.111 Aug 2026 -
3.8.008 Aug 2026Release notes
Open source →FEAT:
TraceletBugReportgains a## Session lifecycle (background & killed-state trace)section carrying what the background pipelines actually did — service start/stop, sticky restarts and boot bootstrap outcomes on Android, relaunch and termination boundaries on iOS, and motion-state transitions on both. These are recorded regardless oflogLevel, so a pasted report carries them even when the developer never enabled logging. Given its own section for the same reason as the geofence trace: lifecycle events are rare while routine chatter is not, so atdebug/verbosethe entry from the overnight run that actually failed is exactly the one pushed out of the## Logswindow. An absent entry is diagnostic too —motion (foreground)with no killed-state counterpart means the background detector never ran, and an iOStermination:with no followingrelaunch:means the app was never woken (#318).FEAT: a Location Filter section reports the thresholds
Tracelet.getCurrentLocationTuning()says are actually in force, beside the ones you configured. Every other card readsTracelet.activeConfig— a Dart-side mirror of the lastConfigpassed in — so until now the Doctor could only show what was asked for, never what the native filter was using. The verdict chip separates the two ways those can disagree: withautoTuneFromTransportModeon, a committed transport mode owns the thresholds and the difference is expected (Auto-tuned); with it off, nothing should be moving them and the configured value did not reach the processor (Mismatch, the #303 failure class). ReadsN/Abefore a tracking session has built a processor, and always on Web (#303).FEAT:
TraceletBugReportgains a## Location filter (in force vs. configured)section carrying the same two columns and the same auto-tune verdict, so a pasted issue distinguishes an auto-tune from configuration that never landed without a maintainer having to ask (#303). -
3.8.0-beta.206 Aug 2026 pre-release -
3.8.0-beta06 Aug 2026 pre-release -
3.8.0-alpha05 Aug 2026 pre-release -
3.7.605 Aug 2026 -
3.7.504 Aug 2026 -
3.7.403 Aug 2026 -
3.7.301 Aug 2026Release notes
Open source →FIX: the Permissions card no longer reports a granted motion/activity permission as a red "Restricted".
HealthCheck.motionPermissioncarries aMotionAuthorizationStatusindex (notDetermined,granted,deniedForever→ 0, 1, 2), but the card decoded it against CoreMotion'sCMAuthorizationStatusscale, where index 1 isrestricted— so a healthy device showed a red "Restricted" beside an "All Clear" warning list, the warning path checking== 2and being unaffected. The card now switches over the enum via the newHealthCheck.motionAuthorizationgetter, which makes the mapping exhaustive at compile time, and the dead3 => 'Granted'branch (unreachable — the enum has no index 3) is gone.FIX: the bug report prints the motion permission by name rather than as a bare index, so
Motion permission | 0no longer reads as a boolean or a count.FEAT: the bug report gained a Geofence transitions (decision trace) section, filtering
[geofence]log lines and scanning 2000 entries rather than the 500-entry general log window, so rare ENTER/EXIT crossings are not buried by lifecycle chatter. Both the copy and share actions include it. -
3.7.201 Aug 2026 -
3.7.129 Jul 2026 -
3.7.029 Jul 2026 -
3.6.1528 Jul 2026 -
3.6.1427 Jul 2026 -
3.6.1326 Jul 2026 -
3.6.1226 Jul 2026 -
3.6.1125 Jul 2026 -
3.6.1024 Jul 2026 -
3.6.924 Jul 2026 -
3.6.823 Jul 2026 -
3.6.723 Jul 2026 -
3.6.622 Jul 2026Release notes
Open source →FEAT: Added a Foreground Service card to the Doctor overlay and a matching section to the generated bug report, powered by
Tracelet.getForegroundServiceHealth(). It surfaces the authoritative native foreground-service state — whether the service is running and promoted to the foreground, and the last promotion result (success/deferred/failed) with its failure class and message — so "tracking stops in the background" reports show whether the foreground service was actually running. iOS/web (which have no foreground service) are reflected accordingly (#255). -
3.6.521 Jul 2026 -
3.6.420 Jul 2026 -
3.6.319 Jul 2026 -
3.6.218 Jul 2026 -
3.6.117 Jul 2026 -
3.6.016 Jul 2026Release notes
Open source →FEAT:
Tracelet.updateLocationProviderOptions()— live provider-options override without a pipeline restart, on iOS and Android (#241).Version alignment with tracelet 3.6.0.
-
3.5.713 Jul 2026Release notes
Open source →FIX: Build fails without AGP built-in Kotlin (AGP <9 / builtInKotlin=false) (#239).
-
3.5.609 Jul 2026Release notes
Open source →FIX: Custom sync body 400 Bad Request HTTP errors now gracefully return fallback results instead of propagating fatal exceptions in native Sync engines (#238).
-
3.5.507 Jul 2026Release notes
Open source →FIX: Ensure foreground service is properly started in periodic mode when configured (#237).
-
3.5.430 Jun 2026Release notes
Open source →FIX: Enrich geofence transition events with real coordinate metrics and battery (#231). FIX: Propagate runtime
setConfigchanges 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. -
3.5.330 Jun 2026Release notes
Open source →FIX: Added explicit ProGuard keep rules for
TraceletStartupProviderin thetracelet_androidpackage to preventClassNotFoundExceptionon process start when aggressive shrinking (like R8 full mode) is used (#228). -
3.5.223 Jun 2026Release notes
Open source →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).
-
3.5.119 Jun 2026Release notes
Open source →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).
-
3.5.019 Jun 2026Release notes
Open source →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).
-
3.4.218 Jun 2026Release notes
Open source →- REFACTOR: reformat test files and sync body context for consistent code style. (5552f795)
-
3.4.117 Jun 2026 -
3.4.017 Jun 2026 -
3.3.416 Jun 2026 -
3.3.315 Jun 2026 -
3.3.215 Jun 2026Release notes
Open source → -
3.3.114 Jun 2026Release notes
Open source →- FIX(crash): harden crash/fall detection (confirmation survival, threshold, debounce, sample rate). (0a17e804)
-
3.3.014 Jun 2026Release notes
Open source →- FEAT (Doctor): One-tap bug report — the Copy button now bundles health + active configuration (secrets redacted) + recent logs + telematics into a single Markdown report, and a new Share button exports it as a downloadable
.mdfile. Available programmatically viaTraceletBugReport.build()andTraceletBugReport.redactConfig(). - FEAT (Doctor): Copy logs button added to the log viewer sheet.
- FEAT (Driving & Safety): On-device driving-behavior telematics —
harsh_braking/harsh_acceleration/harsh_cornering/speedingviaTelematicsConfig+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.onImpactandTracelet.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.
- FEAT (Doctor): One-tap bug report — the Copy button now bundles health + active configuration (secrets redacted) + recent logs + telematics into a single Markdown report, and a new Share button exports it as a downloadable
-
3.2.1913 Jun 2026 -
3.2.1812 Jun 2026Release notes
Open source →- FIX (Native):
ready()/getState()now populateState.configwith the active configuration instead of leaving it permanentlynull(#147). - FEAT: Add
HttpConfig.syncIntervalfor 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 hardcoded0stub (#154). - FEAT: Expose the offline queue with
getPendingLocations()andgetPendingLocationCount()(#159). - FIX (Native): Honor the
useKalmanFilterconfig 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 asdistanceFiltertake 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
AuditConfighash-algorithm mapping so configuringsha384/sha512no longer crashes with a fatalRangeErrorduringready()— unsupported variants fall back tosha256(#150). - FIX (Native): The HTTP sync payload now includes each point's motion state
is_moving(#151) and its triggerevent(location / motionchange / heartbeat / geofence) (#156) — both were previously omitted by the native sync record.
- FIX (Native):
-
3.2.1712 Jun 2026Release notes
Open source →- 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.
-
3.2.1612 Jun 2026Release notes
Open source →- 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
showNotificationOnPauseOnlyenabled. 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.
-
3.2.1511 Jun 2026Release notes
Open source →- FIX (Native): Allow
getState()andstop()to be called beforeready()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
MissingPluginExceptionand test timing issues withsetHasCustomSyncBodyBuilder.
- FIX (Native): Allow
-
3.2.1411 Jun 2026Release notes
Open source →- 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)
-
3.2.1310 Jun 2026Release notes
Open source →- CHORE: Version bump to 3.2.13 to stay in lockstep with the federated set (Android
startOnBootreboot-tracking fix — seetracelet_android). No changes to this package.
- CHORE: Version bump to 3.2.13 to stay in lockstep with the federated set (Android
-
3.2.1210 Jun 2026Release notes
Open source →- 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.
-
3.2.1109 Jun 2026 -
3.2.1009 Jun 2026Release notes
Open source →- 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.