Skip to content

Releases: wexiohub/messenger-widget-angular

v1.3.1

Choose a tag to compare

@wexio-owner wexio-owner released this 27 Sep 15:34

Patch Changes

  • 231e345: Fix the widget when it runs embedded inside a host app (the dashboard's live preview / the React-component embed).

    • Demo content no longer breaks the host page. In demo/preview mode the mock threads, help articles and news are now read straight from the widget's bundled demo content instead of next-intl's lazy demo namespace. Inside an embedded host (Turbopack) that lazy namespace was not visible to the demo builders, so previews rendered empty and logged MISSING_MESSAGE for every key, and the thread-list builder crashed the whole host page with "map is not a function". The builders are also guarded so a not-yet-resolved value degrades to empty instead of throwing.
    • Pickers and menus are clickable inside the Shadow DOM embed. The GIF and emoji pickers, the conversation-header overflow menu, the language selector and the composer commands popover used a document-level click-outside check against event.target. In the Shadow DOM embed that target is retargeted to the shadow host, so every in-picker click read as "outside" and closed the popover on mousedown before the click landed (a GIF/sticker/emoji tap "fell through"). They now test event.composedPath(), which pierces the shadow boundary and is unchanged for the iframe / standalone embeds.
    • team-status "online" dot alignment. The status dot is now aligned to the title's first line instead of drifting above it when operator avatars make the row taller.

v1.3.0

Choose a tag to compare

@wexio-owner wexio-owner released this 27 Sep 11:53

Minor Changes

  • 037c210: Full two-way messaging: multi-topic threads, offline outbox, blocked visitors, richer composer, and transcript download.

    Multi-topic conversation threads

    • A multi-topic conversation list: the visitor can keep several topics side by side, each with its own preview, unread count, and status (open / pending / resolved). Starting a new question opens a fresh thread instead of overwriting the current one.
    • The launcher badge, peek, thread list, and open thread now share one unread source, so reading a message clears it everywhere at once. Quick-reply chips render inside the launcher peek so a visitor can answer without opening the panel.
    • Per-thread realtime: typing, unread, operator-handoff and status changes update the right thread live.

    Blocked visitors

    • Two levels of blocking are now honored on the client. Thread-level: the visitor can't reply in that thread but can still start a new one. Global (contact-level): no composer anywhere and no new conversations, with friendly copy. The block is enforced on first paint (so a blocked visitor never sees a live composer) and kept current via the realtime stream. Blocked sends are dropped from the offline queue instead of retrying forever.

    Offline outbox

    • A generic IndexedDB queue backs the visitor's outbound actions — message sends, reactions, read receipts, profile changes, and activity tracking. Actions taken offline (or mid-reconnect) are persisted and converge automatically when the connection returns, so nothing is silently lost.

    Composer

    • Rich-text editing (bold / lists / links, Markdown-aware) and a GIF / sticker picker join the existing emoji picker, file attachments, and voice recorder.

    Conversation lifecycle

    • Download a conversation transcript from the header.
    • A clearer "conversation closed" state with a one-tap "start a new conversation".
    • A connection-status footer replaces the old branding footer, so a dropped connection is visible in-thread.

    Reliability

    • A code-split chunk that can't be fetched (for example the voice-note player while offline) now degrades gracefully to a fallback instead of breaking the whole conversation.

    Captured visitors (lazy inbox)

    • A drive-by visitor no longer opens a conversation until they actually engage. When there is nothing in the inbox yet, a configured welcome message shows as a default thread the visitor can read and reply in, rather than an empty "no conversations" screen — and the proactive welcome peek + badge appear once, then clear after it is read.
    • A first message (or an operator's proactive message) creates the conversation on the fly and its reply, greeting, and typing now render live in-thread — no reload, and no double launcher peek when a greeting flow is active.
    • Sent-message stability: the visitor's own bubble no longer flickers (animate out then back in) when the thread refetches after a send, and switching a thread's conversation id no longer remounts the open thread.

    Media message previews

    • A thread whose last message is a photo, video, gif, sticker, voice note, audio, or file now shows a typed label + thumbnail in the thread list and launcher peek, instead of a blank row.

    i18n

    • New conversation, thread, block, and transcript strings across all supported UI locales.

    No breaking changes to the package API — publicKey, user, config, and the onOpen / onClose / onResize callbacks are unchanged.

v1.2.4

Choose a tag to compare

@wexio-owner wexio-owner released this 14 Sep 07:51

Patch Changes

  • 4215287: Re-publish to complete the release across all distribution channels (npm, the per-package dist repos, GitHub Releases, and the CDN bundle) after the 1.2.3 publish only partially completed. No functional changes from 1.2.3.

v1.2.2

Choose a tag to compare

@wexio-owner wexio-owner released this 02 Sep 12:32

Patch Changes

  • 948dbaf: Fix website page-view tracking reporting the PREVIOUS page's title after a SPA navigation. The host router changes the URL synchronously but updates document.title a tick later, so the title was read too early. Both capture paths (the iframe loader.js and the web-component provider) now wait for <title> to actually update (via a MutationObserver, with a short timeout fallback) before reporting, so the title matches the new URL.