Before release:
===============
___ Update Changelog, NEWS, FEATURES
___ Update version in: configure.in.in kmess.spec 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-look, kde-announce


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.
___ Restore the context menu in the chat window.
___ Implement i18n() for chat styles, e.g. use libxml to replace all text nodes, create an XSLT to extract all text nodes.
___ 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.
___ Find out how to 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.

Junior jobs:
___ Drag and drop of files in the chat window.
___ Add save log button to network window.
___ Improve wink playing, include preview, offer "play" button (also see other showWink() issues). Also fixes issues when chat is started with a wink.
___ Allow users to scale fonts in the chat window (zoom icons).
___ Fix settings for balloon notifications, see http://kmess.sourceforge.net/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).
___ Balloon size fix (2 contacts on balloon).
___ Add a balloon if the contact start the chat with an filetransfer/nudge/wink.
___ Automatically save settings when pressing OK, not when closing KMess.
___ 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).
___ Test whether a display picture is fully received, and remove the image from the cache otherwise.
___ Implement setEnabled() checks for the contact group context menu in KMessView::slotContextMenu().
... 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).

Critical bugs:
___ Fix problems with clicking on contacts rapidly, see http://kmess.sourceforge.net/board/viewtopic.php?t=533
___ Fix MsnConnection::addPercents(), replace with KURL::encode_string(), but test for compatibility.
___ Restore the documentation
___ Restore the translations

Annoying bugs:
___ When the switchboard is disconnected (gray contact pictures), it's not possible to invite new contacts.
___ Display a message box if the chat logs can't be saved because the folder no longer exists.
___ New chat window with message "Contact is offline", possibly due not aborting an application.
___ 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.
___ Fix any problems when cancelling a connection during a connection attempt.
___ Fix error messages with 'actions -> new contact' on a 'non-existing contact', 'existing contact' and 'contact without @'.
___ Fix contact list background picture scrolling
___ Add detection for NAK responses to file transfer invitations
___ Hide the register link when editing an account.
___ Replace warning message "you can't change your friendly name" with something less unobtrusive.
___ Improve settingsdialog height, for 800x600 displays.
___ Improve performance of restyling the chat window: combine xml to one string.
___ Implement cleaning up of display picture cache.
___ Contact sidebar width is not saved/restord anymore.
___ Contact sidebar width is changed when the chat window resizes.
___ Check if our eventsrc file is found in the KDE-dirs, otherwise warn KMess can't notify or flash the taskbar.
___ Fix sending/queueing of messages when the contact has not entered the chat yet (also sending 'CAL' again).
___ Make moving of contacts smoother, see MsnNotificationConnection::getAdc().

Low-priority features:
___ Add a checkbox to the settingspanel to disable the shaking window effect.
___ Implement i18n support for chat styles
___ 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.
___ 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.
___ Automaticaly clean up 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.
___ Delete contact settings when contact no longer exists in the contact list.
___ 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?
___ Implement a better free-port detection of DirectConnectionBase::openServerPort().
___ Create a WinkArchive class for the code in ChatWindow::showWink().
___ Include contact meta-data in receivedMessage() call in ChatWindow::showWink().
___ Fix the memory-leak of sentMessages_ for chat messages, these are only cleared at a NAK currently.
___ 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.
___ 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.
___ Support "now playing" by other contacts, use dcop for our status.
___ Fix detection of context field splitter in FileTransferP2P::contactStarted1..(), also needed to show image previews.
___ 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).
___ Optionally download contact pictures when the picture changed but they're not in a chat yet.
___ 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 withouta sockaddr_in structure (need to test somehow).
___ Check if the mutex lock in MsnConnection is really needed anymore.
___ Use "URL PERSON/PROFILE" settings.

Whishes 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://kmess.sourceforge.net/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.

Open for discussion:
___ Implement text/x-keepalive message so be sure when a contact really left a chat.
___ Implement text/x-clientcaps message and MsnObject name to advertise KMess to other third-party messengers.
___ When the contact disables it's picture, should we leave the current one active, or revert the the "unknown" picture?

Implemented:
_Y_ Upgrade to MSNP11 support (new LST commands for contact list, etc..)
_Y_ When someone adds you, they're not visible in the contactlist when they're accepted.
_Y_ Include the display icon above the contact list (too bad msn7 already implemented the same idea, makes it look like copying)
_Y_ Add nudge support (easy, and make the kmess-version less annoying, highlight of contact picture for example)
_Y_ Improve the login dialog, the selectionbox/login is confusing.
_Y_ Fix the direct login at the main page, it creates a temporary profile if an existing one already exists.
_Y_ Chat window XML/XSLT support, like http://kde-look.org/content/show.php?content=22640
_Y_ Support images/css in XSLT chat styles (locating resources, allowing <head> tags).
_Y_ Support retheming of the chat window after a new chat style is selected.
_Y_ Emoticon themes (instead of overwriting existing emoticons)
_Y_ Chat style themes (XSL files)
_Y_ When the display picture is changed, it won't be shown until the chat window reloads (caching issue, filename is still the same).
_Y_ Fix ftp://user:pass@host/ in chat conversations, requires a new message parser.
_Y_ Implement MSN6 direct connection filetransfers
_Y_ either support msn6 file sending, or support classic msn5 transfers
_Y_ Support re-use of the direct connection by other P2P applications.
_Y_ Test sending multiple files at once over msnp2p, second application should wait for first direct connection.
_Y_ Restore aborting applications when chat window is closed by user or contact.
_Y_ Support aborting the file transfer invitations before the contact accepted (send a SLP BYE, not decline).
_Y_ Handle spontaneous disconnects better, fix difference between disconnectFromServer() and closeConnection() to cleanup works correctly.
_Y_ Update the classic MsnFtpConnection to use new async-connect, and setAuthorized() API.
_Y_ Fix picture transfer timeout warnings if possible, see http://kmess.sourceforge.net/board/viewtopic.php?t=573
_Y_ Check for isPrivateChatRequired() in ChatMaster::slotSwitchboardReady().
_Y_ Support picture tranfers in a multi chat using Application::isPrivateChatRequired().
_Y_ Add invited contacts a new collection in CurrentAccount, which is cleaned up automatically when the contact left all chats.
_Y_ Move contact clientcaps field from Contact to ContactBase, making use of new JOI parameter in MSNP12.
_Y_ Fix picture transfers with invited contacts.
_Y_ Add detection for empty switchboard sessions before sending file transfer invitations.
_Y_ Fix emoticons in user names, causes problems with XSL themes.
_Y_ Add a link to "register.passport.net" somewhere
_Y_ Improve the contact list tooltip
_Y_ Fix crash when cancelling a meeting.
_Y_ Fix crash in event loop, http://kmess.sourceforge.net/board/viewtopic.php?t=543
_Y_ Fix crash from getContactActionByHandle(), see http://kmess.sourceforge.net/board/viewtopic.php?t=554
_Y_ Make sure ChatInfo gets deleted somewhere.
_Y_ Fix the saving of font settings, something it saved Comic &Sans MS
_Y_ Restore copy support in the chat window.
_Y_ Fix grouping of multiple messages, sometimes the last message can't be found.
_Y_ Support dark color schemes, e.g. NighBlack from kde-look, see http://kmess.sourceforge.net/board/viewtopic.php?t=211.
_Y_ Catch mouse clicks for the custom status text widget in the main window, change widget background (solution: http://www.qtcentre.org/forum/showthread.php?p=14022)
_N_ Fix login code for special characters in the handle/password (a comma or ä for example).
_Y_ Verify that right-to-left writing support still works, http://kmess.sourceforge.net/board/viewtopic.php?t=505
_Y_ Chat log is overwritten in some cases (leaving chat half-open?).
_Y_ Rename dk.po to da.po
_Y_ Rename CANCEL_SESSION to CANCEL_ABORT.
_Y_ Fix MsnObject friendly name, is not displayed correctly.
_Y_ Restore hotmail e-mail notifications for MSNP12 code.
_Y_ Fix problems with sending chat messages before the switchboard is connected (no contact left in to invite).
_Y_ Fix fallback to switchboard when remote server only returns internal IP or has a connection timeout.
_Y_ Fix "&Verdana" string in chat message font face tag.
_Y_ Fix 'QGArray::at: Absolute index 12 out of range' error at the console.
_Y_ Detect when passport is not verified yet, name can't be changed (USR OK parameter).
_Y_ Optimize getContactByHandle(), contactlists can have 600 items, making it slow!
_Y_ Fix temporary/guest accounts. some settings should be grayed out, contact information should not be saved.
_Y_ Password field does not respond to the "enter" button.
_Y_ Password field sometimes hangs for input.
_Y_ The "contact is offline" message is repeated because KMess keeps sending 'user is typing' messages.
_Y_ Fix Dutch abort message for invitations "u heeft gewijgerd"



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?
___ Previews in msn file transfers for images,
___ 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)
___ Add "now playing" support, using dcop to query the common kde multimedia applications.
___ KWallet integration
