5.5.9 • Published 2 months ago

smooch v5.5.9

Weekly downloads
2,810
License
SEE LICENSE IN LI...
Repository
-
Last release
2 months ago

Smooch Web Messenger

npm version

Smooch is the best way to have personal, rich conversations with people on your website or customers on any device. Our features, integrations and developer-friendly APIs empower companies to connect with their customers in a whole new way.

The Smooch Web Messenger will add live web messaging to your website or web app. Customers will be able to talk to you from your website, while you manage conversations using your favorite business systems.

  • Let your customers talk to you the way they want by seamlessly moving web chat conversations to any messaging app.
  • Sync conversations across every device and channel your customers use.
  • Build better relationships with messaging that feels and looks tailored to your website.
  • Delight your customers with the most engaging conversational experience using rich messaging.
  • Maximize development productivity with a single codebase across platforms and add more channels anytime.
  • Bring every conversation into your existing business systems. No new tool to learn. See all integrations.
  • Allow multiple users to participate in a conversation with each other along with the business actor.

Note: this document is for version 5.0.0. If you are upgrading please see the release notes here.

Usage

Script Tag

Add the following code towards the end of the <head> section on your page and replace <integration-id> with your integration id at the end of the script. You may replace "5" with any version from 4.0.0 onwards, or with a major version (i.e.: "4" or "5") to load that specific version of the Web SDK. If a version is included without specifying the patch, the latest version of the specified major release will be loaded. If an invalid version is passed an error will be thrown and the Web SDK will fail to load.

<script>
    !function(o,d,s,e,f){var i,a,p,c=[],h=[];function t(){var t="You must provide a supported major version.";try{if(!f)throw new Error(t);var e,n="https://cdn.smooch.io/",r="smooch";e="string"==typeof this.response?JSON.parse(this.response):this.response;var o=f.match(/([0-9]+)\.?([0-9]+)?\.?([0-9]+)?/),s=o&&o[1],i=o&&o[2],a=o&&o[3],p=e["v"+s],c=e["v"+s+"."+i+".patch"];if(e.url||p||c){var h=d.getElementsByTagName("script")[0],u=d.createElement("script");if(u.async=!0,a)u.src=c||n+r+"."+f+".min.js";else{if(!(5<=s&&p))throw new Error(t);u.src=p}h.parentNode.insertBefore(u,h)}}catch(e){e.message===t&&console.error(e)}}o[s]={init:function(){i=arguments;var t={then:function(e){return h.push({type:"t",next:e}),t},catch:function(e){return h.push({type:"c",next:e}),t}};return t},on:function(){c.push(arguments)},render:function(){a=arguments},destroy:function(){p=arguments}},o.__onWebMessengerHostReady__=function(e){if(delete o.__onWebMessengerHostReady__,o[s]=e,i)for(var t=e.init.apply(e,i),n=0;n<h.length;n++){var r=h[n];t="t"===r.type?t.then(r.next):t.catch(r.next)}a&&e.render.apply(e,a),p&&e.destroy.apply(e,p);for(n=0;n<c.length;n++)e.on.apply(e,c[n])};var n=new XMLHttpRequest;n.addEventListener("load",t),n.open("GET","https://"+e+".webloader.smooch.io/",!0),n.responseType="json",n.send()}(window,document,"Smooch","<integration-id>","5");
</script>

then initialize the Web Messenger by placing this snippet towards the end of the body section of your page.

<script>
    Smooch.init({ integrationId: '<integration-id>' }).then(function () {
        // Your code after init is complete
    });
</script>

Browserify and Webpack

Install from npm

npm install --save smooch

Require and init

var Smooch = require('smooch');

Smooch.init({ integrationId: '<integration-id>' }).then(function () {
    // Your code after init is complete
});

Browser support

Web Messenger supports all popular browsers.

Desktop versions

  • Chrome: Latest and one major version behind
  • Edge: Latest and one major version behind
  • Firefox: Latest and one major version behind
  • Internet Explorer: 11+
  • Safari: Latest and one major version behind

Mobile versions

  • Stock browser on Android 4.1+
  • Safari on iOS 8+

Other browsers

Web Messenger is likely compatible with other and older browsers but we only test against the versions above.

API

Individual functions

init(options)

Initializes the Smooch widget in the web page using the specified options. It returns a promise that will resolve when the Web Messenger is ready. Note that except on and off, all methods needs to be called after a successful init.

Options
OptionOptional?Default valueDescription
integrationIdNo-Your integration id
externalIdYes-Optional. User's external id, which can be passed in init() as an alternative to login() (see below)
jwtYes-Optional. User's authentication token, which can be passed in init() as an alternative to login() (see below)
authCodeYes-An auth code for linking to an existing conversation (see more details here)
localeYesen-USLocale used for date formatting using the <language>-<COUNTRY> format. Language codes can be found here and country codes here. Note 1 : The country part is optional, and if a country is either not recognized or supported, it will fallback to using the generic language. If the language isn't supported, it will fallback to en-US. Note 2: this is only used for date formatting and doesn't provide built-in translations for Web Messenger. Refer to the documentation for how to handle translations.
soundNotificationEnabledYestrueEnables the sound notification for new messages
imageUploadEnabledYestrueEnables the image upload feature. (deprecated: use menuItems.imageUpload; if this option is false, it will disable menuItems.imageUpload and menuItems.fileUpload)
fixedHeaderYesfalseWhen enabled, the introduction pane will be pinned at the top of the conversation instead of scrolling with it.
embeddedYesFalseTells the widget it will be embedded. (see Embedded section below)
displayStyleYesbuttonChoose how the messenger will appear on your website. Must be either button or tab.
buttonIconUrlYes-When the displayStyle is button, you have the option of selecting your own button icon. The image must be at least 200 x 200 pixels and must be in either JPG, PNG, or GIF format.
buttonWidthYes58pxWhen the displayStyle is button, you have the option of specifying the button width.
buttonHeightYes58pxWhen the displayStyle is button, you have the option of specifying the button height.
businessNameYes-A custom business name.
businessIconUrlYes-A custom business icon url. The image must be at least 200 x 200 pixels and must be in either JPG, PNG, or GIF format.
backgroundImageUrlYes-A background image url for the conversation. Image will be tiled to fit the window.
integrationOrderYes-Array of integration IDs. When set, only integrations from this list will be displayed. If an empty array is used, no integrations will be displayed. Note: Listing an integration in the array doesn't guarantee that it will be displayed in the Web Messenger.
customColorsYesSee below.Colors used in the Web Messenger UI.
customTextYesSee the example belowStrings used in the Web Messenger UI. You can use these to either customize the text or translate it. Note: Some strings include variables (surrounded by {}) which must remain in your customized text.
menuItemsYesSee below.Choose menu items.
notificationChannelPromptEnabledYestrueEnables displaying a prompt to new users after their first message to suggest linking their chat instance with their other 3rd-party apps.
browserStorageYeslocalStorageChoose the storage type to use for storing user identity in the browser. Must be either localStorage or sessionStorage. Learn more
delegateYesundefinedSets a delegate on the conversation. See the delegate section for more details.
prechatCaptureYesSee below.Enables automatically capturing a user's name and email via a form before the start of a conversation. Disables the chat input until the form has been submitted.
canUserSeeConversationListYestrueAllows users to view their list of conversations.
customColors
OptionOptional?Default valueDescription
brandColorYes65758eThis color will be used in the messenger header and the button or tab in idle state. Must be a 3 or 6-character hexadecimal color.
conversationColorYes0099ffThis color will be used for customer messages, quick replies and actions in the footer. Must be a 3 or 6-character hexadecimal color.
actionColorYes0099ffThis color will be used for call-to-actions inside your messages. Must be a 3 or 6-character hexadecimal color.
customText

The list of localizable strings. These strings can be modified. If an option is not given a custom string, the default value will be used.

OptionDefault value
actionPaymentCompletedPayment Completed
actionPaymentErrorAn error occurred while processing the card. <br> Please try again or use a different card.
actionPostbackErrorAn error occurred while processing your action. Please try again.
clickToRetryMessage not delivered. Click to retry.
clickToRetryFormForm not submitted. Click anywhere on the form to retry.
connectNotificationTextSync your conversation and continue messaging us through your favorite app.
connectNotificationSingleTextBe notified when you get a reply.
conversationListHeaderTextMy conversations
conversationListRelativeTimeJustNowJust now
conversationListRelativeTimeMinute1 minute ago
conversationListRelativeTimeMinutes{value} minutes ago
conversationListRelativeTimeHour1 hour ago
conversationListRelativeTimeHours{value} hours ago
conversationListRelativeTimeYesterdayYesterday
conversationListTimestampFormatMM/DD/YY
conversationListPreviewAnonymousTextSomeone
conversationListPreviewCarouselText{user} sent a message
conversationListPreviewFileText{user} sent a file
conversationListPreviewFormText{user} sent a form
conversationListPreviewFormResponseText{user} filled a form
conversationListPreviewImageText{user} sent an image
conversationListPreviewLocationRequestText{user} sent a location request
conversationListPreviewUserTextYou
conversationTimestampHeaderFormatMMMM D YYYY, h:mm A
couldNotConnectOffline. You will not receive messages.
couldNotConnectRetryReconnecting...
couldNotConnectRetrySuccessYou're back online!
couldNotLoadConversationsCouldn’t load conversations.
emailChangeAddressChange my email
emailDescriptionTo be notified by email when you get a reply, enter your email address.
emailFieldLabelEmail
emailFieldPlaceholderYour email address
emailFormButtonSubmit
emailLinkingErrorMessagePlease submit a valid email address.
fetchHistoryLoad more
fetchingHistoryRetrieving history...
fileTooLargeErrorMax file size limit exceeded ({size})
fileTypeErrorUnsupported file type.
formErrorEntryRequiredThis entry is required
formErrorInvalidEmailEmail is invalid
formErrorNoLongerThanMust contain no more than ({characters}) characters
formErrorNoShorterThanMust contain at least ({characters}) characters
formErrorUnknownThis doesn't look quite right
formFieldSelectPlaceholderFallbackChoose one...
frontendEmailChannelDescriptionTo talk to us using email just send a message to our email address and we\'ll reply shortly:
headerTextHow can we help?
imageClickToReloadClick to reload image.
imageClickToViewClick to view {size} image.
imagePreviewNotAvailablePreview not available.
inputPlaceholderType a message...
inputPlaceholderBlockedComplete the form above...
introAppTextMessage us below or from your favorite app.
lineChannelDescriptionTo talk to us using LINE, scan this QR code using the LINE app and send us a message.
linkErrorAn error occurred when attempting to generate a link for this channel. Please try again.
linkChannelPageHeaderSync your conversation
locationNotSupportedYour browser does not support location services or it’s been disabled. Please type your location instead.
locationSecurityRestrictionThis website cannot access your location. Please type your location instead.
locationSendingFailedCould not send location
locationServicesDeniedThis website cannot access your location. Allow access in your settings or type your location instead.
messageErrorAn error occured while sending your message. Please try again.
messageIndicatorTitlePlural({count}) New messages
messageIndicatorTitleSingular({count}) New message
messageRelativeTimeDay{value}d ago
messageRelativeTimeHour{value}h ago
messageRelativeTimeJustNowJust now
messageRelativeTimeMinute{value}m ago
messageTimestampFormath:mm A
messageDeliveredDelivered
messageSeenSeen
messageSendingSending...
messageTooLongErrorMax message size limit exceeded ({size}).
messengerChannelDescriptionConnect your Facebook Messenger account to be notified when you get a reply and continue the conversation on Facebook Messenger.
newConversationButtonTextNew Conversation
notificationSettingsChannelsDescriptionSync this conversation by connecting to your favorite messaging app to continue the conversation your way.
notificationSettingsChannelsTitleOther Channels
notificationSettingsConnectedConnected
notificationSettingsConnectedAsConnected as {username}
prechatCaptureGreetingTextHi there 👋\nTo start off, we\'d like to know a little bit more about you:
prechatCaptureNameLabelYour name
prechatCaptureNamePlaceholderType your name...
prechatCaptureEmailLabelEmail
prechatCaptureEmailPlaceholdername@company.com
prechatCaptureConfirmationTextThanks for that! What can we help you with?
prechatCaptureMailgunLinkingConfirmationYou\'ll be notified here and by email at {email} once we reply.
sendButtonTextSend
settingsHeaderTextSettings
shareLocationLocation
smsBadRequestErrorWe were unable to communicate with this number. Try again or use a different one.
smsCancelCancel
smsChangeNumberChange my number
smsChannelDescriptionConnect your SMS number to be notified when you get a reply and continue the conversation over SMS.
smsChannelPendingDescriptionCheck your messages at {number} to confirm your phone number.
smsContinueSend
smsInvalidNumberErrorPlease submit a valid phone number.
smsLinkCancelledLink to {appUserNumber} was cancelled.
smsLinkPendingPending
smsPingChannelErrorThere was an error sending a message to your number.
smsSendTextSend me a text
smsStartTextingStart Texting
smsTooManyRequestsErrorA connection for that number was requested recently. Please try again in {minutes} minutes.
smsTooManyRequestsOneMinuteErrorA connection for that number was requested recently. Please try again in 1 minute.
smsUnhandledErrorSomething went wrong. Please try again.
syncConversationSync conversation
tapToRetryMessage not delivered. Tap to retry.
tapToRetryFormForm not submitted. Tap anywhere on the form to retry.
telegramChannelDescriptionConnect your Telegram account to be notified when you get a reply and continue the conversation on Telegram
unsupportedMessageTypeUnsupported message type.
unsupportedActionTypeUnsupported action type.
uploadDocumentFile
uploadInvalidErrorInvalid file.
uploadPhotoImage
uploadVirusErrorA virus was detected in your file and it has been rejected
viberChannelDescriptionConnect your Viber account to be notified when you get a reply and continue the conversation on Viber. To get started, scan the QR code using the Viber app.
viberChannelDescriptionMobileConnect your Viber account to be notified when you get a reply and continue the conversation on Viber. To get started, install the Viber app and tap Connect.
viberQRCodeErrorAn error occurred while fetching your Viber QR code. Please try again.
wechatChannelDescriptionConnect your WeChat account to be notified when you get a reply and continue the conversation on WeChat. To get started, scan this QR code using the WeChat app.
wechatChannelDescriptionMobileConnect your WeChat account to be notified when you get a reply and continue the conversation on WeChat. To get started, save this QR code image and upload it <a href=\'weixin://dl/scan\'>QR code scanner</a>.
wechatQRCodeErrorAn error occurred while fetching your WeChat QR code. Please try again.
whatsappChannelDescriptionDesktopSync your account to WhatsApp by scanning the QR code or clicking the link below.\nThen, send the pre-populated message to validate the sync request. (Your code: {{code}}).
whatsappChannelDescriptionMobileSync your account to WhatsApp by clicking the link below.\nThen, send the pre-populated message to validate the sync request. (Your code: {{code}}).
whatsappLinkingErrorAn error occurred while fetching your WhatsApp linking information. Please try again.

See below for an example.

menuItems
OptionOptional?Default valueDescription
imageUploadYestrueEnables the image upload menu item.
fileUploadYestrueEnables the file upload menu item.
shareLocationYestrueEnables the share location menu item.

See below for an example.

prechatCapture
OptionOptional?Default valueDescription
avatarUrlYesundefinedSets the URL of the avatar to use for the automatic reply to the prechat capture messages.
enabledYesfalseEnables the prechat capture experience.
enableEmailLinkingYestrueAutomatically links the user's email to the app's Mailgun integration if it exists. If the property fields is defined, the first field of type email will be used.
fieldsYes-Overrides the default Prechat Capture fields to define a custom form.

beforeSend delegate will apply to the user's submitted message.

See below for an example.

prechatCapture uses the following customText options:

OptionDescription
prechatCaptureGreetingTextText for the initial greeting message.
prechatCaptureNameLabelLabel displayed for the default form's first field.
prechatCaptureNamePlaceholderPlaceholder for the default form's first field.
prechatCaptureEmailLabelLabel displayed for the default form's second field.
prechatCaptureEmailPlaceholderPlaceholder for the default form's second field.
prechatCaptureConfirmationTextText for the confirmation message sent when the form is completed.
prechatCaptureMailgunLinkingConfirmationText for the notification message when a user has linked their email address.
Example
var skPromise = Smooch.init({
    integrationId: '<integration-id>',
    // For authenticated mode
    jwt: 'your_jwt',
    externalId: 'user_external_id',
    locale: 'en-US',

    customColors: {
        brandColor: '65758e',
        conversationColor: '65758e',
        actionColor: '65758e',
    },

    menuItems: {
        imageUpload: true,
        fileUpload: true,
        shareLocation: true,
    },

    fixedHeader: false,

    prechatCapture: {
        avatarUrl: 'http://domain.com/images/avatar.png',
        enabled: true,
        enableEmailLinking: true,
        fields: [
            {
                type: 'email',
                name: 'email',
                label: 'Email',
                placeholder: 'your@email.com',
            },
            {
                type: 'text',
                name: 'company-website',
                label: 'Company website',
                placeholder: 'mycompany.com',
            },
            {
                type: 'select',
                name: 'company-size',
                label: 'Company size',
                placeholder: 'Choose a number...',
                options: [
                    {
                        name: '1-10',
                        label: '1-10 employees',
                    },
                    {
                        name: '11-50',
                        label: '11-50 employees',
                    },
                    {
                        name: '51+',
                        label: '51+ employees',
                    },
                ],
            },
        ],
    },

    customText: {
        actionPaymentCompleted: 'Payment Completed',
        actionPaymentError:
            'An error occurred while processing the card. <br> Please try again or use a different card.',
        actionPostbackError: 'An error occurred while processing your action. Please try again.',
        clickToRetry: 'Message not delivered. Click to retry.',
        clickToRetryForm: 'Form not submitted. Click anywhere on the form to retry.',
        connectNotificationText: 'Sync your conversation and continue messaging us through your favorite app.',
        connectNotificationSingleText: 'Be notified when you get a reply.',
        conversationListHeaderText: 'My conversations',
        conversationListPreviewAnonymousText: 'Someone',
        conversationListPreviewCarouselText: '{user} sent a message',
        conversationListP
5.5.9

2 months ago

5.5.8

5 months ago

5.5.7

5 months ago

5.5.6

9 months ago

5.5.5

1 year ago

5.5.4

1 year ago

5.4.8

1 year ago

5.4.7

1 year ago

5.5.3

1 year ago

5.5.2

1 year ago

5.5.1

1 year ago

5.5.0

1 year ago

5.4.6

2 years ago

5.4.5

2 years ago

5.4.4

2 years ago

5.4.3

2 years ago

5.4.2

2 years ago

5.4.1

2 years ago

5.4.0

2 years ago

5.3.16

2 years ago

5.3.15

2 years ago

5.3.14

2 years ago

5.3.13

2 years ago

5.3.12

2 years ago

5.3.11

3 years ago

5.3.10

3 years ago

5.3.9

3 years ago

5.3.8

3 years ago

5.3.7

3 years ago

5.3.6

3 years ago

5.3.5

3 years ago

5.3.4

3 years ago

5.3.3

3 years ago

5.3.1

3 years ago

5.3.0

3 years ago

5.2.3

3 years ago

5.2.2

3 years ago

5.2.1

3 years ago

5.2.0

3 years ago

5.1.4

3 years ago

5.1.3

3 years ago

5.1.2

4 years ago

5.1.1

4 years ago

5.1.0

4 years ago

5.0.3

4 years ago

5.0.2

4 years ago

5.0.1

4 years ago

5.0.0

4 years ago

4.29.21

4 years ago

4.29.20

4 years ago

4.29.19

4 years ago

4.29.18

4 years ago

4.29.17

4 years ago

4.29.16

4 years ago

4.29.15

4 years ago

4.29.14

4 years ago

4.29.13

4 years ago

4.29.12

4 years ago

4.29.11

4 years ago

4.29.10

4 years ago

4.29.9

4 years ago

4.29.8

4 years ago

4.29.7

4 years ago

4.29.6

4 years ago

4.29.5

4 years ago

4.29.4

4 years ago

4.29.3

4 years ago

4.29.2

4 years ago

4.29.1

4 years ago

4.29.0

4 years ago

4.28.9

4 years ago

4.28.8

4 years ago

4.28.7

4 years ago

4.28.6

4 years ago

4.28.5

4 years ago

4.28.4

4 years ago

4.28.3

4 years ago

4.28.2

4 years ago

4.28.1

4 years ago

4.28.0

4 years ago

4.27.13

4 years ago

4.27.12

4 years ago

4.27.11

4 years ago

4.27.10

4 years ago

4.27.9

4 years ago

4.27.8

4 years ago

4.27.7

4 years ago

4.27.6

4 years ago

4.27.4

4 years ago

4.27.5

4 years ago

4.27.3

4 years ago

4.27.2

4 years ago

4.27.1

4 years ago

4.27.0

4 years ago

4.26.1

4 years ago

4.26.0

4 years ago

4.25.7

4 years ago

4.25.6

5 years ago

4.25.5

5 years ago

4.25.4

5 years ago

4.25.3

5 years ago

4.25.2

5 years ago

4.25.1

5 years ago

4.25.0

5 years ago

4.24.0

5 years ago

4.23.1

5 years ago

4.23.0

5 years ago

4.22.1

5 years ago

4.22.0

5 years ago

4.21.0

5 years ago

4.20.1

5 years ago

4.20.0

5 years ago

4.19.18

5 years ago

4.19.17

5 years ago

4.19.16

5 years ago

4.19.15

5 years ago

4.19.14

5 years ago

4.19.13

5 years ago

4.19.12

5 years ago

4.19.11

5 years ago

4.19.10

5 years ago

4.19.9

5 years ago

4.19.8

5 years ago

4.19.7

5 years ago

4.19.6

5 years ago

4.19.5

5 years ago

4.19.4

5 years ago

4.19.3

5 years ago

4.19.2

5 years ago

4.19.1

5 years ago

4.19.0

5 years ago

4.18.9

5 years ago

4.18.8

5 years ago

4.18.7

5 years ago

4.18.6

5 years ago

4.18.5

5 years ago

4.18.4

5 years ago

4.18.3

5 years ago

4.18.2

5 years ago

4.18.1

5 years ago

4.18.0

5 years ago

4.17.16

5 years ago

4.17.15

5 years ago

4.17.14

5 years ago

4.17.13

5 years ago

4.17.12

5 years ago

4.17.11

5 years ago

4.17.10

5 years ago

4.17.9

5 years ago

4.17.8

5 years ago

4.17.7

5 years ago

4.17.6

5 years ago

4.17.5

5 years ago

4.17.4

5 years ago

4.17.3

5 years ago

4.17.2

5 years ago

4.17.1

5 years ago

4.17.0

5 years ago

4.16.13

5 years ago

4.16.12

5 years ago

4.16.11

5 years ago

4.16.10

5 years ago

4.16.9

5 years ago

4.16.8

5 years ago

4.16.7

5 years ago

4.16.6

5 years ago

4.16.5

5 years ago

4.16.4

5 years ago

4.16.3

5 years ago

4.16.2

5 years ago

4.16.1

5 years ago

4.16.0

5 years ago

4.15.2

5 years ago

4.15.1

5 years ago

4.15.0

5 years ago

4.14.4

6 years ago

4.14.3

6 years ago

4.14.2

6 years ago

4.14.1

6 years ago

4.14.0

6 years ago

4.13.2

6 years ago

4.13.1

6 years ago

4.13.0

6 years ago

4.12.14

6 years ago

4.12.13

6 years ago

4.12.12

6 years ago

4.12.11

6 years ago

4.12.10

6 years ago

4.12.9

6 years ago

4.12.8

6 years ago

4.12.7

6 years ago

4.12.6

6 years ago

4.12.5

6 years ago

4.12.4

6 years ago

4.12.3

6 years ago

4.12.2

6 years ago

4.12.1

6 years ago

4.12.0

6 years ago

4.11.4

6 years ago

4.11.3

6 years ago

4.11.2

6 years ago

4.11.1

6 years ago

4.11.0

6 years ago

4.10.1

6 years ago

4.10.0

6 years ago

4.9.1

6 years ago

4.9.0

6 years ago

4.8.5

6 years ago

4.8.4

6 years ago

4.8.3

6 years ago

4.8.2

6 years ago

4.8.1

6 years ago

4.8.0

6 years ago

4.7.2

6 years ago

4.7.1

6 years ago

4.7.0

6 years ago

4.6.1

6 years ago

4.6.0

6 years ago

4.5.4

6 years ago

4.5.3

6 years ago

4.5.2

6 years ago

4.5.1

6 years ago

4.5.0

6 years ago

4.4.0

6 years ago

4.3.4

6 years ago

4.3.3

6 years ago

4.3.2

6 years ago

4.3.1

7 years ago

4.3.0

7 years ago

4.2.0

7 years ago

4.1.0

7 years ago

4.0.6

7 years ago

4.0.5

7 years ago

4.0.4

7 years ago

4.0.3

7 years ago

4.0.2

7 years ago

4.0.1

7 years ago

4.0.0

7 years ago

3.15.2

7 years ago

3.15.1

7 years ago

3.15.0

7 years ago

3.14.5

7 years ago

3.14.4

7 years ago

3.14.3

7 years ago

3.14.2

7 years ago

3.14.1

7 years ago

3.14.0

7 years ago

3.13.3

7 years ago

3.13.2

7 years ago

3.13.1

7 years ago

3.13.0

7 years ago

3.12.0

7 years ago

3.11.0

7 years ago

3.10.0

7 years ago

3.9.7

7 years ago

3.9.6

7 years ago

3.9.5

7 years ago

3.9.4

7 years ago

3.9.3

7 years ago

3.9.2

7 years ago

3.9.1

7 years ago

3.9.0

7 years ago

3.8.0

7 years ago

3.7.0

7 years ago

3.6.1

7 years ago

3.6.0

7 years ago

3.5.2

8 years ago

3.5.1

8 years ago

3.5.0

8 years ago

3.4.2

8 years ago

3.4.1

8 years ago

3.4.0

8 years ago

3.3.0

8 years ago

3.2.2

8 years ago

3.2.1

8 years ago

3.2.0

8 years ago

3.1.4

8 years ago

3.1.3

8 years ago

3.1.2

8 years ago

3.1.1

8 years ago

3.1.0

8 years ago

3.0.4

8 years ago

3.0.3

8 years ago

3.0.2

8 years ago

3.0.1

8 years ago

3.0.0

8 years ago

2.8.1

8 years ago

2.8.0

8 years ago

2.7.0

8 years ago

2.6.4

8 years ago

2.6.3

8 years ago

2.6.2

8 years ago

2.6.1

8 years ago

2.6.0

8 years ago

2.5.1

8 years ago

2.5.0

8 years ago

2.4.1

8 years ago

2.4.0

8 years ago

2.3.1

8 years ago

2.3.0

8 years ago

2.2.3

8 years ago

2.2.2

8 years ago

2.2.1

8 years ago

2.2.0

8 years ago

2.1.15

8 years ago

2.1.14

8 years ago

2.1.13

8 years ago

2.1.12

8 years ago

2.1.11

8 years ago

2.1.10

8 years ago

2.1.9

8 years ago

2.1.8

8 years ago

2.1.7

8 years ago

2.1.6

8 years ago

2.1.5

8 years ago

2.1.4

8 years ago

2.1.3

8 years ago

2.1.2

8 years ago

2.1.1

8 years ago

2.1.0

8 years ago

2.0.8

8 years ago

2.0.7

8 years ago

2.0.6

8 years ago

2.0.5

8 years ago

2.0.4

8 years ago

2.0.1

8 years ago

2.0.0

9 years ago