1fa203c990
Depend on latest backbone.browserStorage which has support for IndexedDB via localforage. Storage operations are now asynchronous and transactional. Bugs fixed (mostly by waiting for operations to complete): * Rooms are now fetched asynchronously, so wait before triggering `show` or when closing. * Make sure chat create/update transactions complete before firing events * Make sure chats and messages have been fetched before creating new ones. * When doing a `fetch` with `wait: false` on a collection and then creating a model in that collection, then once the read operation finishes (after creating the model), the collection is emptied again. * Patch and wait when saving. Otherwise we have previously set attributes overriding later ones. * Make sure api.roomviews.close returns a promise Test fixes: * Chats are now asynchronously returned, so we need to use `await` * Wait for the storage transaction to complete when creating and updating messages * Wait for all chatboxes to close Otherwise we get sessionStorage inconsistencies due to the async nature of localforage. * Wait for room views to close in spec/chatroom.js In the process, remove the `closeAllChatBoxes` override in converse-controlbox by letting the `close` method decide whether it should be closed or not. |
||
---|---|---|
.github | ||
converse-logs | ||
demo | ||
dist/custom_emojis | ||
docs/source | ||
images | ||
locale | ||
logo | ||
mockup | ||
sass | ||
sounds | ||
spec | ||
src | ||
tests | ||
.eslintrc.json | ||
.gitignore | ||
.prettierrc | ||
.travis.yml | ||
buildout.cfg | ||
CHANGES.md | ||
composer.json | ||
COPYRIGHT | ||
dev.html | ||
fullscreen.html | ||
index.html | ||
jshintrc | ||
jslicenses.html | ||
lerna.json | ||
LICENSE | ||
Makefile | ||
mobile.html | ||
package-lock.json | ||
package.json | ||
postcss.config.js | ||
README.md | ||
redirect.html | ||
RELEASE.md | ||
requirements.txt | ||
webpack.common.js | ||
webpack.dev.js | ||
webpack.headless.js | ||
webpack.html | ||
webpack.nodeps.js | ||
webpack.prod.js | ||
webpack.serve.js |
Converse
Converse is a web based XMPP/Jabber chat client.
You can either use it as a webchat app, or you can integrate it into your own website.
It's 100% client-side JavaScript, HTML and CSS and the only backend required is a modern XMPP server.
Please support this project via Patreon or Liberapay
Demo
Converse is hosted and can be used at https://conversejs.org.
A demo showing anonymous login is available at https://conversejs.org/demo/anonymous.html and a demo which shows how you can embed a single chat room into a page is avialable at https://conversejs.org/demo/embedded.html.
Converse in overlay mode
Converse in fullpage mode
Documentation
The developer/integrator documentation can be found at https://conversejs.org/docs/html.
You'll probably want to begin with the quickstart guide, which shows you how to use the CDN (content delivery network) to quickly get a demo up and running.
Features
- Available as overlayed chat boxes or as a fullscreen application. See inverse.chat for the fullscreen version.
- A plugin architecture based on pluggable.js
- Single-user and group chats
- Contacts and groups
- Multi-user chat rooms XEP 45
- Chatroom bookmarks XEP 48
- Direct invitations to chat rooms XEP 249
- vCard support XEP 54
- Service discovery XEP 30
- In-band registration XEP 77
- Roster item exchange XEP 144
- Chat statuses (online, busy, away, offline)
- Custom status messages
- Typing and state notifications XEP 85
- Desktop notifications
- File sharing / HTTP File Upload XEP 363
- Messages appear in all connnected chat clients / Message Carbons XEP 280
- Third person "/me" messages XEP 245
- XMPP Ping XEP 199
- Server-side archiving of messages XEP 313
- Hidden Messages (aka Spoilers) XEP 382
- Client state indication XEP 352
- Last Message Correction XEP 308
- OMEMO encrypted messaging XEP 384
- Supports anonymous logins, see the anonymous login demo.
- Translated into 28 languages
Integration into other frameworks
- Prosody: mod_conversejs
- Openfire: inverse.jar
- Ruby on Rails: conversejs-rails
- Django: django-conversejs or django-xmpp
- Patternslib: patterns.converse
- Roundcube: roundcube-converse.js-xmpp-plugin
- Wordpress: ConverseJS
- Plone: collective.converse
- Alfresco: alfresco-js-chat-share
- Friendica: converse
- Tiki Wiki CMS Groupware: built-in optional feature
Tests
We use behavior-driven tests written with jasmine.js.
Open tests.html in your browser, and the tests will run automatically.
Licence
Converse.js
is released under the Mozilla Public License (MPL).
Attribution
Emoji images are courtesy of Twemoji.
Support
Issues can be logged on the Github issue tracker.
Donations
A heartfelt thanks for everyone who has supported this project over the years. Many people have contributed testing, bugfixes, features and corrections.