view CHANGELOG @ 4231:e11b13418ba6

plugin XEP-0353, XEP-0234, jingle: WebRTC data channel signaling implementation: Implement XEP-0343: Signaling WebRTC Data Channels in Jingle. The current version of the XEP (0.3.1) has no implementation and contains some flaws. After discussing this on xsf@, Daniel (from Conversations) mentioned that they had a sprint with Larma (from Dino) to work on another version and provided me with this link: https://gist.github.com/iNPUTmice/6c56f3e948cca517c5fb129016d99e74 . I have used it for my implementation. This implementation reuses work done on Jingle A/V call (notably XEP-0176 and XEP-0167 plugins), with adaptations. When used, XEP-0234 will not handle the file itself as it normally does. This is because WebRTC has several implementations (browser for web interface, GStreamer for others), and file/data must be handled directly by the frontend. This is particularly important for web frontends, as the file is not sent from the backend but from the end-user's browser device. Among the changes, there are: - XEP-0343 implementation. - `file_send` bridge method now use serialised dict as output. - New `BaseTransportHandler.is_usable` method which get content data and returns a boolean (default to `True`) to tell if this transport can actually be used in this context (when we are initiator). Used in webRTC case to see if call data are available. - Support of `application` media type, and everything necessary to handle data channels. - Better confirmation message, with file name, size and description when available. - When file is accepted in preflight, it is specified in following `action_new` signal for actual file transfer. This way, frontend can avoid the display or 2 confirmation messages. - XEP-0166: when not specified, default `content` name is now its index number instead of a UUID. This follows the behaviour of browsers. - XEP-0353: better handling of events such as call taken by another device. - various other updates. rel 441
author Goffi <goffi@goffi.org>
date Sat, 06 Apr 2024 12:57:23 +0200
parents f0b1279a53c3
children
line wrap: on
line source

All theses changelogs are not exhaustive, please check the Mercurial repository for more details.

v 0.9.0 « La Ruche » (NOT RELEASED YET):
    - core:
        - identity: make the plugin compatible with component + description
        - identity, XEP-0054: move avatar resizing and caching method to identity plugin
        - XEP-0060: PAM + PSS implementation
        - XEP-0060, XEP-0163, XEP-0277, text syntaxes: make plugins usable with components
        - XEP-0080: "User Location" implementation
        - XEP-0084: "User Avatar" implementation
        - XEP-0103: "URL Address Information" implementation
	- XEP-0176: "Jingle ICE-UDP Transport Method" implementation
        - XEP-0191: "Blocking Command" implementation
        - XEP-0215: "External Service Discovery" implementation
        - XEP-0277: post repeating implementation
        - XEP-0292: "vCard4 Over XMPP" implementation
        - XEP-0372: "References" implementation
        - XEP-0373: "OpenPGP for XMPP" implementation
        - XEP-0374: "OpenPGP for XMPP Instant Messaging" implementation
        - XEP-0376: "Pubsub Account Management" implementation
        - XEP-0384: fully reworked to adjust to the reworked python-omemo
        - XEP-0391: "Jingle Encrypted Transports" implementation
        - XEP-0396: "Jingle Encrypted Transports - OMEMO" implementation
        - XEP-0420: "Stanza Content Encryption" implementation
        - XEP-0446: "File Metadata" implementation
        - XEP-0447: "Stateless File Sharing" implementation
        - XEP-0448: "Encryption for Stateless File Sharing" implementation
        - XEP-0450: "Automatic Trust Management" implementation
        - XEP-0465: "Pubsub Public Subscriptions" implementation
        - XEP-0470: "Pubsub Attachments" implementation
        - XEP-0471: "Events" implementation
        - XEP-0473: "OpenPGP for XMPP Pubsub" implementation
        - XEP-0477: "Pubsub Targeted Encryption" implementation
        - xml_tools: add support for `list-multi` data form field type
    - massive refactoring to switch from camelCase to snake_case
    - components:
        - new ActivityPub <=> XMPP Gateway
    - templates:
        - bulma (blog/item): `published` timestamp now links to the item
        - bulma (calendar): calendar and its daily view
        - bulma: new `retry-notification` template
    - cli:
        - blog: new `--attachment` argument to attach files or external data to a blog post
        - blog: new `repeat` subcommand, to re-publish a blog post
        - blog, pubsub: encryption argument for pubsub targeted encryption
        - blog, pubsub: new `attachments` subcommands
        - file/get: handle full JSON attachment following change in backend
        - file/send: add `--encrypt` argument to request encryption
        - identity: add description to `identity set`
        - info/disco: add external services in results
        - message/retract: message retractation command
        - message/send: new --attach argument to send an attachment
        - pubsub/get: add --no-decrypt flag to disable automatic decryption
        - pubsub: new `reference` subcommand to send references/mentions to pubsub items
        - pubsub: new secret subcommands
        - pubsub/set,edit: add `--sign` argument
        - pubsub/signature: add `sign` command
        - new `blocking` commands
    - web:
        - pages: `page_max` query parameter can now be used on pubsub based pages
        - pages (blog/edit): allow comments when editing a post
        - pages (blog/view): activate pagination when a single item is shown
        - pages (calendar): calendar page
        - server, browser: dynamic pages refactoring:
            - Pages are now dynamic by default, and a websocket is established by the first connected page of a session
            - The socket is used to transmit bridge signals, and then the signal is broadcasted to other tabs using broadcast channel
            - All previous partial rendering mechanism have been removed
        - server: better reverse proxy headers handling
        - server: don't wait anymore for libervia app to be fully started
        - server: fix inverse URL redirection for root path + allow multiple inverse redirections
        - server: handle "proxy" scheme in configuration

v 0.8.0 « La Cecília » (30/11/2021):
    - renamed the project from "Salut à Toi" to "Libervia"
    - frontends are renamed "Libervia XXX" (where XXX is Desktop, Web, etc.), former names are kept as aliases
    - Python 3 port
    - "libervia.conf" is now used for settings (but "sat.conf" is still usable, at least
      for now)
    - config sections are now named after frontend type ("web", "cli", "tui", etc).
    - "/etc/_libervia.conf" can be used for distribution specific settings
    - OMEMO for MUCs (group chat)
    - aesgcm schema handling (aka OMEMO Media Sharing)
    - removed plugins IMAP, Maildir and SMTP: they were experimental plugins, are not used
      and Maildir has not been ported to Python 3
    - consistant resource ("sat.[UUID]" is used as permanent resource when user didn't
      specify anything)
    - profile autoconnection
    - updated config file paths: path from where the command is launched is not used
      anymore, and parent dir of "sat" module is checked last
    - parsed config files paths are logged on startup
    - attachments, with resizing
    - encrypted sessions are restored on connection, when suitable
    - MUC avatars
    - SVG support for avatars
    - improved identities (avatar, nickname) management
    - (XEP-0060) publish-options
    - (XEP-0077) XMPP account deletion support
    - (XEP-0277) user friendly IDs
    - XEP-0346 implementation (Form Discovery and Publishing)
    - XEP-0353 implementation (Jingle Message Initiation)
    - XEP-0431 implementation (Full Text Search in MAM)
    - node schema now uses XEP-0346
    - "tickets" feature renamed to "lists"
    - lists templates for common lists (grocery list, TODO list, etc.)
    - list of interests: unique ID per location, to avoid duplicates
    - pubsub invitations
    - new "app manager" plugin with docker integration
    - (app manager) weblate app file
    - (template engine) new "fallback" setting
    - plugins can now be loaded from a directory
    - settings for themes in template engine
    - launching scripts are now in Python instead of shell scripts
    - D-Bus bridge: renamed namespace from org.salutatoi.SAT to org.libervia.Libervia
    - new testing framework in "tests"
    - end-to-end tests
    - docker images are now in backend repository, renamed and up-to-date
    - social contract updates following general assemblees and renaming (see commits and
      assemblees minutes for details)
    - Libervia Desktop (Cagou):
        - new "share" widget
        - URIs can now be clicked to open a suitable application
        - new red "plug" icon showed if user is disconnected
        - better ESC key (or back button) handling
        - removed main menu as a top bar
        - new "extra" menu appear in header's widget seletor of widgets. Clicking on it
          will open a side menu with some common actions (like showing about screen) +
          possibliy platform specific actions.
        - an extra window can be created on suitable platform in the extra menu
        - file dropping is handled on compatible platforms
        - (chat) infinite scroll
        - (chat) media uploads use AES-GCM if session is encrypted
        - (chat) "chat selector" screen, to select an entity/room to chat with/in
        - (chat) notifications counter is shown on entities in chat selector
        - (chat) touching/clicking an avatar in a group chat will add the
          nickname in message input box.
        - (chat) incoming attachments are now shown in a user friendly way
        - (chat) outgoing attachments are handled in a user friendly way, files
          are not send immediately anymore (user needs to send explicitly the
          message)
        - (chat) outgoing attachments can be resized if too big (images only so far)
        - (chat) multiple images in attachments are grouped in collections
        - (chat) new extra menu in header, allows notably to close the chat/leave the room
        - (chat) images viewer
        - (chat) a padlock icon is shown to indicate if message is e2e encrypted or not,
          and it is red when an unencrypted message is received in encrypted context
        - various UI/UX fixes/improvments
    - Libervia Mobile (Cagou) [Android]:
        - Cagou now appears in the "share" menu
        - "back" button on root widget put app in background
        - better notifications (sound + vibration, can be modified in settings)
        - opening a notification now opens the right widget in Cagou
        - autoconnect profiles which are autoconnected in backend (there should be only
          one at the moment)
        - reopen last selected widget on startup
        - "disconnect" item in the new "extra" menu. With it, the profile connected
          automatically can be disconnected.
        - autoconnect parameters are hidden (not useful for end-user, and can actually be
          confusing)
        - fixed SRV records for DNS lookup
        - SVG support for avatars
    - Libervia Web:
        - dynamic pages (i.e. browser executed code)
        - Brython integration
        - JavaScript modules (node.js) integration
        - Sass integration
        - Nunjucks integration
        - ogv.js based alternative media player for browser which can't play open formats
          (Ogg Theora or WebM VP8/VP9)
        - themes management
        - bulma theme becomes the default one for default site
        - "tickets" have been renamed to more generic term "lists"
        - (lists) common lists can be created from templates
        - (photos) album can now be created or deleted from Libervia Web
        - (photos/album) photos or videos can now be uploaded from Libervia
        - (photos/album) a mobile friendly slideshow can be run
        - (photos/album) affiliations can be modified with new invitations manager
        - Cache-control header is respected
    - Libervia CLI (jp):
        - full documentation of commands
        - asyncio port
        - use dash "-" instead of "_" for long options to follow best practices
        - bridges other than dbus are now supported
        - colour dark/light themes
        - background colour detection
        - new debug/theme command
        - new file/get command (supports aesgcm scheme)
        - new file/share/affiliations command
        - new file/share/configuration command
        - new info/devices command
        - new invitation/delete command
        - "ticket" command renamed to "list"
        - file/upload handle encryption
        - various improvments
        - (blog) added --language to common publish arguments
        - (blog) added --no-publish argument to avoid accidental publication
        - (roster) added "delete" subcommand
        - (pubsub/set) publish options can be specified with -f and -F
        - (profile/create, profile/modify) --autoconnect argument
    - Templates:
        - new bulma theme
    - file sharing component:
        - XEP-0363 (HTTP File Upload) implementation
        - affiliation management (custom)
        - access model management (custom)
        - generate thumbnails for videos
    - pb bridge:
        - Unix socket is now used by default, "bridge_pb_connection_type" can be set to
          "socket" to use network socket
        - new "bridge_pb_host" and "bridge_pb_port" settings

v 0.7.0 « La Commune » (24/07/19):
    This version is a huge gap with previous one, changelog only show a part of novelties.
    This is also the first "general audience" version.
    - XEP-0070 implementation (HTTP Auth via XMPP)
    - XEP-0106 implementation (JID Escaping)
    - XEP-0184 implementation (Delivery Receipts)
    - XEP-0198 implementation (Stream Management)
    - XEP-0199 implementation (XMPP Ping)
    - XEP-0231 implementation (Bits of Binary)
    - XEP-0264 implementation (Thumbnails)
    - XEP-0280 implementation (Message Carbons)
    - XEP-0313 implementation of messages part (one2one + MUC)
    - XEP-0315 implementation (Data Forms XML Element)
    - XEP-0329 implementation (File Information Sharing)
    - XEP-0352 implementation (Client State Indication)
    - XEP-0384 implementation (OMEMO encryption), one2one
    - new bridges are available: pb (Perspective Broker), and embedded (use backend as a module)
    - D-Bus bridge: changed namespace from org.goffi.SAT to org.salutatoi.SAT
    - components (SàT can now act as a component)
    - templates engine
    - invitations (create temporary account to invite somebody without XMPP account)
    - events
    - tickets
    - tickets importer for Bugzilla
    - merge-requests
    - merge-requests handler for Mercurial
    - new node schema experimental feature: allows to attach a dataform to a node and to filter items based on it
    - forums
    - XML log plugin can now logs stream as soon as it starts
    - many improvements in Jingle and file transfer, updated to last spec version
    - file sharing (direct sharing between devices)
    - file sharing component (to store file on a server)
    - better SàT version handling (in particular Mercurial revision)
    - language detection plugin
    - media remote control through MPRIS standard
    - generic encryption methods handling in core
    - server certificate validation
    - added missing disco extensions while generating capabilities hash
    - reworked setup.py to make it cleaner
    - added VERSION file
    - jp:
        - new debug commands, to monitor stream, call bridge method or send fake signals
        - new info/session command, to get data on current session
        - new blog/get command, to retrieve locally XMPP blog
        - new message/mam command, to check MAM archives (this command may be renamed or merged in an other one in the future)
        - new pubsub commands, for low level pubsub manipulations
        - include pubsub/search command for "grepping" pubsub nodes
        - new invitation commands
        - new event commands
        - new uri commands, to parse/build XMPP URI
        - new input commands, to use a file to generate series of actions
        - new ticket commands
        - new merge-request commands
        - new ad-hoc/list and ad-hoc/run commands
        - new forums commands
        - new avatar commands
        - new ping command
        - new encryption commands, to handle encryption sessions
        - e2e encryption algorithm can now be requested in jp message/send
        - better handling of arguments for pubsub related commands
        - MAM and RSM arguments for pubsub related commands
        - improved outputs
        - new template output, jp can now act as a static site generator
        - a REPL shell is now available with "jp shell" command
        - specified several exit codes
    - Primitivus:
        - new "g" shortcut to move on bottom of chat history
        - show occupants count
        - better notifications
        - separation bar to see new messages since chat widget has been focused for the last time
        - affiliations are show in MUC rooms
        - message language is displayed if available
        - filter messages by language
        - merge join/left infos messages of a contact when they happen in a row (without new message between them)
    - Cagou:
        - new desktop/mobile (Android for now) frontend
        - handle widget splitting à la Blender
        - chat mode
        - contacts mode
        - file sharing mode
        - settings mode
        - remote control mode
        - Android adaptation + build
    - Templates:
        - new sat_templates module
        - blog
        - chat
        - event
        - file sharing
        - forums
        - invitations
        - login/session
        - merge-requests
        - photos albums
        - tickets
    - Libervia:
        - Libervia pages: a web framework to easily create web pages using SàT/XMPP under the hood. Will be the cornerstone of future of Libervia
        - this framework has been used to make following features: blog, chat, events, file sharing, forums, invitations, merge-requests, photo albums and tickets
        - dynamic version of Libervia (made with Pyjamas) is still available, but under minimal maintenance, it will be re-implemented using other tools in 0.8
        - static blog has been deprecated (still available in "/blog_legacy" for now) in favor of Libervia pages' blog
        - many internal changes and improvements to handle Libervia page
    - usual internal improvements + refactoring + bug fixes
    - many other stuff, check Mercurial logs

v 0.6.1 (12/07/2016):
    - minimum Twisted version is now 15.2.0
    - removed pyfeed and xe dependencies
    - added mutagen to recommended in README4PACKAGERS
    - use of /usr/bin/env instead of /usr/bin/python in shebang
    - core:
        - connection and initialisation improvements
        - leave the handling of delay elements to XEP-0203
    - memory:
        - fixes handling of jids_list parameter type
        - fixed exception when setting an empty password
        - disco: better handling of response failures
    - tools:
        - improved repository version detection
        - moved data methods from common to common.data_format
        - added common.regex module
    - new plugins:
        - blog_import: generic plugin to import blogs to SàT
        - blog_import_dotclear: import dotclear blog
        - blog_import_dokuwiki: import dokuwiki blog
        - extra_pep: display messages from extra PEP services
        - syntax_wiki_dotclear: convert dotclear wiki syntax from and to XHTML
        - directory_subscription: temporary plugin moved from XEP-0055 implementation
    - already existing plugins:
        - account:
            - auto add some roster contacts at profile creation
            - parameter "admin_email" is now "email_admin_lists"
            - email sending improvements (new authentication options)
            - email the admins when a profile is created from an existing XMPP account
        - ip: changed URL of GET_IP_PAGE for the new one on salut-a-toi.org
        - XEP-0045: fixes commands feedback
        - XEP-0060: MAM (XEP-0313) integration
        - XEP-0166, XEP-0260: better handling of proxy error
        - XEP-0277:
            - improve comments handling
            - uses new "extra pep" plugin
            - Atom feed retrieval is left to Libervia
            - fixes XHTML content encapsulation and handling of new lines
        - XEP-0313: cleaning and improvements
        - text_syntaxes: various improvements
    - tmp/wokkel:
        - updated behaviour and namespace to new urn:xmpp:mam:1
        - several MAM and RSM improvements
    - frontends:
        - printing the history and notifications are left to quick_frontend
        - restore printing the day change while displaying history
        - fixes main item update and auto addition of a scheme to HTML links
        - added ui_show_cb in actionManager (frontend can handle the XMLUI display)
    - jp:
        - new start method used by all commands
        - new --output option to change the format of command output:
            - possible outputs for now are "default", "json" and "json_raw"
        - new commands:
            - blog: import, edit, preview
            - roster: get, stats, purge
        - command "message" moved to "message send"
        - command "profile list" uses the new --output option
        - added constants for exit codes
    - primitivus:
        - detect direct pasting in the message bar
        - add bracketed paste mode
    - libervia:
        - browser and server sides:
           - replaced isRegistered call by a more generic getSessionMetadata
           - new option "allow_registration" to enable/disable new accounts registration
        - browser side:
            - improved the popup message banner
            - replaced old favicon and display favicon counter
            - fixed handling of connection with external JID
            - improved some regexps
            - replace "re" module usage with pure javascript
        - server:
            - added mechanism for URL redirections
            - renamed "ssl_certificate" to "tls_certificate"
            - new options "tls_private_key", "tls_chain options", "base_url_ext"
            - blog:
                - several improvements
                - implement tags/categories
                - removed max_items as we use RSM
                - fixed atom feed, add link and categories (tags) elements

v 0.6.0 (02/12/2015):
    - modification of the social contract according to the General Assembly of August, 19th 2014
    - improved launching/stopping scripts:
        - use SIGTERM instead of SIGINT with the “stop” command
        - now manage "status" command and additional arguments
    - updated setup.py and INSTALL files:
        - add PyOpenSSL to the dependency list
        - added jsdebug option to use debug mode with pyjsbuild
        - replaced the deprecated distribute_setup.py by ez_setup.py
        - fixed INSTALL instructions
    - updated README and README4PACKAGERS for third party modules
    - added some tests for sat.tmp.wokkel and Libervia JID* classes
    - core:
        - new bridge signals: actionNew, progressStarted, progressFinished, progressError
        - new bridge methods:
            - disco: getFeatures
            - profile: profileStartSession, profileIsSessionStarted, profileSetDefault
            - memory: getEntitiesData, asyncGetParamsValuesFromCategory, getMainResource
            - progression (e.g for file transfer): progressGetAll, progressGetAllMetadata
            - actionsGet to retrieve the deferred actions ordered by actionNew
        - xmpp: added auxiliary methods sendError and IQ, improved roster management
        - plugins: more robust loading, detect name conflicts, added unload method
        - repository data are checked and added to SàT "dev" versions
        - add several new constants for MUC, profiles, plugins
    - memory:
        - new parameters: "Chat history limit", "Show offline contacts" and "Show empty groups"
        - add "int" parameter type with "constraint" attributes
        - removed resource from the default JabberID
    - tools:
        - new tools.sat_defer, implementation of RTDeferredSessions and DelayedDeferred
        - xmlui:
            - added JidInput and JidsList widgets
            - allow to select a tab when adding it
            - keeps data form result headers sorted
    - new plugins:
        - XEP-0059: Result Set Management
        - XEP-0166: Jingle \o/
        - XEP-0203: Delay Delivery
        - XEP-0234: Jingle File Transfer
        - XEP-0260: Jingle SOCKS5 Bytestreams
        - XEP-0261: Jingle In-Band Bytestreams
        - XEP-0297: Stanza Forwarding
        - XEP-0300: Cryptographic Hash Functions
        - XEP-0313: Message Archive Management
        - XEP-0334: Message Processing Hints
        - XEP-0363: HTTP File Upload
        - file, upload: file transfer management
        - ip: external IP discovery
        - pipe: Jingle pipe transfer
        - nat-port: NAT port mapping
        - watched: alert when a watched entity goes online
        - welcome: display welcome message
    - already existing plugins:
        - XEP-0045: several improvements
        - XEP-0047: improvements, increased timeout to 2 minutes
        - XEP-0050: better disco info, pre-fill the target server
        - XEP-0054: improvements, especially concerning the hash
        - XEP-0055: add "simple" and "advanced" modes to Jabber Search
        - XEP-0060:
            - try to find a default PubSub service
            - retractItem manage "notify" attribute
            - added addManagedNode and removeManagedNode
            - new signal psEvent will be used to notify the frontends
        - XEP-0065: chunk size optimization, session cleaning and timeout
        - XEP-0085: various fixes, including a bad use of threads
        - XEP-0096: use file plugin to choose the best available method
        - XEP-0115: better disco error handling
        - XEP-0163: replaced personalEvent with psEvent, improved addPEPEvent
        - XEP-0277:
            - improved bridge methods, better parsing of atom, better error handling
            - auto-create nodes on default pubsub service if available, else PEP
            - use checkFeatures and other new methods from XEP-0060
            - added subscribeToMany and getFromMany methods
            - manage retract feature
        - account: add method asyncConnectWithXMPPCredentials
        - groupblog: many improvements as in XEP-0060 and XEP-0277
        - sec_otr, text commands: some improvements
    - removed plugin: deprecated tmp_demo_directory
    - tmp (used as a buffer module until the changes are integrated to wokkel):
        - added support for RSM (XEP-0059) and MAM (XEP-0313)
        - pubsub: added retract "notify" attribute management
    - frontends:
        - deprecated wix frontend and Libervia's unibox
        - frontends can also use listeners and triggers mechanisms
        - improved management: menus, widgets, rosters, chat and blog
        - merge sat_frontends.constants to sat_frontends.quick_frontend.constants
        - new method getFullJid which is the frontend's equivalent to getMainResource
        - contact list: display the counts of waiting messages per contact
        - MUC: display activities' symbols, resources for private messages
    - jp:
        - added commands "profile connect" and "modify", "param get" and "set", "file upload"
        - added attributes --verbose, --password and --xmpp-password
        - profile session can now be started without connection
    - primitivus:
        - now manages multi-profiles \o/
        - new command "search" to search the local history
        - xmlui: manage message in FileDialog and several improvements
    - libervia:
        - Libervia is now based on QuickFrontend \o/
        - browser and server sides:
            - allow to connect with an external JID
            - implemented blog tags
        - server side:
            - set a timeout to reset the waiting connection requests after 2 minutes
            - special handling of Connection/JabberID and Connection/autoconnect
            - add a link to the FAQ in the HTTP/HTTPS warning dialog
            - static blog: themes based on Jinja2 template engine
            - enable HTTP gzip compression
        - browser side:
            - removed unibox, RichMessageEditor and RecipientManager
            - features checks for microblogging and group blogging
            - new methods displayWidget, setStatusOnline, showDialog
            - added signal caching before profile is plugged
            - do a hard reload on disconnected signal
            - news classes for JID iterables
            - display MUC occupants presences
            - show version number in the about dialog
            - improve login and register panels visibility
            - use favico.js to display the total number of waiting messages
            - json: replaced the Window.alert by a log warning when signal is lost
            - contact list: ContactPanels is used instead of OccupantsList in MUC
            - OTR: use listeners, fixed missing resource issue and icons updates
            - widget's drag and drop:
                - border widgets are now visible on drag start
                - allow to drop a widget in the "+" button to add a new tab
    - and a lot of improvements and fixes that are not listed here :-)

v 0.5.1 (18/09/2014):
    - fixed some typos (Matteo Cypriani)
    - updated the setup file, INSTALL and README* (Matteo Cypriani)
    - already existing plugins:
        - XEP_0033: fixed message sending
    - wix: avoid setting a bad icon (Olly Betts)
    - libervia's browser side:
      - fixed bug at profile disconnection
      - fixed signal callback with no argument
      - disable OTR if the browser doesn't offer CSPRNG

v 0.5 (09/09/2014):
    - removed deprecated Sortilege frontend
    - better PEP-8 compliance and code cleaning
    - debug mode tries to use ipdb instead of pdb
    - improved initialisation sequence
    - refactorisation of the discovery feature
    - refactorization of the constants with inheritance
    - added profile password and passwords hashing/encryption
    - new logging system with colors, formatting, filtering and output management
    - the backend is now a twisted plugin (as libervia)
    - added a .service file for D-Bus auto-launch feature
    - improved launching/stopping scripts:
        - do not kill all instances anymore
        - add a "status" command
        - launch as daemon by default
        - new option "fg" for launching in foreground
    - updated setup.py and INSTALL files:
        - adapt to the new improvements
        - added "clean" and "purge" options
        - update distribute_setup.py to ez_setup.py
        - replace PIL dependencies with it's fork pillow
    - use XDG recommended paths as the defaults
    - look for DNS SRV records to find the XMPP server and port
    - tests: bug fixes, improvements and addition
    - bridge:
        - fixes some D-Bus frontend generator issues
        - set the timeout to 120 seconds for async calls
        - added methods getReady, discoInfos and discoItems
    - core:
        - wider use of asynchronous methods, removal of some synchronous ones
        - improved retrieval of the client with better error management
        - plugins now accepts recommendations in addition to dependencies
        - sendMessage handles the extra data key "send_only"
        - sendMessageTrigger now manage pre and post treatments
        - xmpp:
            - fixes sending of presence stanzas (were sent twice)
            - warns about roster's contact unilateral subscriptions
            - fixes presence status, handle message's subjects
            - refactorisation of the messages reception and sending
        - memory:
            - moved Params class in its own module
            - param definition handles multi-selection for list widgets
            - Parameters "Server" and "Port" renamed to "Force server" and "Force Port"
            - added module crypto for password hashing and block encryption/decryption
            - improvements and bug fixes (entities cache, last resource, importing/filtering parameters)
    - tools:
        - config improvements
        - moved sat.tools.jid to sat_frontends.tools.jid
        - XMLUI:
            - added read-only attribute
            - handle data forms and button callbacks
            - read value element/attribute of input widgets
            - new and improved widgets (boolean, list, texbox, JID)
            - manage dialogs for message, note, confirm and file upload
    - new plugins:
        - XEP-0048: MUC bookmarks
        - XEP-0049: private xml storage
        - XEP-0092: software version
        - OTR: Off The Record (end-to-end) encryption
        - register account: refactorisation of the method to register an XMPP account
        - static blog:
            - user can set his blog's banner, title, meta keywords and description
            - add a menu of type MENU_JID_CONTEXT to open a contact's public blog
    - already existing plugins:
        - XEP_0033, XEP-0085: bug fixes
        - XEP-0045:
            - added "Configure room" menu
            - added /kick, /ban and /affiliate commands
            - added user information to /whois text command
        - XEP-0050: manage notes and forms returned by completed command
        - XEP-0054: crop uploaded avatar to get a square
        - XEP-0060: handle retrieving items by node identifiers
        - XEP-0065: fixed initialisation sequence
        - xep-0115: caps optimisation
        - XEP-0249: added command /invite
        - groupblog: added a convenient bridge method getGroupBlogsWithComments
        - radiocol: add MP3 support, preload signal also contains the uploader nickname
        - account:
            - prosody gid is used to spawn prosodyctl process
            - user can change his password, purge his microblogs, delete his account
            - do not send the password with the confirmation email for account creation
        - text command:
            - refactoring and fixes
            - plugin can register their own commands
            - do not send the message on invalid command
            - added /me command, commands are now sorted in /help
    - stdui (standard XMLUI forms and callbacks):
        - contact list: unify the roster management UIs
        - profile manager: manage profile authentication and password prompts
    - frontends:
        - async failures are more detailed
        - signals are managed in a more generic way
        - force JID's node and domain to lower-case
        - use the new "info" type for system message
        - manage menu types MENU_ROOM and MENU_SINGLE
        - display messages from contacts not in roster
        - display presence with the highest priority
        - reset your own presence on connection/disconnection
        - display chat states for MUC participants
        - XMLUI: add setter methods, bug fixes
    - jp:
        - updated main loop to gobject 3
        - option '-c' is used to define the SàT profile password
        - added commands for bookmarks, info disco/version, load/save parameters template
    - primitivus:
        - improved vertical container
        - fixes contact group update, freedesktop notifications
        - history edit bar doesn't propagate up/down key events anymore
        - use of new keys modules from Urwid SàText and inhibate SIG_INT
        - fixes the messages display order when opening a conversation
        - prevent a notification flood when displaying the history
        - add the /history command
        - focus fixes
        - added keys to focus main parts
    - libervia:
        - reorganize all the source files hierarchy, fixes module import
        - refactor HTTP request result values, handle "NoReply" error
        - new account password must contain at least 6 chars
        - display favicons
        - server side:
            - added support for SSL and its related parameters
            - adapt setup.py to follow the changes in the backend
            - improvements (options management, failure handling...)
            - added option empty_password_allowed_warning_dangerous_list
            - twisted plugin:
                - fix unicodes issues in the options
                - bug fix passing twistd arguments to Libervia
            - static blog:
                - added URL query parameter 'max_items'
                - retrieve blog's banner, title, meta keywords and description
                - display blog comments when you click on a main item header or title
        - browser side:
            - force profile name to lower case at new account creation
            - display new lines and clickable URLs for headline message
            - notifications enhancements, manage the "info" message type
            - refactorisation of the JID class with modifiable attributes
            - refactorisation of the file uploaders and the menus
            - manage menus of level > 2 which can be flattened
            - handle menus of type ROOM, SINGLE and ROSTER_JID
            - PromptDialog can display several input fields
            - added a dialog to update/delete the account
            - added classes LightTextEditor, HTMLTextEditor
            - announcements from the host are displayed in a popup
            - use a default avatar, display avatars in the contact panel
            - display chat states for MUC participants
            - first steps to manage somehow browser side's plugins
            - implementation of OTR based on otr.js
            - improvements from feedbacks, bug fixes
            - microblogs:
                - display new lines in microblogs
                - <shift> + <enter> makes a new line, <esc> finishes the edition
            - XMLUI:
                - implement the divider styles
                - manage multi-selection for list widgets
                - follow the changes in the backend (dialogs, read-only attribute...)
            - nativedom manages more node properties

v 0.4.1 (28/02/2014):
    - fixed README4PACKAGERS
    - fixed/improved setup.py
    - better INSTALL

v 0.4.0 (26/02/2014):
    - minimum wokkel version is now 0.7.1
    - minimum urwid version is now 1.1.0
    - added more test cases
    - fixed invalid bridge calls
    - fixed issues at account creation
    - better PEP-8 compliance (Emmanuel Gil Peyrot)
    - distribute fix (Thomas Preud'homme)
    - better error and asynchronous calls handling
    - callbacks system refactoring and unification
    - configuration constants can be overriden in sat.conf
    - fixed some issues with the file transfer
    - possibility to register frontend specific parameter
    - added a security_limit parameter for sensible requests over the bridge
    - XMLUI deep refactorisation offering a new mechanism to ease frontend developpment and maintenance
    - XMLUI new AdvancedListContainer
    - localisation system improvement with deferred translation and dynamic language switch
    - new dynamic menus mechanism
    - better exit message if bridge can't be initialised
    - i18n refactoring, deferred translations
    - core: set min and max priorities for triggers
    - core: sendMessage can skip the triggers
    - core: triggered plugin methods can add a deferred treatments after a message is sent or received
    - core: do not write .sat/param anymore (everything is in the SQLite database)
    - core: plugins parameters registrations do an update instead of overwriting the existing nodes
    - core: better session management
    - core: callbacks can be removed after the first call
    - core: automatic database upgrade mechanism
    - core: resource priority management
    - new plugin: XEP-0033 (Extended Stanza Addressing)
    - new plugin: XEP-0055 (XMPP Search Directory)
    - new plugin: XEP-0085 (Chat State Notifications)
    - new plugin: XEP-0050 (Ad-hoc Commands, also able to request and interface with other D-Bus bridges)
    - new plugin: XEP-0071 (XHTML-IM)
    - new plugin: command_export (export a shell command input/output to a contact)
    - new plugin: room_games (from the factorisation of tarot, radiocol and quizz)
    - new plugin: text_commands (IRC-like commands)
    - new plugin: text_syntaxes (rich texts syntaxes conversions, for now between XHTML, Markdown and raw text)
    - plugin XEP-0045: added MUC configuration with XMLUI
    - plugin XEP-0077, XEP-100: refactorisation with XMLUI
    - plugin XEP-0249: add a parameter "auto-join MUC on invitation"
    - plugins XEP-0060, XEP-0277, groupblog: manage comments, rich text, titles, update, deletion and Atom feed
    - plugin radiocol: better synchronisation with "jump to time" information
    - frontends: fixed presence/status update
    - primitivus, libervia: added a user input history
    - jp: added profiles management (Dal)
    - jp: refactorisation to use ArgParse instead of OptParse (Dal)
    - jp: objects refactoring, automatic subcommands import
    - jp: added Zsh command completion
    - jp: locales fix (Thomas Preud'homme)
    - primitivus, libervia: user input history
    - primitivus: updated for using Urwid >= 1.1.0
    - libervia: lot of (re)factorisation, import of frontends modules
    - libervia: the server is now launched as a twisted plugin (Emmanuel Gil Peyrot)
    - libervia: add notifications support (Emmanuel Gil Peyrot)
    - libervia: added setup.py
    - libervia: fixed static blog items order, cosmetic improvements
    - libervia: static blog atom feed (e.g: http://www.libervia.org/blog/<user>/atom.xml)
    - libervia: unibox is now optional and desactivated by default
    - libervia: microblogs items are selectable when the unibox is enabled
    - libervia: quick addressing syntax is now handled by the unibox
    - libervia: added a GUI to edit rich text messages, preview/wysiwyg and manage extended addressing
    - libervia: use HTML5 "contenteditable" for editing your status and raw text/WYSIWYG microblogs
    - libervia: file upload improvement, radiocol GUI improvement and join/leave synchronisation
    - libervia: auto-login with URL GET parameters (e.g: http://libervia.org/login=<user>&passwd=<password>)
    - libervia: display clickable URL and day change in the chat panels
    - libervia: clicking on a contact list item opens the associated dialog
    - libervia: widggets and tabs can be dragged and dropped, better open/close behavior
    - libervia: fixed window resizing issues, multi-lines messages issues
    - libervia: added a GUI to select rooms and invite contacts (prototype)
    - libervia: added a GUI to manage contact groups (prototype)

v 0.3.0 (09/01/2013):
    - full project moved to AGPL v3+
    - new Logo (Adrien Vigneron) + several other sprites
    - quiz game (draft, not finished)
    - configuration file
    - media separated from main repository
    - new Qt frontend: Bellaciao (draft, not usable yet)
    - dbus-xml constructor in bridge-constructor (for Qt)
    - Primitivus: freedesktop notifications
    - new plugin: XEP-0020 (feature negociation)
    - new plugin: XEP-0047 (in-band bytestream)
    - new plugin: XEP-0095 (stream initiation)
    - new experimental plugin: pipe transfer
    - jp: name to jid conversion
    - database integration (sqlite)
    - D-Bus bridge: generic exception management
    - core: data storage improved
    - radio collective (plugin + Libervia implementation)
    - new groupblog, using sat_pubsub
    - D-Bus bridge: better dynamically added method management (with introspection)
    - status update crash fix (Xavier Maillard)
    - misc bugfixes (Emmanuel Gil Peyrot)
    - social contract: english translation (Matthieu Rakotojaona)
    - many MUC improvments (MUC branch merged mainstream in Wokkel)
    - Primitivus: contacts panel improvments: color & icon + statuses
    - Primitivus: MUC room are now shown separately
    - Primitivus: new entities are added to contacts panel if they send message
    - new plugin: text commands (IRC like commands during conversation)
    - plugin XEP-0045: nick change, room leaving, subject change, automaticaly change nick on conflict
    - MUC privates messages management
    - core: added priority management in triggers + trigger can now forbid other triggers execution
    - Primitivus is now modal (à la vi)
    - new experimental plugin: parrot (repeat text between two entities)
    - deprecated plugin: couchsurfing
    - Primitivus: incoming files transfer management
    - added "Port" parameter in "Connection"
    - Libervia: new skin (Adrien Vigneron)
    - Libervia: new widgets system
    - Libervia: many microblogging (with groups) improvments
    - Libervia: XMLUI implementation
    - Libervia: parameters management through XMLUI (deactivated for security reasons)
    - avatar upload (with Libervia implementation)
    - Libervia: disconnection management
    - SàT account automatic registration refactored (moved to core + use Prosody)
    - misc debug/refactoring

v 0.2.0 (31/05/2011):
    - new debug command in sat launcher script
    - core: triggers
    - news plugins: maildir, imap and smtp, SàT can now communicate with a Mail User Agent throught them
    - bridge constructor, a generator which make bridge files from .ini. It can also generate doc in mediawiki format
    - new plugin: XML log to send XML raw data throught DBus
    - new plugin: XEP-0115 (entity capabilities)
    - new plugin: XEP-0060 (Pubsub) and XEP-163 (Personal Eventing Protocol)
    - DBus bridge: fixed introspection for dynamically aded methods and signals
    - new plugin: XEP-277 (Microblogging over XMPP)
    - fixed installation (Wokkel version is forced)
    - bridge: added asynchrone methods management
    - new plugin: group microbloging (groupblog)
    - new plugin: XEP-0249 (direct MUC invitation)
    - plugin Tarot: game can be automatically created, and fully played (but rules are not fully implemented yet)
    - email added in registerNewAccount
    - Social contract added (CONTRAT_SOCIAL) \o.
    - Subscription scheme fixed
    - new frontend: Libervia \o/ . Put in a separate package

v 0.1.1 (14/01/2011):
    - bug#1: fixed crash due to dbus.String

v 0.1.0 (12/01/2011):
    - urwid custom libs split as a new project: "urwid-satext"
    - files reorganisation
    - versioning now use a standard scheme (major.minor.increment+letter)
    - distutils/distribute installation script
    - misc bugs fixes
    - easy way to launch/stop sat (sat & sat stop)

v 0.0.3 (20/08/2010):
    - multi-profiles
    - i18n support
    - french translation
    - MUC support (basic for the moment)
    - Dynamic methods/signals in DBus bridge
    - Tarot game
    - CouchSurfing plugin
    - XML User Interface
    - Sortilège replaced by Primitivus
    - About boxes & versions numbers now follow SàT core version

v 0.0.2 (10/01/2010):
    - DBus bridge: dynamic exportation of methods (useful for plugins)
    - new doc: INSTALL and CHANGELOG
    - new method to save private data (useful for plugins)
    - disconnection
    - whitespace ping to avoid disconnection when idle
    - presence management refactored, subscription is now managed separatly
    - use of xml params
    - new way to specify default values in params
    - sat is now a twisted application, so it can be deamonized
    - Wokkel integration
    - added some features from Wokkel: disco, software version
    - new account creation (in-band registration): not fully implemented
    - IP for file transfer is now set by default (see README)
    - Gateways management (Wix only for now)
    - VCard support (readonly for now) with avatars/nicks support
    - Wix: easier jid setup
    - Wix: added Tray icon (using Crystal Clear: see README)
    - Wix: new contact list, using avatars and nicknames
    - Wix, Sortilège: better connection/disconnection management (buggy in sortilège)
    - Wix: main frame default size changed

v 0.0.1 (17/05/2009):
    ** FIRST PUBLIC RELEASE **