tracelet_web 3.3.3
tracelet_web: ^3.3.3 copied to clipboard
Web implementation of the Tracelet background geolocation plugin.
3.3.3 #
- FIX: Correct the
geofenceModeHighAccuracyconfig mapping in Web plugin to prevent runtime getter errors. (065b3bbc)
3.3.1 #
- CHORE: version bump for patch release
3.3.0 #
- 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 #
- 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.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 #
- FEAT(web): Add reverse geocoding functionality (
resolveAddress).
3.1.14 #
- CHORE: Sync release versions across workspace.
3.1.10 #
- Bump "tracelet_web" 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 #
- FEAT: Smart Motion Mode — Introduced
MotionDetectionMode.smartmode interface mapping for web platform.
2.1.0 #
- FIX: Implement all typed event stream getters (
locationEvents,motionChangeEvents,watchPositionEvents,activityChangeEvents,providerChangeEvents,geofenceEvents,heartbeatEvents,httpEvents,scheduleEvents,powerSaveChangeEvents,connectivityChangeEvents,enabledChangeEvents,notificationActionEvents,authorizationEvents) — these were previously unimplemented and threwUnimplementedError, preventingTracelet.ready()from completing on web. - FIX: Geolocation permission request no longer hangs indefinitely — added a
try/catcharoundgetCurrentPosition()to intercept synchronous JS errors thrown on insecure origins or blocked contexts, and added a 15-second Dart-side timeout as a safety net. - FIX: Geolocation
PositionOptions.timeoutremoved to prevent silent timeouts blocking the browser's native permission dialog. - FEAT: Speed-based motion detection mode —
WebLocationEnginenow respectsMotionConfig.motionDetectionMode = speed, transitioningisMovingstate based on GPS speed vs.speedMovingThresholdwith a configurablespeedStationaryDelaydebounce timer. - FEAT: Enterprise features — privacy zones (
addPrivacyZone,removePrivacyZone,getPrivacyZones), audit trail (verifyAuditTrail,getAuditProof), carbon estimator (getCarbonReport), and database encryption stubs (isDatabaseEncrypted,encryptDatabase,getAttestationToken). - CHORE: Version bump for monorepo lockstep alignment with
tracelet 2.1.0. - CHORE: Update
tracelet_platform_interfaceconstraint to^2.1.0.
2.0.9 #
- Update a dependency to the latest release.
2.0.8 #
- CHORE: Update
tracelet_platform_interfaceconstraint to^2.0.8. - CHORE: Version bump for monorepo consistency and package lockstep alignment.
2.0.7 #
- CHORE: Version bump for monorepo consistency and package lockstep alignment.
- CHORE: Update
tracelet_platform_interfaceconstraint to^2.0.7.
2.0.6 #
- CHORE: Update
tracelet_platform_interfaceconstraint to^2.0.6.
2.0.5 #
- CHORE: Version bump for monorepo consistency and package lockstep alignment.
- CHORE: Update
tracelet_platform_interfaceconstraint to^2.0.5.
2.0.4 #
- CHORE: Version bump for monorepo consistency and native SDK alignment.
- CHORE: Update
tracelet_platform_interfaceconstraint to^2.0.4.
2.0.3 #
- FIX: Removed unreliable timestamp drift heuristic from location spoofing detection.
Changelog #
2.0.1 #
- CHORE: Version bump for iOS status bar fix consistency.
- CHORE: Update
tracelet_platform_interfaceconstraint to^2.0.1.
2.0.0 #
- CHORE: Global version synchronization for the Tracelet 2.0.0 release.
- CHORE: Update
tracelet_platform_interfaceconstraint to^2.0.0.
1.9.3 #
2: 3: - CHORE: Version bump for monorepo consistency and native SDK alignment. 4: 5: ## 1.9.2
- CHORE: Constraint bump to
tracelet_platform_interface1.9.2. No web-side changes.
1.9.1 #
- CHORE: Constraint bump to
tracelet_platform_interface1.9.1. No web-side changes.
1.9.0 #
- CHORE: Constraint bump to
tracelet_platform_interface1.9.0 (#58 fix). No web-side changes.
1.8.13 #
- CHORE: Version bump for first-fix latency improvement in
tracelet_androidandtracelet_ios(#54).
1.8.12 #
- CHORE: Version bump for geofence/location
extrasround-trip fix intracelet_android(#51 follow-up).
1.8.11 #
- FIX: Version bump for secondary FlutterEngine guard fix in
tracelet_androidandtracelet_ios(#51).
1.8.10 #
- FIX: Version bump for killed-state tracking fix in
tracelet_android(#50).
1.8.9 #
- CHORE: Version bump for
syncIntervalfeature (#50).
1.8.8 #
- CHORE: Version bump for HTTP sync payload consistency fix (#48).
1.8.7 #
- CHORE: Align federated package versions and include additional patch updates.
1.8.6 #
- CHORE: Version bump for HTTP sync headers fix.
1.8.5 #
- CHORE: Version bump for
getCurrentPositionfallback fix (#46).
1.8.4 #
- CHORE: Version bump for Android pre-ready guard fixes and strict native SDK pinning.
1.8.3 #
- CHORE: Version bump for iOS pre-ready guard fixes.
1.8.2 #
- CHORE: Version bump for Android/iOS stability fixes.
1.8.1 #
- CHORE: Version bump for iOS periodic mode location indicator fix.
1.8.0 #
- FEAT: Add
destroySyncedLocations()web implementation.
1.7.1 #
- FEAT: Add
destroySyncedLocations()web implementation.
1.7.0 #
- CHORE: Update cross-package dependency constraints to
^1.7.0.
1.6.3-alpha.1 #
- CHORE: Update cross-package dependency constraints to
^1.6.3-alpha.1.
1.6.1 #
- FIX: Add 5 missing HTTP Sync method overrides (
setDynamicHeaders,setRouteContext,clearRouteContext,registerHeadlessHeadersCallback,registerHeadlessSyncBodyBuilder) that previously threwUnimplementedErrorat runtime. - FEAT:
WebHttpEnginenow supports dynamic headers and route context in HTTP requests. - TEST: Add platform interface coverage test to prevent future method stub regressions.
1.6.0 #
- CHORE: Update
tracelet_platform_interfacedependency constraint to^1.6.0.
1.5.0 #
- CHORE: Update
tracelet_platform_interfacedependency constraint to^1.5.0.
1.4.6 #
- CHORE: Update
tracelet_platform_interfacedependency constraint to^1.4.6.
1.4.5 #
- CHORE: Update
tracelet_platform_interfacedependency constraint to^1.4.5.
1.4.4 #
- CHORE: Update
tracelet_platform_interfacedependency constraint to^1.4.4.
1.4.3 #
- CHORE: Update
tracelet_platform_interfacedependency constraint to^1.4.3.
1.4.2 #
- CHORE: Update
tracelet_platform_interfacedependency constraint to^1.4.2.
1.4.1 #
- CHORE: Update
tracelet_platform_interfacedependency constraint to^1.4.1.
1.4.0 #
- FEAT: Add stub implementations for enterprise methods:
isDatabaseEncrypted(),encryptDatabase(),getAttestationToken(),getDeadReckoningState(),getCarbonReport(). - CHORE: Update
tracelet_platform_interfacedependency constraint to^1.4.0.
1.3.6 #
- FIX:
getCount()now supports time-range filtering via optionalSQLQueryparameter. - FIX: Fix
getLocations()timestamp filtering —start/endwere incorrectly cast asString?instead ofint?(millisecondsSinceEpoch). - CHORE: Update cross-package dependency constraints to
^1.3.6.
1.3.5 #
- CHORE: Update cross-package dependency constraints to
^1.3.5.
1.3.4 #
- CHORE: Update
tracelet_platform_interfacedependency constraint to^1.3.3.
1.3.3 #
- CHORE: Patch bump for federation consistency with
tracelet1.3.3.
1.3.2 #
- CHORE: Patch bump for federation consistency with
tracelet1.3.2.
1.3.1 #
- CHORE: Patch bump for federation consistency with
tracelet1.3.1.
1.3.0 #
- CHORE: Version bump for federation consistency with
tracelet1.3.0.
1.2.0 #
- CHORE: Version bump for federation consistency with
tracelet_platform_interface1.2.0 (newNotificationPriorityandHashAlgorithmenums).
1.1.0 #
New Features #
- FEAT:
WebHttpEnginenow supports delta-compressed batch uploads — conditionally appliesDeltaEncoder.encode()whenenableDeltaCompressionis true and batch size > 1, achieving 60–80% payload reduction for high-frequency tracking scenarios. ReadsenableDeltaCompression(bool) anddeltaCoordinatePrecision(int, default 6) from HTTP config. - FEAT:
WebHttpEnginesupportsdisableAutoSyncOnCellular— guards auto-sync on cellular networks via the Network Information API (where available), syncing only on WiFi connections.
1.0.1 #
- FIX: HTTP auto-sync now triggers after
insertLocation()andgetCurrentPosition(persist: true)— previously auto-sync was never invoked on web (#21). - FEAT:
WebHttpEnginenow parsesautoSync,autoSyncThreshold, anddisableAutoSyncOnCellularfrom config.
1.0.0 #
🎉 Stable Release #
- FEAT: First stable release of
tracelet_web. - REFACTOR: Remove third-party company name references.
- All Web APIs are finalized and production-ready.
0.12.0 #
Performance Audit — Web optimizations #
- PERF: Hoist
math.Random()to top-level constant ingenerateUuid()(D-M1). - PERF: Use lazy
Iterablechaining ingetLocations(), materialize only once (D-M3). - PERF: Promote browser version
RegExppatterns tostatic final(D-M5). - PERF: Cache
.toJSreferences for web event listeners (D-H6). - PERF: Cache polygon vertices at
addGeofencetime (D-H5).
0.11.4 #
- CHORE: Version bump for platform consistency.
0.11.3 #
- CHORE: Version bump for platform consistency.
0.11.2 #
- FIX: Fix LICENSE file formatting so pana correctly detects Apache-2.0.
- DOCS: Add
example/example.dartfor pub.dev documentation score. - CHORE: Tighten
tracelet_platform_interfaceconstraint to^0.11.2.
0.11.1 #
- FEAT: Add
canScheduleExactAlarms()(returnstrue) andopenExactAlarmSettings()(returnsfalse) stub implementations. - CHORE: Bump platform interface to 0.11.1.
0.11.0 #
- FEAT: Stub implementations for privacy zone and audit trail methods (no-op on web).
- CHORE: Bump
tracelet_platform_interfaceto ^0.11.0.
0.10.0 #
- FEAT:
startPeriodic()— falls back towatchPosition()on web (periodic scheduling not available in browsers). - CHORE: Bump
tracelet_platform_interfaceto ^0.10.0.
0.9.1 #
- CHORE: Version bump for consistency.
0.9.0 #
- CHORE: Version bump for adaptive sampling, health check, and motion sensitivity release.
- CHORE: Bump
tracelet_platform_interfaceto ^0.9.0.
0.8.3 #
- CHORE: Version bump for proximity-based geofence monitoring release.
- CHORE: Bump
tracelet_platform_interfaceto ^0.8.3.
0.8.2 #
- DOCS: Improve README visuals with combined Android & iOS demo image.
0.8.1 #
- FIX: Fix
_bridgedControllerdropping all EventChannel events —onLocation,onMotionChange,onHeartbeat,onGeofence, and all other event streams were broken on web (events consumed but never forwarded to Dart). Now properly pipes data viacontroller.add(). - FIX:
WebEventDispatcher.log()was a no-op — now prints to browser console for debugging visibility. - FEAT: Diagnostic logging in
WebLocationEngine.getCurrentPosition()and_browserGetPosition()— logs request parameters, success/error callbacks, and_positionToMaperrors to the browser console.
0.8.0 #
- FEAT: OEM compatibility stubs —
getSettingsHealth()returnsisAggressiveOem: false(no OEM power management on web),openOemSettings()returnsfalse. - DOCS: Update README with OEM compatibility stub in feature table.
- CHORE: Bump
tracelet_platform_interfaceto ^0.8.0.
0.7.1 #
- DOCS: Add mock detection passthrough note to README feature table.
- CHORE: Bump
tracelet_platform_interfaceto ^0.7.1.
0.7.0 #
- FEAT:
_positionToMap()and_emptyLocation()now includemock: falsefield — browser Geolocation API has no mock detection capability. - CHORE: Bump
tracelet_platform_interfaceto ^0.7.0.
0.6.1 #
- FIX: Remove duplicate distance filter from
WebLocationEngine— all location filtering now handled by shared DartLocationProcessorviatracelet.dartpipeline, matching Android/iOS behavior. - REFACTOR: Replace duplicate
_haversine()inWebLocationEnginewith sharedGeoUtils.haversine(). - REFACTOR: Deduplicate UUID generators into shared
web_utils.dart(generateUuid()). - REFACTOR: Remove dead internal logging from
WebEventDispatcher(_logs,getLog(),clearLog()). - CHORE: Bump
tracelet_platform_interfaceto ^0.6.1.
0.6.0 #
- CHORE: Bump
tracelet_platform_interfaceto ^0.6.0. Inherits shared Dart algorithm improvements.
0.5.5 #
- CHORE: Bump
tracelet_platform_interfaceto ^0.5.5.
0.5.4 #
- CHORE: Bump
tracelet_platform_interfaceto ^0.5.4.
0.5.3 #
- CHORE: Bump
tracelet_platform_interfaceto ^0.5.3.
0.5.2 #
- FIX: Replace deprecated
registrar.messengerwithregistrardirectly in event channel registration. - CHORE: Bump version to 0.5.2.
0.5.1 #
- DOCS: Update README with usage instructions, compatibility table, and related packages.
- FIX: Add
.gitignoreto excludebuild/directory from publish. - FIX: Add
flutterenvironment constraint topubspec.yaml.
0.5.0 #
- FEAT: Initial web platform release.
- FEAT: Foreground-only location tracking via Web Geolocation API.
- FEAT: Geofence emulation (distance-based enter/exit/dwell detection).
- FEAT: In-memory persistence for locations and logs.
- FEAT: HTTP sync via browser
fetch()API. - FEAT: Permission queries via
navigator.permissions. - FEAT: Connectivity monitoring via
online/offlineevents. - FEAT: Auto-fallback from high to low accuracy on timeout.
- DOCS: Add comprehensive Web Support guide (
help/WEB-SUPPORT.md).
0.4.0 #
- Initial web implementation (pre-release).
- Connectivity detection via
navigator.onLine. - Stub implementations for platform-specific APIs (background tasks, settings, etc.).