btx 0.0.13
btx: ^0.0.13 copied to clipboard
BTX Flutter SDK for customer app telemetry, feature flags, messaging, and native integrations.
Changelog #
Unreleased #
0.0.13 #
- Add
Btx.messenger.createThread(...)so host-owned feedback forms can create a customer message thread with an initial customer-authored message without opening the SDK-owned messenger UI.
0.0.12 #
- Keep unread assistant launch and resume banners for hidden messenger sessions.
- Persist explicit banner dismissals so the same unread assistant reply does not re-banner until a newer assistant reply arrives.
0.0.11 #
- Center the messenger composer send button in single-line drafts while keeping it pinned to the bottom-right as the composer expands for wrapped or multi-line text.
0.0.10 #
- Fix image attachment previews in SDK-owned messenger sheets so tapping a thumbnail opens an in-messenger lightbox immediately instead of pushing a host navigator dialog underneath the sheet.
- Add an explicit lightbox close control and clear pending previews when the messenger sheet is dismissed.
0.0.9 #
- Add
navigatorKeysupport toBtxConfigurationso host apps can let the SDK mount messenger sheets, foreground in-app notifications, and push authorization coordination from the root navigator overlay without wrapping the whole app inBtxHost. - Cancel pending facade/headless setup work during SDK disposal so stale async configure, identity, or headless sync operations cannot outlive teardown.
0.0.8 #
- Canonicalize runtime platform metadata before SDK auth so Android sessions do not inherit stale iOS bundle identifiers from explicit app context.
- Resolve platform-specific keys from explicit app context when package metadata is unavailable, keeping Android telemetry and messenger bootstraps aligned.
- Harden Android messenger presentation and foreground-notification rendering
for host apps that mount
BtxHostfromMaterialApp.builder. - Use the configured primary CTA/accent color for unread thread indicators.
- Polish SDK-owned in-app notification styling with a translucent blurred surface, filled accent chat icon, and no explicit outline.
- Keep SDK-owned in-app notifications visible until the user dismisses them, opens the related thread, or a newer notification replaces them.
0.0.7 #
- Remove legacy structured-input and delivery-mode logging APIs; host apps now
use
Btx.log(...)for all customer-app telemetry. - Flush queued logs automatically after enqueue instead of requiring host apps to choose delivery policy.
- Keep
Btx.flush(...)as an advanced wait point while removing normal host-side flush routing from examples and customer integration code.
0.0.6 #
- Move public feature-flag state behind an internal active-customer scoped store so transient runtime/session churn cannot clear loaded flags while the same customer remains active.
- Keep telemetry runtime feature flags tied to the current active session binding instead of publishing flags from historical sessions touched while flushing queued logs.
- Preserve loaded feature flags across app-session changes, foreground refreshes, flushes, and runtime refreshes; clear them only on explicit sign-out, dispose, or active customer changes.
0.0.5 #
- Serialize and generation-guard identity sync work so stale async identity operations cannot publish unloaded feature flags after a newer signed-in identity has won.
- Keep feature-flag listeners stable during noisy host auth/user refreshes so host apps do not need their own BTX identity queues or generation counters.
0.0.4 #
- Refresh feature-flag snapshots when an active identity is established and when the host app returns to the foreground.
- Add
Btx.featureFlagsListenableandBtxCustomerSdk.featureFlagsListenableso host UI can rebuild when feature flag values change.
0.0.3 #
- Add
BtxPublishableClientKeysandBtxConfiguration.withPublishableClientKeys(...)so host apps can provide one key set and let the SDK pick the correct iOS bundle ID or Android package client key. - Auto-resolve app version, build number, platform, bundle ID, and package name in the facade bootstrap path while preserving explicit host attributes.
- Serialize facade configure/identify operations inside
Btxso host apps do not need their own generation counters or identity sync queues. - Add
Btx.ready()andBtx.featureFlagEnabled(...)for host code that needs to wait for pending configure/identity work before reading feature flags. - Make
Btx.log(...)wait for in-flight configure work before writing telemetry.
0.0.2 #
- Widen the
package_info_plusdependency bound so host Flutter apps already on the 9.x package line can consumebtxwithout dependency overrides.
0.0.1 #
- Initial public release of
btx. - Add the facade-first public API:
Btx.configure,Btx.identify,Btx.log,Btx.refreshFeatureFlags, andBtx.messenger. - Add
BtxHostas the root widget anchor for SDK-owned messenger sheets, foreground notification UI, lifecycle observation, and iOS push bridge setup. - Ship customer app telemetry, feature flags, support messaging, image upload, in-app message notifications, unread reminders, theme customization, and iOS push registration/token forwarding.
- Rebuild the repo demo app around fixture mode and real BTX project mode.
0.1.7 #
- Add
BtxCustomerSdk.refreshFeatureFlags()so Flutter host apps can re-evaluate customer-app feature flags on demand through the existing session-ping route. - Replace the stored feature-flag snapshot after an explicit refresh in both main-isolate and worker-isolate telemetry runtimes.
- Clarify that
sdk.featureFlagsandsdk.isFeatureEnabled(...)stay synchronous reads, whileawait sdk.refreshFeatureFlags()is the explicit path for picking up live BTX targeting changes before session expiry.
0.1.5 #
Breaking API change:
- Replace
appId/apiKeyconfig withpublishableClientKeyso Flutter matches the iOS customer SDK auth flow. - Send
x-btx-publishable-client-keyon static customer-app bootstrap/session requests and keep bearer session tokens for runtime requests. - Change bundled credentials files to use
publishableClientKeyper platform. - Align messenger push payload matching with the iOS SDK by keying customer-messenger notifications on
projectId. - Clarify the SDK-owned worker envelope flow for background telemetry forwarding.
0.1.4 #
Breaking API change:
BtxCustomerSdk.initialize(initialization: ...)is now the single public bootstrap path.- Add
BtxCustomerSdkInitialization.explicit(...)and.bundledCredentials(...)as the supported initialization strategies. - Add
BtxTelemetryConfiguration.runtimeModeso the SDK facade can run telemetry on the main isolate or a worker isolate. - Add
sdk.setAppSession(...)for explicit app-session replacement after initialization. - Remove
BtxHeadlessBootstrap,BtxHeadlessCoordinator, andBtxHeadlessTelemetryfrom the public package surface. - Add
BtxCustomerSdkScopefor widget-tree lookup of an already created SDK instance. - Rewrite the README and architecture docs around the unified bootstrap model and advanced telemetry runtime behavior.
0.1.3 #
- Rewrite the public README around headless telemetry integration for Flutter host apps.
- Document initialization, app-session ownership, custom activities, structured events, diagnostic logs, lifecycle flush behavior, and shutdown ordering.
- Add inline Dart API docs for the public telemetry surface so IDE usage guidance matches the published README.
0.1.1 #
- Default
BtxClientConfigurationto BTX production. - Add
BtxClientConfiguration.withApiBaseUrl(...)for explicit staging or local overrides.
0.1.0 #
- Initial public release of
btx. - Ships customer messenger UI, host telemetry capture, and iOS push bridging.
- Publishes under the new
btxpackage name with aligned native plugin identifiers.