Versions prior to 1.6 - Versions prior to 1.6 were still in the alpha development stage, and history notes were not maintained. These notes may not be comprehensible to you, they were designed to document the changes I made along the way, and often refer to internals of the program. It is included in the distribution for completeness. Version 1.60 Alpha (sometime in May 1994) - I thought that at this point, it was ready to be tested on TSCNET for the first time. I needed to make sure that the file routines would work with the network with more then 2 users. It went on-line for about 2 hours. (There were many minor bugs, and major problems with file sharing across the network that did not appear on one machine running Desqview). Version 1.61 Alpha - Added More Error Checking for file opens/reads/writes. - Fixed problems with command parser. - Expanded Help functions to include help on individual commands. Version 1.62 Alpha - Added /PAUSE command and heap to place coded records recieved while paused. Version 1.63 Alpha - Added Line Wrap during text input. Version 1.64 Alpha - Added Commands: /STATUS, /IGNORE, /MONITOR - Corrected colors by adding function that always reverse the color back to white following text output. That way the imput color is always white. - Corrected a problem with text input line wrap. Version 1.65 Alpha - Added even more file open/read/write error checking. - Corrected minor spelling errors. Version 1.70 to 1.72 Beta (6/4/94) - Started full Beta process - Corrected various minor bugs. - Moved various code around to try to improve speed. - Move various code around to minimize the time that files are kept open. - Fixed a problem where I was calling a string building function that required a NULL to be the last parameter. I was missing the NULL, and so garbage was being displayed to the user when the string was being printed. Verified that all calls to this function ended with a NULL, and found several more in error. Version 1.73 Beta (6/7/94) - Scraped the stream file functions and most of the previously installed error checking in favor of the lower level file I/O functions with manual file locking. (Greatly increased speed by lowering the size of file requests). - Corrected another line wrap function caused by the correction in version 1.64 Alpha. Also had to alter the command parser because of this change. Version 1.74 Beta (6/8/94) - Corrected a bug where if a user tried to take ownership of a channel, and it was owned by someone else, it would report that node 0 owned the channel instead of the correct channel owner. Version 1.80 Beta (6/9/94) - Improved Source Code Documentation. - Added code for the configuration file. The program will now read the configuration file for the following values: BBS NAME (Name of BBS) Registeration Code (Registeration) Chat file Path (Path to the CHAT.DAT file) Help file Path (Path to the Help Files [.CHF]) Action file Path (Path to the Action Files) Finger file Path (Path to the finger data) Check Interval (Interval with which to check the data file) High Always Public Channel (High always public Channel) Chat File Coded Records (# of fixed length coded records) Sysop Security (Sysop Security Level) - Added the following commands to the command parser: /TERM, /GIVE, /TOPIC, /UP, /ONE /HIDE(sysop). These are active in the parser, but are not implemented yet. - Fixed a problem where if the file was locked at the same time that it was being checked for text while you are typing, it would give a network delay right in the middle of your text. Since this check is not critical, if the file is locked during this check, it is skipped. - Added code to prevent a blank (empty) record being sent if the command is PUBLICTEXT or PRIVATETEXT. This keeps users from sending blank lines by just hitting enter. - Overrode the PCBoard ToolKit's default file error handler and modified it to delay longer before giving the user a Network Busy message. It will now recheck a locked file every 1/4 second for the first 2 seconds and then delay for 1 second for 8 more seconds. Only then will it display the network busy message and conduct retries for the network timeout on re-tries period. Version 1.81 Beta (06/11/94-06/21/94) - Corrected a problem with the string handling in while processing the text read from the configuration file. This could have caused a problem, but it didn't with the default values I used for testing. - Added the channel mode ONE-ON-ONE. The /ONE command is now working, and the channel is properly made PUBLIC, PRIVATE, and ONE-ON-ONE. Also modified the /INVITE and /CALL commands to check to see if there are already 2 people on the channel and if so, give an error message. - Modified the joinchannel code so that if the channel is ONE-ON-ONE, then it will see if there are already 2 people there. - Modified the /SHOW command and function to show ONE-ON-ONE channels. - Modified the /SHOW command and function to show who is the channel owner by putting a '*' next to the node number. - Got the One-On-One mode working. Will not currently process Backspaces or do line wrap properly. Also each keystroke will create an attempted channel file access; will want reuse a timer to keep file accesses limited to a predefinable value (say every second). Version 1.82 Beta (06/22/94) - Corrected backspace processing in one-on-one mode. - Corrected Line Wrap processing in one-on-one mode. - More work on the One-On-One Mode. Added the code to do file accesses based on a timer instead of attempting a file access at every keystroke. This, of course, promptly broke the backspace and line wrap. Version 1.83 Beta (06/24/94) - Corrected the backspace by checking to see if there is a pending write or not. (i.e. do we need to send a BS to the channel file, or just change the local buffer). - Corrected Line Wrap in the same manner, but something is still subtley wrong. - Added Color and cursor positioning similar to that in the original PCBoard chat module. There are still some problems with this, and it needs a full debugging session. Version 1.84 Beta (06/29/94) - Continued Work on One-on-One mode. Added a special print function for the one-on-one mode. Cursor positioning on the remote end still does not remain in sync with local screen. Version 1.85 Beta (7/3/94) - Added cursor positioning functions that move the remote cursor using relative rather than absolute coordinates. This corrected the problem with the remote screen not syncing with the local screen in the one-on-one mode. Version 1.86 Beta (7/11/94) - After a long debugging session, fixed the one-on-one mode and associated line wrap. - Changed code so that the channel file is deleted when a one-on-one chat is concluded (Made Public, Made Private, or Both partys departed) - Fixed /IGNORE so that a node can now be correctly "Unignored". - Added /GIVE command, allows the channel owner to give ownership to another node in the same channel. - Modified the joinchannel function so that if you are already on the channel that you requested, it will tell you so. - Added the /WHOIS sysop command. This command will show a sysop info about another chat user. Also modified the /QUERY command. Both of these will now get a response from another node even if coded records are going to the heap on that node. - Added pauses (while in the /PAUSE mode) to the /SHOW and /WHO displays. - Added /FINGER Command. /FINGER shows the finger infomation that is saved when using Brad Dameron's PROFILE (FINGER) PPE. /FINGER LIST will show all users who have entered finger information. Version 1.87 Beta (7/12/94) - Modified the /FINGER command so that if the configuration file setting FingerPath= is blank, and a user issues the finger command, it will tell him that "finger is not installed on this system." - Modified the /FINGER LIST command so that it recognizes the pause status and pauses (while putting coded records to heap). - Added Configuration file option ChannelFileCheckInt= which establishes the period of time between reads or write to the channel file in the one-on-one mode. This value is clock ticks rather than seconds. The default value is 18 (1 second). - Modified Configuration file option ChatFileCheckInterval= to be in clock ticks vice seconds. The default value is 91 ticks (5 seconds) {TICKS = (int)(Seconds * 182 / 10)} Version 1.88 Beta (7/15/94) - Completed Work on actions. See documentation for implementation details. - Made Minor changes to color scheme. (Public text is now a differenct color than the node number and name that sent it). - Corrected CHAT.PPE to properly handle the CHANNEL.TMP file that is created by the CHANNEL.PPE when a page request is recieved. This allows you to page someone into a channel that is already private. - Added a check against the users remaining time that will let them know each minute less than 5 remaining that there will be an auto disconnect in x minutes, and when thier time reaches 0, they will be logged off. - Changed logoff processing so that if you use /BYE or run out of time, chat is exited with an ERRORLEVEL of 1, which is then returned to the CHAT.PPE, and it will then log the user off. Version 1.89 Beta (8/20/94) - Corrected a bug in the give channel command. If the /GIVE command was without a parameter, and then nothing was entered at the prompt, the user using the command would fill all open slots in the channel. - Added support for the 'H' status in the USERNET.XXX file. This is the Handling Mail code available in PCBoard 15.2 (This does NOT mean that 15.2 is required, the code will still work with 15.0 and 15.2) - Added the code to support registered and non-registered versions of the chat program. Version 1.90 Beta (8/28/94) - Corrected a bug in the WHO display. If pause mode was on it would cause a File Not Open Error. - Corrected the Node up status to show only if a node is actually waiting for a caller. - Added /INFO command. This will give the user information about the chat and where to get updates or send request's for new additions. - Changed the way it displayed the list of actions. Used to display 5 actions wide. Now display's 6 wide.. - Changed the Registration information a bit. - Attempted to totally debug the One-on-One mode. Will spend a few days debugging the heck out of it. Version 1.91 Beta (9/18/94) - Corrected a problem that would not allow a person in SysOp mode to kick the owner of the channel off the channel. - Corrected One-on-One mode problem's. Need to test this thoroughly. Version 1.92 Beta (9/27/94) - Temporarily disabled the give command until i can find the bug in it. - Corrected a problem with users not being able to call in the Public Always Channel's - Fixed a problem with the PPE that initiate's the chat. It was not reading the USERS.SYS when it returned thus giving keyboard timeout's. Version 1.93 Beta (10/31/94) - Corrected a problem to where if a person was in SysOp mode on a One-on-One channel and there were already 2 people in One-on-One and they used the FORCE command to force another user into there channel it would cause that user being FORCED to go into a never ending loop. - Corrected the /GIVE command for the finaly release. - Went through and corrected as many spelling error's as possible. Version 1.94 Beta (11/14/94) - The bug with the /GIVE Command that would cause the users name to occupy all blank spots in the channel has been located and corrected. Therefore, the command has been re-activated. Version 1.95 Beta (11/16/94) - Added Channel Topics, the /TOPIC command, and the TOPIC.CFG file for predefined topics. - Changed the functionality of the /LIST command. This command will now list all channels in use or that have topics. Additionally it will also show the number of users in the channel. This was part of the original design of the program and that's why the /LIST command was in previous versions (although before it was the same as the show command). - Added a configuration file option called 'PathToLogFiles=' that will define the location for storage of the log files. The /LOG command is comming, but is not yet implemented. - Added the configuration file option 'InactivityTimeOut=' which defines the time in minutes before a caller will be disconnected due to keyboard inactivity. In prior versions, this was hard coded to be 30 minutes. (Not fully implemented yet.) - Added a sysop command /CONFIG that displays the configuration file info as it was read from the configuration file. This info was previously available by using the /DEBUG command, but has been moved to a command of it's own. - Changed the Configuration file processing so that it is not necessary for the path to end in a '\', it it's missing, the program will now add one. - Corrected the /NOTIFY command. The command was not correctly intercepting the fact that someone was exitting. It now does. Version 1.96 Beta (11/24/94) - Fixed a problem with the /WHO diisplay that was incorrectly displaying nodes that we marked in the USERNET.XXX file as up with the up status flags, but had a status code of 'Z' (Off-line). - Added text that is displayed to another user when the channel owner / sysop removes the channel topic. - Modified the text displayed when someone changes the channel topic so that if it will fit on one line it is put on one line, but if it doesn't fit on one line, iit put the topic on a line of it's own. - Fixed a bug that made the color not switch back to white following a topic changed message. - Completed the code for the InactivityTimeOut setting the the configuration file. - Corrected a bug that if there was a path listed in the configuration file for the TOPIC.DAT file and there was actually no file, the program would try to open an non-existant file issue an error message. - Added the code for the /TERM command, which allows a user to view / change his terminal mode (ANSI/GRAPH/RIP). - Added an option under the /TOPIC command that if the user is in the Sysop mode, it will ask if the topic should be protected. Protected topic could previously be made in the TOPIC.DAT file. Thiis command does not change the contents of the TOPIC.DAT file, and proteced topics will disappear if the chat data file is re-created, unless they are placed in the TOPIC.DAT file. Version 1.97 Beta (11/26/94) - Fixed several very minor bugs. Version 2.00 (11/28/94) - First public non-beta release. This release is the second public release, this one is the first non-beta release. The code should be quite stable.