tracelet_doctor 3.3.4
tracelet_doctor: ^3.3.4 copied to clipboard
Drop-in diagnostic overlay widget for Tracelet. Visualizes permissions, battery health, OEM compatibility, sensor availability, and tracking state with actionable fix suggestions.
3.3.4 #
CHORE: bump version.
3.3.3 #
- Update a dependency to the latest release.
3.3.2 #
- Update a dependency to the latest release.
3.3.1 #
- Update a dependency to the latest release.
3.3.0 #
- 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.
3.2.19 #
CHORE: version bump for patch release
3.2.18 #
- 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.
3.2.17 #
- 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.16 #
- 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.15 #
- 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.
3.2.14 #
3.2.13 #
- 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.
3.2.12 #
- 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.11 #
- CHORE: Version bump to align with 3.2.11 platform release.
3.2.10 #
- Update a dependency to the latest release.
3.2.9 #
- FIX(ios): Remove
TraceletCore+Dummy.swift/TraceletSyncFFI+Dummy.swift—@_silgen_namedeclarations from the old static library model caused "Undefined symbol" linker errors after the static→dynamic xcframework migration. - FIX(android): Catch
ForegroundServiceStartNotAllowedExceptioninLocationService.start()so callingready()from the background on Android 12+ no longer crashes the host app; the foreground service start is deferred until the app returns to foreground.
3.2.8 #
- FIX: Persist geofence ENTER/EXIT events in offline queue and auto-sync to server — events were previously dispatched to the app but never stored in the local SQLite database (Issue #128).
- FIX: Structured event envelope (
event_type,event_payload) for geofence events round-trips correctly throughgetLocations()andinsertLocation(). - FIX(sync): Stop POSTing malformed error payloads on failed HTTP sync requests; fix iOS custom-body deadlock in
setSyncBodyBuilder(Issue #125). - FIX(android): Throw
NOT_READYerror beforeready()is called to match iOS parity; previously Android silently ignored SDK calls before initialization (Issue #129). - FIX(ios): Resolve
flutter_rust_bridge has not been initializedon release builds —TraceletCoreis now a dynamic framework, preventing dead-code stripping of FRB symbols (Issues #116, #123, #124). - FIX(android): Resolve
Failed to lookup symbol 'frb_get_rust_content_hash'— Rust symbols are now loaded directly fromlibtracelet_core.sobypassingRTLD_LOCALisolation (Issues #116, #123). - PERF(ios): Reduce background motion sensor CPU/battery usage — accelerometer polling is now paused when stationary (Issue #130).
- FIX: Persist historical
is_movingstate per location record sogetLocations()returns accurate values instead of always returning the current live state (Issue #126).
3.2.7 #
- FIX(ios): prevent dead code stripping of flutter_rust_bridge symbols in release builds.
- FIX(android): implement OEM hardening mitigations and introduce
showPowerManagerto handle aggressive battery restrictions on specific OEM devices.
3.2.6 #
- PERF: Optimize database timestamp queries for O(log N) fast filtering and resolve precision bugs (Issue #119).
- FEAT: Implement
sslPinningFingerprintsnatively across iOS and Android with Rust configs. - FIX: Include pinned fingerprints in SSL verification error logs and messages.
- FIX: Rate limit Android MotionDetector logcat flooding during stillness (Issue #121).
- FIX: Resolve race conditions in tests for Issue 118.
- REFACTOR: Update integration test to use Config.fromMap for comprehensive Tracelet configuration testing.
3.2.4 #
- FIX(ios): safely resolve dynamic symbols when
use_frameworks! :linkage => :dynamicis used.
3.2.3 #
- FIX: Force speed motion manager to evaluate initial speed on Android to prevent the state machine from being permanently stuck in
MOVINGwhen indoors (#115). - FIX: Resolve
flutter_rust_bridge has not been initializedcrash by ensuring the Rust core is instantiated and initialized before accessing methods (#116). - CHORE: Sync release versions across all packages.
3.2.2 #
- CHORE: Sync release versions across all federated packages and update Swift Package Manager configuration.
3.2.1 #
- CHORE: Align federated package versions and include additional patch updates.
3.2.0 #
- CHORE: Bump dependency to tracelet
3.2.0.
3.1.14 #
- CHORE: Sync release versions across workspace.
3.1.10 #
- Bump "tracelet_doctor" to
3.1.10.
3.1.9 #
- FIX(android): conditionally apply kotlin-android plugin to support older flutter SDKs while preventing warnings in modern Flutter environments.
- CHORE(ci): add strict pre-publish flutter build verification step to
release.yml.
3.1.8 #
- Fix iOS SPM publishing
3.1.7 #
- FIX(android): apply kotlin-android plugin to fix gradle build errors on newer AGP versions.
- FIX(ios): fix SPM source folder paths in release bundling to ensure SDK compiles properly via CocoaPods.
- FIX(ios): fix duplicate module import errors by adding conditional import checks for TraceletSDK.
3.1.4 #
- CHORE: Sync release versions across workspace.
3.0.1 #
- FIX(ios): Add missing
FlutterFrameworkdependency to SPM plugin configuration to resolve compilation failures andPlatformExceptions.
3.0.0 #
- CHORE: bump version to match tracelet 3.0.0 release.
- FEAT: UI now detects and displays the new
Smart(Hybrid) motion detection mode in the Tracking Card. - FEAT: Display
Battery Budgettarget in the Battery & OEM Card.
1.0.4 #
- Update a dependency to the latest release.
1.0.3 #
- Update a dependency to the latest release.
1.0.1 #
- CHORE: Update
traceletdependency to^2.0.6. - DOCS: Added
example/example.dartfor pub.dev documentation scoring. - DOCS: Added documentation cross-references back to
traceletin README.md.
1.0.0 #
- Initial release of Tracelet Doctor.
- Drop-in diagnostic bottom sheet via
TraceletDoctor.show(context). - Permission status card (location, motion activity, accuracy authorization).
- Tracking state card (enabled/disabled, mode, motion, odometer, scheduler).
- Battery & OEM card with aggression rating meter (Huawei, Xiaomi, Samsung detection).
- Configuration review card with 5 smart issue detectors:
- Missing headless task registration detection.
- Tracking active without "Always" permission warning.
- Mock locations detected during active tracking.
- Power Save mode active during tracking.
- Aggressive OEM without battery optimization exemption.
- Sensor availability grid (accelerometer, gyroscope, magnetometer, significant-motion).
- Database & device card with pending queue count and clear pending locations button with confirmation dialog.
- Warning list with 12
HealthWarningtypes and human-readable descriptions. - Friendly "Tracelet Not Available" screen when plugin is not initialized.
- Copy-to-clipboard for full JSON diagnostic report.
- Re-run diagnostics without dismissing the sheet.
- Animated loading state and graceful error handling with retry.
- Dark glassmorphic theme with semantic status colors.