# Changelog ## 4.0.1 (Unreleased) - Use https://compliance.conversations.im instead of (dead) https://xmpp.net - New config setting [auto_register_muc_nickname](https://conversejs.org/docs/html/configuration.html#auto-register-muc-nickname) - New config setting [enable_muc_push](https://conversejs.org/docs/html/configuration.html#enable-muc-push) - #1182 MUC occupants without nick or JID created - #1184 Notification error when message has no body - #1201 Emoji picker appears when pressing enter ## 4.0.0 (2018-09-07) ## New Features - #161 XEP-0363: HTTP File Upload - #194 Include entity capabilities in outgoing presence stanzas - #337 API call to update a VCard - #421 XEP-0308: Last Message Correction - #497 XEP-0384: OMEMO encrypted messaging - #968 Use nickname from VCard when joining a room - #986 Affiliation changes aren't displayed in the chat - #1081 Allow for shift-enter to insert newlines - #1091 There's now only one CSS file for all view modes. - #1094 Show room members who aren't currently online - #1106 Support for Roster Versioning - #1137 Autocompletion and support for [XEP-0372 References](https://xmpp.org/extensions/xep-0372.html), specifically section "3.2 Mentions". - It's now also possible to edit your VCard via the UI - Automatically grow/shrink input as text is entered/removed - MP4 and MP3 files when sent as XEP-0066 Out of Band Data, are now playable directly in chat - Support for rendering URLs sent according to XEP-0066 Out of Band Data. - Geo-URIs (e.g. from Conversations) are now replaced by links to openstreetmap (works in reverse also) - Add a checkbox to indicate whether a trusted device is being used or not. If the device is not trusted, sessionStorage is used and all user data is deleted from the browser cache upon logout. If the device is trusted, localStorage is used and user data is cached indefinitely. - Initial support for [XEP-0357 Push Notifications](https://xmpp.org/extensions/xep-0357.html), specifically registering an "App Server". - Add support for logging in via OAuth (see the [oauth_providers](https://conversejs.org/docs/html/configuration.html#oauth-providers) setting) ### Bugfixes - Spoiler messages didn't include the message author's name. - Documentation includes utf-8 charset to make minfied versions compatible across platforms. #1017 - #1026 Typing in MUC shows "Typing from another device" - #1039 Multi-option data form elements not shown and saved correctly - #1143 Able to send blank message ### API changes - `_converse.api.vcard.get` now also accepts a `Backbone.Model` instance and has an additional `force` parameter to force fetching the vcard even if it has already been fetched. - New API method `_converse.api.vcard.update`. - The `contactStatusChanged` event has been renamed to `contactPresenceChanged` and a event `presenceChanged` is now also triggered on the contact. - `_converse.api.chats.open` and `_converse.api.rooms.open` now returns a `Presence` which resolves with the `Backbone.Model` representing the chat object. ## UI changes - #956 Conversation pane should show my own identity in pane header - The UI is now based on Bootstrap4 and Flexbox is used extensively. - Fontawesome 5 is used for icons. - User Avatars are now shown in chat messages. ## Configuration changes - Removed the `storage` configuration setting, use [trusted](https://conversejs.org/docs/html/configuration.html#trusted) instead. - Removed the `use_vcards` configuration setting, instead VCards are always used. - Removed the `xhr_custom_status` and `xhr_custom_status_url` configuration settings. If you relied on these settings, you can instead listen for the [statusMessageChanged](https://conversejs.org/docs/html/events.html#contactstatusmessagechanged) event and make the XMLHttpRequest yourself. - Removed `xhr_user_search` in favor of only accepting `xhr_user_search_url` as configuration option. - `xhr_user_search_url` has to include the `?` character now in favor of more flexibility. See example in the documentation. - The data returned from the `xhr_user_search_url` must now include the user's `jid` instead of just an `id`. - New configuration settings [nickname](https://conversejs.org/docs/html/configuration.html#nickname) and [auto_join_private_chats](https://conversejs.org/docs/html/configuration.html#auto-join-private-chats). ## Architectural changes - Extracted the views from `converse-muc.js` into `converse-muc-views.js` and where appropriate moved methods from the views into the models/collections. This makes MUC possible in headless mode. - Created a new core plugin `converse-roster.js` which contains the models for roster-related data. Previously this code was in `converse-core.js`. - VCards are now stored separately from chats and roster contacts. ## Other - Support for OTR (off-the-record) encryption has been dropped. ## 3.3.4 (2018-03-05) - Don't show bookmark toggles when PEP bookmarking not supported by the XMPP server. - Emojis are now sent in unicode instead of short names (also in MUCs) ### Bugfixes - Server field in `Rooms` tab showed MUC supporting clients instead of only components. - Avatars weren't being shown. - Bookmarks list and open rooms list weren't recreated after logging in for a 2nd time (without reloading the browser). - #1022 Status message not sent out on subsequent presences - #1024 null reference on MUC Invite - #1025 OTR lock icon disappears - #1027 `new Event` not supported in IE11 - #1028 Avoid `eval` (crept in via `_.template` from lodash). ### Translation changes - New locale: Bulgarian - Updated German, Russian, Chinese (traditional), Norwegian Bokmål and French translations. ## 3.3.3 (2018-02-14) ### Bugfixes - Attribute error when empty IQ stanza is returned for vCard query - In fullscreen view, sometimes a background MUC would come into the foreground when a new message appears inside it. ### Security fixes - CVE-2018-6591: Don't allow PEP bookmarks if `pubsub#publish-options` is not advertised by the server. In previous versions of converse.js, bookmarks sent to servers that don't support `pubsub#publish-options` were visible to all your contacts, even though they should be kept private. This is due to those servers simply ignoring the `pubsub#publish-options` directive and converse.js not checking first whether `pubsub#publish-options` is supported before setting bookmarks via PEP. More info here: https://gultsch.de/converse_bookmarks.html ### New features - XEP-0382 Spoiler Messages (currently only for private chats) - Listen for new room bookmarks pushed from the user's PEP service. - Simplified the [embedded](https://conversejs.org/demo/embedded.html) usecase. - No need to manually blacklist or whitelist any plugins. - Relies on the [view_mode](https://conversejs.org/docs/html/configuration.html#view-mode) being set to `'embedded'`. - The main `converse.js` build can be used for the embedded usecase. - Maintain MUC session upon page reload ### API changes - New API method `_converse.api.disco.getIdentity` to check whether a JID has a given identity. ### Configuration settings - `auto_reconnect` is now set to `true` by default. - New configuration setting [allow_public_bookmarks](https://conversejs.org/docs/html/configuration.html#allow-public-bookmarks) - New configuration setting [root](https://conversejs.org/docs/html/configuration.html#root) - The [view_mode](https://conversejs.org/docs/html/configuration.html#view-mode) setting now has a new possible value: `embedded` ### Translation updates - Chinese (Traditional), French, German, Portuguese (Brazil), Russian, Ukrainian ## 3.3.2 (2018-01-29) ### Bugfixes - Various fixes for IE11. - Could not register on Ejabberd 18. `"Missing attribute 'id' in tag qualified by namespace 'jabber:client'"` - #878 Ending slash in link not recognized - #921 FATAL error when `visible_toolbar_buttons.emoji = false` - #959 Add padding for the iPhone X (to the mobile CSS). - #993 `moment.format` is not a function error when sending a message. - #994 TypeError when using the `user.login` API. - #995 `ChildNode.replaceWith` is not available in Internet Explorer or Safari. Use `Node.replaceChild` instead. - #999 MUC Chat Send button causes page reload - #1000 Scroll to bottom when maximizing a chat room. - #1003 Handle bare MUC room JIDs ### Translation changes - Updated Dutch, French, Japanese, Norwegian Bokmål and Ukrainian translations ## 3.3.1 (2018-01-18) ### UI/UX changes - Add new configuration option [show_message_load_animation](https://conversejs.org/docs/html/configuration.html#show-message-load-animation) with a default value of `false`. The message load animations (added in 3.3.0) cause slowness and performance issues in Firefox, so they're now disabled by default. ### Translation changes - Updated Spanish and French translations. - New translation: "Simplified Chinese" - Rename `zh` language code to `zh_TW` and add Simplified Chinese as `zh_CN` ## 3.3.0 (2018-01-17) ### Bugfixes - #800 Could not register successfully in ejabberd 17.01 - #949 Don't flash the roster contacts filter (i.e. hide by default) - #951 Duplicate messages received in an MUC chat room. - #953 MUC "Features" displayed when exiting configuration - #967 Rooms list doesn't show when the server doesn't support bookmarks - Don't require `auto_login` to be `true` when using the API to log in. - Moment locale wasn't being set to the value passed via the `i18n` option. - In the chat heading, two avatars sometimes get rendered. - Refetch the roster from the server after reconnection. From the perspective of the XMPP server, this is an entirely new login, and therefore as per [RFC-6121](https://tools.ietf.org/html/rfc6121#section-2.1.6) the roster SHOULD be queried, making the client an "interested resource". Otherwise connected contacts might not get your presence updates. - The way the archive ID of a MAM message is specified, has changed. See https://xmpp.org/extensions/xep-0313.html#archives_id - Fixed error building DOM toggle_chats.html span.unread-message-count class attribute - Bugfix. In a MUC the `/help` command didn't render properly. - The `/voice` MUC command didn't set the right role in order to grant voice again. ### New Features - Emojis are now sent in unicode instead of short names - #314 Add support for opening chat rooms with a URL fragment such as `#converse/room?jid=room@domain` and private chats with a URL fragment such as `#converse/chat?jid=user@domain` - #828 Add routing for the `#converse/login` and `#converse/register` URL fragments, which will render the registration and login forms respectively. - New configuration setting [view_mode](https://conversejs.org/docs/html/configuration.html#view-mode) This removes the need for separate `inverse.js` and `converse-mobile.js` builds. Instead the `converse.js` build is now used with `view_mode` set to `fullscreen` and `mobile` respectively. - Fetch VCard when starting a chat with someone not in the user's roster. - Show status messages in an MUC room when a user's role changes. - In MUC chat rooms, collapse multiple, consecutive join/leave messages. - Performance improvements for rendering private chats, rooms and the contacts roster. - MUC Leave/Join messages now also show a new day indicator if applicable. ### API changes - New API method `_converse.disco.supports` to check whether a certain service discovery feature is supported by an entity. - New API method `_converse.api.vcard.get` which fetches the VCard for a particular JID. ### Configuration changes - `hide_open_bookmarks` is now by default `true`. ### UX/UI changes - #984 Improve loading of archived messages via "infinite scroll" - Use CSS3 fade transitions to render various elements. - Remove `Login` and `Registration` tabs and consolidate into one panel. - Show validation error messages on the login form. - Don't hang indefinitely and provide nicer error messages when a connection can't be established. - Consolidate error and validation reporting on the registration form. - Don't close the emojis panel after inserting an emoji. - Focus the message textarea when the emojis panel is opened or closed. - MUC chatroom occupants are now sorted alphabetically and according to their roles. ### Technical changes - Converse.js now includes a [Virtual DOM](https://github.com/snabbdom/snabbdom) via [backbone.vdomview](https://github.com/jcbrand/backbone.vdomview) and uses it to render various views. - Converse.js no longer includes all the translations in its build. Instead, only the currently relevant translation is requested. This results in a much smaller filesize but means that the translations you want to provide need to be available. See the [locales_url](https://conversejs.org/docs/html/configuration.html#locales-url) configuration setting for more info. - The translation machinery has now been moved to a separate module in `src/i18n.js`. - jQuery has been completely removed as a dependency (still used in tests though). ## 3.2.1 (2017-08-29) ### Bugfixes - Various IE11 fixes. - #907 Unnecessary login validation error when `default_domain` or `locked_domain` are set. - #908 Login form for inVerse is only 200px when `allow_registration` is set to `false`. - #909 Translations written as template literals [aren't parsed properly by xgettext](https://savannah.gnu.org/bugs/?50920). - #911 Use `getDefaultNickName` consistently to allow better overrides via plugins. - #912 `maximize` method in `converse-minimize` fails if the `controlbox` is not there. ## 3.2.0 (2017-08-09) ### New Plugins - New plugin `converse-disco` which replaces the original support for [XEP-0030](https://xmpp.org/extensions/xep-0030.html) and which has been refactored to allow features for multiple entities to be stored. ### New features and improvements - Add support for Emojis (either native, or via Emojione). - Add JID validation to the contact add form, the occupant invite form and the login form. - #896 Consistently use `XMPP username` in user-facing text (instead of JID, Jabber ID etc.). ### New configuration settings * The `visible_toolbar_buttons.emoticons` configuration option is now changed to `visible_toolbar_buttons.emoji`. * [use_emojione](https://conversejs.org/docs/html/configuration.html#use-emojione) is used to determine whether Emojione should be used to render emojis, otherwise rendering falls back to native browser or OS support. * [emojione_image_path](https://conversejs.org/docs/html/configuration.html#emojione-image-path) is used to specify from where Emojione will load images for rendering emojis. ### New events * ['discoInitialized'](https://conversejs.org/docs/html/development.html#discoInitialized) * ['afterMessagesFetched'](https://conversejs.org/docs/html/development.html#afterMessagesFetched) ### Code changes - Removed jQuery from `converse-core`, `converse-vcard` and `converse-roomslist`. - Remove `jquery.easing` from the full build. Was only being used by the [conversejs.org](https://conversejs.org) website, which has been updated to not rely on it. - All promises are now native (or polyfilled) ES2015 Promises instead of jQuery's Deferred. - #866 Add babel in order to support ES2015 syntax #### Bugfixes: - The domain was queried for MAM:2 support, instead of the JID. - Roster filter is not shown when all groups are collapsed. - When filtering, contacts in closed groups appear. - Room name wasn't being updated after changing it in the configuration form. - Server disco features were "forgotten" after logging out and then logging in again. - Don't show duplicate sent groupchat messages in Slack chat rooms. - Bookmark icon shown in the open rooms list when `allow_bookmarks` is to `false`. - It wasn't possible to add or remove bookmarks via the "Open Rooms" list. - #879 Text in links are converted to smileys leading to non-clickable links. - #899: Only touch `stamp-npm` if `npm install` was successful - #902 `make build` dependends on non-existing files ## 3.1.1 (2017-07-12) - Use a patched version of [awesomplete](https://github.com/LeaVerou/awesomplete) which doesn't render suggestions as HTML (possible XSS attack vector). [jcbrand] More info here: https://github.com/LeaVerou/awesomplete/pull/17082 ## 3.1.0 (2017-07-05) ### API changes - Deprecate the `updateSettings` method in favour of `_converse.settings.update`. [jcbrand] - Add a new API method `_converse.promises.add` for exposing promises to be used with `_converse.waitUntil`. [jcbrand] - The `message` event now returns a data object with `stanza` and `chatbox` attributes, instead of just the stanza. [jcbrand] ### New Plugins - New non-core plugin `converse-singleton` which ensures that no more than one chat is visible at any given time. Used in the mobile build: `converse-mobile.js` and makes the unread messages counter possible there. [jcbrand] - New non-core plugin `converse-roomslist`, which shows a list of open rooms in the `Rooms` tab of the control box. [jcbrand] ### New configuration settings - New setting for `converse-bookmarks`: [hide_open_bookmarks](https://conversejs.org/docs/html/configuration.html#hide-open-bookmarks) It is meant to be set to `true` when using `converse-roomslist` so that open rooms aren't listed twice (in the rooms list and the bookmarks list). [jcbrand] ### Github tickets resolved - #567 Unreaded message count reset on page load [novokrest] - #575 Logging out from converse.js doesn't clear the connection status from the sessionStorage [jcbrand] - #591 Unread message counter is reset when the chatbox is closed [novokrest] - #754 Show unread messages next to roster contacts. [jcbrand] - #864 Remove all inline CSS to comply with strict Content-Security-Policy headers [mathiasertl] - #873 Inconsistent unread messages count updating [novokrest] - #887 Make embedded images clickabe [jcbrand] - #890 Message carbons not sent out after reconnection [jcbrand] - #894 Room affiliation lost when connection jid and room presence jid are of different case [Rayzen] ### Miscellaneous - Support for [XMPP-0313 Message Archive Management](https://xmpp.org/extensions/xep-0313.html) has been upgraded to version 2. [jcbrand] - Show unread messages for minimized chats. [jcbrand] - Render nickname form when entering a room via invitation. [jcbrand] ## 3.0.2 (2017-04-23) *Dependency updates*: - Jasmine 2.5.3 - Phantomjs 2.1.14 - moment 2.18.1 - sinon 2.1.0 - eslint 3.19.0 - Don't rerender the text input when filtering contacts. [jcbrand] - Show the MUC server in a bookmarked room's info view (in the bookmarks list). [jcbrand] - Enable creation of `dist/converse-muc-embedded.js` build file for the embedded MUC room demo. [jcbrand] - Use `noConflict` to avoid polluting globale namespace with lodash and Backbone. [jcbrand] - Bugfix: MUC user's nickname wasn't being shown in HTML5 notification messages. [jcbrand] - Bugfix: OTR meta-messages were being shown in HTML5 notifications. [jcbrand] - CSS fix: Icon lock wasn't showing. [jcbrand] - #626 Open chat minimised [novokrest] - #842 Persistent muc room creation not working [jcbrand] - #848 OTR doesn't start when `cache_otr_key` is set to `true`. [jcbrand] - #849 `TypeError: _converse.i18n.locale_data is undefined` when reconnecting. [jcbrand] - #850 Roster not loading when group names are numbers. [jcbrand] ## 3.0.1 (2017-04-04) - Bugfix. Endless spinner when trying to log in after rendering the registration form. [jcbrand] - #585 Duplicate contact created due to JID case sensivity [saganshul] - #628 Fixes the bug in displaying chat status during private chat. [saganshul] - #628 Changes the message displayed while typing from a different resource of the same user. [smitbose] - #675 Time format made configurable. See [time_format](https://conversejs.org/docs/html/configuration.html#time-format) [smitbose] - #682 Add "Send" button to input box in chat dialog window. See [show_send_button](https://conversejs.org/docs/html/configuration.html#show-send-button) [saganshul] - #704 Automatic fetching of registration form when [registration_domain](https://conversejs.org/docs/html/configuration.html#registration-domain) is set. [smitbose] - #806 The `_converse.listen` API event listeners aren't triggered. [jcbrand] - #807 Error: Plugin "converse-dragresize" tried to override HeadlinesBoxView but it's not found. [jcbrand] - #811 jQuery wasn't being closured in builds. [jcbrand] - #814 Images from URLs with query strings aren't being rendered. [novokrest] - #820 Inconsistency in displaying room features. [jcbrand] ## 3.0.0 (2017-03-05) - **Breaking changes**: * Plugins must now be whitelisted. See the [whitelisted_plugins](https://conversejs.org/docs/html/configuration.html#whitelisted-plugins) setting. * Callbacks for `converse.on` now no longer receive an event object as first parameter. * The API has been split into public and private parts. The private API methods are now only available to plugins. For more info, read [developer API](https://conversejs.org/docs/html/developer_api.html) and the [plugin_development](https://conversejs.org/docs/html/plugin_development.html) documentation. * To prevent confusion the private, closured object, only available to plugins, has been renamed from `converse` to `_converse`. The public API is accessible via a global `converse` object. * The `keepalive` and `roster_groups` options are now set to `true` by default. * Templates are no longer stored as attributes on the `_converse` object. If you need a particular template, use `require` to load it. - Bugfix. After bookmarking a room for which a nickname is required, return to the nickname form. [jcbrand] - Show the chat states of room occupants. [jcbrand] - The no-jQuery build has been renamed from `converse.nojquery.js` to `converse-no-jquery.js` to fit the convention used for other build names. [jcbrand] - 50 is the new default [archived_messages_page_size](https://conversejs.org/docs/html/configuration.html#archived-messages-page-size) [jcbrand] - Better support for delayed delivery of presence stanzas (XEP-0203). [jcbrand] - The chat room `description` is now shown in the heading, not the `subject`. [jcbrand] - Chat room features are shown in the sidebar. [jcbrand] - Hide the chat room invite widget if the room is not open or if the room is members-only and the user is not the owner. [jcbrand] - Created a new non-core plugin `converse-muc-embedded` which embeds a single chat room into a page. An example can be found at https://conversejs.org/demo/embedded.html [jcbrand] - Use lodash instead of underscore.js [jcbrand] - Case insensitive matching of moderation commands. [jcbrand] - Add `/subject` as alias to `/topic` [jcbrand] - `message_carbons`, `play_sounds` and `allow_chat_pending_contacts` now default to `true` [jcbrand] - Improved roster filter UX. [jcbrand] - Render the login form again upon authfail. [jcbrand] - New promises API: [waitUntil](https://conversejs.org/docs/html/developer_api.html#waituntil) [jcbrand] - New configuration setting: [show_chatstate_notifications](https://conversejs.org/docs/html/configuration.html#show-chatstate-notifications) [jcbrand] - New configuration setting: [whitelisted_plugins](https://conversejs.org/docs/html/configuration.html#whitelisted-plugins) [jcbrand] - New configuration setting: [blacklisted_plugins](https://conversejs.org/docs/html/configuration.html#blacklisted-plugins) [jcbrand] - The API now no longer returns wrapped chatboxes (or rooms) but instead a Backbone.View object. This means the API of the returned object has changed. You're still able to do everything from before but now also much more. [jcbrand] - Allow JIDs not on the roster to be invited to a chat room. [jcbrand] - Bugfix. `TypeError: this.sendConfiguration(...).then is not a function` when an instant room is created. [jcbrand] - Ensure consistent behavior from `show_controlbox_by_default` [jcbrand] - #365 Show join/leave messages for chat rooms. New configuration setting: [muc_show_join_leave](https://conversejs.org/docs/html/configuration.html#muc-show-join-leave) - #366 Show the chat room occupant's JID in the tooltip (if you're allowed to see it). [jcbrand] - #610, #785 Add presence priority handling [w3host, jcbrand] - #620 `auto_away` shouldn't change the user's status if it's set to `dnd`. [jcbrand] - #694 The `notification_option` wasn't being used consistently. [jcbrand] - #745 New config option [priority](https://conversejs.org/docs/html/configuration.html#priority) [jcbrand] - #770 Allow setting contact attrs on chats.open [Ape] - #790 MAM retrieval broken [jcbrand] ## 2.0.6 (2017-02-13) - Escape user-generated input to prevent JS-injection attacks. (Thanks to SamWhited) [jcbrand] - #486 Honor existing mam user configuration [throwaway42] - #749 /me will show your contact's name in the sent field [jcbrand] - #774 Browser language (fr-fr or fr) is not detected by default [jcbrand] - #775 Anonymous login form is a text field instead of a push button [jcbrand] ## 2.0.5 (2017-02-01) - #743, #751, #753 Update to Strophe 1.2.12. SASL-EXTERNAL now has reduced priority, so it won't be prioritized above other auth mechanisms. [jcbrand] - #755: create composer.json to add this project in packagist.org [fabiomontefuscolo] - #758: Bugfix. Render all resize drag handles for ChatRoomView. [LeoYReyes] - #762 Allow chatting with users not in your roster. [Ape, jcbrand] - Bugfix. Cancel button shown while registration form is being fetched wasn't working properly. [jcbrand] - Bugfix. Login form wasn't rendered after logging out (when `auto_reconnect` is `true`). [jcbrand] - Bugfix. Properly disconnect upon "host-unknown" error. [jcbrand] - Bugfix. Minimized chats weren't removed when logging out. [jcbrand] - Security fix: Prevent message forging via carbons. (Thanks to ge0rg) [jcbrand] ## 2.0.4 (2016-12-13) - #737: Bugfix. Translations weren't being applied. [jcbrand] - Fetch room info and store it on the room model. For context, see: http://xmpp.org/extensions/xep-0045.html#disco-roominfo [jcbrand] - Bugfix. Switching from bookmarks form to config form shows only the spinner. [jcbrand] - Bugfix. Other room occupants sometimes not shown when reloading the page. [jcbrand] - Bugfix. Due to changes in `converse-core` the controlbox wasn't aware anymore of disconnection or reconnection events. [jcbrand] - Optimize fetching of MAM messages (in some cases happened on each page load). [jcbrand] - Fix empty controlbox toggle after disconnect. [jcbrand] - When inviting someone to a members-only room, first add them to the member list. [jcbrand] - New configuration setting [muc_disable_moderator_commands](https://conversejs.org/docs/html/configuration.html#muc-disable-moderator-commands) [jcbrand] ## 2.0.3 (2016-11-30) - #735 Room configuration button not visible. [jcbrand] - CSS fix for fadeIn animation. [jcbrand] ## 2.0.2 (2016-11-30) - #721 keepalive not working with anonymous authentication [jcbrand] - #723 Bugfix: Arrays in configuration settings were ignored. [jcbrand] - #734 Bugfix. `converse.rooms.open` ignored the `muc_nickname_from_jid` setting. [jcbrand] - Enable new rooms to be configured automatically, with a default config, via `rooms.open`. For details, refer to the [relevant documentation](https://conversejs.org/docs/html/developer_api.html#the-rooms-grouping) [jcbrand] - Bugfix: Chatboxes aren't closed when logging out. [jcbrand] - Bugfix: Trying to save data on the `ControlBox` model before `ChatBoxes` collection has its `browserStorage` configured. Causes `Error: A "url" property or function must be specified`. [jcbrand] - Don't open the controlbox on contact requests. [jcbrand] - Bugfix: Reconnection fails when original connection was never established. [jcbrand] - If a `credentials_url` is provided, then keep on attempting to reconnect when connection is down. [jcbrand] - Remove (undocumented) `callback` config parameter for `converse.initialize`. Instead, `converse.initialize` returns a promise which will resolve once initialization is complete. [jcbrand] - New event ['reconnecting'](https://conversejs.org/docs/html/development.html#reconnecting) [jcbrand] - New configuration setting [allow_bookmarks](https://conversejs.org/docs/html/configuration.html#allow-bookmarks) [jcbrand] - The `rooms.open` API method will no longer maximize rooms that are minimized (unless `maximize: true` is passed in). [jcbrand] ## 2.0.1 (2016-11-07) - #203 New configuration setting [muc_domain](https://conversejs.org/docs/html/configuration.html#muc-domain) [jcbrand] - #705 White content after submitting password on chat rooms [jcbrand] - #712 Controlbox clicks stop responding after auto-reconnect [jcbrand] - Removed shared state between tests. All tests are now isolated. [jcbrand] - Allow the context (i.e. `this` value) to be passed in when registering event listeners with `converse.listen.on` and `converse.listen.once`. [jcbrand] - New event ['rosterContactsFetched'](https://conversejs.org/docs/html/development.html#rosterContactsFetched) [jcbrand] - New event ['rosterGroupsFetched'](https://conversejs.org/docs/html/development.html#rosterGroupsFetched) [jcbrand] - HTML templates are now loaded in the respective modules/plugins. [jcbrand] - Start improving Content-Security-Policy compatibility by removing inline CSS. [mathiasertl] - Add support for XEP-0048, chat room bookmarks [jcbrand] - New configuration setting [connection_options](https://conversejs.org/docs/html/configuration.html#connection-options) [jcbrand] ## 2.0.0 (2016-09-16) - #656 Online users count not shown initially [amanzur] - #674 Polish translation updated [ser] - Backwards incompatible change: the `_super` attribute in plugins is now named `__super__`. [jcbrand] - Continuously attempt to resurrect dead connections when `auto_reconnect` is `true`. [jcbrand] - Update the 'rooms' API to allow user to pass in room attributes. [jcbrand] - New configuration setting [message_storage](https://conversejs.org/docs/html/configuration.html#message-storage) [jcbrand] - Hardcode the storage for roster contacts and chat room occupants to `sessionStorage`. [jcbrand] - Fixed wrong chat state value, should be `chat`, not `chatty`. See [RFC 3921](https://xmpp.org/rfcs/rfc3921.html#rfc.section.2.1.2.2). [jcbrand] - Adds support for SASL-EXTERNAL. [jcbrand] ## 1.0.6 (2016-08-12) - #632 Offline and Logout states do not properly update once users start chatting. [chrisuehlinger, jcband] - #674 Polish translation updated to the current master. [ser] - #677 Chatbox does not open after close. [jcbrand] - The behavior of `converse.chats.get` has changed. If the chat box is not already open, then `undefined` will be returned. [jcbrand] - Typing (i.e. chat state) notifications are now also sent out from MUC rooms. [jcbrand] - `ChatRoomView.onChatRoomMessageSubmitted` has been renamed to `onMessageSubmitted`, to make it the same as the method on `ChatBoxView`. [jcbrand] - New configuration setting [muc_nickname_from_jid](https://conversejs.org/docs/html/configuration.html#muc-nickname-from-jid) [jcbrand] - New configuration setting [muc_instant_rooms](https://conversejs.org/docs/html/configuration.html#muc-instant-rooms) [jcbrand] ## 1.0.5 (2016-07-28) - In case of nickname conflict when joining a room, allow the user to choose a new one. [jcbrand] - Check whether the user has a reserved nickname before entering a room, and if so, use it. [jcbrand] - Mention someone in your chat room message by clicking on their name in the occupants list. [jcbrand] - #645 When accepting a contact request, the contact didn't appear in the pending contacts group. [jcbrand] - Bugfix: allow multiple MAM queries to be made simultaneously. [jcbrand] ## 1.0.4 (2016-07-26) - Restrict occupants sidebar to 30% chat room width. [jcbrand] - Made requesting contacts more visible, by placing them at the top of the roster. [jcbrand] - `insertIntoPage` method of `ChatBoxView` has been renamed to `insertIntoDOM`, to make it the same as the method of `ChatRoomView`. [jcbrand] - Render error messages received from the server (for undelivered chat messages). [jcbrand] - Don't hide requesting contacts when filtering by chat state. [jcbrand] - When logging in anonymously, the server JID can now be passed in via `converse.initialize` or via `converse.user.login`. [jcbrand] ## 1.0.3 (2016-06-20) - Update the plugin architecture to allow plugins to have optional dependencies [jcbrand] - Bugfix. Login form doesn't render after logging out, when `auto_reconnect = false` [jcbrand] - Also indicate new day for the first day's messages. [jcbrand] - Chat bot messages don't appear when they have the same ids as their commands. [jcbrand] - Updated onDisconnected method to fire disconnected event even if `auto_reconnect = false`. [kamranzafar] - Bugfix: MAM messages weren't being fetched oldest first. [jcbrand] - Add processing hints to chat state notifications [jcbrand] - Don't use sound and desktop notifications for OTR messages (when setting up the session) [jcbrand] - New config option [default_state](https://conversejs.org/docs/html/configuration.html#default_state) [jcbrand] - New API method `converse.rooms.close()` [jcbrand] - New configuration setting [allow_muc_invites](https://conversejs.org/docs/html/configuration.html#allow-muc-invites) [jcbrand] - Add new event [pluginsInitialized](https://conversejs.org/docs/html/development.html#pluginsInitialized) [jcbrand] - #553 Add processing hints to OTR messages [jcbrand] - #650 Don't ignore incoming messages with same JID as current user (might be MAM archived) [jcbrand] - #656 online users count in minimized chat window on initialization corrected [amanzur] ## 1.0.2 (2016-05-24) - Bugfix. Bind `sendPresence` to the right context. Bug that slipped in during the release of `1.0.1`. [jcbrand] ## 1.0.1 (2016-05-24) - Bugfix. Roster filter sometimes gets hidden when it shouldn't. [jcbrand] - Chat boxes weren't being initialized due to typo. [jcbrand] - Flush request queue just after connection. Solves a problem with PubSub and Prosody, whereby BOSH HTTP responses weren't being received. [jcbrand] ## 1.0.0 (2016-05-03) - Add catalan language [JoseMariaRubioMoral] - Split converse.js up into different plugin modules. [jcbrand] - Better Sass/CSS for responsive/mobile views. New mobile-only build. [jcbrand] - Roster contacts can now be filtered by chat state and roster filters are remembered across page loads. [jcbrand] - Add support for messages with type `headline`, often used for notifications from the server. [jcbrand] - Add stanza-specific event listener `converse.listen.stanza`. As a result `converse.listen.on('message');` has been deprecated, use `converse.stanza.on('message');` instead. [jcbrand] - Emit an event `chatBoxInitialized` once a chat box's initialize method has been called. [jcbrand] - Emit an event `statusInitialized` once the user's own status has been initialized upon startup. [jcbrand] - New config option [chatstate_notification_blacklist](https://conversejs.org/docs/html/configuration.html#chatstate-notification-blacklist) [jcbrand] - New config option [sticky_controlbox](https://conversejs.org/docs/html/configuration.html#sticky-controlbox) [jcbrand] - New config option [credentials_url](https://conversejs.org/docs/html/configuration.html#credentials-url) [jcbrand] - Don't play sound notifications for OTR messages which are setting up an encrypted session. [jcbrand] - Bugfix: RID, SID and JID tokens ignored when `keepalive` set to `true`. [jcbrand] - Removed the `account.logout` API, instead use `user.logout`. [jcbrand] - Use `rel=noopener` with links that contain `target=_blank` to prevent potential phishing attacks. [More info here](https://mathiasbynens.github.io/rel-noopener/) [jcbrand] - #156 Add the option `auto_join_rooms` which allows you to automatically connect to certain rooms once logged in. [jcbrand] - #261 `show_controlbox_by_default` config not working [diditopher] - #443 HTML5 notifications of received messages [jcbrand] - #534 Updated Russian translation [badfiles] - #566 Do not steal the focus when the chatbox opens automatically [rlanvin] - #573 xgettext build error: `'javascript' unknown` [jcbrand] - #577 New config variable [message_archiving_timeout](https://conversejs.org/docs/html/configuration.html#message-archiving-timeout) [jcbrand] - #587 Fix issue when logging out with `auto_logout=true` [davec82] - #589 Save scroll position on minimize and restore it on maximize [rlanvin] - #592 Add random resource for `auto_login`, add method generateResource to generate random resource [davec82] - #598 Add option `synchronize_availability` [davec82] - #600 Fix change xmpp status also on icon-status click [davec82] - #616 converse-otr should depend on converse-minimize [jcbrand] - #609 Remove split of fullname [lixmal] ## 0.10.1 (2016-02-06) - #352 When the user has manually scrolled up in a chat window, don't scroll down on chat event notifications. [jcbrand] - #524 Added [auto_join_on_invite](https://conversejs.org/docs/html/configuration.html#auto_join_on_invite) parameter for automatically joining chat rooms. [ben] - #520 Set specific domain. Two new options [default_domain](https://conversejs.org/docs/html/configuration.html#default_domain) and [locked_domain](https://conversejs.org/docs/html/configuration.html#locked_domain). [jcbrand] - #521 Not sending presence when connecting after disconnection. [jcbrand] - #535 Messages not received when room with mixed-case JID is used. [jcbrand] - #536 Presence not sent out (in cases where it should) after page refresh. [jcbrand] - #540 `bind is not a function` error for plugins without `initialize` method. [jcbrand] - #547 By default the `offline` state is no longer choosable. See [include_offline_state](https://conversejs.org/docs/html/configuration.html#include-offline-state) for details. [jcbrand] - A chat room invite might come from someone not in your roster list. [ben] - #487 Empty the resources array when the resource is null [rlanvin] - #534 Updated Russian translation [LaconicTranslator] - #555 The status restored from sessionStorage is never updated [jcbrand] - #559 Remove reconnection timer once connected succesfully [m0cs] ## 0.10.0 (2015-11-05) **Note:** *This release drops CSS support for IE8 and IE9.* - #459 Wrong datatype passed to converse.chatboxes.getChatBox. [hobblegobber, jcbrand] - #493 Roster push fix [jcbrand] - #403 emit an event `rosterPush` when a roster push happens [teseo] - #502. Chat room not opened in non_amd version. [rjanbiah] - #505 Typo caused [object Object] in room info [gromiak] - #508 "Is typing" doesn't automatically disappear [jcbrand] - #509 Updated Polish translations [ser] - #510 MUC room memberlist is being cleared with page reload when keepalive option is set. [jcbrand] - Add the ability to also drag-resize chat boxes horizontally. [jcbrand] - Updated Sass files and created a new style. [jcbrand] ## 0.9.6 (2015-10-12) - Bugfix. Spinner doesn't disappear when scrolling up (when server doesn't support XEP-0313). [jcbrand] - #462 Fix MUC rooms with names containing special characters not working [1st8] - #467 Fix outgoing chat messages not having a msgid when being put into sessionStorage [1st8] - #468 Fix [object Object] being sometimes shown as status [1st8] - #472 Fix "Cannot read property 'splitOnce' of undefined" when typing /clear in a chat room. [jcbrand] - #493 Roster wasn't being updated after a Roster push update [teseo, jcbrand] - #496 Bugfix. Pings weren't being sent out. [teseo, jcbrand] - #499 Message not received due to non-unique message ids. [jcbrand] ## 0.9.5 (2015-08-24) - #306 XEP-0313: Message Archive Management [jcbrand] - #439 auto_login and keepalive not working [jcbrand] - #440 null added as resource to contact [jcbrand] - Add new event serviceDiscovered [jcbrand] - Add a new configuration setting [muc_history_max_stanzas](https://conversejs.org/docs/html/configuration.html#muc-history-max-stanzas>). [jcbrand] ## 0.9.4 (2015-07-04) - #144 Add Ping functionality and Pong handler [thierrytiti] - #234, #431 Messages aren't received when the user logs in with a mixed-case JID. [jcbrand] - #367 API methods for changing chat status (online, busy, away etc.) and status message [jcbrand] - #389 Allow login panel placeholders and roster item 'Name' translations. [gbonvehi] - #394 Option to allow chatting with pending contacts [thierrytiti] - #396 Add automatic Away mode and XEP-0352 support [thierrytiti] - #400, #410 Allow offline pretty status and placeholder for "Insert a smiley" to be translated [thierrytiti] - #401 Updated French translation [thierrytiti] - #404 CSS fix: position and width of the div #conversejs [thierrytiti] - #407 CSS: Fonts Path: editabable $font-path via sass/variables.scss [thierrytiti] - #408 MUC: missing toggle call handler and updated documentation about call [thierrytiti] - #413 Auto-detect user's locale to show date and time in the right format [thierrytiti] - #415 closeAllChatBoxes is giving ReferenceError when 2 chats are open [nevcos, jcbrand] - #416 Add icon for XA status [thierrytiti] - #418 Logging out with `auto_reconnect=true` causes reconnection retries [jcbrand] - #420 Updated German translation [1st8] - #427 Converse.js does not subscribe back to a contact not in the roster. [emmanuel-florent] - Add offline pretty status to enable translation [thierrytiti] - Bugfix. ClearSessions during unload event would throw an error when not logged in. [gbonvehi] - Bugfix. Manual login doesn't work when only websocket_url is set and not bosh_service_url. [jcbrand] - Bugfix. Wrong callback argument mapping in XmppStatus initialize: fullname is null [thierrytiti] - CSS fix: room-info bug on hover after room description loaded [thierrytiti] - CSS: Fonts Path: editabable $font-path via sass/variables.scss [thierrytiti] - Chat boxes returned by the API now have an `is_chatroom` attribute [jcbrand] - Decouple automatic away and XEP-0352 support. [jcbrand] - Don't carbon copy OTR messages. [jcbrand] - I18N: Autodetection of User Locale if no i18n setting is set. [thierrytiti] - Refactored in order to remove the strophe.roster.js dependency. [jcbrand] - Refactored the plugin architecture. Add `overrides` convention for automatically overriding converse.js's methods and Backbone views and models. [jcbrand] - With keepalive, don't send out a presence stanza on each page load [jcbrand] ## 0.9.3 (2015-05-01) - Add the ability to log in automatically. [jcbrand] - Remove `type=email` from JID field in login form. Resulting validation error confuses people. [jcbrand] - Add Ukranian translations [Andriy Kopystyansky] - #244 Add the ability to log in anonymously. [jcbrand] - #344 Enable the path to the sound files to be configured [thierrytiti and jcbrand] - #370 Unable to register a new user to ejabberd 2.1.11. [gbonvehi] - #372 Some offline users have a visible empty `