Abbreviate DATADIR to ~~ while saving XB themes The path name of theme files is typically quite long in XBoard, where installed data is very deep in the file-system tree. This path is now recognized, and replacend by its abbreviation ~~ when storing a theme in the -themeNames option.
Fix crash on too-long theme definitions Long file names for texture and pieces could make theme definitions so long as to overflow the buffers used to hold them. The buffer size is now doubled.
Fix highlights clearing when highlight last move off When moves are not highlighted, the selected piece still is. But this highlight should be erased after the move.
Fix redrawing of pieces dragged off board (bug #47888) The board was not redrawn after a piece was dragged off board, leaving the piece 'invisibly' in its original position, and also leaving the target squares marked.
Fix forgetting 'choice' command after promotion The promotion restriction specified by a 'choice' command is now reset at the start of every new move, so that future promotion moves won't use it too. In addition,the 'choice' command is ignored when legality testing is on.
Fix multi-leg promotions Two-leg promotions were sent as gibberish to the engine (and thus rejected). It was also pretty annoying that XBoard's own idea of what should be promotions was still applied even when highlighting denied promotions (because the zone was different than assumed, or a promotion-on-entry rule applies). Now the legality markers from the GUI move generator are different from the red and yellow markers from an engine highlight command, and the latter are taken as a denial of promotion, and will suppress it.
Erase markers before processing highlight FEN Markers from the Betza generator were only half-heartedly erased when a color-FEN camein through a highlight command, because FENs tend to skip empty squares in stretches. This was already fixed for the legal[][] array, but now it is fixed for the markers itself as well.
Fix saving of piece colors as part of theme The wrong condition was used for deciding of whether the piece-color settings were relevant for a theme definition.
Allow engine to force user to make non-standard promotion The engine can now force an unexpected promotion on moves entered by the user, by marking the to-square of such a move in blue. Releasing a piece on such a blue square will then defer further processing of the move (after having send the 'put' command to the engine) until reception of a 'choice' command to specify what the piece should promote to. This solves problems in Maka Dai Dai Shogi, where a piece capturing a contageous piece would only be allowed to promote to its normal promoted form if the to-square was marked in purple (offering a P / +P toggle).
Fix saving theme The option -trueColors is now saved with the theme settings when a pieceImageDirectory was given in XBoard, and the piece colors are saved when this option is off even with a piece directory. The square colors are now also saved when useBooardTextures is on, but the textures are transparent. For this the transparency also had to be made visible in the WinBoard front end, (by moving the flags for it to backend.c), but always stay at the default 0 there.
Fix deferral on sweep promotions When a sweep in the to-square due to a highlight-induced promotion had left the original piece as choice, the piece would be considered to promote to itself (i.e. the move would get the promoChar for its piece type), rather than to not promote at all. Some engines choked on this (HaChu). Now such a move is not considered a promotion.
Implement -showMoveTime option A persistent option -showMoveTime can cause the time thought so far on the current move to be displayed in the clock field, behind the time left on the clock, in parentheses.
Allow engine to specify holdings larger than board height On reception of a 'setup' command we now automatically increase the number of board ranks to the holdings size if the latter is larger, but remember the number of added 'dead ranks'. When parsing a FEN these ranks are blacked out, and on generating a FEN they are ignored. This makes FENs behave like the board was not enlarged.
Prevent sending empty line to engine after multi-leg move As the pmoves are stored internally with a linefeed suffixed to them, this linefeed was mistaken for a promotion character in the multi-leg printing formats, and led to an extra empty line being sent to the engine on non-promotion multi-leg moves. Now a linefeed is replaced by a null character before sending the move.
Fix piece commands for promoted pieces The flexible partner assignment had broken the code for 'piece' commands defining the moves for these pieces, as the promotion partner was still calculated the old way.
Fix dragged piece during promotion popup When dragging to a promotion square, the piece would keep 'hanging' in the release position while the promotion popup was shown. (This usually covered it, but not always.) As after a choice is made the move will be animated, it was more logical to put it back on the from-square.
Add option -pgnTimeLeft to print clocks in extended PGN info When set a persistent option -pgnTimeLeft makes XBoard save the time left after the move in the score/depth comments, rather than the time thought about the move. A leading sign will allow the reader to distinguish the two. The time is always printed in integer seconds.
Alter piece images in Spartan Chess The Captain of Spartain Chess is now represented by the new Tower piece, so that the Crowned Rook pictogram can be (and is) used for the General, for better uniformity with other variants.
Regularize Chu-Shogi piece assignment The pieces in Chu Shogi have been reassigned to other internal codes, so that juggling of images in variant cu is no longer needed. This became possible by the flexible assignment of promotion partners. It makes it easier to use Chu Shogi as parent variant without having to worry about a non-stadard meaning of the -pieceToCharTable. The built-in move generator had to be changed to work for the new assignment.
Finish castling and e.p. rights for Edit Position In stead of faking rights based on corner positioning of Rooks and e-file King, EditPositionDone now interprets the rightsBoard that recorded 'promotion clicks' on King, Rooks or Pawns to toggle their rights. This rightsBoard is initialized from the castling rights in the position that is being edited, and the clear and piece-pallette boards now also set these castling rights correctly.