Skip to content

Releases: xanthous-tech/RespondKit

RespondKit 0.6.4 — every SDK string from the translated catalog

Choose a tag to compare

@lhr0909 lhr0909 released this 15 Oct 21:29
b503cf2

RespondKit 0.6.4

Release notes

Every string RespondKit shows comes from the translated catalog. 0.6.3 translated the empty state, the "Ask us anything" subtitle and the attach menu; the email ask, composer, delivery statuses, retry and error states, and accessibility labels stayed English. They now follow the user's language on iOS, Android, web and React Native, with the 0.6.3 fallbacks.

  • Native views. SwiftUI looks every string up in RespondKitUI's bundle instead of the host's main bundle. Compose reads string resources and formats transcript dates in the activity locale.
  • Store text. The body of an attachment-only message, the length and closed-conversation errors, and the logout, history-save and unverified-identity errors come from the catalog through the new RespondKitStrings on the Swift and Kotlin stores. RespondKitScreen sets it, and a store used without a screen keeps English.
  • Ten new keys in all 51 locales: respondkit_message_too_long, respondkit_message_limit, respondkit_closed_start_new, respondkit_logout_failed, respondkit_history_save_failed, respondkit_done, respondkit_unread_reply, respondkit_reconnecting, respondkit_conversation_label, respondkit_identity_unverified.
  • Errors. Network, HTTP, protocol and storage failures show catalog text ("Support request failed.", "Upload failed", "Support chat could not be started.") instead of the SDK's English diagnostics or server messages. The Swift, Kotlin and React Native stores keep the original text in a new errorDetail.
  • Default title. When the host passes no title, iOS, web and React Native show the translated "Support", as Compose already did.
  • Guard. pnpm ready fails if any file in the SwiftUI or Compose module gains an English literal, including lowercase labels, interpolated labels and transcript helpers. Exception messages are exempt, because they are no longer shown.

Upgrade and compatibility

Use 0.6.4 for the npm packages, v0.6.4 for SwiftPM and 0.6.4 for Maven. No protocol change.

  • Swift: RespondKitScreen(title:) is now String? (default nil, meaning the catalog's "Support"); existing calls compile unchanged.
  • errorMessage (native) and error (React Native) no longer carry raw diagnostics; read errorDetail for logging.
  • An attachment-only message is sent with the translated "Attached files" body, so operators see it in the customer's language.

Operator checklist

  1. Publish GitHub release v0.6.4, which runs the npm publish workflow. Publish Maven Central per docs/native/releases.md.
  2. Point ReceiptGenie at 0.6.4.

RespondKit 0.6.3 — client strings translated into 51 locales

Choose a tag to compare

@lhr0909 lhr0909 released this 15 Oct 17:49
59bf7bb

RespondKit 0.6.3

Release notes

The shared client catalog is translated. The strings 0.6.2 moved into localization/messages now show in the user's language on iOS, Android, web and React Native: the empty state, the "Ask us anything" subtitle and the attach menu.

  • 51 locales. ar, bg, bn, ca, cs, da, de, el, es, et, fi, fil, fr, fr-CA, gu, he, hi, hr, hu, id, it, ja, kn, ko, lt, lv, ml, mr, ms, nb, nl, or, pa, pl, pt-BR, pt-PT, ro, ru, sk, sl, sr, sv, ta, te, th, tr, uk, ur, vi, zh-Hans and zh-Hant. This is ReceiptGenie's shipped set, which also covers Captioner and SubPorter. Every key in the catalog is translated, not only the three surfaces that read it today. Other views still use English literals.
  • Locale fallbacks. Web and React Native map legacy codes (iw, in, tl, no), choose Traditional Chinese for zh-TW, zh-HK and zh-MO, send Portuguese outside Brazil to pt-PT, reduce regional variants to the base language, and fall back to English. iOS uses Foundation's matching. On Android, Hebrew and Indonesian ship as values-iw and values-in, the codes Android still reports, and Bokmål also ships as values-no.
  • Web without a host locale. When context.locale is unset, the web widget now reads the catalog and formats transcript dates using the browser language. Before, it used English.

Upgrade and compatibility

Use 0.6.3 for the npm packages, v0.6.3 for SwiftPM and 0.6.3 for Maven. No API or protocol change.

  • iOS: the host app must declare a language for RespondKit's strings to show in it (ReceiptGenie declares all 51).
  • Android hosts that override RespondKit strings for Hebrew or Indonesian must place the overrides in values-iw or values-in.

Operator checklist

  1. Publish GitHub release v0.6.3, which runs the npm publish workflow. Publish Maven Central per docs/native/releases.md.
  2. Point ReceiptGenie at 0.6.3.

RespondKit 0.6.2 — no email-ask flash, Android attach icon, translated client strings

Choose a tag to compare

@lhr0909 lhr0909 released this 15 Oct 16:30
dc4c6a2

RespondKit 0.6.2

Release notes

A client patch for three problems found in ReceiptGenie's iOS and Android apps with 0.6.1.

  • No email-ask flash. The native stores and the React Native store now wait until the contact lookup for the current identity has succeeded before asking for an email (asksForEmail). A failed or interrupted lookup keeps the ask hidden and is retried with the next request on the same session. The ask never appears when the host supplied an email or the server already stores one. Before, iOS, Android and React Native showed the ask for a moment while the stored contact was being fetched. The web widget already waited, and new tests guard it.
  • Android attach button. The Compose composer's text "Attach files" button above the input is now a paperclip icon button to the left of the message field. It matches the web and iOS composers.
  • Translated strings. The SwiftPM RespondKitUI target and the Compose module now bundle the resources generated from localization/messages, and the web and React Native packages ship a generated messages.ts. The empty state, the "Ask us anything" subtitle and the attach menu read from that catalog on every client (web by context.locale, React Native by the device locale). Other strings remain English literals for now. The catalog ships English only. Other languages need a reviewed messages/{locale}.json.

Upgrade and compatibility

Use 0.6.2 for the npm packages, v0.6.2 for SwiftPM and 0.6.2 for Maven. No API or protocol change.

  • RespondKitStore.asksForEmail (Swift, Kotlin state) and SupportSnapshot.asksForEmail (React Native) are new. Custom screens that show their own ask should use them instead of checking the email for null.
  • Android: the Compose module's own res/values/strings.xml is gone, and its strings come from the shared catalog. respondkit_new no longer exists (use respondkit_new_conversation), and respondkit_intro now holds the longer intro line, with the short one in respondkit_intro_short. Hosts that override either name must update their overrides.

Operator checklist

  1. Publish GitHub release v0.6.2, which runs the npm publish workflow. Publish Maven Central per docs/native/releases.md.
  2. Point ReceiptGenie 2.9.0 at 0.6.2.

RespondKit 0.6.1 — attachments on the hosted API and aligned composer controls

Choose a tag to compare

@lhr0909 lhr0909 released this 14 Oct 13:49
7d20d33

RespondKit 0.6.1

Release notes

A patch release for two problems found on SubPorter's web widget with 0.6.0.

  • Attachments work on the hosted API. The production Worker had no ATTACHMENTS R2 binding, so every upload answered "Attachments are not configured." (and email ingress could not store raw mail). apps/api/wrangler.jsonc now binds ATTACHMENTS to the respondkit-attachments-staging bucket in the staging environment (api.respondkit.dev) and respondkit-attachments by default. Uploads and downloads both pass through the Worker (PUT /v1/attachments/:id/parts/:part, GET /v1/files/:token), so the bucket stays private and needs no CORS rule.
  • Web composer alignment. The attach button was 36px (icon-lg) beside the 44px message box and send button, and the row bottom-aligns, so the paperclip sat low. It now has the same 44px box, and neither button shrinks.

Upgrade and compatibility

Use 0.6.1 for the npm packages. No API or protocol change; 0.6.0 clients work against the fixed API.

Operator checklist

  1. Create the bucket once: cd apps/api && pnpm exec wrangler r2 bucket create respondkit-attachments-staging.
  2. Deploy the API: cd apps/api && pnpm exec wrangler deploy --env staging, then upload a file from a test widget and open its download link.
  3. Publish GitHub release v0.6.1, which runs the npm publish workflow.

RespondKit 0.6.0 — React Native, email follow-up, and attachments

Choose a tag to compare

@lhr0909 lhr0909 released this 04 Oct 08:59
7409f27

RespondKit 0.6.0 adds a React Native client and brings email follow-up and file attachments to support conversations across web, SwiftUI, Android Compose, and React Native.

  • React Native client: native React Native UI, conversation history, read acknowledgements, draft persistence, identity isolation, device context, and native photo/file pickers. The file-picker module requires a native build; use an Expo development build rather than Expo Go.
  • Thread email: configure a sender per site/app inbox. Unread operator messages are emailed after a default ten-minute delay, and reading them cancels pending delivery. Replies to the email return to the same customer thread. The minute-based sender normally delivers after 10–11 minutes; emails already handed to the provider cannot be recalled.
  • Client improvements: configurable greeting for a fresh session, email collection when no address is known, and native device/OS diagnostics.
  • Attachments: multiple files through web file inputs and system photo/document pickers on native clients, stored in private R2. Completed files have no product expiration or configured product size cap; platform limits still apply. Inbound email attachments are not supported.
  • Operator and developer tools: optional conversation translation, Discord customer-activity links, refreshed human and agent-readable documentation, and private Paraglide compilers for Apple String Catalogs and Android resources.

AI support-agent credentials/jobs/reply APIs remain a proposal. Localization compilers generate resources, but translated SDK controls and UI language selection are not yet integrated. Host-provided titles/greetings remain host-localized.

Upgrade and compatibility

Use the shared 0.6.0 version for all four npm packages, dev.respondkit:respondkit-core, dev.respondkit:respondkit-compose, and SwiftPM tag v0.6.0 after publication is verified. SwiftUI requires Swift 6 and iOS 18+; Compose requires Android API 26+. React Native peers and installation steps are in its README.

Deploy the compatible API and migrations before rolling out SDK upgrades. Keep old SDKs working during the transition and first upgrade one pilot app. Do not claim email/files work until the target environment has their provider configuration and passes a live smoke test.

Package publication runs through GitHub Actions. The first React Native publication requires one-time npm bootstrap. This release does not deploy the API, configure Cloudflare email/R2, or update host applications.

RespondKit 0.5.3 — iOS read receipts

Choose a tag to compare

@lhr0909 lhr0909 released this 19 Sep 04:16
4150baf

Fix iOS customer read acknowledgements when support replies become visible. The SwiftUI transcript now refreshes its visibility observer for each loaded cursor, allowing Discord read checkmarks to update while retaining foreground and open-chat guards.

Regression coverage verifies first replies, subsequent replies, closed-chat unread state, and reopening. All 17 Swift package tests and 4 SDK iOS UI tests passed; npm, Swift, and Android release checks passed in PR #28.

Shared version 0.5.3 for SwiftPM, npm, and Maven Central. npm and Maven publication is handled by the release workflow.

RespondKit 0.5.2 — iOS accent foreground colors

Choose a tag to compare

@lhr0909 lhr0909 released this 19 Sep 02:01
90c6c3e

SwiftUI hosts can now set accentForegroundColor on RespondKitScreen, allowing dark Send icons on light brand colors. Existing integrations keep white icons by default.

RespondKitScreen(
    store: store,
    accentColor: .green,
    accentForegroundColor: .black
)

Outgoing bubbles retain the web widget’s 10% accent fill and dark text.

This shared version is available through the SwiftPM v0.5.2 tag, npm (@respondkit/protocol, @respondkit/api-client, @respondkit/react), and Maven Central (dev.respondkit:respondkit-core, dev.respondkit:respondkit-compose). Android and web behavior are unchanged in this patch.

RespondKit 0.5.1

Choose a tag to compare

@lhr0909 lhr0909 released this 17 Sep 16:47
0231195

RespondKit 0.5.1 makes URLs in messages clickable across the web, SwiftUI, and Compose widgets.

  • Automatically recognizes https://, http://, and www. addresses, with underlined links in the widget accent color.
  • Web links open a new tab while preserving the conversation and draft.
  • Native links use SwiftUI's openURL and Compose's LocalUriHandler, so host apps can customize routing.
  • Preserves message text and excludes surrounding sentence punctuation from link destinations.

All distributions use version 0.5.1:

  • Swift Package Manager: https://github.com/xanthous-tech/RespondKit.git, version 0.5.1.
  • Android: dev.respondkit:respondkit-compose:0.5.1 (includes respondkit-core).
  • npm: @respondkit/react@0.5.1, @respondkit/api-client@0.5.1, and @respondkit/protocol@0.5.1.

Verified with shared URL fixtures, browser and native simulator tap tests, and clean npm/Maven consumer builds. Registry publication runs automatically after this release is published.

Changes: #26

Full changelog: v0.5.0...v0.5.1

RespondKit 0.5.0 — SwiftUI and Compose widgets

Choose a tag to compare

@lhr0909 lhr0909 released this 17 Sep 15:59
b95b605

RespondKit 0.5.0 adds native SwiftUI and Jetpack Compose support widgets, using the same version as the web SDK.

Native widgets

  • One conversation screen with the web widget's styling, native icons, customizable accent colors, and inherited SwiftUI tint / Compose primary color.
  • App-owned triggers and unread indicators; present with a SwiftUI full-screen cover or a full-screen Compose destination.
  • Foreground unread polling with silent refreshes, secure local persistence, drafts, retries, read acknowledgements, and verified identity support.
  • Text-only conversations. This release does not add push notifications, attachment uploads, or app-icon badges.

Install

SwiftPM (Swift 6, iOS 18+):

.package(url: "https://github.com/xanthous-tech/RespondKit.git", from: "0.5.0")

Add the RespondKitUI and RespondKitCore products to your app.

Android (API 26+, JDK 17, Kotlin 2.2-compatible toolchain):

implementation("dev.respondkit:respondkit-compose:0.5.0")

Use google() and mavenCentral(). Compose includes respondkit-core transitively.

Web:

npm install @respondkit/react@0.5.0

@respondkit/protocol and @respondkit/api-client also use version 0.5.0.

Native integration guide · Release process

The release workflow validates all three platforms before publishing npm and Maven Central artifacts. Registry availability follows completion of those jobs.

v0.4.1 — Discord customer read receipts

Choose a tag to compare

@lhr0909 lhr0909 released this 08 Sep 05:00

Fix missing Discord read checkmarks. The React widget now sends and retries authenticated read acknowledgements after displaying a transcript in an open, visible chat. Includes the typed API client read-receipt endpoint.

Deploy the API read-receipt endpoint and migration before upgrading the SDK. The server projects ✅ onto read Discord replies and retries delayed reactions.