
I finally got a "Round Tuit". After months of being able to only get square
tuits, the round ones arrived and xfibs08 is done!

Well, quite a lot has changed since xfibs07. David Eggert added some patches
to xfibs07 earlier this year, just as I was finally getting started on this
new version. I announced to the world that it would be ready in May (ha!),
but have had a chaotic year - office re-organisations, overwork etc. etc.
At least I started beta-testing in May - many thanks to Stephen Turner for
his enthusiastic help in that respect. Thanks also to David Eggert, who
spurred me on and made me finally extract the digit.

So I can finally release xfibs08 to boost your playing pleasure.

The more I did, the more got changed: often to help my clearer understanding,
sometimes to make the code easier to read, sometimes just "because". So, if
Torstein thinks I've mangled his masterpiece, I apologise :-)

This file may seem quite large, but there have been a _lot_ of changes. If
you want to get the most out of XFibs, I recommend you spend a few minutes
reading this.

NOTE:	I have changed some of the X resource names. The best thing is to
	throw away the old XFibs.ad file, because XFibs doesn't 'need' it
	anymore. I got fed up with people mailing me saying 'my xfibs draws
	black pips on black dice'. The answer was always to install the
	XFibs.ad file. Now XFibs has it's defaults built in.

1)	The most obvious change: xfibs now draws two windows: one for the
	board and one for the text I/O. I find this a huge improvement, since
	you can overlap the 2 and use a lot less display space. Anything
	typed in the board area or the Fibs output area will appear in the
	text input area, so you don't have to move the cursor.

2)	The right-hand button popup now works in both windows (but not in
	the menu-bar). Much less "click.. Ooops wrong window.. move.. click"

3)	The dice now appear on alternate sides of the board (on the right,
	as each player looks at the board). The die nearest the bar
	indicates who moves first.

4)	You can now pick-up a piece and move both dice in one action: i.e.
	24-13 with 6-5, pick up from 24, drop on 13. The left-hand die is
	the default first die of a move, the the right-hand die. If the
	left-hand die can't move, XFibs will try the reverse combination.
	So If you have a roll in both combinations are legal, but only one
	hits an opponent, you may need to drag-and-drop to guarantee a hit
	(or a miss).

5)	You can use the middle button (with a double-click) to move pieces
	without having to drag-and-drop. As with dragging, the left-hand die
	is the default first die of a move. See item 4 above.

6)	You can _undo_ moves! At last, you can move pieces backwards, or
	select "Undo Move" from the popup. For the non-mouse-user, type:
		/undo		to undo the last move

7)	The FIBS "off" command is fully supported in the popups. If you're
	wondering why "Off" appears in the roll popup, don't forget when
	you have doubling disabled.

8)	You can turn the numbers around the board off. Since I also fixed
	all the odd times when xfibs wouldn't let you move, you don't need
	the numbers. Commands are:
		/nonumbers	to turn them off
		/numbers	to turn them on again.

9)	I fixed the problem where the text windows would go screwy when
	xfibs 60K buffer filled up. Now you can keep on cutting & pasting
	and scrolling for much longer.

10)	You can now log your FIBS session to a file - you can log everything,
	or just the plays or just individual boards. You can specify a
	directory to log into and the file to write. Commands are:
		/nologpath	clears the log path
		/logpath	displays the log path
		/logpath path	to look in this directory for logfile. Must
				be terminated by a file separator, e.g.
				/users/mike/bg/games/
		/logfile [name]
				to log to the specified filename. If no name
				is given, "xfibs.logfile" is used. Also if the
				file already exists, the log is appended to
				the end of the current file.
		/log mode [+]	to specify the log mode. If a '+' is given,
				the specified mode is added to the current
				logging mode. Modes are:
		    input	- what FIBS sends us
		    all		- 'input' + all boards in ascii
		    play	- Everything FIBS says "You", your opponent or
				  the player you're watching do.
		    boards	- all boards in ascii
		    none	- nothing (allows for just dumping occasional 
				  boards in ascii - see "/dump").

11)	You can dump interesting positions into the logfile with /dump.
	This just draws the current board _only_ if the logfile is open.

12)	A /pip command is implemented for the numerically challenged. I
	agree with igor that showing the pip count after every move is
	"a bad thing".

13)	Snoopy's names on the frame of the board are implemented. The frame
	is forced to be large enough to handle the text; and the text is
	drawn in boxes to avoid problems with colours. Commands are:
		/frame		or
		/noside		to display names/score on the frame of the
				board (UL indicates unlimited match length).
		/noframe	or
		/side		(default) to display names/score at the side
				of the board.

14)	Empty lines from FIBS are ignored (unless you really want them). The
	command is
		/blanks		to allow blank lines.
		/noblanks	(default) gives a much more compact display,
				making it easier to follow what's happening,
				since you can see more without scrolling.

15)	Snoopy's echoing of user input is implemented too:
		/echo		to echo user input in FIBS text window
		/noecho		to stop.

16)	The number of lines and columns of the text windows can be defined
	in .xfibsrc. Since the geometry passed from the command line
	applies only to the board window, you can specify the size of the
	other window in .xfibsrc. Since this is a initialisation thing, there
	are no command-line equivalents, just resize the window. Commands are:
		columns	<num>	Set no. of columns (in & out)
		fibslines <num>	No. of lines in FIBS window
		typelines <num>	No. of lines in user input window

17)	Fixed "!!". XFibs was catching commands starting with '!' as
	system commands. Note: '!' commands are executed by the system, but
	the output will appear in the window from which XFibs was initiated.

18)	XFibs really does send a "board" command when you start watching
	someone now (Torstein claimed xfib07 did this, but I couldn't find any
	trace of it).

19)	In order to make the command structure more uniform, /nogag is now
	accepted as well as /ungag.

20)	Starting a line with '/' or '\' is now assumed to be an XFibs
	command. So XFibs now complains about commands it doesn't recognise,
	instead of sending them to FIBS (which complains).

21)	Fixed memory leaks which occurred when you couldn't connect.

22)	Stopped 'on_login' sending blank lines to FIBS.

23)	Added support for SOCKS (if you live behind a firewall like me). Look
	at the Imakefile for details.

24)	Various debug commands are available, but I won't detail them here.

As I said, I've changed a lot, so there are probably other things not
mentioned here. Hope you enjoy it as much as I do :-)

mikeq.
