Before release:
===============
___ Update Changelog, NEWS, FEATURES
___ Add/update release tagline in Changelog and NEWS
___ Update version in: configure.in.in Doxyfile kmess.spec kmess.lsm autopackage/default.apspec
___ Run includemocs
___ Set <UI version="3.1" ..> in *.ui files
    check using: find . -name *.ui | xargs grep 'version='
___ Test P2P support with new clients, including msn 7.5, amsn, gaim, e-messenger, kopete.
___ Test rtl support with chat styles:
      cd kmess/styles
      for i in */*.xsl; do name=`dirname $i`; xsltproc $i examplemessage.xml > $name/test.html; done
      konqueror */test.html


Creating the release:
=====================
___ Checkout CVS in a fresh directory:
      mkdir kmess-ver
      cvs -d ":ext:account@kmess.cvs.sourceforge.net:/cvsroot/kmess" checkout -d kmess-ver kmess
___ run make -f Makefile.dist (this also updates version from configure.in.in)
___ Remove autom4te.cache and the 'CVS' dirs.
      rm -Rf autom4te.cache
      find . -type d -name CVS -exec rm -Rf {} \;
___ Create the tarball.
___ Verify whether it compiles with KDE 3.2 (using Slackware 10.0 for example)
    When it doesn't work, commit fixes to CVS and start over. This avoids releasing the wrong code.
___ Tag version in CVS


After release:
==============
___ Update freshmeat, kde-apps.org, kde-announce-apps


To do:
======

Unfinished new features:
___ Invite contacts for a new chat session when the current chat is used for file transfers.
___ Invite contacts for a new chat session when the current chat has multiple participants (display dialog to choose the contact).
___ Change mouse cursor when hovering over the "personal status message" widget, make non-active background color less dark.
___ (in progress) Restore the context menu in the chat window.
___ Lookup all "TODO" items in the code.

Unfinished protocol features:
___ Integrate UPnP support with file transfer invitation code.
___ Make sure KMess can send two files at once with the classic file transfer method (test this).
___ Support a SLP Decline/error message for a sent P2P/SLP transfer invitation, and continue to transfer over the switchboard.
___ Support a second invitation for file transfers, detect when remote client only returns it's internal IP or does not listen.
___ Detect network settings, make the other client server for file transfer (sending a second transfer-invite).
___ Update the classic FileTransfer application to use the new async-cnnect, DirectConnectionPool and showTransfer*() API.

Critical bugs:
___ Restore the documentation
___ Restore the translations
___ Crash with downloading offline-im messages: http://www.kmess.org/board/viewtopic.php?t=1490

Junior jobs:
___ Fix settings for balloon notifications, see http://www.kmess.org/board/viewtopic.php?t=559
___ Fix e-mail support for non-Hotmail accounts, don't attempt to use Hotmail. Use chosen app or default KDE mail app instead).
___ (in progress) Drag and drop of files in the chat window.
___ Add save log button to network window.
___ Allow users to scale fonts in the chat window (zoom icons).
___ Automatically save settings when pressing OK, not when closing KMess.
___ Add a balloon if the contact start the chat with an filetransfer/nudge/wink.
___ Implement KDE passive popups so the balloon code can be removed later.
___ Improve wink playing, include preview, offer "play" button (also see other showWink() issues). Also fixes issues when chat is started with a wink.
___ Implement phone settings (PRP and BPR fields).
___ Implement privacy settings (GTC and BLP fields, messages like "can't chat with invited contact" because not in the AL).
___ Implement setEnabled() checks for the contact group context menu in KMessView::slotContextMenu().
___ Test whether a display picture is fully received, and remove the image from the cache otherwise.
___ Group chats: fix status bar when multiple users are typing a message.
... And if you're up for a challenge, you could try one of the "Low priority protocol features" below too.
... Or try to implement a new MSN feature (see "Future ideas" section).

Annoying bugs:
___ When the switchboard is disconnected (gray contact pictures), it's not possible to invite new contacts.
___ Fix repeated picture transfer invitations when contact declines or aborts the invitation (preferably disable only for a few minutes).
___ Login blocks all gui-events: make all connection attempts async (put TcpConnectionBase under MsnConnection).
___ Delete contact settings when contact no longer exists in the contact list.
___ Implement cleaning up of the kmessrc file, remove old Contact entries that are no longer used.
___ Automatically clean up the displaypics folder, and msnpicture-alias-##.png images that are older then 1 month.
___ Fix error messages with 'actions -> new contact' on a 'non-existing contact', 'existing contact' and 'contact without @'.
___ Fix contact list background picture scrolling
___ Hide the register link when editing an account.
___ Improve settingsdialog height, for 800x600 displays.
___ Add detection for NAK responses to file transfer invitations
___ Replace warning message "you can't change your friendly name" with something less unobtrusive.
___ Improve performance of restyling the chat window: combine xml to one string.
___ Make moving of contacts smoother, see MsnNotificationConnection::getAdc().
___ Display a message box if the chat logs can't be saved because the folder no longer exists.
___ Fix MsnConnection::addPercents(), replace with KURL::encode_string(), but test for compatibility.
___ Fix problems with clicking on contacts rapidly, see http://www.kmess.org/board/viewtopic.php?t=533
___ Fix newline shortkey Ctrl+Enter / Shift+Enter in GNOME.
___ Now listening icon is SUSE specific
___ Emoticons are no longer displayed in the chat settings tab.

Low-priority features:
___ Highlight the text of the contact list item when it's active.
___ Improve wink processing messages of `cabextract` output in ChatWindow::showWink().
___ In the emoticon settings panel, don't assume "smile.png" will always be available (parse theme, preferably with an EmoticonTheme class).
___ When chat window closes, inform user the file transfers will also abort.
___ Balloon size fix (2 contacts on balloon), might become obsolute when passive popups are used instead.
___ See what happens when there is a picture transfer in a multi-chat, and: 1) a private chat with the same contact is started 2) when one of the chats becomes buzy.
___ Improve the parsing of *bold* /italics/ and _underline_, so http:/website/ does not become italic and avoid mangling <a href="http:/<i>website</i>">.
___ Disable cut/copy for the password line (InitialViewInterface, not using KPasswordEdit because it disables too much).
_N_ Create an Apt repository online

Low-priority code changes:
___ Update binreloc support to version 2.0.
___ Add Application::get..TransferAbortMessage().
___ Only allow plugins/non-local files temporary when displaying winks?
___ Implement Application::attachToChat(..) feature to improve aborting?
___ Create a WinkArchive class for the code in ChatWindow::showWink().
___ Include contact meta-data in receivedMessage() call of ChatWindow::showWink().
___ Use kdWarning() instead of kdDebug() << "WARNING", for warning messages.
___ Use if(KMESS_NULL(..)) checks instead of current if(.. != 0) { .. }
___ Remove the dependency on QWidget for data-classes.
___ Move chat/invitedcontact.h to the contact folder.
___ Move network/extra/httpsoapconnection to the network root folder.
___ Move utility classes to a separate folder.
___ Decouple the MsnSwitchboardConnection from the ChatWindow class, for picture transfers in the background.

Low-priority protocol features:
___ Support removing a contact from just one group.
___ Support adding contacts to multiple groups.
___ Improve removing contacts, offer dialog to block the contact as well (currently always kept in allowed list).
___ Detect multiple external IP addresses to advertise in file transfer invite message.
___ Support sending the data-preparation ACK later with Windows Live Messenger picture transfers.
___ Support direct connection setups when requesting contact pictures.
___ Support aborting the data-preparation, also detect when contact does this.
___ Support the datacast emulation over MSNP2P for MSNC1-compatible clients (for winks).
___ Test whether applications need to be aborted when the switchboard reconnects.
___ Check P2P incomingMessages_ / outgoingMessages_ cache for timeouts.
___ Leave a P2PApplication half-open to receive a final error message.
___ Make sure the proxy code works without a sockaddr_in structure (need to test somehow).
___ Check if the mutex lock in MsnConnection is really needed anymore.
___ Use "URL PERSON/PROFILE" settings.

Wishes by users for 1.5:
___ Include a tooltip in the contact sidebar.
___ Include a contact menu in the contact sidebar (see https://www.lab.fi.uva.es/~albgonz/kmesss.jpg)
___ Improve the contact list contact menu
___ Compact sidebar list as described in http://www.kmess.org/board/viewtopic.php?t=460
    (make it optional, let the user choose between "no", "compact", "full")
___ Maybe: improve chat window layout like http://kde-apps.org/content/show.php?content=24461
    (looks more clean, though it's a bit kmerlin like though, and the current pictures list is not that bad for multi-chat)
___ Group off-line contacts in one single group.
___ Group chats: remove contact frame when a user leaves the chat.
___ Group chats: use more compact ontact frame.
___ Account menu's: only show submenu when there are multiple accounts.
___ XMMS2 now listening: http://www.kmess.org/board/viewtopic.php?t=1569 (use relaytool from autopackage.org for that).
___ Optionally download contact pictures when the picture changed but they're not in a chat yet.

Wishes by users for 1.6:
___ Tabbed chats.
___ Get rid of the balloons

Open for discussion:
___ Implement text/x-keepalive message so be sure when a contact really left a chat.
___ When the contact disables it's picture, should we leave the current one active, or revert the the "unknown" picture?
___ Order of the title in the main window, account before or after. Should distinguish from the chat windows though.

Implemented for 1.5:
_Y_ Implement text/x-clientcaps message and MsnObject name to advertise KMess to other third-party messengers.
_Y_ Add a checkbox to the settingspanel to disable the shaking window effect.
_Y_ Support emoticons folder with KDE 3.3
_Y_ Support "now playing" by other contacts, use dcop for our status.
_Y_ Handle closed direct connection, KMess keeps using the direct connection.
_Y_ Implement i18n() for chat styles, e.g. use libxml to replace all text nodes, create an XSLT to extract all text nodes.
_Y_ Fix the memory-leak of sentMessages_ for chat messages, these are only cleared at a NAK currently.
_Y_ Send previews of images in msn file transfers.
_Y_ Fix detection of context field splitter in FileTransferP2P::contactStarted1..(), also needed to show image previews.
_Y_ Contact sidebar width is not saved/restord anymore.
_Y_ Contact sidebar width is changed when the chat window resizes.
_Y_ Check if our eventsrc file is found in the KDE-dirs, otherwise warn KMess can't notify or flash the taskbar or play sounds (see: http://www.kmess.org/board/viewtopic.php?t=1619)
_N_ (caused by Beryl bug) "Focus stealing prevention", open the new chat windows in the background by default.



Future ideas:
=============

MSN Protocol support:
___ Improve old file transfer code, multiple connections like MSN5 does.
_Y_ Implement UPnP support
___ Implement a settings category ("File transfers") where the user can at least choose:
    - "[x] Allow KMess to control my internet router programmatically [learn more]"
    - "Use the following port to receive UPnP broadcast responses: [default 1900]"
___ Implement STUN support, also for Connection-Type field, see http://en.wikipedia.org/wiki/STUN and http://en.wikipedia.org/wiki/UDP_hole_punching.
___ Add voice (SIP) support
___ Add Voice clips support, see http://www.hypothetic.org/docs/msn/phorum/read.php?f=1&i=11505&t=11437
___ Add webcam (RTP) support, see http://www.hypothetic.org/docs/msn/phorum/read.php?f=1&i=9837&t=9837
_Y_ Add winks support
_Y_ Add emoticon transfer support
___ Add Ink support?
___ Fix msn remote desktop invitation support (context field with user/pass)
___ Add HTTP connection method.
___ Implement MSN Spaces integration
___ Implement MSN Games support (ActicitiesCollection : public QPtrList<Activity>)
___ Implement shared folders.
___ Upgrade to MSNP14, but not until the protocol is fully understood! (it has some radical changes).

Invitation support:
___ Check whether gnomemeeting, krdc exists before starting/acceping a session
___ Support Konference for netmeeting invitations as well.
___ Detect whether gnomemeeting or konference exists before starting a netmeeting session.

Interface features:
___ Update contact properties edit dialog, icon button for contact icon.
___ Browse/view the contact picture cache (include meta data, like contact handle and date/time)
___ Show an icon overlay for contact connected with webmessenger.msn.com / MSN Mobile
___ Add contact icon (purple?) for unknown contacts added by others in a multi-chat session.
_N_ "Who has me in his/hers contact list?" dialog (allowed/removed groups already reveal this)
_N_ Include the network-window as "--with-network-window" if the network-window-code displays traffic nicer.

KDE Integration:
___ KDE-IM bridge (http://developer.kde.org/documentation/library/cvs-api/interfaces/html/classKIMIface.html)
___ GetHotNewStuff (as of KDE 3.4, either support it through a KPart, or wait for KDE 4 conversion)
___ KWallet integration
