This was supposed to be the announcement for the 1.6 release but unfortunately as soon as it was released a nasty bug that only allowed one user to connect reared its ugly head. So a couple of hot-fix minor releases came out quickly afterwards.
The 1.6 release is mostly feature updates to the lchat client. These features include:
- Multi-threaded client. This removes and reduces polling between the server socket and keyboard input making the interface more responsive.
- An internal chat history buffer. The Control-P key binding switches the input to history mode allowing the user to scroll through previously sent messages.
- Basic auto-completion. While typing a message hitting the TAB key will attempt to complete what it can or give a suggestion for completion if it can’t find a unique value.
So how did this bug slip through. With this being a simple project I had to make things more difficult for myself. The socket implementation is done as a C++ stream buffer allowing C++ streams to be used for communications. This has been a big learning lesson of the short comings of the stream API in C++. It can be made to work but jumping through a number of hoops.
With these lessons learned am I going to rewrite the socket interface? Na. My next mission is to get a test suite going for this project. Because it’s such a simple project and awkward to test I didn’t really think it was needed. With this last bug it shows testing is always a good idea.
The home page for the project can be found here.