Possible improvements **=somewhat higher priority --------------------------------------------------- 20. Some way to back up, explore variations, then return to the main line and restore moves we backed out. Should also support exploring side branches while loading a game file. Push/pop buttons? Button to fork another xboard in same state as current one? 20a. Allow side branches to be remembered in game files (and understood on LoadGame). Use PGN variation notation. **62a. Support series of time controls as in later gnuchess 4.0.x versions (and real tournaments!). Needs a protocol extension to "level"; this is now planned for protover 3. 62b. Perhaps we could also support the kind of clock where you get K seconds per move, plus a reserve of J seconds per game that is used when a move takes more than K seconds. The degenerate form of this with J=0 is desirable in itself. Needs a protocol extension. 68. WinBoard has some features not in xboard. Among others: 68a. LoadGameOptions dialog (good to add) 68b. SaveGameOptions dialog (good to add) 68c. TimeControl dialog (good to add) 68g. Font dialog. (leave out) 68h. Colors dialog. (leave out) 68i. Board size on Options menu (good to add) 68j. Resize with mouse 68k. Highlight dragging 68m. Move typein from keyboard. (good to add) 69. xboard has some features not in WinBoard. Among others: 69c. Font size selection by pattern fill-in. (leave out) 69d. Alternate bitmaps specified at runtime. (good to add, often requested) 69e. Flashing. 71. Allow restart after ICS logout instead of exiting? Many requests for this. 71a. Would be useful to drop into NCP mode after ICS logout and allow for reconnect later. For instance, this would let you save your last partial game if you didn't have autosave on. 72. Allow switching among ICS, NCP, GNU modes?? 74. Observe/play multiple games, each with its own window. Hard. 80. Clone command. Saves current game to a file foo, then starts up another copy of xboard with -lgf foo. Should probably note current state of some options and give command line flags to set them the same way in child. What about -ncp mode, though? Might want that to be different. Would be nice to have a -moveNumber flag to position the child to the same move number in the current game. 91. Would be nice to have an option to overwrite save file instead of appending. 95. "Have the clock indicate how long the computer/player has been thinking for when the -st option is used. This should be how long for the current move only." (Dino Dini) 97. "Have the ability to change the level of the gnuchess during a game. For analysis purposes, sometimes it is useful to have the computer think really hard about certain positions." (Dino Dini) 98. Reorganize the source and split it into more files. 107. Changing time control during a game could be made to work. Current (WinBoard only) way of changing at start is suboptimal. **108. Could add search depth and time per move to (WinBoard) TimeControl dialog. 140. LoadPosition needs better checking for invalid data. 142. xboard needs a real file chooser dialog. Jeff Woolsey submitted code to merge in the one from Ghostview, but said it works only on X11R5 or later. I have not yet tried his code or looked to see if it could be made to work on X11R4. 147. Improve display of held pieces in bughouse mode, putting them closer to the player's side of the board, and perhaps using icons (and allowing dragging from the icons to drop a piece). Actually, moving the clocks would be beneficial too, so that it's easier to visually associate the right clock with the right player when looking at two boards during a bughouse match (with two copies of xboard running). Maybe multiple window layouts should be user-selectable. [4.3 supports drag-drops from holdings] 150. Keep track of castling availability, en-passant availability, and FEN half-move clock (for 50-move rule), pass the availability information to the move generator through the existing interface, and load/save it in the FEN code. [Fixed in 4.3] 150a. Note that not keeping track of ep creates a bug in mate detection. In certain positions, moving a pawn from the 3rd to 4th rank gives mate, but it is not detected because if the pawn had moved to the same position from the 2nd rank, ep capture would have been legal and there would be no mate. [problem disappeared in 4.3] 150b. Note that although we try to put in e.p. availability when writing FEN, this works only if we have the move that got us to this position in the moveList. If we load a position from FEN, the e.p. availability field of the FEN is lost. [disappeared in 4.3] 152. Generate the info file, man page, perhaps html, and perhaps even the WinBoard help file from the same sources. Right now, substantially the same text is duplicated in three places. This is a huge pain in the neck. 157. Idea: if Zippy flags some number of times in a row and keeps getting told the opponent is not out of time (presumably due to timestamp/timeseal), he should issue an adjourn or abort. 160. The xboard CTRL key flashback feature is bad in Analysis mode. Flashing back throws away the analysis. 161. SIGINT doesn't work for local programs on Win32. There is an equivalent, GenerateConsoleCtrlEvent(CTRL_C_EVENT), but I haven't gotten it to work thus far. It seems that WinBoard and the chess engine don't "have the same console"; indeed, neither has a console. 162. Supply a non-X Zippy for Unix. Perhaps use the code from Klaus Knopper. 167. Alternative bitmaps loaded at runtime for WinBoard. [font-based piece rendering provides this functionality since WinBoard_x] 169. Upload Game on file menu? This would upload the current game moves into a scratch examined game on ICS. Could do Upload Position too. Some code to do Upload Game was contributed, but it didn't handle setup positions, variants, checking for proper gameMode, etc., so I couldn't use it. 170. Auto step every k seconds should be a general feature you can turn on at any time, not just in LoadGame. What should GUI be? 171. Displaying thinking in a separate window should be an option available at all times when Show Thinking makes sense, not just in analysis mode. It should perhaps be orthogonal to analysis mode. [added in WinBoard_x] 172. Should analysis window scroll instead of showing only the last line? There could be an extra checkbox to show all chess engine output in it. [fixed in WinBoard_x] 178. Need reliable kill for chess engine on Win32. See also 161. 181. Some people want -sgf to save only played games, not observed and examined games. Others like it to save them all. Make this an option? 183. Search feature in Game List dialog [Igor Eged]. 187. "Log session" feature for ICS window. 193. Some users have reported xboard redraw bugs, but I have not been able to reproduce them on the Digital Unix, Linux, or eXcursion X servers (xboard). c. From Hawk: Dragging in xboard does not work 100%. * The dragged piece may disappear (try some fast e2-d3 movements - this is easy to reproduce). * The dragged piece may be placed on an illegal position (this happens less frequently, but it _can_ be reproduced by doing the same as above). * In both of the above cases, the board is correct after forcing a redraw (ie. minimizing/restoring the window) I'm using eXodus - a win32 X server, perhaps it's buggy. [Seems that way, or just possibly, these could be bugs that are fixed in 3.6.11beta or 3.6.12beta.] d. One user reports: "If you are 'holding' a piece over the square you want to go to and that move becomes illegal but you make it anyway, the display sometimes corrupts and a partial piece appears..sometimes a whole piece." This was under RedHat 6.0. 194. A few users have reported drawing problems with WinBoard. There may be some color map problem on certain displays. I might possibly have fixed this already; I cannot reproduce it. The common thing seems to be black pieces changing to white. This may depend on having customized the board colors. I suspect many of these problems are buggy Windows drivers for particular display cards. (May be worked around in 4.2.0 with reprocessed .bmp files.) a. From mulesmurf: if i log in and then move the board, it will happen that the black [pieces] change to white. c. People have sent pictures where the grid didn't get redrawn. This produces random bits in the grid area from uninitialized memory. Could this be a resource leak? d. From James Van Buskirk: I did notice one problem tonight playing against Comet under FX!32 1.2 (Comet, not winboard ran under FX!32): for a couple of moves winboard didn't turn off the highlighting of the square I dropped the piece on until Comet had moved. Later, the problem fixed itself. Have other users noticed this? [No.] e. One user reports: Lastly, there is some sort of slight bug in the piece dragging code, but it comes up only very occasionally (once in 500 moves?)...basically, I'm dragging, change my mind, throw the piece of the side of the board, and instead it gets stuck not inside a square. It's really disconcerting, this piece just sitting across square boundaries. When you make another move, it gets cleared up and goes back where it's supposed to. [Might be fixed in 4.0.6, but I couldn't reproduce this, so I can't be sure.] f. DAV says: "When I resized the board on win 95 and made it smaller some of the pieces turned into junk (I'm not able to give a screen shot)." Later: "Seems to happen on the three sizes below small. Win98 and NT seem to be ok, trying to get more win95 users to test it." Works fine for me on Win 95... [Might have been fixed by the cleanup of the Windows .bmp's that happened sometime before version 4.2.3] 195. Flash Moves works at the end of every change to the board, using some rather gross code in DrawPosition. This code should perhaps be ripped out and the flashing done from inside AnimateMove instead. 197. More color distinctions. Maybe allow several user-selected channels to have their own colors. 198. More sounds. Some possiblities: distinguish White vs. Black move or your move vs. opponents, distinguish different kinds of win/loss/draw/unfinished (checkmate, resignation, stalemate, other draws, opponent disconnected, etc.), game ends when you aren't playing and/or aren't in ICS mode, differentiate amongst requests (draw offer, etc.), **check, got new offboard piece (by piece type?), opponent got new offboard piece (ditto), arrival notification, "* who has an adjourned game with you," draw declined, moretime received. 199. Maybe put user names instead of White and Black on clocks, or user names above or below clocks in a smaller font. 200. I don't like these ideas, but some people do: a. Highlight all of the squares that the piece you are moving can go to. b. Clicking on the piece moves it immediately if it has only one legal move. c. Allow clicking on the destination, then the source. d. I guess highlight the pieces that can go to that destination. e. Clicking on a destination that only one piece can go to moves it there. 201. mulesmurf: piece counter so we know exactly the score 202. mulesmurf: ziics pieces, board along with color intensity 204. Hawk at Fri May 15, 12:58 CDT 1998: a minor thing with xboard: the coords disappear while dragging from a square with coords on it. [They come back when the drag is finished.] 208. WinBoard sometimes comes up with one of the menu bar items grayed out (one that should not be). I've seen this on different entries at different times. 213. Maybe add Silence to sound menu -- parallel to Monochrome on color menus. 214. Maybe easier startup dialog customize: a. Buttons to add/delete/move(?) current string to/from/within current list. b. Or maybe auto-add newly typed/edited strings up to some limit. c. Also a drop-down for Additional Options. 216. Maybe shorten menu names in WinBoard to one char if and only if the menu bar would wrap with longer names. **217. Easier way to add engines to the WinBoard startup dialog. Ideally, an engine author should be able to supply a simple configuration file or script that installs his engine. "*.wbe" idea. 218. Some folks would like Highlight Last Move to apply only to opponent's moves. 219. From Jorge Monasterio: Support automatic game starts when in tournament. In other words, do that "match bigolfish mann 5 0 black" automatically based on the info sent from mamer. [I would need to play in some tournaments before I could evaluate this idea or fill in the details.] 222. Could support time handicaps. [Added in 4.3] 223. Bug: very long comments cause buffer overflow. Need to revamp the way comments are parsed and returned from parser.l to fix this. 224. Larry Parrish requests: In an automated multi-games match I would like to load the n-th game from the file for the n-th game of the match. [That is, when -mg and -lgf or -lpf are used together without -lgi or -lpi.] [4.3.15 provides auto-increment og game and pos index] 225. From pulp: another bug (maybe with the Microsoft RichEdit control) I've observed is when you flood the edit control it loses the bottom. Eg. "games" will scroll along then start slipping until by the end of the list you are really looking at the middle of the list and have to manually scroll back to the bottom. [May be fixed?] 225a. Resizing the WinBoard ICS interaction window can cause the cursor to be off the screen, which stops scrolling. 226. From pulp: Clipboard persistence. If I copy text, then the text disappears when Winboard is closed. Eg.: Log in, highlight and copy a web page address, close, go to browser, paste *nothing*. [How does one do this in Windows?] 227a. In engine-engine matches, an engine that crashes should lose and perhaps get restarted for the next game. [In 4.3 a crashing engine forfeits the game, but still terminates a match.] 227b. Maybe when an engine playing in Zippy mode exhibits a bug, we should do a little more too. Perhaps "say Sorry, the engine seems to have a bug", resign or abort, and maybe force an engine restart for the next game. **227c. We should also detect and stop the game on false mate or draw claims, rejecting a legal move, or (maybe) missed claims of mate or draw. Note that draw claims require checking for repetition, 50 move rule, and insufficient material as well as stalemate, so this is nontrivial. [Added in 4.3] 228. RichEdit bug: sometimes a line gets indented as if it were wrapped when it should be flush left. **229. Support for sending moves from the partner's game to a bughouse engine. Ben Dean-Kanemura submitted support that works without adding general multi-game support, by relaying the moves without processing them. Should also send holding updates and clock times; not sure if Ben's code does that. Needs to be a new "feature" command option, and to be documented in engine-intf.html, removing the note that this may be done in the future. 231. See Ed Collins's WinBoard bug list on his pages: 231b. If you save an ICS examined game to disk as a PGN file, it doesn't report the end-of-game result in both the header and at the end of the notation. [It doesn't get this info from the server, but maybe there is a way it could.] 232. From Ed Collins's WinBoard wish list on his pages: 232b. Multiple winboard.ini files for different moods, loadable from inside the program. 232c. Fix bug where fics% prompt is not suppressed when using timeseal. This has something to do with a timeseal deficiency whose details I've forgotten, but there must be some way to fix it. 232e. When using the server's "examine" mode to examine a previously played game, have the game clocks display the time that each player currently had after each move was made. 232f. [Not from Ed] Deal with ICC game relays where an "examined" game is supposed to have running clocks. Not sure if this is still an issue. 232g. Customizable on-screen buttons [i.e., toolbar or toolbox]. 232h. Customizable function keys. Currently xboard can bind a key to any built-in xboard function. Should extend this to WinBoard, and also (in both programs) support sending an arbitrary ICS command when button is pressed. 233. See if anything from LightningRulez should be added. Premove is now included (from Winboard Plus), but maybe there are other useful things too. 241. There might still be bugs in xboard and/or winboard when moves come in from ICS during drag animation, though I can't reproduce them. DAV saw the opponent's piece fail to be erased from the source square, if I understood his message right. [DAV says this still exists in 4.2.5. I think bug 426 is a duplicate. The description is clearer there.] 242. User-defined "looking_at" patterns and actions. This is hard to bombproof. **243. "Rematch" shortcut in /cp mode. 246. Maybe auto-close comment window when user goes to the next move. Whether this is desirable really depends on the content of the comment, but maybe it is rare to have a long comment that discusses the plan several moves ahead and should be left up. 248. Would be nice to support retract move after checkmate or draw (etc.). 254. Different tray icons for interaction window vs. board (suggestion from FICS). 256. One user asked for "delete" option in game lists. This requires rewriting the file to close up the hole, so it's pretty heavyweight. Next people will be asking for move, sort, search, and other game database functionality; ugh. **257. Would be nice to find a way to safely implement "retract move" when the engine is still on move. (using ping/pong) **260. General mechanism where engine can declare engine properties that the user can frob and xboard/winboard will put up a simple dialog to allow user to view and set them. See email message "special engine commands" from Steffen Jakob: From: "Steffen A. Jakob" To: mann@xxx Cc: chess-engines@xxx Subject: special engine commands Date: Fri, 26 Feb 1999 09:12:26 +0100 Hi Tim! Here comes a summary of our ICC chat (I cc this mail to the list... maybe other engine programmers can give some feedback if they find this feature useful): Please add a protocol command which enables the engine to tell xboard its special commands. Maybe a set of (label, command string) pairs would be useful. Then create a menu for these commands. It could look like this (that's what I would like to see for Hossa): engine->interface: ------------------ command "Reset the log file" "reset log" command "Save Diagram as PNG" "png dia.png" command "Disable Book" "book off" command "Show Evaluation details" "eval" command "Show Search statistics" "stat" etc. While typing this list I realized that an additional parameter like this would be needed/nice (of course you can think of many more improvements): command "Save Diagram as PNG" "png %s" 1 "1" tells xboard to ask for an additional parameter (here: filename) which will replace the "%s" in the command string. [XBoard 4.3.16 has an experimental implementation of this ide through the 'feature option="..."' command.] 261. Check that "quit" is sent to engine properly if ICS connection fails to open due to error from timestamp/timeseal. "wzrdking" had a case where it didn't. Timetamp had failed with "Host name not found by name server" (because in fact there was no internet connection, arrgh). 273. Displaying the names of the players from a PGN file in the header of the window does not work if there is only one game in the file. The filename is shown instead. (This was intentional, but maybe a poor idea.) 274. Command to go to move number N, with entry box for N. 276. Make grid optional in winboard? Note that the highlight options don't work without it. [The Winboard_x -overrideLineGap option provides this.] 276a. Make color of grid an option, instead of always black. 277. Flooding xboard -zt + timestamp with tells hangs timestamp after a while. xboard is blocked writing to the timestamp pipe. timestamp is in an unknown state, not reading from the pipe nor responding to pings. (Confirmed with the software running on milwaukee, Red Hat 5.2) 278. Flooding winboard -zt + timestamp with tells hangs winboard after a while. timestamp still responds to pings. This reported by nudnick; I haven't tried to reproduce it yet. He also says that windows explorer then crashed when he tried to close winboard. 279. Idea from an anonymous ICSer: piece drop menu could have images, not words. [Or maybe both?] Also might be easier to select accurately from it if horizontally arranged, or in a 3x2 grid. [Now 4.3 has drag & drop, piece-drop menu should be deprecated] 284. dxterm hangs when it receives the escape sequence that sets the title bar on xterm. I think some other xterm substitutes do too. **287. WinBoard can look funny if you are using themes because it unconditionally uses white for certain colors instead of the default background. 289. Merge WinBoard support for the Henter-Joyce JAWS screen reader. Source code (zip file containing modified WinBoard 4.0.2 source) is at ftp://ftp.henter-joyce.com/users/hj/winboard/WinboardSource.exe. It would be interesting to make this work with festival (free Unix speech synth) or other speech synthesizers too. 290. Could have limited voice output without a speech synthesizer by playing wav files for piece names and square numbers. Idea suggested by Hannu Wegner. 291. Would be great to support DGT, Novag Universal chessboard, etc. I'm not likely to fork out the cash to buy either for testing, however. Note users have done various things along these lines. 292. When an engine is analyzing, it would be cool to have a way to automatically play out its current PV (or even older ones) on a board. These PVs could be saved as variations when we have variation support. 297. Windows users expect all programs to have a Print function, even though there are other ways to print. Useful items to make printable: PGN game scores (which are plain text, of course), maybe FEN position diagrams, maybe graphical position diagrams (i.e., same as pressing the "Print Screen" function key and printing the clipboard). 298. One user suggests that automatic move stepping should not start until you press OK in the tags window. This could be a good idea, but I think I'd rather have automatic stepping never start until you press a "play" button on the main window, and have that button always available, not just when loading a game from a file. 299. One user suggested being able to jump to a specific move by typing its number (followed by ... if it's to be black's move). 300. Can I put a hyperlink (that will invoke a browser) directly onto the WinBoard Help menu or in the Help file? Useful to take users to my chess page. 302. On NT, check if the board is redrawn properly when exiting from the screen saver. 308. There is some tricky way to maximize the WinBoard board window, although there isn't supposed to be. Maybe prevent this, or else legalize it and make sure something reasonable looking happens. Note: the trick is to select one of the "tile" options on the Windows task bar. Not clear what should happen in this case. 309. Avoid endlessly flagging every second when opponent is lagged out and autoflag is on. Automatically courtesy-adjourn (or abort if unrated) instead, at least if in zippy mode. 310. Weird bug: the last character of a FICS output can appear on the next line, *after* the fics% prompt, according to one user. I might have seen something like this myself once too. 314. One person wanted his engine to see tells when running in Zippy mode. I doubt this is generally useful, so I haven't added the code I wrote for him. (I can query for "tellfrom" in my mail file to find it.) 314a. Another person wants his computer account to relay tells to his personal account. 319. One user would like to be able to reload a PGN file and resume a game against an engine as if after an adjournment, with the clocks (and moves to next time control) restored as they were when the game was saved. 320. Display ratings of ICS players in the title bar (if there is room, presumably), or somewhere, anyway. 321. Maybe refresh the EditTags window if the gameInfo changes and the window is up. (WinBoard now does this when entering MachineWhite, MachineBlack, or TwoMachines mode -- not very general. From Winboard Plus.) 322. One user requested that Zippy games use the engine name instead of the ICS handle in the PGN tags, as he uses multiple engines on his account. (My response was "I'd say it should give both"; not sure just how to do that, though.) 324. I'm told that Blitzin supports animated dragging without holding down the mouse button and that this is "much better" and I should try it too. As yet I haven't. 326. Full support for variants and variant-capable engines in all modes, not just ICS mode. Here are some items still needed. Some if not all should probably wait for a rewrite, not be added to the current code base. [4.3 supports many variants, even those not supported by ICS. Not bughouse, though] 326a. Menu to let you see and change the current variant type, not just a command-line argument as at present. [Added in 4.3] 326b. crazyhouse: Keep track of holdings and display them, keep track of what onboard pieces are promoted so they will revert if captured, understand offboard interposition to stop mate. [Added in 4.3, (not sure about the interposition)] 326bb. One user asked for a Czech variant of crazyhouse where pawns are given to the opponent when they reach the 8th rank (after capturing, if it's a capture) instead of promoting. 326c. bughouse: Features in 326a would be helpful for editing one board of a bughouse game, and getting mate indication right even in ICS mode. In the longer term, could understand BPGN, support editing two-board games. 326d. wildcastle: Allow wildcastle castling only when playing this variant! Maybe support automatic shuffling for local play. [4.3 adds shuffling for any variant played locally] 326e. nocastle: Maybe support automatic shuffling for local play. Note that several types of ICS shuffle chess fall under this variant. Note that this isn't really a variant, since if we kept proper track of castling rights and used "setboard FEN" or the ChessBase extension of "edit" to set them, it could be treated as normal chess with a different starting position. 326f. fischerandom: Maybe support automatic shuffling for local play. Support castling. Currently, you can probably play Fischer Random successfully on ICS by typing castling moves into the ICS Interaction window, but they will not be animated correctly, and saved games will not be loaded correctly if castling occurs. FR castling is problematic because the move cannot be specified by the starting and ending coordinates of the king; in some starting positions there is a legal non-castling move that moves the king the same way. This violates a deeply ingrained assumption in the implementation. It also breaks the GUI -- you need more than just dragging the king two squares to indicate castling. (Note: In FR notation, O-O is h-side castling, O-O-O is a-side. See "help fr_rules" and "help fr" on FICS for rules.) [All fixed in 4.3] 326g. kriegspiel: Could give some thought to how to support a kriegspiel engine. I doubt anyone will ever write one, though. 326h. losers: Know that captures are mandatory. Understand the win condition. 326i. suicide: Know that captures are mandatory. Understand the win/draw condition. 326j. giveaway: Know that captures are mandatory. Understand the win condition. 326k. atomic: Understand the win condition. 326l. 3check: Understand the win condition -- ugh, have to keep a check counter! 327. Option to set the coord font color (or something) to make sure there is always enough contrast with the square colors. 329. Bernhard Maerz would like a command line option to choose the PGN player name for an engine, overriding the default of generating the name from the engine filename. This is for his ChessCall program. 331. Maybe the local autoflag menu option should *also* turn server-side autoflag on/off by sending an appropriate set command. **332. Bug: Autoflag for local engine/engine or engine/human matches does not recognize that having your flag fall when your opponent has insufficient mating material is a draw. It counts the flag fall as a loss. [Partly fixed in 4.3, which corrects any kind of losses against a bare King to draws.] 336. Of course lots of people ask for a graphical seek window. 339. There are probably some incompatibilities with chess.net, as they have made a few gratuitous changes to message formats from the FICS code base they started with, and perhaps they've added features since without duplicating the syntax closely enough. In particular it's been reported that Zippy does not correctly send "partner" and "variant" commands to bughouse engines on chess.net. Also, I doubt colorization works. As a matter of personal choice I do not spend any of my time supporting chess.net, but if others want to donate patches that allow chess.net to be supported without breaking the support for ICC and FICS, I am willing to install them. 342. Analysis mode automatically turns on the Show Thinking option; the user must then turn it off manually after leaving analysis mode if he doesn't want it. 343. Would be nice to change xboard keyboard shortcuts to not be plain letters, make the new shortcuts work also in the ICS input box, and make typing plain letters to the board redirect to the ICS input box or the xterm. Might want to change/remove the Ctrl binding at that time. 344. One user suggested having a way to save a position as a character string that would produce a board diagram when rendered in MS Word in a chess font. Perhaps there is already a nice standalone tool for this, though? 346. Could use a better way to pick default size. Now we choose the largest that fits on the screen, which is typically too big. Not too bad for WinBoard, but painful for xboard since it can't be resized after starting. 349. Check that "quit" definitely makes it to the engine before exit, if you exit via the File menu while a match is running. Uli Tuerke reported that maybe it sometimes doesn't (in WinBoard 4.0.5). 352. Perhaps recognize the ANSI escape sequence that FICS sends out for the cls command and clear the ICS interaction window. **353. WinBoard can crash when the engine outputs very long PV lines (or debug output that looks like a PV). In particular, lines that start with 4 or more blanks following a "thinking" output line are treated as continuation lines, and get concatenated into a 512-byte buffer with no checking for overflow. Generally we need a lot more care to avoid buffer overflows inside both xboard and WinBoard. [Note: changed the buffers to be 5120 bytes as a band-aid.] Guido Flohr expands on this bug: The problem is easy to reproduce, simply write a program/script that spits out lines of more than 8192 bytes (INPUT_SOURCE_BUF_SIZE) and connect it as a chess engine to xboard. No surprise, xboard cannot handle such long lines, but the resulting behavior is really weird: The program enters DoInputCallback() in xboard.c, reads the first 8192 bytes, searches for a linefeed in vain, then closes its eyes, sets the member "unused" of the InputSource to is->buf + 8192 and waits for more input although the buffer is already full. The next time it calls the same function, is->unused is exactly these 8192 bytes away from is->buf, xboard computes the amount of bytes to read in this round, which sums up to 0 nothing. It then calls read(2) with a bufsize argument of 0, and then assumes end of file when the kernel call returns 0 (which is the documented behavior). For local engines, we now jump into backend.c, ReceiveFromProgram(), and this function reports that the engine has exited unexpectedly. In fact the engine is still very vivid, which is good, because in spite of xboard's assumption that its child has died, it still sends "force", "ping N", and "quit" to the false dead. If the child was really dead, the alert boxes "error writing to ... engine" would hide the first alert box "... has exited unexpectedly". From xboard's side, it is not exactly clean to call read(2) with a zero bufsize argument. In my opinion, a sane solution would be to eat the INPUT_SOURCE_BUF_SIZE bytes, and when they contain no linefeed, print the partial line to standard error (in debug mode) and report something like »Maximum line size exceeded« (and then kill the engine). **354. We currently let the user go directly from TwoMachines mode to various other modes like MachineWhite or MachineBlack. This may confuse the engine that was on move, since we don't have a way to force it to stop before it makes the move it was thinking about. (use ping/pong to know when the engine has stopped) 355. Idea from LiveAndLetDie: have Zippy specially log games where it loses to a substantially lower-rated player. Such a game could indicate an xboard bug, engine bug, or perhaps a computer-using cheater. 356. Colorization for FICS tourney tells? They look like this (ugh): :DChessmaster [tourney #4]: :hi 357. A few reports of WinBoard pieces being drawn incorrectly at certain sizes. I haven't reproduced this. [Maybe worked around in 4.2.0. Or is/was this the same as 194f? I don't recall the details.] 358. One report of WinBoard colorization not working, even after restart, until the computer was rebooted. Weird. 362. Running a very long automated match (/mg option) seems to crash WinBoard eventually, usually after 300 to 500 games, sometimes later. Reported by Josh Haglund. Gets a "WINBOARD caused an invalid page fault in module KERNEL32.DLL" dialog box from Windows. See messages from Josh for examples of the registers and stack dump. 362a. A few people have reported WinBoard crashing upon exit. 363. Maybe xboard should not set the window geometry for new popups, or at least not the position. The default positions aren't very good, and setting them programmatically keeps knowledgeable X users from customizing the positions with X resources. 366. Feature to let an engine observe an ICS game and run analysis mode on the moves, perhaps whispering or channel-telling the results. It's a little too easy to cheat with this feature or I might have added it long ago. [Added in 4.2.8 and 4.4] 369. Optionally send a periodic keepalive command to ICS. Can be used to defeat autologout, so should probably not be on by default. Also should be useful to help Zippy notice more reliably when its connection has hung, so that it can exit and a shell script (batch file) can restart it. 370. One user requested a local noplay list for his computer player because the FICS limit of 50 is too small. He wants several hundred so that he can noplay everyone who disconnects in a lost position. 374. Would be good to have a way to change engines without restarting the interface. 376. WinBoard is said to crash or "lock up" when loading enormous PGN files, like a 98 MB file that comes with (??) Crafty. Win32 (at least in the Win95 lineage) has a limit of 32,767 items in a list box widget. That might explain this problem. 376a. xboard exceeds limits in X and/or Xaw if a PGN file has too many games. (The virtual window that the list box can scroll through becomes too many pixels high.) This has odd effects; the window height of the game list seems to get reduced mod 2^16 or something. Maybe detect this and do something nicer about it, like stop loading when the window is full and pop up a warning. 378. One Solaris user didn't have the "strip" program, so the install-sh script used by xboard "make install" failed. Check for this? Yuck. 381. "Illegal move: post" is apparently not handled. Should it be? 382. The UI for entering Training mode is a bit obscure: you must first select Load Game, then Training becomes enabled in the upper (!) part of the Mode menu and you can select it. You can then select it again to toggle it off. This mode is something like Analyze File (which has a problematic UI too, but somewhat less so); both should probably use a similar UI style. I consider disabling the step-forward button to be overkill, and I think you need to manually turn off auto-step when loading a game (?). One user expected it to work with .epd files that give a position and a recommended move. That seems reasonable, but doing it would require quite different code from the current pgn-game training mode. 383. Premove piece drop for bughouse/crazyhouse. 384. Pre-first-move for xboard. I don't much like the fill-in field method used in winboard. Maybe allow a move to be made for white before the game starts (in both xboard and winboard). If you get black, it's cancelled. Black can already premove after the game starts, during white's first move think time, so I don't see that a black pre-first-move is needed. **387. Have winboard draw opaque details on black pieces too. Hmm, this should probably be optional, and the detail colors should be selectable instead of hardwired to the opposite piece color. [The 4.3 -allWhite option goes in this direction. Details always in black, though.] **387a. Add "no piece border" option to WinBoard. See code from Robert Jurjevic sent 4/9/2001. 391. I have a bug report from Stefan Zipproth about engines sometimes failing to make their first move in an engine-engine match. So far I can't reproduce it. This might be fixed by the Sleep(500) voodoo in 4.2.4. 394. See about tightening matching for the "request" event. Right now it matches on help files a bit too often. (e.g. FICS "help sr_info") **Also clarify documentation on what the request event is. 396. xboard's -size defaulting code for bitmaps unfortunately always picks a size from the built-in list, even if you gave the -bitmapDirectory option. It would be more user-friendly to have some extra code that lists the directory and considers exactly the sizes that are found there, as the pixmap code does. 397. It would be nice to be able to configure xboard with bitmap pieces as the default without having to disable xpm support entirely. This should be a pretty simple mod to configure.in (and xboard.c). 397a. It would be very nice to be able to compile in both the bitmap and pixmap pieces. This would allow us to automatically switch to bitmap pieces in -mono mode, including when -mono mode was automatically selected because too few colors were available. 398. It would be nice to have the new .xpm pieces in .xim format too, since I restrained myself from ripping out the .xim support. 399. It would be nice to have a configure option to change the directory where the default piece set is taken from. Slightly nicer than having to rename the desired directory to "bitmaps" or "pixmaps" as at present. 400. TypeinMove should be grayed in ICS mode, or should raise the console window, or something. 402. Internationalization. It probably isn't practical to retrofit this into the current code base. [4.2.8 and 4.4 have international- ization of xboard.] 409. One user requested a way to put a time delay in the middle of sending zippyGameEnd commands. This would (for example) let the computer do a seek only if its opponent doesn't accept a rematch within 10 seconds. Nontrivial because Zippy has to continue to listen to input during the delay; it can't simply call sleep(). Maybe ScheduleDelayedEvent is OK, but I think it may already be in use in this situation, and it only supports one event at a time. 411. Add zippyKibitzThinking and zippyWhisperThinking features? [4.3 has an -autoKibitz option] 412. Maybe optimize setting the move list in the case where only the current move number changes; avoid slow XawListChange. **413. Add movelist window to WinBoard too. Wilkin Ng submitted a patch that I believe includes this; need to integrate and test it. **415. It was suggested that a few common options that many chess engines need be promoted to xboard/WinBoard options so that the user can set them from the GUI in a uniform way. In particular: hash size, directory name for endgame tables. [4.3 has extended WB protocol with a memory, egtpath and cores command.] **416. Can we avoid dying when xboard is in 8-bit mode, pixmap pieces are chosen (by default), and we can't get enough colors? Ugh. **419. It was suggested that stat01 be generated/accepted during normal play with "post" on, not just during analysis mode. This would need to be a "feature" command option. 422. Track FICS change to details of how timeseal works; is this implemented at FICS yet? 423. When locally stepping through an ICS game that is over, it would be nice to display the historical clock times at each move. 424. DAV at Thu Nov 9, 01:20 CST 2000: any chance on winboard/xboard of a key press and a move executing draw ? that way you at least have a chance of claiming a draw in 1 0. **426. DAV says, in xboard: If you are not on clock and you hover a piece over a square where your opponent then moves to and then move the piece away the piece the opp moved or part of it has not been drawn. [Duplicate of bug 241?] 429a. Check whether more support is needed for WinBoard to work with scroll wheel mice in the absence of special mouse drivers that generate scroll bar events directly. 431. People find Analyze File confusing; they think it should do Crafty's relatively new Annotate function. Also, it's somewhat superfluous now that you can enter Analysis mode and then load the file, or vice versa. **436. WinBoard is said to crash if started while WinBoard.debug is being tail -f'ed. **441. Can I prevent an undo after new in the odd case where it can happen now? See mail from Bob Hyatt. 450. Suggested: an option to let an engine keep pondering while an ICC game is adjourned. This seems a bit difficult. 451. Suggested: support SuperMamer messages on FICS, aka qtells. See http://www.freechess.org/SuperMamer/parsing.html. 452. Suggested: a way to say "prompt for the password" in a login.ini file. See 510 instead. **454. Add a way to claim a draw together with making a move, as can be needed for draw by repetition (creating the 3rd repetition with the move) and by the 50 move rule (the move is the 50th). Add to protocol, and implement using the individual methods on FICS and ICC. Need to be sure it's really a FICS that has the feature (somehow). [Fixed in 4.3 by usng 'offer draw' for this purpose] 455. Suggested: Add the epdkit commands such as epdpfga to the protocol, since Crafty and "many" (which?) other engines include the epdkit. **456. Bob Hyatt suggests: "feature match=1" which says "send match requests to the engine and let it decide on who to play next". I.e., maybe send an abbreviated but fixed format message like this: match time inc R/U. The engine would use "tellics accept " to accept. Add as feature to protover 3. **457. Standardize on the meaning of scores (e.g. in stat01 responses). Is positive good for white or good for the engine? Do certain scores mean forced (tablebase) draw, or forced mate in N? This should align with the EPD spec. Maybe a feature command should indicate that the engine matches this part of the spec, but then again, it's not clear what we can do about it if the engine doesn't give that command, so maybe there is no point. See discussion on chess-engines list. [Winboard_x adds an argument to tell WinBoard an egine uses absolute scores] 458. Bug: xboard will try to use an engine to play normal chess even if the engine has given the feature variant command and did not include "normal" on the list. Crafty 18.1 inadvertently relies on this bug, so it probably can't be fixed right away. **468. Need to look at Wilkin Ng's contributions! **469. Look at Zippy's behavior if the operator observes, follows, examines, etc. Some bugs in this area have been fixed, but it's received very little testing, as Zippy was never meant to be used that way. Noted later: Examining in -zp mode definitely has problems. If you go forward one move at a time, moves are sent to the engine correctly. If you go backward one move, "undo" is not sent to engine as it needs to be. Going forward or back by more than one move at a time needs to be looked at too. **471. Look at 3/17/2001 message from Laszlo Vecsey about crashes when exiting on Win ME while data is coming in from the server. **473. Visual low-time indicator. See patch in Brian Mays message of 3/27/2001. **474. Crash reported when sending certain 8-bit characters through WinBoard (180, 167, others). I'm almost certain this is a FICS timeseal issue and nothing to do with WinBoard itself. **475. Look at Laszlo Vecsey's mousewheel patch of 4/10/2001. 476. For some reason (I guess some GUI supports them), most WinBoard engines now have a graphical logo, 100x50 pixels in Windows .bmp format. It's been requested that WinBoard have a place to show the logo. [4.3.16 supports logos] 477. Implement the "book engine" idea I proposed in the protover 3 discussions. Some folks have offered to write them (e.g., Bruce Morland). [4.3.15 supports a GUI book, which is another way to acheive the same, as the only thing that would distinguish book engines is their book, not what they do.] 478. Recognize URLs in the WinBoard ics interaction window and make them work as hyperlinks (firing up your browser). **479. Possibly use Scott Gasch's 7 May 2001 patch to delay accepting challenges when ping > pong instead of declining them. Bug: if you get more than one challenge, Scott's patch forgets about all but the last one. If that guy then withdraws his challenge, the others are left in limbo, neither accepted nor declined. I suppose we could decline challenges when there is one waiting. However, if we make the change to optionally pass match requests through to the engine, Bruce Moreland would like us to queue up challenges and pass them all on. 481. 8 May 2001, Bob Hyatt "matchscore" feature suggestion could go in protover 3: "matchscore A B C D E says we are in a match, this is game A of B games. The current match score is I have won C, drawn D, and lost E games in this match. This would give the engine a chance to adjust the draw score as needed to try to win the match rather than just trying to win a single game." **482. Suggestion from Bruce Moreland: if the user goes into ICS examine mode while -zp is active, and the engine supports analyze, then put it into analyze mode and let it work on the examined game. I guess this could work for observed games too. Should it be optional or always done? [4.2.8 and 4.4 support analysis in zippy mode, but as yet only while observing games.] 483. It would be nice if the KingShine 3D board could be integrated as an alternative xboard GUI rendering. **484. Add -feature1 and -feature2 options to pretend the engine sent us those feature commands. Useful kludge for certain buggy engines. 485. Add "reset" to protover 3. (Clear the hash tables and other such info; used to put the engine into a known state before running a test/benchmark position.) [the WB 'memory' command could be defined to have this side effect? Normally we would have to clear the hash table when changing its size.] 486. Other protover 3 features listed in my 6/21/2001 message to chess-engines list. Write a full protover 3 draft for comment. [Note that 4.3 already uses protocol extensions that differ from the v3 specs.] 487. Adjudicate non-ICS games as a draw when there is insufficient mating material on both sides, especially engine/engine games. Well, maybe. I argued against this in a 6/26/2001 message to chess-engines. [Added in 4.3] 487a. Probably also adjudicate when we detect checkmate or stalemate, before bothering to notice whether the engine detected this. [Added in 4.3] 487b. Note: Do not adjudicate 50 move rule or 3x repetition since those must be claimed by a player -- at least not by default. It would be OK to have a flag to do this someday when we are smart enough to notice it. Would definitely be good to be smart enough to notice an incorrect draw claim by an engine. [In 4.3 you can set the number of moves or repeats after which draw is adjudicated] 487c. Another request: allow the operator to adjudicate engine/engine games. [Winboard_x provided menu items for this.] 488. Option to suppress tags popup on game load? This has been requested a few times, and I received one partial implementation (not enough to be useful). Needs to be on the options menu, etc. Note conflict with 298 above. 488a. Also option to suppress comment popups. 489. Maybe have Zippy use xtell for tells to avoid redefining "." if the operator is also doing tells. Do all ICSes support xtell, though? 490. Bruce Moreland request: a way to turn Zippy auto-accept on and off dynamically. 491. Bruce Moreland request: a defined way to turn on/off PV (etc.) kibitzing from the engine dynamically. I had thought it would be better to make the GUI able to relay thinking output as kibitzing on its own (and be able to turn this on/off dynamically), but Bruce points out that what engine authors want to send as kibitzing output usually includes more than the PV thinking output. [Note that engines can put whatever info they want in the PV field of the thinking output]. 492. One user reports that GNU Chess 5 crashes if you start a game, play far enough to get GNU Chess out of book, select Reset, and play e3 in the new game. This is probably a GNU Chess 5.00 bug, unrelated to WinBoard. Can't reproduce on Linux; didn't try yet on Windows. Need to see if 5.02 fixes it. 493. DAV suggests stripping off first arguments that are obviously not the name of the engine when trying to parse out the engine name from its command line -- things like nice, nohup, sh, csh, bash, etc. Ugh, but I suppose it would be helpful sometimes. 494. Internationalization. A couple of people have done (or told me they were doing) partial conversions of WinBoard to German or Spanish by manually translating the messages. I think it would be much better (but a big job) to use GNU gettext. I haven't looked into the details of that at all. [4.2.8 and 4.4 have gettext support.] 495. JamesBaud points out that FEN is not sufficient to correctly represent a crazyhouse position (or bughouse, for that matter), because it does not distinguish promoted pawns that will revert when captured from real pieces. ICS style 12 also does not give us this information. I really don't know what I could do about this -- take the lead in proposing an extension to FEN and to style 12 with new piece letters, I suppose. I don't really have time or motivation for that. If you always use PGN, not FEN, to save Crazyhouse, that works around the problem. [4.3 uses bFENs which fix this, but not in ICS mode] **496. DAV sent some code to save a screen shot in xboard. Look at merging this in. [4.3 has an option to save the board display (but not the entire window) as bitmap.] **497. Igor Eged reports: I make a move on opponents time using premove. Right in the time I am holding another piece in case of unexpected check that I can have other possibility. But then the piece hangs in the void and its invalid move, what means often loss in 1 0 lightning. 498. It would be nice for Zippy to be able to play ICC wild 20 and 21 (the types where loadgame is allowed). Presumably there would have to be an option to either send the loadgame command with a specified position, or to deal with an opponent sending it. I'm not sure how this should work exactly, or how to prevent opponents from cheating in various ways. 499. It would be nice for Zippy to be able to switch amongst several different engines depending on which variant type is being played. 500. It would be nice if Zippy could have an option to accept takebacks. Hmmm, also, the operator might want to manually offer a takeback; it would be good if that worked. 501. People would like to be able to add more bot functionality to Zippy without C programming. I don't have any ideas on how to do that. 502. One user requests the ability to have a game list file open for more than one PGN file at a time. 503. We don't do protover 2 feature negotiation properly when restarting an engine due to -xreuse mode. The timeout and done=0/1 features don't work on the restart; instead we basically assume that all the features will be the same as last time and that the engine will be ready to accept commands immediately. This probably doesn't cause a lot of problems, but if you try to replace the engine with one that sets different features, the changes might not be noticed before the first move, and the defaults will be the values from the old engine, not the documented defaults. Also, if the engine takes time to initialize and wants us to wait to send commands until it says done=1, we fail to wait. However, we do send commands in the right order and use ping, so most engines should work fine. 506. One user wants a board size even smaller than Tiny. 507. Suggested: have the cursor change to a gripping hand while moving pieces. Currently in WinBoard it's always an arrow, while in xboard it's always a hand with pointing finger while over the board and an arrow elsewhere. 508. It would be nice to make -xclock work with -ics, just for orthogonality, though it's not terribly useful. 509. It would be nice to make -clock work with -st. Perhaps each player's clock should start with the specified time on each move and count down until he moves. **510. A FICS service rep tells me that many users expect an autologin feature in winboard (other than the non-user-friendly login.ini file). Seems easy enough to add such a thing. 512. Some users dislike the clocks counting in tenths when below 10 seconds, as it's distracting, and would like this to be configurable. (From the Debian bug tracking system.) 513. Perhaps have Alt+P and Alt+C as synonyms for Pause in WinBoard, since the P or C on the button makes it look like that should be the shortcut. I suppose Alt+< and Alt+>, and the same with Shift for << and >>, would also be a good idea. Oops, but Alt+C is already CopyGame, so maybe this is a bad idea. 514. Gian-Carlo Pascutto reports: "when pasting a FEN/EPD position into WinBoard, and selecting analysis mode, the engine analyses the starting position instead of the pasted one. Re-pasting fixes this." 515. Troy Edwards suggests: "It would be nice to have the option to 'wrap text' in the comment window." 516. DAV says: "FICS now supports the setting and the making clocks tick using unpause/pause in examine mode. It seems either the clocks don't tick or are not present when using xboard. Is it possible to change the policy and base things upon the clock is paused flag in style 12?" 517. Clarify in engine-intf.html that "sd" is an extra dumbing-down feature, not a time control. Some text: In the protocol, the "sd" command isn't a time control. It doesn't say that your engine has unlimited time but must search to exactly the given depth. It says that you should pay attention to the time control as normal, but cut off the search at the specified depth even if you have time to search deeper. If you don't have time to search to the specified depth, given your normal time management algorithm, then you will want to stop sooner than the given depth. The "new" command should set the search depth back to unlimited. This is already stated in the spec. The "level" command should not affect the search depth. As it happens, xboard/WinBoard currently always sends sd (if needed) right after level, but that isn't part of the spec. [Added to the specs that go with 4.4] 518. Warn in doc that -initString is a dangerous feature. Also move doc of dalogs for sending commands directly to the engine out of the protocol spec and into the man page and help file, but warn they are dangerous too. 519. In engine-intf.html, change "st" description to not use the word "exact", which is misleading. Make sure it says this is the maximum time per move (and does not accumulate). 520. Check whether Alt+C (CopyGame) works in XP. One user says it gives an error message. 522. engine-intf.html should really be rewritten to describe the protocol as a state machine (on each end), with every command precisely defined as to what it does in each state (including perhaps being illegal). 523. Figure out what, if anything, to do with the FICS "iset singleboard". I lean toward not bothering to set it, as it only disables functionality, but maybe I'm confused. 524. theblob at Mon Mar 4, 23:23 PST 2002: it'd be nice in the xboard interaction window if control-w and control-u respectively erased the line and word, even in a Windows environment. At least, I think it'd be nice. 525. Support a 64-bit node counter in analysis mode when compiled with something that has 64-bit integer support. Both gcc and msvc++ have this, though under different names. [Done in 4.2.8 and 4.4] 526. "-initialMode analysis -lgf -" doesn't get the engine into analysis mode properly. "-initialMode analyzeFile" is a workaround, but bug should be fixed. 527. Clarify ICS.ini more in the doc, if possible. Some sample words: > You should create this file in > WinBoard's directory (usually C:\Program Files\WinBoard) using a plain > text editor such as Notepad. Make sure that Notepad doesn't decide to > call the file ICS.ini.txt for you -- you may have to select "All > Files" instead of "Text Files" in the Notepad save dialog. > > The file is simply sent to the chess server, just as if you had typed it. > So if your username is foo and password is bar, the file would look > like what is between ==== below, without the ===='s: > > ==== > foo > bar > iset movecase 1 > ==== 528. Check on updates/revisions to PGN from Steven Edwards and others. Any support needed? 529. Protover 3 needs a prefix character that says "this is debug output" and prevents the GUI from parsing that line (say ";"). [4.3 uses '#' for this purpose, when the engine sets feature debug=1] 530. The undocumented (?) checking for rsh error messages tripped up one engine author who had a "not found" in a message. Tighten this up. 531. Do we always wait for pongs to catch up with pings before starting the engine's clock? I suppose we should. 532. On FICS the clock does not start until after the first move has been made. So perhaps we don't need the "not ready, try again soon" response from Zippy there. What if Zippy is black, does black's clock also not start until he makes his first move? 533. theblob at Mon Jun 24, 20:05 PDT 2002: here's a suggestion for xboard -- give priority to fitting in amounts of material in the title bar, and truncate names instead, e.g., use "tyrionsAp...(50) vs. woden (51)" rather than "TyrionsApprentice (50) vs. woden..." -- it's much more important to see the material than the full names, especially when you're playing. 534. Steffen Jakob reports: "I use xboard 4.2.6. Yesterday I played some bullet games at ICC. In one game I lost on time. In the last move I already clicked on my queen and wanted it to move to its destination square when I forfeited on time. After that my mouse pointer was the queen piece. I couldnt drop it to any square." 535. For protover 3, the "st" command in the protocol could be extended to allow for smaller units, not just seconds. 537. Clarify in the protocol that "force" while searching means you should stop the search as soon as you can. (Isn't this clear already?) 538. Need a way for the user to adjust the clocks. This is important for WCCC and other computer competitions, where xboard/winboard's clock is not the master. I was going to do it in time for the July 2002 WCCC. Oops. [4.3 allows adjusting the clocks by clicking them in 'edit game' mode, in steps of 1 minute] 541. Related to #327, John Iverson says, "It would be nice to have the coordinates shown outside of the board along the edges, rather than in the squares where they are hard to see and give a cluttered appearance, especially on smaller board sizes. (The coordinates can be handy in certain situations, such as posting a screenshot of xboard showing an email game in progress, with the view flipped.)" 542. If you start xboard with the -geometry NxM option, it will dutifully make the window exactly that size, but it doesn't choose a -size option that fits into such a window size, so the board is cut off or has a lot of whitespace around it. In fact, the layout is generally messed up because the code doesn't expect the window to be the wrong size for the layout. We should at least ignore the size part of the -geometry option if we aren't going to do something sensible with it. How is that done with Xt? 543. See the patches and extensions on http://www.tim-mann.org/extensions.html#patches and integrate those that are worthwhile into the main code base. (Some are also mentioned elsewhere in this ToDo list.) They are pretty much all over 15 lines, so copyright assignment from their authors is needed. Unfortunately some of the authors may be hard to reach. 544. Possibly rework looking_at pattern matching to have a "match at beginning of line" character (perhaps ^). It looks like this may actually be useful after all. The historical cases where you could get a board or other output that needs parsing on the same line as a prompt *may* have been fixed. Confirming this would need testing on all the ICSes that are in use. 546. Odd bug reported by travelGirl. The last line of a multi-line macro from the ICS context menu sometimes "sticks" at the bottom of the ICS interaction window. New text gets inserted before instead of after it. This started when she upgraded to win2k. See mail. 548. Guido Flohr reports: Another "not really a bug" problem: When xboard forks in order to start a second chess engine, it is only concerned about duplicating the descriptors for the standard channels in the child. This is very interesting for the second chess engine, since it inherits the pipes to its opponent, and can use them for sending commands like "sd 2", "easy", or even for feeding a bogus FEN string into the first engine (exchanging the opponent's queen with a bishop looks really attractive to me). A very interesting feature, but not exactly what you intended? ;-) Closing the other descriptors after the fork will not completely avoid the problem, since - at least under Solaris and Linux - it is still possible to peek and write into xboard's open descriptors via the /proc pseudo file system (unless you make xboard setuid root), but leaving them open, makes this cheat very obvious. 549. "Ron" (no last name given) reports that when compiling WinBoard under VC++ 6.0, there are many warnings. These ought to be looked at. 551. "Miguel" (no last name given) reports "When you make a premove in Winboard 4.2.6, and then opponent move and premove is illegal, then and you try to make a legal move but you cannot, because piece are erased and you have to replace your move again, move twice... in lightining this is annoying." I'm not really sure what that means or if it is the same bug as 497. 552. Get rid of the need for proprietary tools to build WinBoard. It's already possible to compile winboard.exe using the Cygwin toolchain. You can even compile it with -mno-cygwin to avoid the need for cygwin1.dll. However: 552a. The Help file needs Microsoft Word to edit the source file winboard.rtf and the Microsoft Help Compiler to compile it into winboard.hlp. I tried using OpenOffice.org on the RTF file, but the result was missing some formatting that the help compiler needs. The help compiler itself is a free-as-in-beer download, but it's still proprietary software. Perhaps the help could be converted to vanilla HTML, at the cost of losing the index and search capability. 552b. The WinBoard installer package is built with InstallShield. Possible replacements: Inno Setup (http://www.jrsoftware.org/isinfo.php) - looks best NSIS (http://nsis.sourceforge.net/site/index.php) Cygwin setup (http://www.cygwin.com) - a long shot 552c. Although the cygwin resource compiler works on winboard.rc, it's a pain to create new dialogs by editing the text file. The original ones were all created using the graphical dialog editor in MSVC 5. 553. It would be nice for xboard's ICS Input box to have a history feature similar to WinBoard's ICS Interaction window. Actually it would be nice for xboard to have its own ICS Interaction window with all the bells and whistles that WinBoard's has instead of limping along using an xterm for interaction. **554. Port evaluation-graph window to XBoard. 555. Split x/wengineoutput.c in a front-end and common backend file. 556. Fix -stickyWindows option under XP and Vista, and port to XBoard. 557. Port display of engine logos to XBoard. 558. Device a smart way for -autoLogo to select logos in other modes than Two Machines. * * * Before each release: - make sure both xboard and winboard build and are up to date with each other - run zippy with new version as a shakedown - be sure gnu5 binary is up to date in winboard, and gnu5 patch (if needed) is included in both xboard and winboard kits - recheck cygwin compiling winboard - make sure ChangeLog is complete - test changes *** up to date with mail received through 5 Nov 2003, except for the "protover 3" discussions on the chess-engines mailing list ***