view CHANGELOG @ 4202:b26339343076

core: use a user specific directory for PID file: default location of pid file is now specific to logged user, this allow to run several instances of Libervia by different users on the same machine without PID conflicts.
author Goffi <goffi@goffi.org>
date Sun, 14 Jan 2024 17:48:02 +0100
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 **