2.0 beta 2 → 2.0
Features
- Tab completion at start of line now includes :
If you tab-complete a nickname (not channel), at the start of a line, it gets a colon and space afterward. For example, you could type m a <tab> to get 'Mary: ' and be immediately ready to start typing your comment directed at Mary.
- New encrypted chat feature
You can now use secure encryption to chat via the IRC server with other leafChat 2 users. To use, /encryptedquery <nickname>, or right-click somebody and choose 'Encrypted chat'.
The encryption uses a 1024 bit Diffie-Hellman key exchange, followed by TripleDES encryption. These technologies should be quite secure and have the advantage that they are available as standard in Java distributions since 1.4.2. (Encrypted messages go via the IRC server in a similar manner to normal messages, not via DCC.)
I am not an encryption expert. As this is based on standard Java infrastructure, hopefully it is OK. Source code for the encryption plugin is available if anyone would like to review it.
[If any other IRC client authors would like to support the same system I can provide full details of the format.]
The system makes no attempt whatsoever to guarantee the identity of the person you're talking to (there are no signatures involved). You will need to check their identity in some other way each time you have a secure conversation.
- Debugging turned off
Debugging features have been turned off. For example, IRC server communication is no longer printed to the standard console.
If you want a log of IRC server communication, install the optional 'debug monitor' plugin and run this using /DebugMonitor when you want to see it. When installed, the plugin remembers the last hundred lines even if the window isn't there, so you can bring the window up after an event that you want to check.
Automatically reported bugs
When certain types of error occur, leafChat offers to automatically report the problem. The bugs below were reported using that system and have all been fixed. Where a bug occurred to more than one person, I've given its 'chart position'.
- #1 - Scripts were not completely unloaded. On Windows platform, this made it impossible to delete the .jar file and caused errors whenever you tried to delete a script and sometimes when trying to save changes to a script.
- #2 - Receiving PART message (or similar) for users who weren't known to be in the channel caused an error. This could happen with 'silent' channels. Has been changed from an error to a warning stored silently in the system log.
- #3 - Some IRC commands which require a certain number of parameters caused a program error if you used less, rather than just displaying a 'needs more parameters' response.
- #4 - Some IRC network services send op modes for users who don't exist on channel. This caused a program error. Now stored as a silent warning in system log.
- #5 - The known-users information ('x was previously here at...') caused errors if the person's nickname contained certain characters.
- #6 - Sometimes when changing interface style an error could occur. I didn't find out why, but have changed the code so it won't happen anyway.
- #7 - If somebody got kicked out of a channel soon after you joined it, an error could occur.
- If a server disconnected you instantly after sending a private message, an error occurred. (An example is irc.justin.tv which does that if you log in without giving a correct password.) The root cause was that leafChat processed some events in the wrong order.
- If you did /whois on irc.justin.tv on somebody not in any channels, this caused an error due to unexpected format of the response.
- Selecting the encoding 'x-jis-autodetect' for outgoing messages caused errors. This encoding cannot be used for outgoing messages. I've made the system check and not include these in the list (for outgoing text).
- DCC sending files including the & character in their name caused errors. There could also be errors if the nickname included such unusual characters.
- If the network connection was discovered to have broken while sending text, this could show as a program error. I have fixed this so that it now shows as a standard server disconnect.
- In the Connection page of Options, entering an invalid (too big) number into the selected port fields could cause an error.
- Connecting with a nickname that included { caused an error.
- There's an undocumented syntax to direct commands to a specific server. Typing '/1/whois someone' should run '/whois someone' on server 1 (the first you connected to is 1). I'm not sure how useful this is, but anyway, it was broken. Now it works.
Other bugs
- Connect button inappropriately disabled.
If you last connected to a server by typing the name, the next time you opened the Connect dialog, the Connect button was greyed out even though the name was still there ready to connect. - Server password box didn't work properly
When you entered a password into the server password box, it did actually work, but if you clicked around to other servers, the password box didn't change as it should. - Failed to authenticate to irc.justin.tv
This server makes a (probably inappropriate) assumption that the PASS command will be within a single TCP packet. Because of the way leafChat does its output, that wasn't necessarily the case. I've changed leafChat so that this is now likely to happen (barring unusual network circumstances) and such broken servers will continue to work. - Topic setter not escaped properly
If the user who set the topic had a nickname containing special characters such as < or &, this caused an error. - 'Error adding text' was not a very helpful error message
This error message was not helpful in fixing bugs. I have changed the error message to include the text that it was trying to display, which should allow me to easily resolve such bugs. - /away messages were chopped off after first word
Only the first word of an /away message was actually used. Oops. - Double spaces were stripped from received text
If received text included multiple spaces in a row, the second (and onward) were ignored. This caused problems when trying to view ASCII art/diagrams, even after switching to fixed-width font. - Split rejoin detection was broken
Split detection (where it displays a summarised version of network splits and rejoins, rather than a million lines of QUIT or JOIN displays) was working for splits, but not working for rejoins. - Invites were displayed only as unhandled
Invite messages were displayed only as unhandled text (grey messages showing the text sent from server). These messages are now properly displayed and coloured, along with a link you can click if you do want to join the channel. - DCC chat: added confirmation (security)
Previously, DCC chat automatically connected. This was a security bug as it meant that a remote user could get your IP address without permission even if the IRC server in question hides addresses.
There is now an 'Accept' link in the DCC chat window (and instructions telling you not to accept if you weren't expecting it).
- DCC chat: removed superflous console output
A message was output to the console (for those who can see the console) whenever you closed a DCC chat window. This was unnecessary and had been left in by accident. Now removed.