Skip to content

Develop - #35

Merged
alirezat66 merged 9 commits into
mainfrom
develop
Aug 17, 2026
Merged

Develop#35
alirezat66 merged 9 commits into
mainfrom
develop

Conversation

@alirezat66

Copy link
Copy Markdown
Collaborator

Release

Prepares FlexTrack 2.2.0 for production release.

Highlights

  • Added persistent offline event delivery
  • Added in-memory and file-based event queues
  • Added queue recovery across application restarts
  • Added selective retry for failed tracker destinations
  • Preserved event identity and timestamps during retries
  • Prevented duplicate delivery during concurrent flush operations
  • Prevented tracker SDK flush calls while offline
  • Improved tracker initialization and disposal lifecycle
  • Added the Runtime Delivery Contract
  • Added shared Flutter/Kotlin conformance fixtures
  • Added queue and retry visibility to FlexTrack Inspector
  • Added an interactive Offline Delivery Lab to the example app
  • Persisted example consent and simulated network state
  • Added comprehensive unit, widget, conformance, persistence, and integration tests

Compatibility

This release is backward-compatible. Existing integrations do not require code changes.

Persistent offline delivery is opt-in by providing a FileEventQueue or a custom EventQueue. Without an injected queue, FlexTrack continues to use the in-memory implementation.

Verification

  • Flutter analyzer passes
  • All package tests pass
  • All example tests pass
  • macOS integration test passes
  • Package publish dry-run passes

Make route<T>() subtype-aware and unwrap nested EnrichedEvent values only for type matching while retaining transformed properties for other rules. Align routing debug explanations and add regression coverage.\n\nCloses #17
Replace clock-modulo routing decisions with injectable FNV-1a sampling keyed by user, session, or event name. Add UTF-8 conformance vectors, essential-event bypass, regression coverage, and public documentation.

Closes #18
- add immutable UUID event IDs and UTC timestamps
- preserve event metadata during enrichment
- default new clients to denied consent
- align package version metadata and documentation
Changes:
- Added the versioned, language-neutral Core 1.0.0 specification.
- Defined event, enrichment, tracker, routing, consent, sampling, lifecycle, and debug contracts.
- Documented the exact processing and routing evaluation order.
- Added worked examples and compatibility/versioning rules.
- Explicitly excluded offline queues, persistence, retries, sessions, identity management, and optimized batching from the MVP.
- Added a contract test to protect the required specification sections.
- Linked the specification from the project documentation.

Validation:
- All 832 tests pass.
- `flutter analyze` passes with no issues.
- `git diff --check` passes.
- add versioned JSON schema and deterministic MVP cases
- cover routing, consent, sampling, enrichment, and debug behavior
- add the Flutter conformance runner and machine-readable report
- document the Kotlin runner contract
- validate conformance fixtures in CI
- bump the package and exported versions to 2.1.0
- finalize the 2.1.0 changelog
- update README installation instructions
- adopt the standard doc directory layout
- exclude development-only files from the published package
* feat: introduce event queue system with in-memory and file-based implementations

- Added `EventQueue` interface and `InMemoryEventQueue` for in-memory event handling.
- Implemented `FileEventQueue` for durable event storage using file system.
- Created `QueuedEvent` and `QueuedEventSnapshot` for event representation and serialization.
- Enhanced `FlexTrackClient` and `FlexTrack` to support event queue integration.
- Introduced `DisposableTrackerStrategy` for trackers managing disposable resources.
- Updated `TrackerRegistry` and `TrackerStrategy` to handle initialization and disposal correctly.
- Added comprehensive tests for event delivery, queue operations, and tracker lifecycle management.
- Updated pubspec version to 2.2.0.

* feat: Enhance offline delivery tracking and inspector features

- Added a pre-action script to the Xcode scheme for preparing the Flutter framework.
- Updated workspace to include Pods project reference.
- Updated pubspec.lock with new dependencies: args, code_assets, hooks, jni, jni_flutter, jni_util, logging, objective_c, package_config, path_provider, path_provider_android, path_provider_foundation, pub_semver, record_use, yaml.
- Modified pubspec.yaml to include path_provider dependency.
- Implemented unit tests for offline delivery screen functionality.
- Updated generated_plugins.cmake to include jni plugin.
- Enhanced EventDispatchRecord to track queued events and queue size.
- Improved FlexTrackClient to notify debug state and handle event processing results.
- Updated inspector dashboard to visualize offline queue status.
- Enhanced inspector server to provide queue size in status payload.
- Updated inspector event buffer to include queued tracker IDs and queue size in records.
- Added tests for inspector event buffer to validate offline queue fields.

* feat: Implement offline flush behavior to prevent delivery when offline
@alirezat66
alirezat66 merged commit f38c061 into main Aug 17, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant