Skip to content

analytics_hub_firebase-v0.5.0

@4akloon 4akloon tagged this 05 Aug 12:00
* Release 0.5.0: port zeely-mobile fixes, drop session support, add CI

Port behavior fixes made in the zeely-mobile copies of these packages:
- ProviderIdentifier equality/hashCode now include the runtime type so
  identifiers of different subclasses with the same name don't collide
- AnalyticsHub.initialize initializes providers sequentially
  (Future.forEach) instead of concurrently
- Quieter logging: sendEvent logs at fine level and the dispatch
  pipeline no longer logs each step
- Provider constructors accept an optional interceptors parameter

Remove session support (breaking): Session, HubSessionDelegate,
AnalyticsHub.sessionDelegate and AnalytycsProvider.setSession are gone;
apps manage user identity directly on the underlying SDKs. The
getAnonymousId parameters of the Mixpanel/Appsflyer providers are
removed with it.

Add GitHub Actions CI modeled on basalt_dart: analyze/format/test plus
publish dry-run on every push/PR, and tag-driven pub.dev publishing via
OIDC (<package>-v<version> tags).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Audit cleanup: drop dead code and unnecessary dependencies

- Firebase/Appsflyer providers: remove flush() overrides that existed
  only to log a "not supported" message — the base AnalytycsProvider
  flush() is already a no-op. This drops the logging dependency from
  all three provider packages (mixpanel no longer imported it at all).
- analytics_hub core is now a pure Dart package: flutter_test dev
  dependency removed (tests only use package:test), so `dart test`
  works without a Flutter SDK.
- Remove unused dev dependencies: `test` from the provider packages
  (their tests use flutter_test), `lints` from mixpanel (inherited from
  the workspace root), `test` from the root package (no tests there).
- Provider tests: delete dead _TestEvent classes and
  registerFallbackValue setup left over from the removed setSession
  tests, plus the now-unused analytics_hub imports.
- Core internals: remove unused DispatchTarget.providerIdentifier
  getter; EventDispatcher.dispatch returns the executor future directly
  instead of awaiting into a local.
- Root README: close the unterminated yaml code fence in Quick start
  that swallowed the rest of the page on render.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Rename AnalytycsProvider to AnalyticsProvider, fix workspace layout

Fix the long-standing typo in the provider base class name across all
packages, docs, examples, and tests. No compatibility alias is kept —
the packages have no external consumers yet.

Also move `resolution: workspace` from pubspec_overrides.yaml into each
package's pubspec.yaml (the layout basalt_dart and zeely-mobile use, and
what `dart test`'s workspace validation expects) and delete the
overrides files.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Fix mixpanel_flutter lower bound for pub.dev score compliance

Ran pana (the tool pub.dev uses to compute package score) against all
four packages. analytics_hub itself scores a clean 160/160.

Found a real bug via the "compatible with dependency constraint lower
bounds" check: mixpanel_flutter's declared minimum (2.0.0) allows
versions up to 2.2.0 where Mixpanel.track() returns void instead of
Future<void>. MixpanelEventResolver.resolve declares a Future<void>
return type and returns the track() call directly, so pinning an old
2.x mixpanel_flutter breaks analysis (and would break at runtime for
anyone actually on that range). Raised the lower bound to >=2.3.0,
where track() became async. Verified `dart analyze` is clean and tests
pass with dependencies downgraded to their lower bounds.

The three provider packages can't get a full pana score yet since they
depend on analytics_hub, which isn't published to pub.dev — pana (like
pub.dev itself) resolves dependency_overrides are ignored for scoring,
so this is a publish-order concern rather than a code issue: publish
analytics_hub first, then the providers.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Add design spec for basalt_dart-style documentation

Covers badges + workspace banners on all READMEs, a "what's inside"
reference table in the core README, a packages/analytics_hub/doc/
folder with four deep-dive guides, and a root CONTRIBUTING.md —
scoped down from basalt_dart's equivalent docs to this repo's size.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Add basalt_dart-style documentation

Badges + "part of workspace" banners on every README (EN/UA), a
"what's inside" reference table in the core README, a
packages/analytics_hub/doc/ folder with four deep-dive guides
(getting started, providers, interceptors & context, testing), and a
root CONTRIBUTING.md — implements the design spec, which is removed
now that it's realized in the actual docs.

Skipped the MIT license badge from the original spec: the repo has no
LICENSE file, so that badge would have been false.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Remove initialize and dispose from provider lifecycle

SDK lifecycle belongs in the app — keep only flush for buffered backends.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix example formatting for CI

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Assets 2
Loading