Skip to content

πŸ¦‹ New version release - #557

Merged
brentrager merged 1 commit into
mainfrom
changeset-release/main
Aug 26, 2026
Merged

brentrager merged 1 commit into
mainfrom
changeset-release/main

Conversation

@brentrager

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@smooai/smooth-operator@1.58.7

Patch Changes

  • 8865fbd: fix(server): a conversation is born on its first message, not on the widget open (SMOODEV-3057)

    Opening the widget wrote a conversations row β€” plus both participants and a
    session β€” before the visitor had typed anything. In a 30-day production sample
    44 of 117 web conversations carried zero messages: bare opens occupying an
    inbox row. And because a web create feeds a fresh UUID as the conversation's
    idempotency_key, the unique index's ON CONFLICT DO NOTHING could never
    collapse a double-connect the way it does for sms/slack/discord, so a
    reconnecting visitor accumulated rows.

    create_conversation_session now parks a bare open β€” no userEmail, no
    metadata.userPhone, no conversationId to resume β€” and writes it on the
    session's first send_message, in the same order as before (conversation β†’ user
    participant β†’ agent participant β†’ session). A connection that closes without a
    message drops its parked writes; a reconnect naming the parked conversationId
    binds to it, keeping the id and the durable supports record.

    The wire is unchanged: the client still gets its sessionId / conversationId
    back immediately, and the session is usable on that connection at once.

    An open that carries visitor identity is not deferred. It is a captured lead,
    and a host adapter may hook the user participant write to upsert that visitor
    into its CRM (reading phone + marketing consent off the conversation's
    metadata_json), so those still persist immediately β€” as do every non-web
    channel and every resume.

    A storage blip during the flush is reported as retryable STORAGE_ERROR with the
    parked writes kept, and the retry resumes at the step it stopped on rather than
    re-inserting a row whose primary key is already taken.

@smooai/smooth-operator-web-chat-example@0.0.120

Patch Changes

  • Updated dependencies [8865fbd]
    • @smooai/smooth-operator@1.58.7

@brentrager
brentrager merged commit e7330ae into main Aug 26, 2026
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