CBoard version 0.4
--------------------
The status window is now on top of the roster tag window.

Added command line option -C to enable strict castling.

A better clock. Each player has its own clock. The input format is the same as
before and also supports 'G/5' format. I'll add more features later.

A few (some important) bugfixes. See ChangeLog for details.


CBoard version 0.3
--------------------
New versioning scheme. It's less confusing and easier for me to use X.X
format. I really only work and release on one branch anyway.

Added global CTRL-i which copies the current game to a new one.

Added -D command line option to enable debugging if debugging was enabled at
compile time.

Added configuration parameter "engine_protocol" which specifies the XBoard
protocol that the engine uses. Right now this only means whether to send SAN
formatted moves (version 2) or FRFR formatted moves (version 1, the default).

Added file browser binding CTRL-e to change the filename expression.

Added configuration parameter 'strict_castling'. When enabled a castling move
will be invalid if the opponent can attack a castling square, beit the King,
Rook or the squares between the two. The default is off. This also adds a
keyboard binding CTRL-p to toggle strict castling.

New status window line 'Flags' which shows game flags for the current game.

Bugfixes and invisible changes. See ChangeLog for details.


CBoard version 0.2.4
--------------------
libchess: Castling bugfix.

You can now customize the key bindings for each game mode. The old "bind"
configuration parameter has been renamed to "cbind". The new "bind" works like
this: 

    bind  <game_mode>  <key>  <command>  [alternate_description]

where game_mode is one of play, history or edit. The command is the command
associated with the game_mode. See doc/config.example for the default
bindings.

Added macros. When pressing a single key multiple keys can be "pressed"
without interaction. This adds a configuration parameter "macro" which looks
like this:

    macro  <game_mode>  <key>  <key_sequence>

It's kinda like "bind" but with a key_sequence instead of a command so make
sure you specify all the "bind" stuff before "macro" stuff. It's also
different in that you can specify "any" as a game_mode so you can access the
global keys.


CBoard version 0.2.3
--------------------
Added non-blocking message windows, input dialogs and menus. This means that
other games can be running while editing tags etc.

Added a move history tree menu. From this you can view and edit a moves
annotation. RAV will be supported problably in the next release.

The board details key 'd' has changed to CTRL-d and annotating a move in
history mode now uses the key CTRL-a.

A couple bug fixes. See ChangeLog for details.


CBoard version 0.2.2
--------------------
Black opening and history mode fix.

Tag window and long value fix.

Added frfr2san.pgn to test/.

Increased MAX_PGN_NAG from 5 to 8.

The "Result" tag is determined by the move validator. Don't trust the result
tag from PGN import format unless it's a draw and the result couldn't be
determined.

-E command line switch fix.

When there is no promotion piece in the move text, promote to queen.

A few PGN parsing and writing fixes. RAV, NAG, comments and EOG.

Fix for copying the cc.data file.

Fix installing config.example to PREFIX/share/man/man6.

Added Debianization stuff.


Cboard version 0.2.1
--------------------
The move validator is a little more than 5 times faster. The major problem was
initializing each games g->b board when a file was parsed. Now g->b has
disappeared and a single board is used (caching). I discovered this on
accident, learn something new every day. Still not as fast as 0.1.6 though.

Switching between games will remember the cursor position and selected piece.

Switching playing sides will update the White and Black roster tags.

Castling and en passant validation fixes.

Resuming a game with a Black opening fixed.

FEN tag fix when loading a file.

Fixed the 'u'ndo command.

Cosmetic menu fix.

Added configuration parameter 'board_details' to enable/disable it by default.

Added board details indicator at the lower-right of the board window.

Added a move clock for both Black and White. Also added a countdown clock that
can be set by pressing 'C' in play mode.

When an ambiguous piece was pinned both the pinned piece and the other piece
failed validation. This has been fixed.

Fixed another SAN bug. If an ambiguous piece was pinned and the other was on
the same file the libchess would put the rank next to the piece in the move
text rather than the file.

Fixed resuming a game from a previous move in the history.

SIGTERM and SIGINT are caught and both will have cboard exit cleanly.

Black opening fix. Also when saving.


Cboard version 0.2.0
--------------------
Quite a while since the last release, I've lost interest in the project off
and on but still keep at it enough to fix and add things. The most important
change in this version is better SAN handling. Ambiguities are fixed along
with frfr to SAN conversion. There are quite a few internal changes too but
unfortunately this version is quite a bit slower than the last do to more
functionality. I'm trying to find ways to speed it up though. The PGN portion
of the code has been split up into a library "libchess". This allows for easy
inclusion into other projects. In-game keys have changed quite a bit. Press F1
to see them. Also read the manual page as configuration parameters have been
changed/added/removed. Here's the rest of the changes:

Switch from CVS to GIT.

Lots of FEN tag fixes when parsing, saving and editing the board.

When in history mode, the cursor is updated to the last position on the board.

Support for Unix 98 ptys.

Show the repeat count in the status window.

Added command line options -V to only validate a .pgn file, -S to save a PGN
formatted game and -R to save a reduced PGN formatted game. The return value
of cboard will be 1 if there was a parse error or 0 on success.

Added option -t to save custom tags from the configuration file when -S is
specified.

Added option -E to stop processing the file when a game contains a parse
error. Also see configuration parameter stop_on_error in the manual page.

A few key bindings have been removed. Press 'F1' in game for help.

Added human/human play. Toggle it with the 'H' key.

Added engine/engine play. Toggle it with the 'E' key then hit 'g'o!.

I've got a new email address. Send any bugs reports patches etc to me at
bjk@luxsci.net.

When a piece is selected cboard will only highlight legal squares the piece
can move to.

Updated manual page. Read this because a few configuration parameters have
changed.

Added game key 'd' to show board details. Details are the enpassant square and
castling availability.

The parser now supports RAV. Moves are read into the history but the interface
is minimal at the moment. Saving also works but is buggy.

Support window resizing when in an xterm. Need at least an 80x24 terminal.

Support for all engines that utilize the XBoard protocol. Not very well
tested. GNUChess and Crafty seem to work fine though.

Added configuration parameter 'engine_init' which sends a command to the
engine when initialized.

The file browser (save/load prompt) supports filters.

A "Loading..." window/line when a file is being loaded.

Added configuration parameter 'bind' which binds a key to a command to send to
the engine when in play mode. Read the manual page.

Added key 'W' to show an engine io window.

New menu code. Looks better with custom colors. Type ahead searching is buggy
though.

Lots of internal, parser, validation and bug fixes.


CBoard version 0.1.6
--------------------
A few important save game, validation and file parser fixes.

Added command 't' to edit tags. You won't be prompted to edit tags anymore
when saving.

Renamed game deletion commands 'd' and 'D' to 'x' and 'X'. The delete commands
also accept a "range" to delete by specifying a count the one of the delete
commands then a direction ('<' or '>').

Tildes in the load/save dialog are expanded.

Added commands '!'-'*' and 'A'-'H' to move the cursor to the specified
rank/file.

Move numbers and tags are no longer needed in a PGN file.

The ncurses interface is initialized before trying to parse a file specified
on the command line.

The annotation viewing commands '[' and ']' have changed to 'V' and 'v'.

The next/prev move text expression keys '}' and '{' have changed to ']' and
'['.

Added game searching commands '?', '}' and '{'. These work like to move text
searching commands, but for roster tags instead.

Now parses the FEN tag. When editing tags, you can press CTRL-f to insert or
update the FEN tag with the current move in the move history.

Added command 'e' to toggle edit mode. This will allow positioning, deleting
('x' command) and inserting ('I' command) of pieces. No move validation is
done in edit mode and may only be enabled with a fresh board ('N' or 'n'
commands). After leaving edit mode, a FEN tag is created. It's somewhat
useless right now though.

Redone main command keys help.

Added commands '_' and '+' to decrease and increase the engine depth. These
can take a count.


CBoard version 0.1.5
--------------------
The repeat count commands are now 0-9. The first non-integer is the command to
repeat. So now you can have more than ten as a count. Pressing ESCAPE in the
middle of the count will reset it (similar to VIM's repeat).

The 'u'ndo command can take a repeat count.

Replaced the black and white status windows with a Seven Tag Roster window
(like before). The black and white info will be in the game status window.

Check and checkmate recognition are working (not draw though).

Added history move text searching commands. '/' will prompt for a new regular
expression and jump to the next match, '{' and '}' will jump to the previous
or next match prompting for an expression if one doesn't already exist. All of
these commands can take a repeat count.

Move numbers in the history window are full move numbers now. So by default,
the cursor keys in history mode will jump 2 moves. Pressing SPACE in history
mode will toggle half-move stepping.

The "board_moves" color parameter has been replaced by "board_white_moves" and
"board_black_moves" to specify the valid move color for those squares.


CBoard version 0.1.4
--------------------
This release fixes a few bugs and plugs a couple memory leaks in the menu code.
The SAN move parser still needs quite a bit of work though when interfaced
with the engine, so check and end-of-game determination are on hold until that
gets stable. But viewing games seems alright. Beginnings of ICS support
(ignore the manual references as its useless right now). Hopefully the code is
little more readable and easier to follow now. Heres the rest of the news:

"make install" will install the data files and example configuration file to
DATADIR/cboard (/usr/local/share/cboard by default). They will be copied to
~/.cboard if they cannot be found.

Linux runtime fixes.

Can load and save .Z, .gz, .zip, .bz and .bz2 compressed files. Can't append
to a compressed file though (for now).

If theres a parse error when loading a file with multiple games, CBoard will
keep reading the file rather than aborting.

When editing the "Site" tag, you can lookup country codes which are stored in
~/.cboard/cc.data.

If a filename doesn't contain a ".", then ".pgn" is appended to it when
saving.

A few but important PGN parser fixes.

Tags are sorted when loading and saving.

Added command "d" to toggle the delete flag of the current game. Pressing "D"
will delete all flagged games or the current one if none are flagged. This
adds the configuration parameter "delete_prompt". The default is on.

Added configuration parameter "valid_moves" to show valid moves when a piece
is selected. The color can be adjusted with the "board_moves" color parameter.
The cursor keys will move to the associated valid move. This is still buggy
though.

Added cursor repeat commands 0..9 (zero being ten). These will work with the
board navigation, history browsing and game browsing keys.

Removed cursor movement command 'j', 'k', 'l', and ';'.

Added commands 'j' and 'J' to jump to a history move number or game number.

Added "board_window" color configuration parameter.

Added "engine_cmd" to specify the chess engine path, command and any
arguments. The default is "gnuchess xboard". Note that other commands/engines
haven't been tested.


CBoard version 0.1.3
--------------------
Can now load and save SAN move format! Still not perfect I'm sure.

A file browser has been added to the load/save game prompt. Pressing TAB will
enable it.

Added configuration parameter "save_directory". If set, saved games will be
stored here and will also be the default open location of the file browser.

The annotation viewing keys have changed from 'V' and 'v' to '[' and ']'.

Configuration parameters whose values were either "0" or "1" are now "off" or
"on" respectively.

New configuration parameter "line_graphics". If "off", then the board line
graphics will not be drawn.

The data window has been replaced by two separate white and black player
information windows. This adds color configuration parameters white_... and
black_...

The PGN file parser now supports "!?"/"!!"/etc. NAG format and end-of-game
markers.

When multiple games are loaded, you can choose to save all games or just the
current one.

When saving from history mode, you can save up to the current move or all
moves.

Added configuration parameter "save_prompt" and ingame command "S". When set
to "off", don't prompt to edit roster tags and for history save commands when
in history mode.

The ingame "N" command has changed to start a new game from scratch. The "n"
command starts a new game or round.

Added command "D" to delete game.


CBoard version 0.1.2
--------------------
Loading a saved game and resuming a game from previous history works now. This
is done by having the chess engine read a FIFO and have CBoard write to it.
This allows for easy game switching when more than one game has been loaded.

Promotions, En Passant and castling moves are recognized now.

Agony strings are stored in ~/.cboard/agony.data and can be disabled with a
configuration file option (see below).

Rewritten move text section in the PGN parser. Now move annotations are read
and written and can be viewed with the 'v' and 'V' commands in history mode.
This supports both move comments and NAG data (see below).

There is no longer a -f command line option to specify a configuration file.
The new configuration file is stored in the ~/.cboard directory along with a
few data files. The files that need to be found in this directory are:

    config     - This is optional, CBoard will use defaults if not found.
    nag.data   - For viewing and editing move annotations.
    agony.data - Agony strings displayed in the status window when a capture
		 has been made.
    fifo       - Used for resuming games.

You can find the data files along with an example configuration file in the
'etc/' directory of the archive. You'll have to copy them over to ~/.cboard
yourself until I figure out a way to do it with 'make install'.

You can define custom colors and attributes in the configuration file. See the
manual page for more infomation on the syntax.

Added configuration parameters:
          pgntag - Define custom tags for new games or override defaults.
           agony - Show a random agony string on a capture.
    historyagony - Enable or disable agony strings in history mode.

SAN move format is the next major thing that needs to be done. It seems like
I'm going in reverse order of how things should be developed, but oh well.
