Skip to main content

synkora_chat 1.15.5 copy "synkora_chat: ^1.15.5" to clipboard
synkora_chat: ^1.15.5 copied to clipboard

Native Flutter SDK for embedding Synkora AI chat widgets. Drop-in UI + headless API client with local message cache.

1.15.5 #

  • Security fix (critical): cross-user chat history leak. The local message cache was keyed only by widgetKey — the org's static widget config, identical for every rider on a given app build — never by the person using it. On any device previously used by more than one identified user (shared/reused test devices, family devices, etc.), the next person to open the chat would instantly see the previous user's entire cached conversation, including trip GPS, charges, and refund details, layered underneath their own new messages (the server-side history fetch merges by message id rather than replacing). Fixed by scoping the on-device cache (Messages table, schema v2) by (widgetKey, identityKey) instead of widgetKey alone, and by having updateIdentity() detect an identity change and reload from scratch for the new identity instead of leaving the previous identity's already-loaded messages in memory. v1 cached rows (unscoped, and therefore untrustworthy) are dropped on upgrade — this is a pure cache the server always re-syncs, so nothing is lost beyond the instant-display cache warm-up. If you construct and own your own SynkoraChatController directly (rather than letting SynkoraChatWidget own it), make sure you call updateIdentity() — or rebuild with a fresh controller — every time the authenticated end user changes, including on logout.

1.15.4 #

  • Fix: removed the duplicate error banner shown above the chat when a message fails to send. Every case it covered was already shown as an in-chat message bubble (the same error text, appended via _appendAssistantErrorMessage) -- the banner and its "Retry" button were pure duplication. The separate full-screen connection-error state (shown when the widget can't load at all) is unaffected.

1.15.3 #

  • Fix: chat send failures shown inside the live chat no longer mention Synkora, HTTP status codes, or any other backend/implementation detail — the widget is embedded inside a third-party app, and the person seeing a chat error is that app's end user, not the developer integrating the widget. loadConfig() (used by developers during integration/testing, not shown to end users) keeps its detailed diagnostic messages unchanged.

1.15.2 #

  • Fix: SynkoraChatWidget now picks up updated userHash/identityToken/user/userId props on rebuild. Previously these were only ever read once, in initState, and silently ignored on every rebuild after — so an app that fetches its identity proof asynchronously and rebuilds the widget with the fresh value kept sending whatever (possibly null/stale) value was available at the widget's very first build, indefinitely. Fixed by adding didUpdateWidget change-detection and a new SynkoraChatController.updateIdentity() method (also usable directly if you construct/own your own controller).

1.15.1 #

  • Fix: error messages from the API no longer collapse a 401 (invalid widget key) and a 403 (valid key, but blocked by a domain/identity/rate-limit check) into the same "Synkora rejected this widget key" message. The real detail from the server is now surfaced when present, so 403s from misconfigured domains or missing identity proof no longer look like an invalid-key problem.

1.15.0 #

  • Bottom tab navigation — Home and Chat tabs replace the dropdown menu
  • Chat tab shows conversation history (sessions list)
  • Session cards now display agent name and avatar
  • Tapping a session opens the message view; back arrow returns to sessions list
  • New chat button moved to AppBar inside the message view
  • Removed duplicate close button from AppBar leading

1.14.0 #

  • Full UI redesign — card-style chat bubbles, teal gradient home screen, adaptive AppBar foreground color
  • triggerMessage(String) on SynkoraChatController — send messages programmatically from outside the widget
  • Centralized ChatTextStyles with GlassdoorSans font family
  • "Powered by" footer in input bar
  • "Chat closed" read-only banner for ended sessions
  • FAQ rows on home screen replacing suggestion chips
  • Sessions list redesigned as flat cards

1.13.6 #

  • New UI/UX improvements
  • History tab refactored
  • Session close/end support
  • Optional email and full name entry

1.13.4 #

  • New UI/UX improvements
  • History tab refactored
  • Session close/end support
  • Optional email and full name entry

1.13.3 #

  • Agent Lens support and UI improvements
  • Voice widget integration
  • Performance and stability improvements

1.0.0 #

  • Initial release
  • Drop-in SynkoraChatWidget for embedding Synkora AI agents in Flutter apps
  • SynkoraChatController for headless / BYO-UI usage
  • SynkoraClient — pure-Dart API client with SSE streaming support
  • Local message cache via Drift (SQLite)
  • Markdown rendering in assistant messages
  • Suggestion chip prompts from server config
  • Identity verification via HMAC user hash
  • Conversation history loading
1
likes
120
points
78
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Native Flutter SDK for embedding Synkora AI chat widgets. Drop-in UI + headless API client with local message cache.

Homepage
Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

dio, drift, flutter, flutter_markdown, lottie, path, path_provider, sqlite3_flutter_libs

More

Packages that depend on synkora_chat