Rewrite of board rotation code.
[cboard.git] / NEWS
blob7144ec8ff35f946e08e0a47feb218b4fa9f1139e
1 CBoard version 0.7.1
2 --------------------
3 Fixed color pair mixing.
5 Added configuration color parameter "color_board_prev_move".
7 Fixed the "engine_init" and "cbind" configuration parameters.
9 Fixed "show_attacks" to work with a rotated board and the en-passant square.
11 Translatable string fixes and updated ES translation.
13 Fixed memory leak when deleting a game.
15 Redraw the entire screen during terminal resize.
17 Let message dialog boxes scroll.
19 Fixed a couple of potential buffer overruns while parsing a move.
21 Restore game flags before returning from pgn_validate_move().
23 Fixed buffer overrun while building a help message box.
26 CBoard version 0.7.0
27 --------------------
28 Many thanks to Noel Tlatempa G <ntlatempa@gmail.com> most all feature
29 patches in this release.
31 UTF-8 support and gettext support.
33 Unicode chess pieces when -u or 'utf8_pieces' is enabled.
35 Es translation.
37 Ability to rotate the board at the beginning of a round and in history mode.
39 Added option 'coords_y_left' to change sides of the board characters.
41 Added option 'fm_polyglot' to fix quirks with some chess engine interfaces.
42 Sends the 'go' command after beginning a round.
44 Added the 'board_left' config option to put the chess board to the right or
45 left of other windows.
47 Added confirmation before quitting.
49 Added option 'engine_cmd_blacktag' to set the oppenent tag to the engine
50 command line.
52 Added option 'show_attacks' to hilight opponent pieces that can attack the
53 square under the cursor using the 'color_board_attack' color.
55 Fixed castling bug.
57 Fixed game copying.
59 Added big and mega board sizes. These can be viewed when resizing the
60 terminal to 112x40 and 144x50.
62 Minimal terminal size is now 74x23.
65 CBoard version 0.6.1
66 --------------------
67 This version fixes a bug when copying a game the FEN tag wasn't getting parsed
68 correctly.
70 Also fixes a threading issue in pgn_parse_move() if you'd like to use libchess
71 in your own multi-threaded chess game.
74 CBoard version 0.6
75 --------------------
76 No longer send SIGINT to the chess engine before each command. I'm not sure
77 how or when this broke things but no longer doing it fixes engine IO.
79 A macro value can now reference other macros and may also contain spaces.
81 Faster history parsing.
83 Fixed multiple game crashes. libchess no longer uses global variables.
85 Preliminary perl support. See README for details.
87 New signing key 0xB140DCE2.
89 New homepage. Please use http://c-board.sourceforge.net/.
91 Other minor fixes and changes. See ChangeLog for details.
94 CBoard version 0.5
95 --------------------
96 Board details are now enabled by default.
98 Added configuration parameter color_board_castling to change the castling
99 availability colors when board details is enabled.
101 Added configuration parameter color_board_enpassant. Visible when board
102 details is enabled.
104 The default color for a color definition can be used be specifying '-' as the
105 color.
107 A more complete clock. Time controls and move increments are now supported.
108 This only works for human/human play at the moment.
110 CBoard now uses nearly zero CPU time.
112 When sent SIGTERM, save all games to save_directory if specified and ~/.cboard
113 if not before quitting.
115 Fixed opening and saving to compressed files. Appending to compressed files is
116 now supported.
118 Added form input history for single line input dialogs.
120 A few bugfixes. See ChangeLog for details.
123 CBoard version 0.4
124 --------------------
125 The status window is now on top of the roster tag window.
127 Added command line option -C to enable strict castling.
129 A better clock. Each player has its own clock. The input format is the same as
130 before and also supports 'G/5' format. I'll add more features later.
132 A few (some important) bugfixes. See ChangeLog for details.
135 CBoard version 0.3
136 --------------------
137 New versioning scheme. It's less confusing and easier for me to use X.X
138 format. I really only work and release on one branch anyway.
140 Added global CTRL-i which copies the current game to a new one.
142 Added -D command line option to enable debugging if debugging was enabled at
143 compile time.
145 Added configuration parameter "engine_protocol" which specifies the XBoard
146 protocol that the engine uses. Right now this only means whether to send SAN
147 formatted moves (version 2) or FRFR formatted moves (version 1, the default).
149 Added file browser binding CTRL-e to change the filename expression.
151 Added configuration parameter 'strict_castling'. When enabled a castling move
152 will be invalid if the opponent can attack a castling square, beit the King,
153 Rook or the squares between the two. The default is off. This also adds a
154 keyboard binding CTRL-p to toggle strict castling.
156 New status window line 'Flags' which shows game flags for the current game.
158 Bugfixes and invisible changes. See ChangeLog for details.
161 CBoard version 0.2.4
162 --------------------
163 libchess: Castling bugfix.
165 You can now customize the key bindings for each game mode. The old "bind"
166 configuration parameter has been renamed to "cbind". The new "bind" works like
167 this: 
169     bind  <game_mode>  <key>  <command>  [alternate_description]
171 where game_mode is one of play, history or edit. The command is the command
172 associated with the game_mode. See doc/config.example for the default
173 bindings.
175 Added macros. When pressing a single key multiple keys can be "pressed"
176 without interaction. This adds a configuration parameter "macro" which looks
177 like this:
179     macro  <game_mode>  <key>  <key_sequence>
181 It's kinda like "bind" but with a key_sequence instead of a command so make
182 sure you specify all the "bind" stuff before "macro" stuff. It's also
183 different in that you can specify "any" as a game_mode so you can access the
184 global keys.
187 CBoard version 0.2.3
188 --------------------
189 Added non-blocking message windows, input dialogs and menus. This means that
190 other games can be running while editing tags etc.
192 Added a move history tree menu. From this you can view and edit a moves
193 annotation. RAV will be supported problably in the next release.
195 The board details key 'd' has changed to CTRL-d and annotating a move in
196 history mode now uses the key CTRL-a.
198 A couple bug fixes. See ChangeLog for details.
201 CBoard version 0.2.2
202 --------------------
203 Black opening and history mode fix.
205 Tag window and long value fix.
207 Added frfr2san.pgn to test/.
209 Increased MAX_PGN_NAG from 5 to 8.
211 The "Result" tag is determined by the move validator. Don't trust the result
212 tag from PGN import format unless it's a draw and the result couldn't be
213 determined.
215 -E command line switch fix.
217 When there is no promotion piece in the move text, promote to queen.
219 A few PGN parsing and writing fixes. RAV, NAG, comments and EOG.
221 Fix for copying the cc.data file.
223 Fix installing config.example to PREFIX/share/man/man6.
225 Added Debianization stuff.
228 Cboard version 0.2.1
229 --------------------
230 The move validator is a little more than 5 times faster. The major problem was
231 initializing each games g->b board when a file was parsed. Now g->b has
232 disappeared and a single board is used (caching). I discovered this on
233 accident, learn something new every day. Still not as fast as 0.1.6 though.
235 Switching between games will remember the cursor position and selected piece.
237 Switching playing sides will update the White and Black roster tags.
239 Castling and en passant validation fixes.
241 Resuming a game with a Black opening fixed.
243 FEN tag fix when loading a file.
245 Fixed the 'u'ndo command.
247 Cosmetic menu fix.
249 Added configuration parameter 'board_details' to enable/disable it by default.
251 Added board details indicator at the lower-right of the board window.
253 Added a move clock for both Black and White. Also added a countdown clock that
254 can be set by pressing 'C' in play mode.
256 When an ambiguous piece was pinned both the pinned piece and the other piece
257 failed validation. This has been fixed.
259 Fixed another SAN bug. If an ambiguous piece was pinned and the other was on
260 the same file the libchess would put the rank next to the piece in the move
261 text rather than the file.
263 Fixed resuming a game from a previous move in the history.
265 SIGTERM and SIGINT are caught and both will have cboard exit cleanly.
267 Black opening fix. Also when saving.
270 Cboard version 0.2.0
271 --------------------
272 Quite a while since the last release, I've lost interest in the project off
273 and on but still keep at it enough to fix and add things. The most important
274 change in this version is better SAN handling. Ambiguities are fixed along
275 with frfr to SAN conversion. There are quite a few internal changes too but
276 unfortunately this version is quite a bit slower than the last do to more
277 functionality. I'm trying to find ways to speed it up though. The PGN portion
278 of the code has been split up into a library "libchess". This allows for easy
279 inclusion into other projects. In-game keys have changed quite a bit. Press F1
280 to see them. Also read the manual page as configuration parameters have been
281 changed/added/removed. Here's the rest of the changes:
283 Switch from CVS to GIT.
285 Lots of FEN tag fixes when parsing, saving and editing the board.
287 When in history mode, the cursor is updated to the last position on the board.
289 Support for Unix 98 ptys.
291 Show the repeat count in the status window.
293 Added command line options -V to only validate a .pgn file, -S to save a PGN
294 formatted game and -R to save a reduced PGN formatted game. The return value
295 of cboard will be 1 if there was a parse error or 0 on success.
297 Added option -t to save custom tags from the configuration file when -S is
298 specified.
300 Added option -E to stop processing the file when a game contains a parse
301 error. Also see configuration parameter stop_on_error in the manual page.
303 A few key bindings have been removed. Press 'F1' in game for help.
305 Added human/human play. Toggle it with the 'H' key.
307 Added engine/engine play. Toggle it with the 'E' key then hit 'g'o!.
309 I've got a new email address. Send any bugs reports patches etc to me at
310 bjk@luxsci.net.
312 When a piece is selected cboard will only highlight legal squares the piece
313 can move to.
315 Updated manual page. Read this because a few configuration parameters have
316 changed.
318 Added game key 'd' to show board details. Details are the enpassant square and
319 castling availability.
321 The parser now supports RAV. Moves are read into the history but the interface
322 is minimal at the moment. Saving also works but is buggy.
324 Support window resizing when in an xterm. Need at least an 80x24 terminal.
326 Support for all engines that utilize the XBoard protocol. Not very well
327 tested. GNUChess and Crafty seem to work fine though.
329 Added configuration parameter 'engine_init' which sends a command to the
330 engine when initialized.
332 The file browser (save/load prompt) supports filters.
334 A "Loading..." window/line when a file is being loaded.
336 Added configuration parameter 'bind' which binds a key to a command to send to
337 the engine when in play mode. Read the manual page.
339 Added key 'W' to show an engine io window.
341 New menu code. Looks better with custom colors. Type ahead searching is buggy
342 though.
344 Lots of internal, parser, validation and bug fixes.
347 CBoard version 0.1.6
348 --------------------
349 A few important save game, validation and file parser fixes.
351 Added command 't' to edit tags. You won't be prompted to edit tags anymore
352 when saving.
354 Renamed game deletion commands 'd' and 'D' to 'x' and 'X'. The delete commands
355 also accept a "range" to delete by specifying a count the one of the delete
356 commands then a direction ('<' or '>').
358 Tildes in the load/save dialog are expanded.
360 Added commands '!'-'*' and 'A'-'H' to move the cursor to the specified
361 rank/file.
363 Move numbers and tags are no longer needed in a PGN file.
365 The ncurses interface is initialized before trying to parse a file specified
366 on the command line.
368 The annotation viewing commands '[' and ']' have changed to 'V' and 'v'.
370 The next/prev move text expression keys '}' and '{' have changed to ']' and
371 '['.
373 Added game searching commands '?', '}' and '{'. These work like to move text
374 searching commands, but for roster tags instead.
376 Now parses the FEN tag. When editing tags, you can press CTRL-f to insert or
377 update the FEN tag with the current move in the move history.
379 Added command 'e' to toggle edit mode. This will allow positioning, deleting
380 ('x' command) and inserting ('I' command) of pieces. No move validation is
381 done in edit mode and may only be enabled with a fresh board ('N' or 'n'
382 commands). After leaving edit mode, a FEN tag is created. It's somewhat
383 useless right now though.
385 Redone main command keys help.
387 Added commands '_' and '+' to decrease and increase the engine depth. These
388 can take a count.
391 CBoard version 0.1.5
392 --------------------
393 The repeat count commands are now 0-9. The first non-integer is the command to
394 repeat. So now you can have more than ten as a count. Pressing ESCAPE in the
395 middle of the count will reset it (similar to VIM's repeat).
397 The 'u'ndo command can take a repeat count.
399 Replaced the black and white status windows with a Seven Tag Roster window
400 (like before). The black and white info will be in the game status window.
402 Check and checkmate recognition are working (not draw though).
404 Added history move text searching commands. '/' will prompt for a new regular
405 expression and jump to the next match, '{' and '}' will jump to the previous
406 or next match prompting for an expression if one doesn't already exist. All of
407 these commands can take a repeat count.
409 Move numbers in the history window are full move numbers now. So by default,
410 the cursor keys in history mode will jump 2 moves. Pressing SPACE in history
411 mode will toggle half-move stepping.
413 The "board_moves" color parameter has been replaced by "board_white_moves" and
414 "board_black_moves" to specify the valid move color for those squares.
417 CBoard version 0.1.4
418 --------------------
419 This release fixes a few bugs and plugs a couple memory leaks in the menu code.
420 The SAN move parser still needs quite a bit of work though when interfaced
421 with the engine, so check and end-of-game determination are on hold until that
422 gets stable. But viewing games seems alright. Beginnings of ICS support
423 (ignore the manual references as its useless right now). Hopefully the code is
424 little more readable and easier to follow now. Heres the rest of the news:
426 "make install" will install the data files and example configuration file to
427 DATADIR/cboard (/usr/local/share/cboard by default). They will be copied to
428 ~/.cboard if they cannot be found.
430 Linux runtime fixes.
432 Can load and save .Z, .gz, .zip, .bz and .bz2 compressed files. Can't append
433 to a compressed file though (for now).
435 If theres a parse error when loading a file with multiple games, CBoard will
436 keep reading the file rather than aborting.
438 When editing the "Site" tag, you can lookup country codes which are stored in
439 ~/.cboard/cc.data.
441 If a filename doesn't contain a ".", then ".pgn" is appended to it when
442 saving.
444 A few but important PGN parser fixes.
446 Tags are sorted when loading and saving.
448 Added command "d" to toggle the delete flag of the current game. Pressing "D"
449 will delete all flagged games or the current one if none are flagged. This
450 adds the configuration parameter "delete_prompt". The default is on.
452 Added configuration parameter "valid_moves" to show valid moves when a piece
453 is selected. The color can be adjusted with the "board_moves" color parameter.
454 The cursor keys will move to the associated valid move. This is still buggy
455 though.
457 Added cursor repeat commands 0..9 (zero being ten). These will work with the
458 board navigation, history browsing and game browsing keys.
460 Removed cursor movement command 'j', 'k', 'l', and ';'.
462 Added commands 'j' and 'J' to jump to a history move number or game number.
464 Added "board_window" color configuration parameter.
466 Added "engine_cmd" to specify the chess engine path, command and any
467 arguments. The default is "gnuchess xboard". Note that other commands/engines
468 haven't been tested.
471 CBoard version 0.1.3
472 --------------------
473 Can now load and save SAN move format! Still not perfect I'm sure.
475 A file browser has been added to the load/save game prompt. Pressing TAB will
476 enable it.
478 Added configuration parameter "save_directory". If set, saved games will be
479 stored here and will also be the default open location of the file browser.
481 The annotation viewing keys have changed from 'V' and 'v' to '[' and ']'.
483 Configuration parameters whose values were either "0" or "1" are now "off" or
484 "on" respectively.
486 New configuration parameter "line_graphics". If "off", then the board line
487 graphics will not be drawn.
489 The data window has been replaced by two separate white and black player
490 information windows. This adds color configuration parameters white_... and
491 black_...
493 The PGN file parser now supports "!?"/"!!"/etc. NAG format and end-of-game
494 markers.
496 When multiple games are loaded, you can choose to save all games or just the
497 current one.
499 When saving from history mode, you can save up to the current move or all
500 moves.
502 Added configuration parameter "save_prompt" and ingame command "S". When set
503 to "off", don't prompt to edit roster tags and for history save commands when
504 in history mode.
506 The ingame "N" command has changed to start a new game from scratch. The "n"
507 command starts a new game or round.
509 Added command "D" to delete game.
512 CBoard version 0.1.2
513 --------------------
514 Loading a saved game and resuming a game from previous history works now. This
515 is done by having the chess engine read a FIFO and have CBoard write to it.
516 This allows for easy game switching when more than one game has been loaded.
518 Promotions, En Passant and castling moves are recognized now.
520 Agony strings are stored in ~/.cboard/agony.data and can be disabled with a
521 configuration file option (see below).
523 Rewritten move text section in the PGN parser. Now move annotations are read
524 and written and can be viewed with the 'v' and 'V' commands in history mode.
525 This supports both move comments and NAG data (see below).
527 There is no longer a -f command line option to specify a configuration file.
528 The new configuration file is stored in the ~/.cboard directory along with a
529 few data files. The files that need to be found in this directory are:
531     config     - This is optional, CBoard will use defaults if not found.
532     nag.data   - For viewing and editing move annotations.
533     agony.data - Agony strings displayed in the status window when a capture
534                  has been made.
535     fifo       - Used for resuming games.
537 You can find the data files along with an example configuration file in the
538 'etc/' directory of the archive. You'll have to copy them over to ~/.cboard
539 yourself until I figure out a way to do it with 'make install'.
541 You can define custom colors and attributes in the configuration file. See the
542 manual page for more infomation on the syntax.
544 Added configuration parameters:
545           pgntag - Define custom tags for new games or override defaults.
546            agony - Show a random agony string on a capture.
547     historyagony - Enable or disable agony strings in history mode.
549 SAN move format is the next major thing that needs to be done. It seems like
550 I'm going in reverse order of how things should be developed, but oh well.