Use sigaction() rather than signal().
[cboard.git] / NEWS
blob38c3a5548a0574af13b1fdec0532d0e20c4a974e
1 CBoard version 0.7.4
2 --------------------
3 The project has moved to https://gitlab.com/bjk/cboard/wikis. Downloads can
4 still be found at https://sourceforge.net/projects/c-board/files but the
5 project issues and wiki/homepage are now at GitLab.
7 Added ability to resize/reposition message, input (buggy) and menu windows
8 with the terminal.
10 Added configuration paramter "turn_cmd" which is run when it is a human turn.
12 Fixed showing the enpassant square in history mode.
14 Fixed castling details when viewing the big board rotated.
16 Fixed startup crash in a recent version of ncurses.
18 The "macro" configuration parameter now requires a description field which is
19 also now shown in the help.
21 You can now rebind global keys using the "any" mode to the "bind" parameter.
23 Added bindings "toggle_strict_castling" and "perl" which were previously
24 hardcoded.
26 Removed the "play_help", "history_help", and "edit_help" commands. These are
27 replaced with the global "help" key binding and still defaults to F1 although
28 the undocumented CTRL-g binding has been removed.
31 CBoard version 0.7.3
32 --------------------
33 Fixed a few bugs found by Coverity.
36 CBoard version 0.7.2
37 --------------------
38 Remember the "rotate" setting as a per-game setting rather than a global.
40 "board_prev_move" now works in different game modes (engine, history, etc).
42 UTF-8 pieces are now enabled by default.
44 A few bugfixes and cleanups.
47 CBoard version 0.7.1
48 --------------------
49 Fixed color pair mixing.
51 Added configuration color parameter "color_board_prev_move".
53 Fixed the "engine_init" and "cbind" configuration parameters.
55 Fixed "show_attacks" to work with a rotated board and the en-passant square.
57 Translatable string fixes and updated ES translation.
59 Fixed memory leak when deleting a game.
61 Redraw the entire screen during terminal resize.
63 Let message dialog boxes scroll.
65 Fixed a couple of potential buffer overruns while parsing a move.
67 Restore game flags before returning from pgn_validate_move().
69 Fixed buffer overrun while building a help message box.
72 CBoard version 0.7.0
73 --------------------
74 Many thanks to Noel Tlatempa G <ntlatempa@gmail.com> most all feature
75 patches in this release.
77 UTF-8 support and gettext support.
79 Unicode chess pieces when -u or 'utf8_pieces' is enabled.
81 Es translation.
83 Ability to rotate the board at the beginning of a round and in history mode.
85 Added option 'coords_y_left' to change sides of the board characters.
87 Added option 'fm_polyglot' to fix quirks with some chess engine interfaces.
88 Sends the 'go' command after beginning a round.
90 Added the 'board_left' config option to put the chess board to the right or
91 left of other windows.
93 Added confirmation before quitting.
95 Added option 'engine_cmd_blacktag' to set the oppenent tag to the engine
96 command line.
98 Added option 'show_attacks' to hilight opponent pieces that can attack the
99 square under the cursor using the 'color_board_attack' color.
101 Fixed castling bug.
103 Fixed game copying.
105 Added big and mega board sizes. These can be viewed when resizing the
106 terminal to 112x40 and 144x50.
108 Minimal terminal size is now 74x23.
111 CBoard version 0.6.1
112 --------------------
113 This version fixes a bug when copying a game the FEN tag wasn't getting parsed
114 correctly.
116 Also fixes a threading issue in pgn_parse_move() if you'd like to use libchess
117 in your own multi-threaded chess game.
120 CBoard version 0.6
121 --------------------
122 No longer send SIGINT to the chess engine before each command. I'm not sure
123 how or when this broke things but no longer doing it fixes engine IO.
125 A macro value can now reference other macros and may also contain spaces.
127 Faster history parsing.
129 Fixed multiple game crashes. libchess no longer uses global variables.
131 Preliminary perl support. See README for details.
133 New signing key 0xB140DCE2.
135 New homepage. Please use http://c-board.sourceforge.net/.
137 Other minor fixes and changes. See ChangeLog for details.
140 CBoard version 0.5
141 --------------------
142 Board details are now enabled by default.
144 Added configuration parameter color_board_castling to change the castling
145 availability colors when board details is enabled.
147 Added configuration parameter color_board_enpassant. Visible when board
148 details is enabled.
150 The default color for a color definition can be used be specifying '-' as the
151 color.
153 A more complete clock. Time controls and move increments are now supported.
154 This only works for human/human play at the moment.
156 CBoard now uses nearly zero CPU time.
158 When sent SIGTERM, save all games to save_directory if specified and ~/.cboard
159 if not before quitting.
161 Fixed opening and saving to compressed files. Appending to compressed files is
162 now supported.
164 Added form input history for single line input dialogs.
166 A few bugfixes. See ChangeLog for details.
169 CBoard version 0.4
170 --------------------
171 The status window is now on top of the roster tag window.
173 Added command line option -C to enable strict castling.
175 A better clock. Each player has its own clock. The input format is the same as
176 before and also supports 'G/5' format. I'll add more features later.
178 A few (some important) bugfixes. See ChangeLog for details.
181 CBoard version 0.3
182 --------------------
183 New versioning scheme. It's less confusing and easier for me to use X.X
184 format. I really only work and release on one branch anyway.
186 Added global CTRL-i which copies the current game to a new one.
188 Added -D command line option to enable debugging if debugging was enabled at
189 compile time.
191 Added configuration parameter "engine_protocol" which specifies the XBoard
192 protocol that the engine uses. Right now this only means whether to send SAN
193 formatted moves (version 2) or FRFR formatted moves (version 1, the default).
195 Added file browser binding CTRL-e to change the filename expression.
197 Added configuration parameter 'strict_castling'. When enabled a castling move
198 will be invalid if the opponent can attack a castling square, beit the King,
199 Rook or the squares between the two. The default is off. This also adds a
200 keyboard binding CTRL-p to toggle strict castling.
202 New status window line 'Flags' which shows game flags for the current game.
204 Bugfixes and invisible changes. See ChangeLog for details.
207 CBoard version 0.2.4
208 --------------------
209 libchess: Castling bugfix.
211 You can now customize the key bindings for each game mode. The old "bind"
212 configuration parameter has been renamed to "cbind". The new "bind" works like
213 this: 
215     bind  <game_mode>  <key>  <command>  [alternate_description]
217 where game_mode is one of play, history or edit. The command is the command
218 associated with the game_mode. See doc/config.example for the default
219 bindings.
221 Added macros. When pressing a single key multiple keys can be "pressed"
222 without interaction. This adds a configuration parameter "macro" which looks
223 like this:
225     macro  <game_mode>  <key>  <key_sequence>
227 It's kinda like "bind" but with a key_sequence instead of a command so make
228 sure you specify all the "bind" stuff before "macro" stuff. It's also
229 different in that you can specify "any" as a game_mode so you can access the
230 global keys.
233 CBoard version 0.2.3
234 --------------------
235 Added non-blocking message windows, input dialogs and menus. This means that
236 other games can be running while editing tags etc.
238 Added a move history tree menu. From this you can view and edit a moves
239 annotation. RAV will be supported problably in the next release.
241 The board details key 'd' has changed to CTRL-d and annotating a move in
242 history mode now uses the key CTRL-a.
244 A couple bug fixes. See ChangeLog for details.
247 CBoard version 0.2.2
248 --------------------
249 Black opening and history mode fix.
251 Tag window and long value fix.
253 Added frfr2san.pgn to test/.
255 Increased MAX_PGN_NAG from 5 to 8.
257 The "Result" tag is determined by the move validator. Don't trust the result
258 tag from PGN import format unless it's a draw and the result couldn't be
259 determined.
261 -E command line switch fix.
263 When there is no promotion piece in the move text, promote to queen.
265 A few PGN parsing and writing fixes. RAV, NAG, comments and EOG.
267 Fix for copying the cc.data file.
269 Fix installing config.example to PREFIX/share/man/man6.
271 Added Debianization stuff.
274 Cboard version 0.2.1
275 --------------------
276 The move validator is a little more than 5 times faster. The major problem was
277 initializing each games g->b board when a file was parsed. Now g->b has
278 disappeared and a single board is used (caching). I discovered this on
279 accident, learn something new every day. Still not as fast as 0.1.6 though.
281 Switching between games will remember the cursor position and selected piece.
283 Switching playing sides will update the White and Black roster tags.
285 Castling and en passant validation fixes.
287 Resuming a game with a Black opening fixed.
289 FEN tag fix when loading a file.
291 Fixed the 'u'ndo command.
293 Cosmetic menu fix.
295 Added configuration parameter 'board_details' to enable/disable it by default.
297 Added board details indicator at the lower-right of the board window.
299 Added a move clock for both Black and White. Also added a countdown clock that
300 can be set by pressing 'C' in play mode.
302 When an ambiguous piece was pinned both the pinned piece and the other piece
303 failed validation. This has been fixed.
305 Fixed another SAN bug. If an ambiguous piece was pinned and the other was on
306 the same file the libchess would put the rank next to the piece in the move
307 text rather than the file.
309 Fixed resuming a game from a previous move in the history.
311 SIGTERM and SIGINT are caught and both will have cboard exit cleanly.
313 Black opening fix. Also when saving.
316 Cboard version 0.2.0
317 --------------------
318 Quite a while since the last release, I've lost interest in the project off
319 and on but still keep at it enough to fix and add things. The most important
320 change in this version is better SAN handling. Ambiguities are fixed along
321 with frfr to SAN conversion. There are quite a few internal changes too but
322 unfortunately this version is quite a bit slower than the last do to more
323 functionality. I'm trying to find ways to speed it up though. The PGN portion
324 of the code has been split up into a library "libchess". This allows for easy
325 inclusion into other projects. In-game keys have changed quite a bit. Press F1
326 to see them. Also read the manual page as configuration parameters have been
327 changed/added/removed. Here's the rest of the changes:
329 Switch from CVS to GIT.
331 Lots of FEN tag fixes when parsing, saving and editing the board.
333 When in history mode, the cursor is updated to the last position on the board.
335 Support for Unix 98 ptys.
337 Show the repeat count in the status window.
339 Added command line options -V to only validate a .pgn file, -S to save a PGN
340 formatted game and -R to save a reduced PGN formatted game. The return value
341 of cboard will be 1 if there was a parse error or 0 on success.
343 Added option -t to save custom tags from the configuration file when -S is
344 specified.
346 Added option -E to stop processing the file when a game contains a parse
347 error. Also see configuration parameter stop_on_error in the manual page.
349 A few key bindings have been removed. Press 'F1' in game for help.
351 Added human/human play. Toggle it with the 'H' key.
353 Added engine/engine play. Toggle it with the 'E' key then hit 'g'o!.
355 I've got a new email address. Send any bugs reports patches etc to me at
356 bjk@luxsci.net.
358 When a piece is selected cboard will only highlight legal squares the piece
359 can move to.
361 Updated manual page. Read this because a few configuration parameters have
362 changed.
364 Added game key 'd' to show board details. Details are the enpassant square and
365 castling availability.
367 The parser now supports RAV. Moves are read into the history but the interface
368 is minimal at the moment. Saving also works but is buggy.
370 Support window resizing when in an xterm. Need at least an 80x24 terminal.
372 Support for all engines that utilize the XBoard protocol. Not very well
373 tested. GNUChess and Crafty seem to work fine though.
375 Added configuration parameter 'engine_init' which sends a command to the
376 engine when initialized.
378 The file browser (save/load prompt) supports filters.
380 A "Loading..." window/line when a file is being loaded.
382 Added configuration parameter 'bind' which binds a key to a command to send to
383 the engine when in play mode. Read the manual page.
385 Added key 'W' to show an engine io window.
387 New menu code. Looks better with custom colors. Type ahead searching is buggy
388 though.
390 Lots of internal, parser, validation and bug fixes.
393 CBoard version 0.1.6
394 --------------------
395 A few important save game, validation and file parser fixes.
397 Added command 't' to edit tags. You won't be prompted to edit tags anymore
398 when saving.
400 Renamed game deletion commands 'd' and 'D' to 'x' and 'X'. The delete commands
401 also accept a "range" to delete by specifying a count the one of the delete
402 commands then a direction ('<' or '>').
404 Tildes in the load/save dialog are expanded.
406 Added commands '!'-'*' and 'A'-'H' to move the cursor to the specified
407 rank/file.
409 Move numbers and tags are no longer needed in a PGN file.
411 The ncurses interface is initialized before trying to parse a file specified
412 on the command line.
414 The annotation viewing commands '[' and ']' have changed to 'V' and 'v'.
416 The next/prev move text expression keys '}' and '{' have changed to ']' and
417 '['.
419 Added game searching commands '?', '}' and '{'. These work like to move text
420 searching commands, but for roster tags instead.
422 Now parses the FEN tag. When editing tags, you can press CTRL-f to insert or
423 update the FEN tag with the current move in the move history.
425 Added command 'e' to toggle edit mode. This will allow positioning, deleting
426 ('x' command) and inserting ('I' command) of pieces. No move validation is
427 done in edit mode and may only be enabled with a fresh board ('N' or 'n'
428 commands). After leaving edit mode, a FEN tag is created. It's somewhat
429 useless right now though.
431 Redone main command keys help.
433 Added commands '_' and '+' to decrease and increase the engine depth. These
434 can take a count.
437 CBoard version 0.1.5
438 --------------------
439 The repeat count commands are now 0-9. The first non-integer is the command to
440 repeat. So now you can have more than ten as a count. Pressing ESCAPE in the
441 middle of the count will reset it (similar to VIM's repeat).
443 The 'u'ndo command can take a repeat count.
445 Replaced the black and white status windows with a Seven Tag Roster window
446 (like before). The black and white info will be in the game status window.
448 Check and checkmate recognition are working (not draw though).
450 Added history move text searching commands. '/' will prompt for a new regular
451 expression and jump to the next match, '{' and '}' will jump to the previous
452 or next match prompting for an expression if one doesn't already exist. All of
453 these commands can take a repeat count.
455 Move numbers in the history window are full move numbers now. So by default,
456 the cursor keys in history mode will jump 2 moves. Pressing SPACE in history
457 mode will toggle half-move stepping.
459 The "board_moves" color parameter has been replaced by "board_white_moves" and
460 "board_black_moves" to specify the valid move color for those squares.
463 CBoard version 0.1.4
464 --------------------
465 This release fixes a few bugs and plugs a couple memory leaks in the menu code.
466 The SAN move parser still needs quite a bit of work though when interfaced
467 with the engine, so check and end-of-game determination are on hold until that
468 gets stable. But viewing games seems alright. Beginnings of ICS support
469 (ignore the manual references as its useless right now). Hopefully the code is
470 little more readable and easier to follow now. Heres the rest of the news:
472 "make install" will install the data files and example configuration file to
473 DATADIR/cboard (/usr/local/share/cboard by default). They will be copied to
474 ~/.cboard if they cannot be found.
476 Linux runtime fixes.
478 Can load and save .Z, .gz, .zip, .bz and .bz2 compressed files. Can't append
479 to a compressed file though (for now).
481 If theres a parse error when loading a file with multiple games, CBoard will
482 keep reading the file rather than aborting.
484 When editing the "Site" tag, you can lookup country codes which are stored in
485 ~/.cboard/cc.data.
487 If a filename doesn't contain a ".", then ".pgn" is appended to it when
488 saving.
490 A few but important PGN parser fixes.
492 Tags are sorted when loading and saving.
494 Added command "d" to toggle the delete flag of the current game. Pressing "D"
495 will delete all flagged games or the current one if none are flagged. This
496 adds the configuration parameter "delete_prompt". The default is on.
498 Added configuration parameter "valid_moves" to show valid moves when a piece
499 is selected. The color can be adjusted with the "board_moves" color parameter.
500 The cursor keys will move to the associated valid move. This is still buggy
501 though.
503 Added cursor repeat commands 0..9 (zero being ten). These will work with the
504 board navigation, history browsing and game browsing keys.
506 Removed cursor movement command 'j', 'k', 'l', and ';'.
508 Added commands 'j' and 'J' to jump to a history move number or game number.
510 Added "board_window" color configuration parameter.
512 Added "engine_cmd" to specify the chess engine path, command and any
513 arguments. The default is "gnuchess xboard". Note that other commands/engines
514 haven't been tested.
517 CBoard version 0.1.3
518 --------------------
519 Can now load and save SAN move format! Still not perfect I'm sure.
521 A file browser has been added to the load/save game prompt. Pressing TAB will
522 enable it.
524 Added configuration parameter "save_directory". If set, saved games will be
525 stored here and will also be the default open location of the file browser.
527 The annotation viewing keys have changed from 'V' and 'v' to '[' and ']'.
529 Configuration parameters whose values were either "0" or "1" are now "off" or
530 "on" respectively.
532 New configuration parameter "line_graphics". If "off", then the board line
533 graphics will not be drawn.
535 The data window has been replaced by two separate white and black player
536 information windows. This adds color configuration parameters white_... and
537 black_...
539 The PGN file parser now supports "!?"/"!!"/etc. NAG format and end-of-game
540 markers.
542 When multiple games are loaded, you can choose to save all games or just the
543 current one.
545 When saving from history mode, you can save up to the current move or all
546 moves.
548 Added configuration parameter "save_prompt" and ingame command "S". When set
549 to "off", don't prompt to edit roster tags and for history save commands when
550 in history mode.
552 The ingame "N" command has changed to start a new game from scratch. The "n"
553 command starts a new game or round.
555 Added command "D" to delete game.
558 CBoard version 0.1.2
559 --------------------
560 Loading a saved game and resuming a game from previous history works now. This
561 is done by having the chess engine read a FIFO and have CBoard write to it.
562 This allows for easy game switching when more than one game has been loaded.
564 Promotions, En Passant and castling moves are recognized now.
566 Agony strings are stored in ~/.cboard/agony.data and can be disabled with a
567 configuration file option (see below).
569 Rewritten move text section in the PGN parser. Now move annotations are read
570 and written and can be viewed with the 'v' and 'V' commands in history mode.
571 This supports both move comments and NAG data (see below).
573 There is no longer a -f command line option to specify a configuration file.
574 The new configuration file is stored in the ~/.cboard directory along with a
575 few data files. The files that need to be found in this directory are:
577     config     - This is optional, CBoard will use defaults if not found.
578     nag.data   - For viewing and editing move annotations.
579     agony.data - Agony strings displayed in the status window when a capture
580                  has been made.
581     fifo       - Used for resuming games.
583 You can find the data files along with an example configuration file in the
584 'etc/' directory of the archive. You'll have to copy them over to ~/.cboard
585 yourself until I figure out a way to do it with 'make install'.
587 You can define custom colors and attributes in the configuration file. See the
588 manual page for more infomation on the syntax.
590 Added configuration parameters:
591           pgntag - Define custom tags for new games or override defaults.
592            agony - Show a random agony string on a capture.
593     historyagony - Enable or disable agony strings in history mode.
595 SAN move format is the next major thing that needs to be done. It seems like
596 I'm going in reverse order of how things should be developed, but oh well.