(Changes marked [Final] were added in the final release, and those marked [RC2] were added in the RC2 release. Other changes were all in RC1.) Features - Channel user status display. In channel windows, the names of active users (those who've said something when you were present, within the last 15 minutes) are now shown in bold, and users who are marked away are shown in grey. - Away status handling: - By default, the /away command applies across all connected servers, not just the server you type it on. - You can be automatically marked away after a period of idle time (default 15 minutes). - When you are away, an away icon appears in the corner of each window. You can click the icon to cancel the away state. - Automatically closes spare windows. Once you have connected and another window opens (because you joined a channel or something), the spare window will by default go away after 5 seconds. You can prevent this by clicking back to the spare window. - Now supports popup notification for the following events: - New message window appears - Somebody says something in a minimised window - Somebody says something in a conversation that's been idle for 10 minutes or more - Server disconnect (except when you requsted it) - DCC file transfer complete (finished or error) - Scripted /popup command - Popup notification on Windows and Linux requires Java 1.6 and uses a system tray icon (which will appear if you have any notifications turned on). On Mac it works via the popular 'Growl' application and doesn't require a particular Java version or display extra icons. If you don't meet those requirements, you won't see popups (and the options page will explain the situation). Minor changes - Changed the two-weekly update check to report the current version number to the Web server, so that I can obtain statistics on versions currently in use. (Along with the IP address, this is the only data reported to the server in an update check.) - When receiving encrypted messages, the client now sends a response to the remote user if it doesn't support the requested encryption format, so that a fallback can be selected. (leafChat currently only offers one format. This feature is in case future versions use different formats.) - The watch system now takes advantage of 'obvious' information about the user to update their online status immediately, without waiting for notification from the server. (I.e. if it sees a QUIT it marks them offline, if it sees anything else from them it marks them online.) - As well as adding and deleting character encoding overrides, you can now edit existing ones. - The system now prevents you from sending messages to a server too quickly (this can cause the server to disconnect you). It will only send one message every 2 seconds, with bursts of up to 5 permitted. - Spare windows now correctly update with the server name when it changes during connect. - In the connect dialog, you can now set it to automatically connect on startup as well as just showing the dialog. - Added an 'isYou' flag to join events. - Auto error reporting now doesn't send in the following types of error by default (you can make it send them if you think it is a system error): - Errors caused by user scripts. - Errors occuring when loading themes. - 'Out of disk space' errors. - If you manually join a channel by typing /join, the channel name is remembered so that you can join it in future using the Join dialog. (Unless the channel you join requires a secret key; to remember this, you still have to specifically tell it using the Join dialog.) - Formatting has been improved for the /who command response. - CTCP improvements: - Due to an oversight, received CTCP messages (PING, VERSION) were acted on but not displayed. These are now displayed. - Formatting has been improved for request and response, including showing PING times in readable format. - Slight corrections to built-in CTCP response text. - You can now send CTCP ping by typing /ctcp whoever ping - this previously didn't work as the client failed to add the time. - On Mac OS X 10.5, the default download folder is now 'Downloads' instead of 'Desktop'. - Allowed nicknames beginning with _ in server settings. - Changed ordering of options when nicknames are selected in channel so that 'Kick' is no longer first on the list. [RC2] - Added text to the server preferences screen to clarify how the auto-identify works (it uses nickname passwords from the table, you shouldn't type a password into that edit box) and explain that you aren't allowed to set nickname passwords at global level. [RC2] Automatically reported bugs - When you created a script with errors in that included non-ASCII characters, saving the script caused a system error instead of displaying the correct error message. (Example: make a script with the single line é=4;) - Added check to help diagnose an auto-reported bug that happens when typing or when using the /say command, by detecting the problem earlier. - Added checks to help diagnose an error to do with the toolbar that occurs during startup. - Fixed it so that if you use /nick to change name, it doesn't do the automatic change to add _ if the name is in use (which it is supposed to do only on connection) - Receiving certain server messages with incorrect parameters caused 'Error during dispatch of [NumericIRCMsg]'. Changed to display these as unhandled messages. - Improved handling of URLs to avoid an 'invalid URL' error. leafChat will not now make URLs into clickable links unless it thinks they are valid URLs. - Fixed errors to do with the /ignore command. Typing /ignore on its own would ignore everybody (oops), and if it tried to generate an error message, that caused an error... - Added extra reporting to help diagnose 'XML error on line 1' errors. (For most of these errors I was able to determine the cause and fix it, but some remain; reporting the actual text that caused the problem should help me fix it.) - Added extra checking to hopefully avoid an error that occurred when clicking the 'Choose' button to select a download folder for DCC transfers. - Minor changes to fix one potential error when writing to log. - Done something which might fix a secondary error if an error occurs while creating a channel window. - It was possible to cause an error by entering text immediately as the server became disconnected (somehow). Fixed. - Tweaked the control as to whether the Connect button is enabled or not when invalid server names are typed. - Added code to provide better information for the 'Command regexp didn't match' error so that I can fix this if it still happens. - Fixed error that occurred if you set DCC download location to something with an & symbol in. - Added check to ensure you can't enable scripts that have errors. - Fixed error that occurred if you clicked the 'auto-identify' checkbox in the server preferences in some circumstances. This bug also caused other similar errors in that screen. [RC2] - URLs appearing in chat caused errors if they contained $ or \ symbols. [Final] - Fixed the following error: 'java.lang.ClassCastException: com.sun.java.swing.plaf.windows.WindowsInternalFrameTitlePane$ ScalableIconUIResource' (I don't know where this occurred, but there was an incorrect assumption about the type of icon that would be returned by an API call for internal frames). [Final] - Attempted to fix an issue in which log files might be locked (causing an error opening a log file), by synchronizing read/write access. [Final] - Typing /watch without the right parameters caused an error box, or else didn't display the right message; fixed. [Final] Other bugs - In separate windows mode on Mac OS X 10.5, window size wasn't remembered correctly. Windows grew 28 pixels wider each time they were opened. Now fixed. (Note: This problem may still occur on OS X 10.4. If it does, let me know and I'll fix it next time. It should not occur on 10.3.9.) - Problems occurred if you joined a channel using different case from the server, e.g. if the channel is called #FROG and you joined #frog. Fixed. - On Mac OS X 10.5, table column headings (e.g. on Connect/Settings or Options/Character encoding) sometimes did not fit in the space available. I have changed the code that works out those widths so that it should hopefully work on all current and future platforms - it's still a hack, but a more reliable one. - When using the /ctcp command e.g. /ctcp nickname FROG whatever, parameters after the command ('whatever' in this example) were sent without a space before them, causing it not to work. - There are minor graphical problems with the display of the split pane (that lets you drag the size of the name list) in Linux. I have made changes that might address this, but probably won't help. Back-end/API changes not covered above - Updated the incorporated Eclipse Java compiler to the latest release version (3.3.1), and using the official version rather than a munged one I had made previously. - Corrected a bug whereby plugins couldn't export more than one API version (they are supposed to export all the versions they support, e.g. if they still support v1 as well as v2). - Made minor updates to the UI plugin (API v2) and IRC plugin (API v2): - Clickable actions for Label via setAction(), and default support for in Label. - ListBox setBold(), setFaint(). - Window isMinimized() and isHidden(). - BorderPanel get(). - Support for clickable Pic widgets. - Server wasQuitRequested(), isAway(). - UserCTCPRequestIRCMsg now tracks whether the client has sent a response independently from standard markHandled(). - Multi-server away constants added to IRCPrefs. - Track ID for server requests (initially just supports WHO) via Server.sendServerRequest() and ServerIRCMsg.getResponseID [RC2] - Possibly other things I forgot... - Minor util additions - PlatformUtils.getDownloadFolder() - Other things I forgot...