v0.32.0 - The boatload
A lot has changed under the hood in the past months... many fixes and additions (and probably bugs) to improve xterm compat but its still far from perfect.
This changelog does not cover all the little changes in this release, refer to the diff if you want to go crazy...
Telnet / Terminal
- Added tabstops (forward and backward) and all related escape codes.
- Rejigged how IAC/ESCAPE/UTF8/Data codes are handled in
TELNET_ParseRX(). - A boatload of fixes and additions to the escape parser, still far from perfect but running esctest; https://github.com/ThomasDickey/esctest2 is starting to show some good results...
- A boatload of new escape codes added, many of which are still not quite perfect and a few fixes to common escape codes
- Once again I have shortened the titlebar prefix to only "SMDT".
- Fixed telnet IAC NAWS subnegotiation, turns out I sent
IAC SB ...instead ofIAC SB NAWS .... This has been broken ever since IAC support was added, whoops! - Font change now takes which of the buffer is used into account (main or alternate), previously it would always change the screen to the main buffer even if the terminal was using the alternate buffer.
- Terminal should no longer be blank after a soft reboot.
- Character set is now selectable between CP437 and UTF-8; QuickMenu -> Settings -> Client settings -> Terminal -> Character set.
IRC
- Nick colour can now be changed when using 4x8 font; QuickMenu -> Colours -> 4x8 Mono colour.
- The nick list now caps at the max number of nicks it can show, previously you could scroll down beyond what it could show (this is a memory limitation).
- Fixed an issue where the NAMES list parsing could cause the MD to lock up by writing beyond allocated memory. (Number of nicks on a channel being more than SMDT can handle).
- Some fixes to word wrapping.
- Multi line messages are now indented following previous lines.
UTF-8
- Rewrote the UTF-8 parser and handling; It can now interpret all codepages and if not found it will print an ? to the screen instead of garbage bytes. Previously it was very hardcoded to only handle $Ex xx yy UTF-8 codes.
- The fact that the UTF-8 parser can now distinguish what is and isn't UTF-8 bytes means that it won't swallow up bytes that may be a part of some other code like an escape sequence.
Network
- Split and rewrote NET_SendChar/NET_TransmitBuffer/NET_BufferChar functions to be a bit ... leaner(?).
- Data that needs to be sent directly does not have to wade through a bunch of buffer code anymore.
- NET_TransmitBuffer() now calls NET_SendChar() instead of sending data on its own.
Misc changes
- Miscellaneous keyboard code cleanups.
- RxBytes and TxBytes are no longer reset upon state changes in release builds.
- Debug logging changes / more gatekeeping.
- Added the DebugStreamer back, although as a seperate function. This is used to play back logged streams and debug them.
- HexView will now stop printing lines if the opened file is less than 192 bytes in size and only print the amount of data that is actually in the file.
- The telnet
-ttyoption has been removed, it is no longer necessary. - Added some numpad keys to scancode table.
Known bugs
- TimeToStr_Full() in IRC client does not take your timezone into account? (Command 333 @ IRC.c).
- 4x8 colouring in IRC can only colour even number of characters, uneven number will result in the final character being uncoloured.
- Spurious keyboard in certain terminal applications / telnet servers - Can easily be reproduced in blastEm while running dwarf fortress, meanwhile I have yet to be able to reproduce this glitch on real hardware.
- Sticky shift key - Sometimes the shift key gets "stuck", fixed by pressing shift again.
- Slider in scrollbars - their position may go beyond the edge due to rounding errors.
- Gopher client is broken atm. It assumes some things of the terminal which is no longer true, which causes quite a few rendering errors. Not sure if I'm going to keep the gopher client or remove it from SMDT...