Before release: =============== ___ Update Changelog, NEWS, FEATURES ___ Update version in: configure.in.in kmess.spec autopackage/default.apspec ___ Run includemocs ___ Set 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 . ___ 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 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) ___ 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