'Changes Made' Log File
-----------------------
v2.3  28 June 2001 K.Hasler@cs.ucl.ac.uk
    - ifdef out calls to ABORT and use debug rather than fprintf's

v2.2  25 May 2001 K.Hasler@cs.ucl.ac.uk
    - New config for Windows 2000 IPv6 stack

v2.1  2 March 1999 K.Hasler@cs.ucl.ac.uk
    - Fixed encryption (removed debugging of encrypted packets which exceeded 
      the 512bytes buffer allocated in the debug function)
    - Fixed unix versions (forgot to generate seed when generating random srcID)

v2.0  5 November 1999 K.Hasler@cs.ucl.ac.uk
    - Experimental IPv6 release.
    - Increased protocol number to 3.  The increase was necessary for IP6 and the 
	  opportunity was also used to make further protocol changes.  Not everything 
	  has been implemented in this release and full documentation will follow when 
	  all the changes have been made.  The following has been implemented:
      + New 32bit SrcID, identifies each instance of NTE running - this 
	    replaces any address references in the old (v2) protocol.
      + last_mod field added to various messages - this is a timestamp that
	    was originally held in the headers timestamp.

	  ...and further additions for future changes include:
	  + checksum field added to rtxadvert message.
	  + keyindex field added to typeface structure (used in various
	    messages).
      + block locking, checksums and multiple fonts on Windows have been disabled 
	    in UI, so as not to break future releases.

    - moved Windows workspace into win32 directory.
    - removed old files, mostly relating to network functions.
    - altered network code to use code  in common library.
    - Added IPv6 config for Windows workspace (links with IP6 libraries).

v1.7.0 25 May 1999 C.Perkins@cs.ucl.ac.uk
	- Tweak unix makefiles. Things are hopefully a little more modular now,
	  although I suspect I've broken some platforms.
	- Remove code which duplicates that in the common multimedia library,
	  now requires the common library to build.
	- Fix compilation on RedHat Linux 4.2

v1.7.0 25 May 1999 K.Hasler@cs.ucl.ac.uk
	- new procedure to delete blocks but without sending a block delete msg
	  and sending pointer msgs.  This is called when parsing deleted blocks.
	- set block status as deleted when we receive them in parse_block.
	- send deleted blocks even if locked (this is correct behaviour) and don't
	  check if block is locked when receiving deleted blocks.
	- changed bg colour on windows.
	- removed default multicast address and port number.
	- new error messege if old versions of nte are in use - checked when parsing
	  new participants.
	- forced updates by setting new_data flag.
	- Made sure text is updated when it is selected and don't redislay text 
	  when there is no new data.
	- check_activity procedure checks if there has been any local activity 
	  (typing) - if there hasn't been then it deselects the current block.  This 
	  will stop the block from being updated more than necessary (in parse_line)
	- Menu option to turn off the above and to turn on/off slow screen updating.
	- parse_packet->parse_line:if the block isn't active (it hasn't been 
	  highlighted) then delay redisplay of block...
	- ui_fns->ui_active_block: set active_block to hold the current selected block.
	- based processid on seconds returned from gettimeofday:  pids on win32 
	  are reused, so that if someone restarts nte they will generate 
	  blocks/lines with the same ids.  This was the cause of the paranoia bug. 
	- Used mbone entry in registry for username on windows.  If that doesn't 
	  exist then use login name. 
	- modifier copied into line when parsing new lines - stops us having blank
	  modifier field.
	- length of 'rtx_specific_request' packet was incorrectly calculated when 
	  calling xsocksend.  Was using ID_LEN when we're using netid structures.
	- force updates every 5 seconds (if there's new data).
	- text_pane->delayed_redisplay_block: update only if a second has elapsed 
	  since previous update for this block.

v1.6.2 11 May 1999 K.Hasler@cs.ucl.ac.uk
	- create id for 'pen' pointer type.  Fixes problem when two people are 
	  typing and pointer flicks between the two texts.
	- Sort multi language fonts (windows) so that they are the same order 
	  on NT and 95.
	- Null terminate local username, otherwise we'll get garbage.
	- initialise checksum value when creating a new block.
	- use the timeout in select to increase delay in redisplaying a block.
	  This should stop it displaying blocks when we're busy.	
	- call delayed_redisplay_block in send_session_message so that blocks 
	  are only updated when idle.
	- Horizontal scrollbar wasn't packed right when participants window was 
	  hidden and then shown.
	- Highlight current font in font menu.

v1.6.1 22 April 1999 K.Hasler@cs.ucl.ac.uk
	- Changed file open/save windows to standard tk ones.
	- support for multiple font sizes:
		- added 'view' menu item with font sizes expressed as percentage 
		  enlargement of the standard 9point size
		- fh and fw (font height and width) are used to place text correctly
		  on the canvas.
		- fhu and fwu are fixed values for font height and width and are used
		  for sending pointer positions - these are based on the original
		  font height and width for the unix font size.
		- where Jim had made changes for calculations using fh, made the same
		  changes for fw.
	- Added horizontal scrollbar for enlarged text views
	- Multi language support (Windows only):
		- Different versions of Courier New are listed in the font menu
		- Changes to tkwinfont.c so that fonts are intialised with the appropriate
		  character set
	- Changed username to be user login rather than rtpname from registry 
	  (usernames with spaces don't work).

v1.6.0 2 March 1999 k.hasler@cs.ucl.ac.uk
	- Extra debug info. for duplicate block bug.
	- Ignore packets with timestamps equal to our time because these are old packets.
	- Display error and exit if protocol version is lower.

v1.5.33 9 January 1999
	- No longer abort if the clock offset is greater than 100 seconds
	- Convert to use the modified UCL tcl/tk libraries

v1.5.32 22 September 1998
	- Fix Irix compilation problems
	

v1.5.31	21 September 1998
	- Fix encryption on Linux
	- Fix use of the debug() function
	- Run all the C files through indent
	- Move to static Tcl/Tk (from our cvs tree) for unix versions
	- Fix prototypes 

v1.5.30 27th August 1998 j.knowler@cs.ucl.ac.uk
	Encryption - is now working on all versions of NTE. This was fixed by using the _intel_
			symbol in the qfDES project makefile. 
	Modifier field - is now working in the user interface. This had been incorrectly set up
			to use the originator's name instead.
	Participant's list name doubling - this problem is now gone. It did not cause any problems
			but looked stupid.

v1.5.30 27th August 1998 k.hasler@cs.ucl.ac.uk - 
	- changes to let win32 version get user name from registry.
	- Changed 'diff' back to unsigned long in 'queue_packet_for_sending'.
	- '-s' flag to make NTE sleep for 9 seconds before creating it's window - this is a hack for relate
	- Made the canvas size smaller on windows (32 lines instead of 40) - this is another hack for
	  the relate interface because "-goemetry" doesn't work with application embedding on windows.
	- Loopback fix, so that it checks against local port as well as address.

v1.5.30 26th August 1998 j.knowler@cs.ucl.ac.uk
			CURRENT STATUS OF nte with new win makefile changes
				Current Bugs
					1. paranoia check - probably a field overrun somewhere - PC/UNIX
					2. Encryption - doesn't work on pc 1.5.30 at all, works on unix with 
							other hosts running current version of unix or previous
							version of pc. Could be to do with new win makefile..
							I'll leave this one for someone else - PC
							* NOTE - have tested two PC's running new 1.5.30 with 
							encryption and they are ok talking to each other.
					3. Current Site - Sliding Key System - I have found that one or more
							sites will try to take the key if they have the same 'time'. 
							They will all try to send their keys while still using the others PC/UNIX
					4. Participant's list - our own name is doubled in the list 
						occasionally - PC.
			** NEW STUFF **
				Checksum on/off - The checksum algorithm is taking up a lot of 
						processor time and could cause some machines to crash. I 
						think that it is sensible to include an on/off switch 
						(under the file menu in the user interface) so that individual
						users can make their own choice. 
						OTHER EVENTS THAT TAKE UP LOADS OF PROCESSOR TIME
							- Turning on NTE when there is an existing session -
								NTE tries to load everything straight away.
							- Pasting large blocks repeatedly - lots of changes
								in a short time demand a lot of data transfer.
							- Undeleting large blocks - undeleting a block involves 
								copying every line in the block( necessary for multicasting
								deletion changes )which takes considerable time.
							- 
				WIN Makefile - Win makefile was using the dynamic link libraries 
						'tcl80vc.lib' and 'tk80vc.lib' which were preventing important
						string indexing commands defined in canvas_ext.c from working
						(due to a clash with the TextItem struct I think). This has been
						replaced with the static link library tclg.lib (for release,
						debug.lib for debugging).
						Win Makefile didn't include tk.res, this file is needed for the
						windows version to include the correct checkboxes on the user
						interface. 
						A lot of the changes made to fix the signed/unsigned warnings 
						that plagued the windows compiler output were causing more trouble
						than they were worth, such as preventing transmission of any line
						or block data. I have had to remove the type casts that I could 
						find, although I suspect that another change is responsible
						for the paranoia check errors (perhaps a signed variable that takes
						up more space than an unsigned variable is overrunning the space
						of a field in the block struct somewhere..)

v1.5.30 19th August 1998 j.knowler@cs.ucl.ac.uk
                Updates to delete/undelete block history. Now supports
                        up to 40 blocks. The maximum history length has
                        now been localised to a single constant variable
                        'MAX_DELETED_BLOCKS' in ui_fns.c . Increase/decrease
                        this variable to change history length. Ideally the
                        array currently being used could be replaced by a
                        vector storage unit (as in c++ STL) .
                Block lengths - the -bl tag in the command line is now used
                        by tcl. I have found that the maximum value should be
                        around 200. Anything bigger than that can cause nte
                        to crash quite consistently. Therefore the default is
                        200 and users can specify any value. I have
                        added code to the insert_cr function so that it can
                        only insert a new line if the current number of lines
                        is smaller than the maximum specified by the user.
						Although users can specify values bigger than 200, NTE
						will crash consistently once you start using values of
						300+ (You can use slightly larger values on unix machines
						up to about 500).


v1.5.30 18th August 1998 j.knowler@cs.ucl.ac.uk
		Updates to Undelete and copy block functions so that when they copy the original block
			they ignore deleted lines, which are not needed. This should help to save time and
			memory space.
		Addition of Cut,Copy and Paste commands - need to add them to the help files at some
			point. Copy and paste work as you would assume. Cut will copy a block to the 
			clipboard so that you can paste multiple copies of it and delete it as well. 
			You can undelete a 'cut' block using the undelete function as normal.
		Cleaned up a lot of code, getting rid of some of the commented code that exists from
			previous versions, that is completely irrelevant to the current version. I have
			left in some commented code from previous versions, but only if it would be needed
			when debugging the new code.


v1.5.30 17th Auguat 1998 c.perkins@cs.ucl.ac.uk
		
		Fixes to tcl/tk initialisation

v1.5a29 14th August 1998 J.Knowler@cs.ucl.ac.uk
		Command Line - Fixes to command line so that multicast addresses of more than 15
			characters can be used. Limits for all of the string command line things are now
			at 254 characters (max str length). I have also added code to prevent it from 
			bombing if you exceed the character limit. 

		Block->no_of_lines - this field in the 'block' data struct is being updated incorrectly.
			I have checked all references to the field and have found that it is not used for 
			any real purpose, other than for debug messages telling us how many lines we have.
			I have therefore stopped the function parse_block from using the received block's
			no_of_lines field when receiving a modified block. We are instead going to keep our
			own version of the field, updated by using the 'count_lines(block b)' function. This
			should remove some problems and some worrying debug messages.
		
		Checksum Algorithm - Mods.
			I have further reduced the number of packets needed (possibly as much as by half) 
			by replacing all of the "request_block_info" packets, where one is sent for each line,
			by a single packet requesting the sending of block_info packets for all of the blocks
			that the current site has. This assumes that the current site has all of the blocks
			in the current page and that the other site does not have any extra blocks. This 
			should help to force retransmission of blocks that are missing from other sites.
			Block checksums now ignore deleted lines when they calculate their values because
			I have no control over deleted line orders - it only depends on the order in which
			they are deleted.
			******* NOT COMPLETE YET: Page Checksum - order blocks uniformly from site to site 
			so that page checksums can be the same at sites where blocks are received and 
			stored in different orders.Don't actually change the order in which blocks are stored
			(that would upset the hashing algorithm) but change the order in which they are 
			added by the checksum algorithm.

		Checksum Algorithm - MODIFICATIONS
			I have just the checksum version number to 2 in this version. This removes 
			compatibility with the v1.5a27 but I think that it is a worthwhile change. The 
			change in version number should not cause anything to crash, I have written the
			checksum routines to ignore different versions. I have improved the timing of 
			checksums. It is now tied in to the sliding key mechanism so that after receiving
			a checksum, we are only able to compare it to ours, etc, when we match
			the sliding key being transmitted by the current site. I have also added a random
			timer of 5 +/- 3 seconds so that we don't calculate the sliding key straight away. 
			I found that this has helped to reduce collisions, but let's see what happens in
			the real world. I have also reduced the number of retransmissions considerably. 
			The current site can only send a block_info packet or retransmit an entire block
			once, per block, per checksum. These block_info and block_data packets are 
			multicast so all of the sites receive them and should only be sent once. 

			***** Further additions are required so that sites listen to block_info/data
			requests from other sites and don't request a block info/data if another 
			site has already done so during this checksum sequence, because it'll just get
			ignored by the current site.

		BUG FOUND - found the main bug that causes NTE to fall over. It is due to the 
			no_of_lines field in the block structure being incorrectly updated. It manages
			to fall to 0 lines, probably due to line deletions being received before the newer
			versions of lines are received.
			When another line is deleted this is taken to -1 which when stored as an unsigned
			int is 65355. I have placed an extra line of code in delete_line to make sure that
			if the line count is already 0, that it does not reduce the line count further..
			
		Redisplay block - have added an extra piece of code -piggy backed on to the 
			send_session_message function in protocol.c . It checks that every block in the
			current page has been updated on screen. This occurs regularly, once every 
			10 seconds so it should keep the screen updated fairly accurately without 
			causing any problems.

	- Attempt to prevent Tcl/Tk searching for the built-in libraries in
	  the filesystem, and complaining when they don't find them.

v1.5a28 7th august 1998 J.Knowler@cs.ucl.ac.uk

		VERSION - changed version number for unix and PC versions to v1.5a28
		TK.res - added back into the windows makefile after being accidentaly removed, 
				Windows version now has checkboxes.
		CTRL-K - edited the method in which the 'delete until the end of line' command
				works so that it only transmits the line when all edits are completed.
		Redisplay block - I have re-instated code in the function 'delayed_redisplay_block'.
				I had removed it originally because it did not always redisplay blocks when
				they had been re-received (especially with the new un-delete function) but
				without it update is slow, nte locks out frequently (especially on PC) and 
				problems occur with editing blocks quickly.
		MD5 - replaced the command MD5_memset with the conventional memset
				command. Does exactly the same job but makes bounds checker
				happier.
		BUG - Every now and again, the Unix version of NTE crashes. Don't know
				whether this is a program bug or something to do with the 
				Microimages X Server I am using to run it on my PC. The final 
				debug message is not consistent so I don't think it is linked
				to a single procedure at the receiving end - this may be fixed by 
				the re-instatement of the Redisplay block function.
		Key Bindings - I have included key bindings for all file and edit menu
				commands and have also added a 'raise block' command which does
				exactly the opposite of lower block.
		Help Files - I've added explainations of the extra features including block
				undelete. I also tarted them up (made them more presentable).
		BUG - Have found that cursor position in a block is relative to the 
				number of characters in the block. Thus when a multiline block 
				is being edited by two different users, the user with the later 
				cursor (beneath and/or to the right of the other cursor) will
				find that their cursor moves right for every deletion made by
				the other user and to the left for every insertion made by the
				other user. Change made so that cursor stays at same graphical co-ords
				whenever the text is changed. I have not been able to include a special case
				for insertion/deletion of lines so strange things have happened in those
				situations - although not perfect it's better than it was though.
		FIX - Have fixed a possible string bug in the creation of new lines. The modifier
				field was not being set and my debug messages were displaying garbage in
				the modifier field. I have made changes to always set the modifier field.
				This may explain why strange things were appearing in the modifier field
				(such as "s\command.com") in structured text saves that I checked out.

v1.5a27	31 July 1998

1.5a26 31st july 1998 - J.Knowler@cs.ucl.ac.uk
		BUG fix - I found that in both the line and block parsing mechanisms, 
				if 2 updates are transmitted one after another, the second update
				would usually be ignored as it had the same time as the first update. I
				changed the protocol to reject only those lines with times before the last
				update - this is a temporary fix but not ideal (i.e. if the lines were received
				in the wrong order then problems could occur).

		Checksum - I have done a preliminary version of a checksum algorithm which works thus:
				1. The current site after reaching it's slowest update rate calculates it's
				page's checksum and transmits a page info to all other sites.
				2. All sites receiving the page info calculate their own page checksums and 
				compare them.
				3. If the checksums are different then the receiving site send a request for
				block information for all of it's blocks.
				4. The current site responds to these requests and sends information
				5. The receiving site compares the received block checksums with it's own and
				if they are different requests the retransmission of the block and all of it's
				lines from the controlling-current site.

				Checksums are calculated whenever a page checksum is requested. A page checksum
				requests the calculation of all the block checksums, a block checksum requests 
				the calculation of all the line checksums. 

				The checksum needs further work in the areas of
				1. Re-receiving blocks - We may need to remove our version of the block before
				  requesting re-transmission. This is because our internal version of the block
				  could interfere with the newly received version. This would mean removing it
				  from our linked list data store as well as from the hash table set up in hsearch.c .
			    2. line and block orders - the ordering of the internal store of lines and blocks
				  is important to the calculation of our checksum (we are using MD5 to do so).
				  Blocks are certainly ordered in a first come first stored method which could cause
				  problems as checksum's for different orders are different but there is no way to 
				  find out that the checksums are different because of the different orders.
				  Line ordering could be fixed by leaving deleted lines in place (at present they are
				  moved to the end of blocks). This would probably mean changing protocols all over 
				  the place,etc.
				3. Missing blocks - there is no way yet of checking if we are missing blocks , 
		     	  this could perhaps be included in the page info message, or in a separate message
				  as a complete list of all blocks.
				4. Random timeout - There may be considerable packet loss when the current site gets
				  bombarded with several dozen re-requests for the same block info/inforequest/. 
				  I have used the queuing system that already operates for sending block and line data
				  which should help but perhaps there should be a block info/info requestlist similar 
				  to the recent list to help efficiency in the retransmission protocol.
				
				Other important points
				1. checksums are calculated fully to 18+ characters, I have truncated 
				the checksums when I compare them to 16 characters since unix and windows 
				versions add different characters to the end of the checksums which can have
				undesired effects on the checksum protocol.
				2. I have tested the checksum algorithm on 
				   multiple lines, multiple blocks, line deletions, block deletions, block undeletions
				3. I have also tested the algorithm with edits on hosts running at the same time
				  and on hosts started up after edits were made on the current site.

v1.5a26 20 Jul 1998 - J.knowler@cs.ucl.ac.uk 

14th July 1998 - J.Knowler@cs.ucl.ac.uk
		TCL interface code - some tidying up done so that when you have deleted a 
				block and have no currently selected block, you don't get errors 
				when you mistakenly try to change colour, change font, edit the text
				of a non-existent block. The information display is also updated 
				correctly when a block is deleted (all in nt.tcl).
		UNDELETE - further to storing undeleted blocks in an 'undeleted' state, you
				can now join a conference already underway and be able to un-delete
				any blocks that other members deleted before you joined the conference

13th July 1998 - J.knowler@cs.ucl.ac.uk
        Further fix to undelete function so that it undeletes blocks correctly,
                and stores the hidden undeleted block as 'undeleted' as well
                as the new copy of the block. This means we can store undelete
                events on the recent list to recover from net partitions etc.
        Changes to parse_packet.c to make it accept packets time stamped later
                than or at the same time as our local copy of the data.

        BUG - Found that dynamic block length calculation gets screwed if you
                create a block of a dozen lines or so, each more than a couple
                of characters long, move to the end of the last line and just
                hold down delete. Receiving hosts seem to think lines are
                missing in that block. Bug seems to be fixed by the changes
                above to parse_packet.c

v1.5ish 10th Jul 1998 - J.knowler@cs.ucl.ac.uk

	Have fixed more unix compiler warnings, plus all of the fixable windows ones.
	Have fixed a small bug only in the move block/bulldozer transmission system meaning that
		the bulldozer is always placed correctly, next to the text.
	Have added feature to retransmission feature so that if a terminal neither makes or 
		receives a retransmission-sliding-key for more than 10 seconds, it starts up it's 
		own rtx system. I have included a random timing feature of +/- 3 seconds so that we
		don't get the situation where every terminal in conference transmits at same time.
	Fixed string lengths and pointers dealing with participants list. All participants are
		displayed correctly now and there are no segmentation faults anymore.
	Fixed Undelete Function - So that it attempts to prevent multiple people from deleting
		the same block by telling other sites to remove the block being undeleted from their
		'deleted block' lists.

v1.5-ish 8th Jul 1998 - J.Knowler@cs.ucl.ac.uk

Fixes made to :
	Save Plain Text : It wasn't saving the last line, and was getting confused when trying
			to read in the last line, resulting in doubling of the bottom most line of page
			Ok now.
	Re-Transmission protocol generally - Some code which I think was meant to speed up
			re-displaying text by waiting for input queue to be emptied wasn't working
			properly meaning that whole blocks weren't displayed. Fixed so that blocks are
			always displayed, but a little slower. Original protocol is commented out for
			possible later fix ( this code has now been put back in with additions)
				Removed the fixes that I tried out to retransmit lines/blocks received in a
			recent list that we have later versions of because it wasn't doing anything 
			useful.
	Shared-Pointers : Ensured that all shared-pointers in cross-platform communications 
			are positioned similarly on source and destination. They are also drawn with
			the correct pointer style.
	Participants list : Fixed so that the local host's name, os platform and nte version are
			displayed correctly. This not only looks better but fixes a problem with some
			non-null terminated strings.
	Delete block : fixed so that once you delete a block, nte can't be asked to try to 
			delete it again, which used to result in a phantom eraser on all screens in the
			conference.
	Null pointers to first lines : Problem when creating new blocks which you don't type 
			anything in to, only the block was transmitted resulting in all of the other 
			hosts in a conference holding blocks with null pointers to non-existent lines.
			Fixed so that the line of the block is transmitted and so that the block knows
			the id of the line to request rtx of it if it is lost.



Additions made :
	Undelete block - Can now 'un-delete' a block after you delete it. I have also included
			an undelete history so that the last 20 blocks can be undeleted - last deleted,
			first resurected. Have also made it so that any host can undelete a block
			deleted by another host. This prevents someone entering a conference, deleting
			all the blocks and leaving the rest of the conference with no way of retrieving
			the block.
	CTRL K (delete to the end of the line) - added the emacs CTRL-K command so that you can 
			now delete a line from the cursor to the end of the line with one key press.


Cleanup a lot of compiler warnings.

Rename canvas_ext_v8 to canvas_ext and font_ext_v8 to font_ext, since we're
now using tcl/tk 8.0 on unix too.

Fixed 'line doubling' bug in textpane.c line 184 - deleted lines are moved to the 
end of their blocks and given the line number 'LINE_DELETED'. Care must be taken
to ensure that the line number of a deleted line is not overwritten when the lines of a block are 
renumbered as this will result in it being displayed again. 

Fixed save structured text bug - code was checking the line->status field to see if a line
has been deleted, this has been changed to the line->linenum field to obtain consistency in
code.

Fixed changing colour bug. Host now sends a single session message straight away to signal 
it's colour changing, but leaves the normal session message sending sequence unaffected.

Trying out some re-transmission code, where if we receive a line/block and we have a later version
of it, we send out our version of the line/block immediately - perhaps this should be made into some
form of 'send' list - changes made to function parse_recent_list() in file parse_packet.c .

PC version committed to CVS

v1.5a25 17 Mar 98 - k.hasler@cs.ucl.ac.uk

Fixed byte order (little endian) bug for linenum in Protocol.c->send_line  

Ported to TCL/TK 8.0 and 8.1
Files for TCL/TK 8.0:
canvas_ext_v8 replaces canvas_ext
font_ext_v8

Files for TCL/TK 8.1:  
canvas_ext_v81 replaces canvas_ext
font_ext_v81

PC fixes:
Fixed the middle mouse button binding problem.  Now uses Ctrl rather than Shift.
Fixed font size.  Text and Pointers are correctly shown on all machines.
Problems with NTE crashing were caused by TCL/TK not being able to create
temp. bitmaps in Tk_Get_Pixmap.  The wtk canvas speedup patches for TCL/TK8 
seem to solve this problem:  
ftp://ftp.bj-ig.de/pub/tcltk/src80s01.tar.gz
http://www.bj-ig.de/tclttk/

v1.5a25 12 Mar 98 - c.perkins@cs.ucl.ac.uk

Examine NTE_MAX_BLOCK_LEN environment variable for the maximum block size.
This value can still be overridden with the -bl command line flag.

Change name of the executable to "nte"

v1.5a24	29 Jan 98 - c.perkins@cs.ucl.ac.uk

Added ability to set the character set as a command line option. Note that
the new value is NOT communicated to the other sites, so care has to be
taken that everyone is using the same character set. [This is for the
PIPVIC Polish language teaching trials, with ISO-Latin-2 characters].
This doesn't work on windows because TCL/TK ignores the encoding field.  It can
be manally set in TKWinFont.c (K.Hasler@cs.ucl.ac.uk)

v1.5a23 31 Oct 96 - mhandley

V1.5a22 14 Oct 96 - mhandley

Added check to prevent coredump when NTE fails to find the address of
the machine it's running on.

Replaced broken code to find the domainname with code that works.
Thanks to Jim Jackson <jj@scs.leeds.ac.uk> for helping diagnose this.

V1.5a21 4 August 96 - mhandley

Ported NTE to Windows95 (with the exception that the fonts are
incorrect and the replacement for the middle button bindings doens't
work properly).  Many minor changes, including moving most includes to
a new header file "nt.h" to centralise incompatibilities with windows,
and the inclusion of two new modules iohandler.c and win32.c (which
came from LBL/John Brezak) to deal with the major incompatibilities,
and the Linux source for the knuth hash functions in search.c for
systems where these aren't standard.

Incorporated minor fixes from John Hawkinson for building nte on
NetBSD.

V1.5a20 15 August 96 - mhandley

Extra checks added, plus extra code to maintain conistency of line
numbers to remove a few bugs all causing sdr to think it had missing
lines when it didn't.

Session messages extended to contain NTE version number and OS type.
User interface code added so that clicking on a participant in the
participants list shows this information.  The necessitated re-writing
the code to highlight participants.

V1.5a19 - mhandley

DES encryption added.

V1.5a18 - 22 May 96 - 30 July 96 - mhandley

Event logging enable for experiments at CRC
Tk initialisation bug fixed
Attempt to get domainname manually when gethostname doesn't do the right thing
Fixed bug in parse_pointer that caused crash under linux
Linux port done.
Now uses released versions of tk4.1/tcl7.5

V1.5a17 - 16 May 96 mhandley

Bug in setting main window title which prevented the use of Xresources fixed.

V1.5a16 - 8 May 96 - mhandley

Lots of event trace code added for experiments at CRC Otawa
Bug in setting the name in session messages fixed.

V1.5a15 - 24 Apr 96 - mhandley

Rate limiter changed to 8Kbps
Built in hard max block length increased to 10000 lines (but this isn't
recommended).
-N flag now specifies username
-C flag now specifies conferencename
Bug in setting username fixed

V1.5a14 - 1 Mar 96 - mhandley

Command line parsing had got broken with the port to tk4.1b1 - fixed again.

V1.5a13 - 29 Feb 96 - mhandley

Shared pointer bug which messed up canvas scrollbar fixed.

V1.5a12 - 28 Feb 96 - mhandley

Load structured text and save structured text options added.
Bug in load plain text where modifier data is incorrect fixed.

V1.5a11 - 11 Feb 96 - mhandley

Mini-web-browser from sdr integrated into nt as a help system.
A start made at adding help pages.

V1.5a10 - 9 Feb 96 - mhandley

Keep Participants button added to UI so that a complete record of the
sessions participants can be kept.
Save participants button added to save interface so the participants
list is automatically added to the saved record of a meeting
  - idea suggested by Ulf Bilting

V1.5a9 - 8 Feb 96 - mhandley

Ported nt to tcl7.5, tk4.1
 -assorted changes to the file handler mechanism and init code
Ported nt to HPUX (note - tk won't build properly with gcc versions up to
2.7.1 on HPUX)
Better command line parsing.
Bug in clock sync code fixed.
Other minor bug fixes.

V1.5a8 - 7 Feb 96 - mhandley

Saving to a file without the correct permission used to crash nt.
Cursor keys bindings added for moving around the main window.
Backspace now deletes in addition to Delete in the nt main window.
When loading a file longer than the line limit, a warning is now produced.
- the block line limit can be specified with the flag: -bl <no_of_lines> 
- note Tk imposes it's own block length limit.
moving up and down off the screen now scrolls the screen.
CR at end of screen now doesn't cause errors.
Possible infinite loop bug introduced in 1.5a7 fixed.
Bug in block length code fixed - no more spurious "**" at end of blocks.


V1.5a7 - 31 Jan 96 - mhandley

Bug fix: Lines were getting positioned slightly incorrectly when a
file load was performed across a lossy net.

V1.5a6 - 24 Jan 96 - mhandley

Participants window is no longer editable.
Garbage on end of particpants names no longer appears.
TK4.0 porting bug fixed: new users now get participants coloured correctly.
-N <username> now sets the name to be used in session messages.

V1.5a5 - 24 Jan 96 - mhandley

Fixed memory corruption bug when receiving a recent-list.

V1.5a4

CHANGED protocol version number to attempt to eliminate old out of
date versions of nt.  Old versions should get lots of warning messages
if they try to talk to 1.5a4 or later.

Scrollbar bug fixed - windows used to grow slowly whenever any action
happened.  

Spurious error message when double-clicking a load-file fixed.

Tearoffs removed from menus

V1.5a3

Lost some changes entries here unfortunately :-(

V1.5

Significant bug in clock sync code fixed - all previous versions must
be scrapped!

Ported nt to Tcl7.4/TK4.0.  Many many small changes to fix
incompatibilities in Tk versions.

V1.4a4

Changes to parse block so we no longer try to keep global ordering on blocks

V1.4a3

Saving no longer saves deleted blocks!

V1.4a2

TK and TCL initalisation code now built in so no need to set
TCL_LIBRARY and TK_LIBRARY environment variables.

V1.4

Resize bahaviour changed so that participants window doesn't grow, allowing
more usable screen area.

Default screen width increased from 80 chars to 90 chars to allow more
space on the right hand side of 80 char wide documents for
annotations.

90 char right margin added, with visible margin marker and dumb line
wrap algorithm.  If users start typing to the right of the margin,
they can do, but no line wrap will occur, and they should check that
others can see it.

Load and Save window behaviour changed to be more logical.

V1.3

Fixed bug in clock sync code when network delay was less than a clock
tick.  Clocks should no longer spuriously increment due to Sun's
broken timer code.

Cache inviolation problem in recent list fixed - should prevent unecessary
repeated requests for retransmission.

V1.2

Improved command line checking.

Extra checking that block id given by TCL is still valid.
This is just a precaution.

Scrollbars added to load and save windows

"lower block" added to edit menu - this only has local effect - with
command binding ^L.  Allows you to get at blocks hidden behind others.

Adding new text off the bottom of the window now scrolls the window.
moving the cursor up or down out of the window now scrolls the window.

Extra code added so one nt can tell another that it hasn't seen a line
or block that was just requested.  The requester then stops requesting
this particular line or block until it sees someone else reference it.
Prevously it would carry on requesting it indefinitely.

A new hashing table replaces the old linear search for the correct
line or block when you receive a specific retransmission request.
Should reduce the CPU requirements of sending retransmissions by a
significant amount.

Bug in retransmission requests fixed.  Previously if a line arrived
where the previous line was known and the next line was unknown, nt
would demand a retransmission of block t0000000000000000 instead of
the correct line.

