# Changelog ## 4.0.0 (Unreleased) ## New Features - #161 XEP-0363: HTTP File Upload - #337 API call to update a VCard - #1094 Show room members who aren't currently online - 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) ### 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" ### 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`. ## 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. - User Avatars are now shown in chat messages. ## Configuration changes - 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. - 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/configurations.html#nickname) and [auto_join_private_chats](https://conversejs.org/docs/html/configurations.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. ## 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/configurations.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/configurations.html#allow-public-bookmarks) - New configuration setting [root](https://conversejs.org/docs/html/configurations.html#root) - The [view_mode](https://conversejs.org/docs/html/configurations.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/configurations.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/configurations.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/configurations.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/configurations.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/configurations.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/configurations.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/configurations.html#time-format) [smitbose] - #682 Add "Send" button to input box in chat dialog window. See [show_send_button](https://conversejs.org/docs/html/configurations.html#show-send-button) [saganshul] - #704 Automatic fetching of registration form when [registration_domain](https://conversejs.org/docs/html/configurations.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 `