changes from H.G. Muller; version 4.3.14
[xboard.git] / ToDo
1 Possible improvements   **=somewhat higher priority\r
2 ---------------------------------------------------\r
3 \r
4 20. Some way to back up, explore variations, then return to the main\r
5 line and restore moves we backed out.  Should also support exploring\r
6 side branches while loading a game file.  Push/pop buttons?  Button to\r
7 fork another xboard in same state as current one?\r
8 \r
9 20a. Allow side branches to be remembered in game files (and\r
10 understood on LoadGame).  Use PGN variation notation.\r
11 \r
12 **62a. Support series of time controls as in later gnuchess 4.0.x\r
13 versions (and real tournaments!).  Needs a protocol extension to\r
14 "level"; this is now planned for protover 3.\r
15 \r
16 62b. Perhaps we could also support the kind of clock where you get K\r
17 seconds per move, plus a reserve of J seconds per game that is used\r
18 when a move takes more than K seconds.  The degenerate form of this\r
19 with J=0 is desirable in itself.  Needs a protocol extension.\r
20 \r
21 68. WinBoard has some features not in xboard.  Among others:\r
22 68a. LoadGameOptions dialog             (good to add)\r
23 68b. SaveGameOptions dialog             (good to add)\r
24 68c. TimeControl dialog                 (good to add)\r
25 68g. Font dialog.                       (leave out)\r
26 68h. Colors dialog.                     (leave out)\r
27 68i. Board size on Options menu         (good to add)\r
28 68j. Resize with mouse\r
29 68k. Highlight dragging\r
30 68m. Move typein from keyboard.         (good to add)\r
31 \r
32 69. xboard has some features not in WinBoard.  Among others:\r
33 69c. Font size selection by pattern fill-in. (leave out)\r
34 69d. Alternate bitmaps specified at runtime. (good to add, often requested)\r
35 69e. Flashing.\r
36 \r
37 71. Allow restart after ICS logout instead of exiting?  Many requests\r
38 for this.\r
39 \r
40 71a. Would be useful to drop into NCP mode after ICS logout and allow\r
41 for reconnect later.  For instance, this would let you save your last\r
42 partial game if you didn't have autosave on.\r
43 \r
44 72. Allow switching among ICS, NCP, GNU modes??\r
45 \r
46 74. Observe/play multiple games, each with its own window.  Hard.\r
47 \r
48 80. Clone command.  Saves current game to a file foo, then starts up\r
49 another copy of xboard with -lgf foo.  Should probably note current\r
50 state of some options and give command line flags to set them the same\r
51 way in child.  What about -ncp mode, though?  Might want that to be\r
52 different.  Would be nice to have a -moveNumber flag to position the\r
53 child to the same move number in the current game.\r
54 \r
55 91. Would be nice to have an option to overwrite save file instead of\r
56 appending.\r
57 \r
58 95. "Have the clock indicate how long the computer/player has been\r
59 thinking for when the -st option is used. This should be how long for\r
60 the current move only." (Dino Dini)\r
61 \r
62 97. "Have the ability to change the level of the gnuchess during a\r
63 game. For analysis purposes, sometimes it is useful to have the\r
64 computer think really hard about certain positions." (Dino Dini)\r
65 \r
66 98. Reorganize the source and split it into more files.\r
67 \r
68 107. Changing time control during a game could be made to work.\r
69 Current (WinBoard only) way of changing at start is suboptimal.\r
70 \r
71 **108. Could add search depth and time per move to (WinBoard)\r
72 TimeControl dialog.\r
73 \r
74 140. LoadPosition needs better checking for invalid data.\r
75 \r
76 142. xboard needs a real file chooser dialog.  Jeff Woolsey submitted\r
77 code to merge in the one from Ghostview, but said it works only on\r
78 X11R5 or later.  I have not yet tried his code or looked to see if it\r
79 could be made to work on X11R4.\r
80 \r
81 147. Improve display of held pieces in bughouse mode, putting them\r
82 closer to the player's side of the board, and perhaps using icons (and\r
83 allowing dragging from the icons to drop a piece).  Actually, moving\r
84 the clocks would be beneficial too, so that it's easier to visually\r
85 associate the right clock with the right player when looking at two\r
86 boards during a bughouse match (with two copies of xboard running).\r
87 Maybe multiple window layouts should be user-selectable. [4.3 supports\r
88 drag-drops from holdings]\r
89 \r
90 150. Keep track of castling availability, en-passant availability, and\r
91 FEN half-move clock (for 50-move rule), pass the availability\r
92 information to the move generator through the existing interface, and\r
93 load/save it in the FEN code. [Fixed in 4.3]\r
94 \r
95 150a. Note that not keeping track of ep creates a bug in mate\r
96 detection.  In certain positions, moving a pawn from the 3rd to 4th\r
97 rank gives mate, but it is not detected because if the pawn had moved\r
98 to the same position from the 2nd rank, ep capture would have been\r
99 legal and there would be no mate. [problem disappeared in 4.3]\r
100 \r
101 150b. Note that although we try to put in e.p. availability when\r
102 writing FEN, this works only if we have the move that got us to this\r
103 position in the moveList. If we load a position from FEN, the\r
104 e.p. availability field of the FEN is lost. [disappeared in 4.3]\r
105 \r
106 152. Generate the info file, man page, perhaps html, and perhaps even\r
107 the WinBoard help file from the same sources.  Right now,\r
108 substantially the same text is duplicated in three places.  This is\r
109 a huge pain in the neck.\r
110 \r
111 157. Idea: if Zippy flags some number of times in a row and keeps\r
112 getting told the opponent is not out of time (presumably due to\r
113 timestamp/timeseal), he should issue an adjourn or abort.\r
114 \r
115 160. The xboard CTRL key flashback feature is bad in Analysis mode.\r
116 Flashing back throws away the analysis.\r
117 \r
118 161. SIGINT doesn't work for local programs on Win32.  There is an\r
119 equivalent, GenerateConsoleCtrlEvent(CTRL_C_EVENT), but I haven't\r
120 gotten it to work thus far.  It seems that WinBoard and the chess\r
121 engine don't "have the same console"; indeed, neither has a console.\r
122 \r
123 162. Supply a non-X Zippy for Unix.  Perhaps use the code from Klaus\r
124 Knopper.\r
125 \r
126 167. Alternative bitmaps loaded at runtime for WinBoard. [font-based\r
127 piece rendering provides this functionality since WinBoard_x]\r
128 \r
129 169. Upload Game on file menu?  This would upload the current game\r
130 moves into a scratch examined game on ICS.  Could do Upload Position\r
131 too.  Some code to do Upload Game was contributed, but it didn't\r
132 handle setup positions, variants, checking for proper gameMode, etc.,\r
133 so I couldn't use it.\r
134 \r
135 170. Auto step every k seconds should be a general feature you can\r
136 turn on at any time, not just in LoadGame.  What should GUI be?\r
137 \r
138 171. Displaying thinking in a separate window should be an option\r
139 available at all times when Show Thinking makes sense, not just in\r
140 analysis mode.  It should perhaps be orthogonal to analysis mode.\r
141 [added in WinBoard_x]\r
142 \r
143 172. Should analysis window scroll instead of showing only the last\r
144 line?  There could be an extra checkbox to show all chess engine\r
145 output in it. [fixed in WinBoard_x]\r
146 \r
147 178. Need reliable kill for chess engine on Win32.  See also 161.\r
148 \r
149 181. Some people want -sgf to save only played games, not observed and\r
150 examined games.  Others like it to save them all.  Make this an option?\r
151 \r
152 183. Search feature in Game List dialog [Igor Eged].\r
153 \r
154 187. "Log session" feature for ICS window.\r
155 \r
156 193. Some users have reported xboard redraw bugs, but I have not\r
157 been able to reproduce them on the Digital Unix, Linux, or eXcursion X\r
158 servers (xboard).\r
159 \r
160 c. From Hawk:  \r
161 Dragging in xboard does not work 100%.  \r
162 * The dragged piece may disappear (try some fast e2-d3 movements - \r
163   this is easy to reproduce).\r
164 * The dragged piece may be placed on an illegal position (this \r
165   happens less frequently, but it _can_ be reproduced by doing the same\r
166   as above).\r
167 * In both of the above cases, the board is correct after forcing a \r
168   redraw (ie. minimizing/restoring the window)\r
169 I'm using eXodus - a win32 X server, perhaps it's buggy. [Seems that way,\r
170 or just possibly, these could be bugs that are fixed in 3.6.11beta or\r
171 3.6.12beta.]\r
172 \r
173 d. One user reports: "If you are 'holding' a piece over the square you\r
174 want to go to and that move becomes illegal but you make it anyway,\r
175 the display sometimes corrupts and a partial piece appears..sometimes\r
176 a whole piece."  This was under RedHat 6.0.\r
177 \r
178 194. A few users have reported drawing problems with WinBoard.  There\r
179 may be some color map problem on certain displays.  I might possibly\r
180 have fixed this already; I cannot reproduce it.  The common thing\r
181 seems to be black pieces changing to white.  This may depend on having\r
182 customized the board colors.  I suspect many of these problems are\r
183 buggy Windows drivers for particular display cards.  (May be worked\r
184 around in 4.2.0 with reprocessed .bmp files.)\r
185 \r
186 a. From mulesmurf: if i log in and then move the board, it will happen\r
187 that the black [pieces] change to white.\r
188 \r
189 c. People have sent pictures where the grid didn't get redrawn.  This\r
190 produces random bits in the grid area from uninitialized memory.\r
191 Could this be a resource leak?\r
192 \r
193 d. From James Van Buskirk: I did notice one problem tonight playing\r
194 against Comet under FX!32 1.2 (Comet, not winboard ran under FX!32):\r
195 for a couple of moves winboard didn't turn off the highlighting of the\r
196 square I dropped the piece on until Comet had moved.  Later, the\r
197 problem fixed itself.  Have other users noticed this?  [No.]\r
198 \r
199 e. One user reports: Lastly, there is some sort of slight bug in the\r
200 piece dragging code, but it comes up only very occasionally (once in\r
201 500 moves?)...basically, I'm dragging, change my mind, throw the piece\r
202 of the side of the board, and instead it gets stuck not inside a\r
203 square.  It's really disconcerting, this piece just sitting across\r
204 square boundaries.  When you make another move, it gets cleared up and\r
205 goes back where it's supposed to.  [Might be fixed in 4.0.6, but I\r
206 couldn't reproduce this, so I can't be sure.]\r
207 \r
208 f. DAV says: "When I resized the board on win 95 and made it smaller\r
209 some of the pieces turned into junk (I'm not able to give a screen\r
210 shot)."  Later: "Seems to happen on the three sizes below small.\r
211 Win98 and NT seem to be ok, trying to get more win95 users to test\r
212 it."  Works fine for me on Win 95...  [Might have been fixed by the\r
213 cleanup of the Windows .bmp's that happened sometime before version\r
214 4.2.3]\r
215 \r
216 195. Flash Moves works at the end of every change to the board, using\r
217 some rather gross code in DrawPosition.  This code should perhaps be\r
218 ripped out and the flashing done from inside AnimateMove instead.\r
219 \r
220 197. More color distinctions.  Maybe allow several user-selected channels\r
221 to have their own colors.\r
222 \r
223 198. More sounds.  Some possiblities: distinguish White vs. Black move\r
224 or your move vs. opponents, distinguish different kinds of\r
225 win/loss/draw/unfinished (checkmate, resignation, stalemate, other\r
226 draws, opponent disconnected, etc.), game ends when you aren't playing\r
227 and/or aren't in ICS mode, differentiate amongst requests (draw offer,\r
228 etc.), **check, got new offboard piece (by piece type?), opponent got\r
229 new offboard piece (ditto), arrival notification, "* who has an\r
230 adjourned game with you," draw declined, moretime received.\r
231 \r
232 199. Maybe put user names instead of White and Black on clocks, or\r
233 user names above or below clocks in a smaller font.\r
234 \r
235 200. I don't like these ideas, but some people do:\r
236 a. Highlight all of the squares that the piece you are moving can go to.\r
237 b. Clicking on the piece moves it immediately if it has only one legal move.\r
238 c. Allow clicking on the destination, then the source.\r
239 d. I guess highlight the pieces that can go to that destination.\r
240 e. Clicking on a destination that only one piece can go to moves it there.\r
241 \r
242 201. mulesmurf: piece counter so we know exactly the score \r
243 \r
244 202. mulesmurf: ziics pieces, board along with color intensity\r
245 \r
246 204. Hawk at Fri May 15, 12:58 CDT 1998: a minor thing with xboard:\r
247 the coords disappear while dragging from a square with coords on it.\r
248 [They come back when the drag is finished.]\r
249 \r
250 208. WinBoard sometimes comes up with one of the menu bar items grayed\r
251 out (one that should not be).  I've seen this on different entries at\r
252 different times.\r
253 \r
254 213. Maybe add Silence to sound menu -- parallel to Monochrome on\r
255 color menus.\r
256 \r
257 214. Maybe easier startup dialog customize:\r
258 a. Buttons to add/delete/move(?) current string to/from/within current list.\r
259 b. Or maybe auto-add newly typed/edited strings up to some limit.\r
260 c. Also a drop-down for Additional Options.\r
261 \r
262 216. Maybe shorten menu names in WinBoard to one char if and only if\r
263 the menu bar would wrap with longer names.\r
264 \r
265 **217. Easier way to add engines to the WinBoard startup dialog.\r
266 Ideally, an engine author should be able to supply a simple\r
267 configuration file or script that installs his engine.  "*.wbe" idea.\r
268 \r
269 218. Some folks would like Highlight Last Move to apply only to\r
270 opponent's moves.\r
271 \r
272 219. From Jorge Monasterio: Support automatic game starts when in\r
273 tournament. In other words, do that "match bigolfish mann 5 0 black"\r
274 automatically based on the info sent from mamer.  [I would need to\r
275 play in some tournaments before I could evaluate this idea or fill in\r
276 the details.]\r
277 \r
278 222. Could support time handicaps. [Added in 4.3]\r
279 \r
280 223. Bug: very long comments cause buffer overflow.  Need to revamp\r
281 the way comments are parsed and returned from parser.l to fix this.\r
282 \r
283 224. Larry Parrish requests: In an automated multi-games match I would\r
284 like to load the n-th game from the file for the n-th game of the\r
285 match.  [That is, when -mg and -lgf or -lpf are used together without\r
286 -lgi or -lpi.]\r
287 \r
288 225. From pulp: another bug (maybe with the Microsoft RichEdit\r
289 control) I've observed is when you flood the edit control it loses the\r
290 bottom.  Eg. "games" will scroll along then start slipping until by\r
291 the end of the list you are really looking at the middle of the list\r
292 and have to manually scroll back to the bottom.  [May be fixed?]\r
293 \r
294 225a. Resizing the WinBoard ICS interaction window can cause the cursor\r
295 to be off the screen, which stops scrolling.\r
296 \r
297 226. From pulp: Clipboard persistence.  If I copy text, then the text\r
298 disappears when Winboard is closed.  Eg.: Log in, highlight and copy a\r
299 web page address, close, go to browser, paste *nothing*.  [How does\r
300 one do this in Windows?]\r
301 \r
302 227a. In engine-engine matches, an engine that crashes should lose and\r
303 perhaps get restarted for the next game. [Added in 4.3]\r
304 \r
305 227b. Maybe when an engine playing in Zippy mode exhibits a bug, we\r
306 should do a little more too.  Perhaps "say Sorry, the engine seems to\r
307 have a bug", resign or abort, and maybe force an engine restart for the\r
308 next game.\r
309 \r
310 **227c. We should also detect and stop the game on false mate or draw\r
311 claims, rejecting a legal move, or (maybe) missed claims of mate or\r
312 draw.  Note that draw claims require checking for repetition, 50 move\r
313 rule, and insufficient material as well as stalemate, so this is\r
314 nontrivial. [Added in 4.3]\r
315 \r
316 228. RichEdit bug: sometimes a line gets indented as if it were\r
317 wrapped when it should be flush left.\r
318 \r
319 **229. Support for sending moves from the partner's game to a bughouse\r
320 engine.  Ben Dean-Kanemura submitted support that works without adding\r
321 general multi-game support, by relaying the moves without processing\r
322 them.  Should also send holding updates and clock times; not sure if\r
323 Ben's code does that.  Needs to be a new "feature" command option, and\r
324 to be documented in engine-intf.html, removing the note that this may\r
325 be done in the future.\r
326 \r
327 231. See Ed Collins's WinBoard bug list on his pages:\r
328 \r
329 231b. If you save an ICS examined game to disk as a PGN file, it\r
330 doesn't report the end-of-game result in both the header and at the\r
331 end of the notation.  [It doesn't get this info from the server, but\r
332 maybe there is a way it could.]\r
333 \r
334 232. From Ed Collins's WinBoard wish list on his pages:\r
335 \r
336 232b. Multiple winboard.ini files for different moods, loadable from\r
337 inside the program.\r
338 \r
339 232c. Fix bug where fics% prompt is not suppressed when using\r
340 timeseal.  This has something to do with a timeseal deficiency whose\r
341 details I've forgotten, but there must be some way to fix it.\r
342 \r
343 232e. When using the server's "examine" mode to examine a previously\r
344 played game, have the game clocks display the time that each player\r
345 currently had after each move was made.\r
346 \r
347 232f. [Not from Ed] Deal with ICC game relays where an "examined" game\r
348 is supposed to have running clocks.  Not sure if this is still an issue.\r
349 \r
350 232g. Customizable on-screen buttons [i.e., toolbar or toolbox].\r
351 \r
352 232h. Customizable function keys.  Currently xboard can bind a key to\r
353 any built-in xboard function.  Should extend this to WinBoard, and\r
354 also (in both programs) support sending an arbitrary ICS command when\r
355 button is pressed.\r
356 \r
357 233. See if anything from LightningRulez should be added.  Premove is\r
358 now included (from Winboard Plus), but maybe there are other useful\r
359 things too.\r
360 \r
361 241. There might still be bugs in xboard and/or winboard when moves\r
362 come in from ICS during drag animation, though I can't reproduce them.\r
363 DAV saw the opponent's piece fail to be erased from the source square, if\r
364 I understood his message right.  [DAV says this still exists in 4.2.5.\r
365 I think bug 426 is a duplicate.  The description is clearer there.]\r
366 \r
367 242. User-defined "looking_at" patterns and actions.  This is hard to\r
368 bombproof.\r
369 \r
370 **243. "Rematch" shortcut in /cp mode.\r
371 \r
372 246. Maybe auto-close comment window when user goes to the next move.\r
373 Whether this is desirable really depends on the content of the\r
374 comment, but maybe it is rare to have a long comment that discusses\r
375 the plan several moves ahead and should be left up.\r
376 \r
377 248. Would be nice to support retract move after checkmate or draw (etc.).\r
378 \r
379 254. Different tray icons for interaction window vs. board (suggestion\r
380 from FICS).\r
381 \r
382 256. One user asked for "delete" option in game lists.  This requires\r
383 rewriting the file to close up the hole, so it's pretty heavyweight.\r
384 Next people will be asking for move, sort, search, and other game\r
385 database functionality; ugh.\r
386 \r
387 **257. Would be nice to find a way to safely implement "retract move"\r
388 when the engine is still on move.  (using ping/pong)\r
389 \r
390 **260. General mechanism where engine can declare engine properties that\r
391 the user can frob and xboard/winboard will put up a simple dialog to\r
392 allow user to view and set them.  See email message "special engine\r
393 commands" from Steffen Jakob:\r
394 \r
395   From: "Steffen A. Jakob" <saj@xxx>\r
396   To: mann@xxx\r
397   Cc: chess-engines@xxx\r
398   Subject: special engine commands\r
399   Date: Fri, 26 Feb 1999 09:12:26 +0100\r
400 \r
401   Hi Tim!\r
402 \r
403   Here comes a summary of our ICC chat (I cc this mail to the\r
404   list... maybe other engine programmers can give some feedback if\r
405   they find this feature useful):\r
406 \r
407   Please add a protocol command which enables the engine to tell\r
408   xboard its special commands. Maybe a set of (label, command string)\r
409   pairs would be useful. Then create a menu for these commands. It\r
410   could look like this (that's what I would like to see for Hossa):\r
411 \r
412   engine->interface:\r
413   ------------------\r
414   command "Reset the log file" "reset log"\r
415   command "Save Diagram as PNG" "png dia.png"\r
416   command "Disable Book" "book off"\r
417   command "Show Evaluation details" "eval"\r
418   command "Show Search statistics" "stat"\r
419 \r
420   etc.\r
421 \r
422   While typing this list I realized that an additional parameter like\r
423   this would be needed/nice (of course you can think of many more\r
424   improvements):\r
425 \r
426   command "Save Diagram as PNG" "png %s" 1\r
427 \r
428   "1" tells xboard to ask for an additional parameter (here: filename)\r
429   which will replace the "%s" in the command string.\r
430 \r
431 261. Check that "quit" is sent to engine properly if ICS connection\r
432 fails to open due to error from timestamp/timeseal.  "wzrdking" had a\r
433 case where it didn't.  Timetamp had failed with "Host name not found\r
434 by name server" (because in fact there was no internet connection, arrgh).\r
435 \r
436 273. Displaying the names of the players from a PGN file in the header\r
437 of the window does not work if there is only one game in the file.\r
438 The filename is shown instead.  (This was intentional, but maybe a\r
439 poor idea.)\r
440 \r
441 274. Command to go to move number N, with entry box for N.\r
442 \r
443 276. Make grid optional in winboard?  Note that the highlight options\r
444 don't work without it.\r
445 \r
446 276a. Make color of grid an option, instead of always black.\r
447 \r
448 277. Flooding xboard -zt + timestamp with tells hangs timestamp after\r
449 a while.  xboard is blocked writing to the timestamp pipe.  timestamp\r
450 is in an unknown state, not reading from the pipe nor responding to\r
451 pings.  (Confirmed with the software running on milwaukee, Red Hat\r
452 5.2)\r
453 \r
454 278. Flooding winboard -zt + timestamp with tells hangs winboard after\r
455 a while.  timestamp still responds to pings.  This reported by\r
456 nudnick; I haven't tried to reproduce it yet.  He also says that\r
457 windows explorer then crashed when he tried to close winboard.\r
458 \r
459 279. Idea from an anonymous ICSer: piece drop menu could have images,\r
460 not words.  [Or maybe both?]  Also might be easier to select\r
461 accurately from it if horizontally arranged, or in a 3x2 grid.\r
462 [Now 4.3 has drag & drop, piece-drop menu should be deprecated]\r
463 \r
464 284. dxterm hangs when it receives the escape sequence that sets the\r
465 title bar on xterm.  I think some other xterm substitutes do too.\r
466 \r
467 **287. WinBoard can look funny if you are using themes because it\r
468 unconditionally uses white for certain colors instead of the default\r
469 background.\r
470 \r
471 289. Merge WinBoard support for the Henter-Joyce JAWS screen reader.\r
472 Source code (zip file containing modified WinBoard 4.0.2 source) is at\r
473  It\r
474 would be interesting to make this work with festival (free Unix speech\r
475 synth) or other speech synthesizers too.\r
476 \r
477 290. Could have limited voice output without a speech synthesizer by playing\r
478 wav files for piece names and square numbers.  Idea suggested by Hannu\r
479 Wegner.\r
480 \r
481 291. Would be great to support DGT, Novag Universal chessboard, etc.\r
482 I'm not likely to fork out the cash to buy either for testing, however.\r
483 Note users have done various things along these lines.\r
484 \r
485 292. When an engine is analyzing, it would be cool to have a way to\r
486 automatically play out its current PV (or even older ones) on a board.\r
487 These PVs could be saved as variations when we have variation support.\r
488 \r
489 297. Windows users expect all programs to have a Print function, even\r
490 though there are other ways to print.  Useful items to make printable:\r
491 PGN game scores (which are plain text, of course), maybe FEN position\r
492 diagrams, maybe graphical position diagrams (i.e., same as pressing\r
493 the "Print Screen" function key and printing the clipboard).\r
494 \r
495 298. One user suggests that automatic move stepping should not start\r
496 until you press OK in the tags window.  This could be a good idea, but\r
497 I think I'd rather have automatic stepping never start until you press\r
498 a "play" button on the main window, and have that button always\r
499 available, not just when loading a game from a file.\r
500 \r
501 299. One user suggested being able to jump to a specific move by\r
502 typing its number (followed by ... if it's to be black's move).\r
503 \r
504 300. Can I put a hyperlink (that will invoke a browser) directly onto\r
505 the WinBoard Help menu or in the Help file?  Useful to take users to\r
506 my chess page.\r
507 \r
508 302. On NT, check if the board is redrawn properly when exiting from\r
509 the screen saver.\r
510 \r
511 308. There is some tricky way to maximize the WinBoard board window,\r
512 although there isn't supposed to be.  Maybe prevent this, or else\r
513 legalize it and make sure something reasonable looking happens.\r
514 Note: the trick is to select one of the "tile" options on the Windows\r
515 task bar.  Not clear what should happen in this case.\r
516 \r
517 309. Avoid endlessly flagging every second when opponent is lagged out\r
518 and autoflag is on.  Automatically courtesy-adjourn (or abort if\r
519 unrated) instead, at least if in zippy mode.\r
520 \r
521 310. Weird bug: the last character of a FICS output can appear on the\r
522 next line, *after* the fics% prompt, according to one user.  I might\r
523 have seen something like this myself once too.\r
524 \r
525 314. One person wanted his engine to see tells when running in Zippy\r
526 mode.  I doubt this is generally useful, so I haven't added the code I\r
527 wrote for him.  (I can query for "tellfrom" in my mail file to find\r
528 it.)\r
529 \r
530 314a. Another person wants his computer account to relay tells to his\r
531 personal account.\r
532 \r
533 319. One user would like to be able to reload a PGN file and resume a\r
534 game against an engine as if after an adjournment, with the clocks\r
535 (and moves to next time control) restored as they were when the game\r
536 was saved.\r
537 \r
538 320. Display ratings of ICS players in the title bar (if there is room,\r
539 presumably), or somewhere, anyway.\r
540 \r
541 321. Maybe refresh the EditTags window if the gameInfo changes and the\r
542 window is up.  (WinBoard now does this when entering MachineWhite,\r
543 MachineBlack, or TwoMachines mode -- not very general.  From Winboard Plus.)\r
544 \r
545 322. One user requested that Zippy games use the engine name instead\r
546 of the ICS handle in the PGN tags, as he uses multiple engines on his\r
547 account.  (My response was "I'd say it should give both"; not sure just\r
548 how to do that, though.)\r
549 \r
550 324. I'm told that Blitzin supports animated dragging without holding\r
551 down the mouse button and that this is "much better" and I should try\r
552 it too.  As yet I haven't.\r
553 \r
554 326. Full support for variants and variant-capable engines in all\r
555 modes, not just ICS mode.  Here are some items still needed.  Some if\r
556 not all should probably wait for a rewrite, not be added to the\r
557 current code base. [4.3 supports many variants, even those not supported\r
558 by ICS. Not bughouse, though]\r
559 \r
560 326a. Menu to let you see and change the current variant type, not\r
561 just a command-line argument as at present. [Added in 4.3 WinBoard]\r
562 \r
563 326b. crazyhouse: Keep track of holdings and display them, keep track\r
564 of what onboard pieces are promoted so they will revert if captured,\r
565 understand offboard interposition to stop mate.  [Added in 4.3, (not\r
566 sure about the interposition)]\r
567 \r
568 326bb. One user asked for a Czech variant of crazyhouse where pawns are\r
569 given to the opponent when they reach the 8th rank (after capturing, if\r
570 it's a capture) instead of promoting.\r
571 \r
572 326c. bughouse: Features in 326a would be helpful for editing one board\r
573 of a bughouse game, and getting mate indication right even in ICS mode.\r
574 In the longer term, could understand BPGN, support editing two-board games.\r
575 \r
576 326d. wildcastle: Allow wildcastle castling only when playing this variant!\r
577 Maybe support automatic shuffling for local play. [4.3 adds shuffling\r
578 for any variant played locally]\r
579 \r
580 326e. nocastle: Maybe support automatic shuffling for local play.\r
581 Note that several types of ICS shuffle chess fall under this variant.\r
582 Note that this isn't really a variant, since if we kept proper track\r
583 of castling rights and used "setboard FEN" or the ChessBase extension\r
584 of "edit" to set them, it could be treated as normal chess with a\r
585 different starting position.\r
586 \r
587 326f. fischerandom: Maybe support automatic shuffling for local play.\r
588 Support castling.  Currently, you can probably play Fischer Random\r
589 successfully on ICS by typing castling moves into the ICS Interaction\r
590 window, but they will not be animated correctly, and saved games will\r
591 not be loaded correctly if castling occurs.  FR castling is\r
592 problematic because the move cannot be specified by the starting and\r
593 ending coordinates of the king; in some starting positions there is a\r
594 legal non-castling move that moves the king the same way.  This\r
595 violates a deeply ingrained assumption in the implementation.  It also\r
596 breaks the GUI -- you need more than just dragging the king two\r
597 squares to indicate castling.  (Note: In FR notation, O-O is h-side\r
598 castling, O-O-O is a-side.  See "help fr_rules" and "help fr" on FICS\r
599 for rules.) [All fixed in 4.3]\r
600 \r
601 326g. kriegspiel: Could give some thought to how to support a\r
602 kriegspiel engine.  I doubt anyone will ever write one, though.\r
603 \r
604 326h. losers: Know that captures are mandatory.  Understand the win\r
605 condition.\r
606 \r
607 326i. suicide: Know that captures are mandatory.  Understand the win/draw\r
608 condition.\r
609 \r
610 326j. giveaway: Know that captures are mandatory.  Understand the win\r
611 condition.\r
612 \r
613 326k. atomic: Understand the win condition.\r
614 \r
615 326l. 3check: Understand the win condition -- ugh, have to keep a\r
616 check counter!\r
617 \r
618 327. Option to set the coord font color (or something) to make sure\r
619 there is always enough contrast with the square colors.\r
620 \r
621 329. Bernhard Maerz would like a command line option to choose the PGN\r
622 player name for an engine, overriding the default of generating the\r
623 name from the engine filename.  This is for his ChessCall program.\r
624 \r
625 331. Maybe the local autoflag menu option should *also* turn\r
626 server-side autoflag on/off by sending an appropriate set command.\r
627 \r
628 **332. Bug: Autoflag for local engine/engine or engine/human matches\r
629 does not recognize that having your flag fall when your opponent has\r
630 insufficient mating material is a draw.  It counts the flag fall as a\r
631 loss.\r
632 \r
633 336. Of course lots of people ask for a graphical seek window.\r
634 \r
635 339. There are probably some incompatibilities with, as they\r
636 have made a few gratuitous changes to message formats from the FICS\r
637 code base they started with, and perhaps they've added features since\r
638 without duplicating the syntax closely enough.  In particular it's\r
639 been reported that Zippy does not correctly send "partner" and\r
640 "variant" commands to bughouse engines on  Also, I doubt\r
641 colorization works.  As a matter of personal choice I do not spend any\r
642 of my time supporting, but if others want to donate patches\r
643 that allow to be supported without breaking the support for\r
644 ICC and FICS, I am willing to install them.\r
645 \r
646 342. Analysis mode automatically turns on the Show Thinking option;\r
647 the user must then turn it off manually after leaving analysis mode if\r
648 he doesn't want it.\r
649 \r
650 343. Would be nice to change xboard keyboard shortcuts to not be plain\r
651 letters, make the new shortcuts work also in the ICS input box, and\r
652 make typing plain letters to the board redirect to the ICS input box\r
653 or the xterm.  Might want to change/remove the Ctrl binding at that time.\r
654 \r
655 344. One user suggested having a way to save a position as a character\r
656 string that would produce a board diagram when rendered in MS Word in\r
657 a chess font.  Perhaps there is already a nice standalone tool for\r
658 this, though?\r
659 \r
660 346. Could use a better way to pick default size.  Now we choose the\r
661 largest that fits on the screen, which is typically too big.  Not too\r
662 bad for WinBoard, but painful for xboard since it can't be resized\r
663 after starting.\r
664 \r
665 349. Check that "quit" definitely makes it to the engine before exit,\r
666 if you exit via the File menu while a match is running.  Uli Tuerke\r
667 reported that maybe it sometimes doesn't (in WinBoard 4.0.5).\r
668 \r
669 352. Perhaps recognize the ANSI escape sequence that FICS sends out\r
670 for the cls command and clear the ICS interaction window.\r
671 \r
672 **353. WinBoard can crash when the engine outputs very long PV lines\r
673 (or debug output that looks like a PV).  In particular, lines that\r
674 start with 4 or more blanks following a "thinking" output line are\r
675 treated as continuation lines, and get concatenated into a 512-byte\r
676 buffer with no checking for overflow.  Generally we need a lot more\r
677 care to avoid buffer overflows inside both xboard and WinBoard.\r
678 [Note: changed the buffers to be 5120 bytes as a band-aid.]\r
679 \r
680 Guido Flohr expands on this bug:  \r
681 \r
682   The problem is easy to reproduce, simply write a program/script that\r
683   spits out lines of more than 8192 bytes (INPUT_SOURCE_BUF_SIZE) and\r
684   connect it as a chess engine to xboard.  No surprise, xboard cannot\r
685   handle such long lines, but the resulting behavior is really weird:\r
686 \r
687   The program enters DoInputCallback() in xboard.c, reads the first\r
688   8192 bytes, searches for a linefeed in vain, then closes its eyes,\r
689   sets the member "unused" of the InputSource to is->buf + 8192 and\r
690   waits for more input although the buffer is already full.\r
691 \r
692   The next time it calls the same function, is->unused is exactly\r
693   these 8192 bytes away from is->buf, xboard computes the amount of\r
694   bytes to read in this round, which sums up to 0 nothing.  It then\r
695   calls read(2) with a bufsize argument of 0, and then assumes end\r
696   of file when the kernel call returns 0 (which is the documented\r
697   behavior).\r
698 \r
699   For local engines, we now jump into backend.c, ReceiveFromProgram(),\r
700   and this function reports that the engine has exited unexpectedly.\r
701   In fact the engine is still very vivid, which is good, because in\r
702   spite of xboard's assumption that its child has died, it still\r
703   sends "force", "ping N", and "quit" to the false dead.  If the child\r
704   was really dead, the alert boxes "error writing to ... engine"\r
705   would hide the first alert box "... has exited unexpectedly".\r
706 \r
707   From xboard's side, it is not exactly clean to call read(2) with\r
708   a zero bufsize argument.  In my opinion, a sane solution would be\r
709   to eat the INPUT_SOURCE_BUF_SIZE bytes, and when they contain no\r
710   linefeed, print the partial line to standard error (in debug mode)\r
711   and report something like Â»Maximum line size exceeded« (and then\r
712   kill the engine).\r
713 \r
714 **354. We currently let the user go directly from TwoMachines mode to\r
715 various other modes like MachineWhite or MachineBlack.  This may\r
716 confuse the engine that was on move, since we don't have a way to\r
717 force it to stop before it makes the move it was thinking about.\r
718 (use ping/pong to know when the engine has stopped)\r
719 \r
720 355. Idea from LiveAndLetDie: have Zippy specially log games where it\r
721 loses to a substantially lower-rated player.  Such a game could\r
722 indicate an xboard bug, engine bug, or perhaps a computer-using\r
723 cheater.\r
724 \r
725 356. Colorization for FICS tourney tells?  They look like this (ugh):\r
726 :DChessmaster [tourney #4]:\r
727 :hi\r
728 \r
729 357. A few reports of WinBoard pieces being drawn incorrectly at\r
730 certain sizes.  I haven't reproduced this.  [Maybe worked around in\r
731 4.2.0.  Or is/was this the same as 194f?  I don't recall the details.]\r
732 \r
733 358. One report of WinBoard colorization not working, even after\r
734 restart, until the computer was rebooted.  Weird.\r
735 \r
736 362. Running a very long automated match (/mg option) seems to crash\r
737 WinBoard eventually, usually after 300 to 500 games, sometimes later.\r
738 Reported by Josh Haglund.  Gets a "WINBOARD caused an invalid page\r
739 fault in module KERNEL32.DLL" dialog box from Windows.  See messages\r
740 from Josh for examples of the registers and stack dump.\r
741 \r
742 362a. A few people have reported WinBoard crashing upon exit.\r
743 \r
744 363. Maybe xboard should not set the window geometry for new popups,\r
745 or at least not the position.  The default positions aren't very good,\r
746 and setting them programmatically keeps knowledgeable X users from\r
747 customizing the positions with X resources.\r
748 \r
749 366. Feature to let an engine observe an ICS game and run analysis\r
750 mode on the moves, perhaps whispering or channel-telling the results.\r
751 It's a little too easy to cheat with this feature or I might have\r
752 added it long ago.\r
753 \r
754 369. Optionally send a periodic keepalive command to ICS.  Can be\r
755 used to defeat autologout, so should probably not be on by default.\r
756 Also should be useful to help Zippy notice more reliably when its\r
757 connection has hung, so that it can exit and a shell script (batch\r
758 file) can restart it.\r
759 \r
760 370. One user requested a local noplay list for his computer player\r
761 because the FICS limit of 50 is too small.  He wants several hundred so\r
762 that he can noplay everyone who disconnects in a lost position.\r
763 \r
764 374. Would be good to have a way to change engines without restarting\r
765 the interface.\r
766 \r
767 376. WinBoard is said to crash or "lock up" when loading enormous PGN\r
768 files, like a 98 MB file that comes with (??) Crafty.  Win32 (at least\r
769 in the Win95 lineage) has a limit of 32,767 items in a list box\r
770 widget.  That might explain this problem.\r
771 \r
772 376a. xboard exceeds limits in X and/or Xaw if a PGN file has too many\r
773 games.  (The virtual window that the list box can scroll through\r
774 becomes too many pixels high.)  This has odd effects; the window\r
775 height of the game list seems to get reduced mod 2^16 or something.\r
776 Maybe detect this and do something nicer about it, like stop loading\r
777 when the window is full and pop up a warning.\r
778 \r
779 378. One Solaris user didn't have the "strip" program, so the\r
780 install-sh script used by xboard "make install" failed.  Check for\r
781 this?  Yuck.\r
782 \r
783 381. "Illegal move: post" is apparently not handled.  Should it be?\r
784 \r
785 382. The UI for entering Training mode is a bit obscure: you must\r
786 first select Load Game, then Training becomes enabled in the upper (!)\r
787 part of the Mode menu and you can select it.  You can then select it\r
788 again to toggle it off.  This mode is something like Analyze File\r
789 (which has a problematic UI too, but somewhat less so); both should\r
790 probably use a similar UI style.  I consider disabling the\r
791 step-forward button to be overkill, and I think you need to manually\r
792 turn off auto-step when loading a game (?).  One user expected it to\r
793 work with .epd files that give a position and a recommended move.\r
794 That seems reasonable, but doing it would require quite different code\r
795 from the current pgn-game training mode.\r
796 \r
797 383. Premove piece drop for bughouse/crazyhouse.\r
798 \r
799 384. Pre-first-move for xboard.  I don't much like the fill-in field\r
800 method used in winboard.  Maybe allow a move to be made for white\r
801 before the game starts (in both xboard and winboard).  If you get\r
802 black, it's cancelled.  Black can already premove after the game\r
803 starts, during white's first move think time, so I don't see that a\r
804 black pre-first-move is needed.\r
805 \r
806 **387. Have winboard draw opaque details on black pieces too.\r
807 Hmm, this should probably be optional, and the detail colors should\r
808 be selectable instead of hardwired to the opposite piece color.\r
809 \r
810 **387a. Add "no piece border" option to WinBoard.  See code from\r
811 Robert Jurjevic sent 4/9/2001.\r
812 \r
813 391. I have a bug report from Stefan Zipproth about engines sometimes\r
814 failing to make their first move in an engine-engine match.  So far I\r
815 can't reproduce it.  This might be fixed by the Sleep(500) voodoo in 4.2.4.\r
816 \r
817 394. See about tightening matching for the "request" event.  Right now\r
818 it matches on help files a bit too often.  (e.g. FICS "help sr_info")\r
819 **Also clarify documentation on what the request event is.\r
820 \r
821 396. xboard's -size defaulting code for bitmaps unfortunately always\r
822 picks a size from the built-in list, even if you gave the\r
823 -bitmapDirectory option.  It would be more user-friendly to have some\r
824 extra code that lists the directory and considers exactly the sizes\r
825 that are found there, as the pixmap code does.\r
826 \r
827 397. It would be nice to be able to configure xboard with bitmap\r
828 pieces as the default without having to disable xpm support entirely.\r
829 This should be a pretty simple mod to (and xboard.c).\r
830 \r
831 397a. It would be very nice to be able to compile in both the bitmap\r
832 and pixmap pieces.  This would allow us to automatically switch to bitmap\r
833 pieces in -mono mode, including when -mono mode was automatically selected\r
834 because too few colors were available.\r
835 \r
836 398. It would be nice to have the new .xpm pieces in .xim format too,\r
837 since I restrained myself from ripping out the .xim support.\r
838 \r
839 399. It would be nice to have a configure option to change the\r
840 directory where the default piece set is taken from.  Slightly nicer\r
841 than having to rename the desired directory to "bitmaps" or "pixmaps"\r
842 as at present.\r
843 \r
844 400. TypeinMove should be grayed in ICS mode, or should raise the\r
845 console window, or something.\r
846 \r
847 402. Internationalization.  It probably isn't practical to retrofit\r
848 this into the current code base.\r
849 \r
850 409. One user requested a way to put a time delay in the middle of\r
851 sending zippyGameEnd commands.  This would (for example) let the\r
852 computer do a seek only if its opponent doesn't accept a rematch\r
853 within 10 seconds.  Nontrivial because Zippy has to continue to listen\r
854 to input during the delay; it can't simply call sleep().  Maybe\r
855 ScheduleDelayedEvent is OK, but I think it may already be in use in\r
856 this situation, and it only supports one event at a time.\r
857 \r
858 411. Add zippyKibitzThinking and zippyWhisperThinking features?\r
859 [4.3 has an -autoKibitz option]\r
860 \r
861 412. Maybe optimize setting the move list in the case where only the\r
862 current move number changes; avoid slow XawListChange.\r
863 \r
864 **413. Add movelist window to WinBoard too.  Wilkin Ng submitted a\r
865 patch that I believe includes this; need to integrate and test it.\r
866 \r
867 **415. It was suggested that a few common options that many chess\r
868 engines need be promoted to xboard/WinBoard options so that the user\r
869 can set them from the GUI in a uniform way.  In particular: hash size,\r
870 directory name for endgame tables.\r
871 \r
872 **416. Can we avoid dying when xboard is in 8-bit mode, pixmap pieces\r
873 are chosen (by default), and we can't get enough colors?  Ugh.\r
874 \r
875 **419. It was suggested that stat01 be generated/accepted during normal\r
876 play with "post" on, not just during analysis mode.  This would need\r
877 to be a "feature" command option.\r
878 \r
879 422. Track FICS change to details of how timeseal works; is this\r
880 implemented at FICS yet?\r
881 \r
882 423. When locally stepping through an ICS game that is over, it would\r
883 be nice to display the historical clock times at each move.\r
884 \r
885 424. DAV at Thu Nov 9, 01:20 CST 2000: any chance on winboard/xboard\r
886 of a key press and a move executing draw <move>?  that way you at least\r
887 have a chance of claiming a draw in 1 0.\r
888 \r
889 **426. DAV says, in xboard: If you are not on clock and you hover a\r
890 piece over a square where your opponent then moves to and then move\r
891 the piece away the piece the opp moved or part of it has not been\r
892 drawn.  [Duplicate of bug 241?]\r
893 \r
894 429a. Check whether more support is needed for WinBoard to work with\r
895 scroll wheel mice in the absence of special mouse drivers that generate\r
896 scroll bar events directly.\r
897 \r
898 431. People find Analyze File confusing; they think it should do\r
899 Crafty's relatively new Annotate function.  Also, it's somewhat\r
900 superfluous now that you can enter Analysis mode and then load the\r
901 file, or vice versa.\r
902 \r
903 **436. WinBoard is said to crash if started while WinBoard.debug is\r
904 being tail -f'ed.\r
905 \r
906 **441. Can I prevent an undo after new in the odd case where it can\r
907 happen now?  See mail from Bob Hyatt.\r
908 \r
909 450. Suggested: an option to let an engine keep pondering while an ICC\r
910 game is adjourned.  This seems a bit difficult.\r
911 \r
912 451. Suggested: support SuperMamer messages on FICS, aka qtells.  See\r
914 \r
915 452. Suggested: a way to say "prompt for the password" in a login.ini file.\r
916 See 510 instead.\r
917 \r
918 **454. Add a way to claim a draw together with making a move, as can\r
919 be needed for draw by repetition (creating the 3rd repetition with the\r
920 move) and by the 50 move rule (the move is the 50th).  Add to\r
921 protocol, and implement using the individual methods on FICS and ICC.\r
922 Need to be sure it's really a FICS that has the feature (somehow).\r
923 [Fixed in 4.3 by usng 'offer draw' for this purpose]\r
924 \r
925 455. Suggested: Add the epdkit commands such as epdpfga to the\r
926 protocol, since Crafty and "many" (which?) other engines include the\r
927 epdkit.\r
928 \r
929 **456. Bob Hyatt suggests: "feature match=1" which says "send match\r
930 requests to the engine and let it decide on who to play next".\r
931 I.e., maybe send an abbreviated but fixed format message like this:\r
932 match <opponent_name> time inc R/U.  The engine would use "tellics\r
933 accept <opponent_name>" to accept.  Add as feature to protover 3.\r
934 \r
935 **457. Standardize on the meaning of scores (e.g. in stat01 responses).\r
936 Is positive good for white or good for the engine?  Do certain scores\r
937 mean forced (tablebase) draw, or forced mate in N?  This should align\r
938 with the EPD spec.  Maybe a feature command should indicate that the\r
939 engine matches this part of the spec, but then again, it's not clear\r
940 what we can do about it if the engine doesn't give that command, so\r
941 maybe there is no point.  See discussion on chess-engines list.\r
942 [WinBoard_x adds an argument to tell WInBoard an egine uses absolute\r
943 scores]\r
944 \r
945 458. Bug: xboard will try to use an engine to play normal chess even\r
946 if the engine has given the feature variant command and did not\r
947 include "normal" on the list.  Crafty 18.1 inadvertently relies on\r
948 this bug, so it probably can't be fixed right away.\r
949 \r
950 **468. Need to look at Wilkin Ng's contributions!\r
951 \r
952 **469. Look at Zippy's behavior if the operator observes, follows,\r
953 examines, etc.  Some bugs in this area have been fixed, but it's\r
954 received very little testing, as Zippy was never meant to be used that\r
955 way.  Noted later: Examining in -zp mode definitely has problems.  If\r
956 you go forward one move at a time, moves are sent to the engine\r
957 correctly.  If you go backward one move, "undo" is not sent to engine\r
958 as it needs to be.  Going forward or back by more than one move at a\r
959 time needs to be looked at too.\r
960 \r
961 **471. Look at 3/17/2001 message from Laszlo Vecsey about crashes when\r
962 exiting on Win ME while data is coming in from the server.\r
963 \r
964 **473. Visual low-time indicator.  See patch in Brian Mays message of\r
965 3/27/2001.\r
966 \r
967 **474. Crash reported when sending certain 8-bit characters through\r
968 WinBoard (180, 167, others).  I'm almost certain this is a FICS\r
969 timeseal issue and nothing to do with WinBoard itself.\r
970 \r
971 **475. Look at Laszlo Vecsey's mousewheel patch of 4/10/2001.\r
972 \r
973 476. For some reason (I guess some GUI supports them), most WinBoard\r
974 engines now have a graphical logo, 100x50 pixels in Windows .bmp\r
975 format.  It's been requested that WinBoard have a place to show the\r
976 logo.\r
977 \r
978 477. Implement the "book engine" idea I proposed in the protover 3\r
979 discussions.  Some folks have offered to write them (e.g., Bruce\r
980 Morland).\r
981 \r
982 478. Recognize URLs in the WinBoard ics interaction window and make\r
983 them work as hyperlinks (firing up your browser).\r
984 \r
985 **479. Possibly use Scott Gasch's 7 May 2001 patch to delay accepting\r
986 challenges when ping > pong instead of declining them.  Bug: if you\r
987 get more than one challenge, Scott's patch forgets about all but the\r
988 last one.  If that guy then withdraws his challenge, the others are\r
989 left in limbo, neither accepted nor declined.  I suppose we could\r
990 decline challenges when there is one waiting.  However, if we make the\r
991 change to optionally pass match requests through to the engine, Bruce\r
992 Moreland would like us to queue up challenges and pass them all on.\r
993 \r
994 481. 8 May 2001, Bob Hyatt "matchscore" feature suggestion could go in\r
995 protover 3: "matchscore A B C D E says we are in a match, this is game\r
996 A of B games.  The current match score is I have won C, drawn D, and\r
997 lost E games in this match.  This would give the engine a chance to\r
998 adjust the draw score as needed to try to win the match rather than\r
999 just trying to win a single game."\r
1000 \r
1001 **482. Suggestion from Bruce Moreland: if the user goes into ICS\r
1002 examine mode while -zp is active, and the engine supports analyze,\r
1003 then put it into analyze mode and let it work on the examined game.  I\r
1004 guess this could work for observed games too.  Should it be optional\r
1005 or always done?\r
1006 \r
1007 483.  It would be nice if the KingShine 3D board could be integrated\r
1008 as an alternative xboard GUI rendering.\r
1009 \r
1010 **484.  Add -feature1 and -feature2 options to pretend the engine sent\r
1011 us those feature commands.  Useful kludge for certain buggy engines.\r
1012 \r
1013 485. Add "reset" to protover 3.  (Clear the hash tables and other such\r
1014 info; used to put the engine into a known state before running a\r
1015 test/benchmark position.)\r
1016 \r
1017 486. Other protover 3 features listed in my 6/21/2001 message to\r
1018 chess-engines list.  Write a full protover 3 draft for comment.\r
1019 \r
1020 487. Adjudicate non-ICS games as a draw when there is insufficient\r
1021 mating material on both sides, especially engine/engine games.  Well,\r
1022 maybe.  I argued against this in a 6/26/2001 message to chess-engines.\r
1023 [Added in 4.3]\r
1024 \r
1025 487a. Probably also adjudicate when we detect checkmate or stalemate,\r
1026 before bothering to notice whether the engine detected this. [Added\r
1027 in 4.3]\r
1028 \r
1029 487b. Note: Do not adjudicate 50 move rule or 3x repetition since those\r
1030 must be claimed by a player -- at least not by default.  It would be\r
1031 OK to have a flag to do this someday when we are smart enough to\r
1032 notice it.  Would definitely be good to be smart enough to notice an\r
1033 incorrect draw claim by an engine. [In 4.3 you can set the number of \r
1034 moves or repeats after which draw is adjudicated]\r
1035 \r
1036 487c. Another request: allow the operator to adjudicate engine/engine games.\r
1037 \r
1038 488. Option to suppress tags popup on game load?  This has been\r
1039 requested a few times, and I received one partial implementation (not\r
1040 enough to be useful).  Needs to be on the options menu, etc.  Note\r
1041 conflict with 298 above.\r
1042 \r
1043 488a. Also option to suppress comment popups.\r
1044 \r
1045 489. Maybe have Zippy use xtell for tells to avoid redefining "." if\r
1046 the operator is also doing tells.  Do all ICSes support xtell, though?\r
1047 \r
1048 490. Bruce Moreland request: a way to turn Zippy auto-accept on and\r
1049 off dynamically.\r
1050 \r
1051 491. Bruce Moreland request: a defined way to turn on/off PV (etc.)\r
1052 kibitzing from the engine dynamically.  I had thought it would be\r
1053 better to make the GUI able to relay thinking output as kibitzing on\r
1054 its own (and be able to turn this on/off dynamically), but Bruce\r
1055 points out that what engine authors want to send as kibitzing output\r
1056 usually includes more than the PV thinking output.\r
1057 \r
1058 492.  One user reports that GNU Chess 5 crashes if you start a game,\r
1059 play far enough to get GNU Chess out of book, select Reset, and play\r
1060 e3 in the new game.  This is probably a GNU Chess 5.00 bug, unrelated\r
1061 to WinBoard.  Can't reproduce on Linux; didn't try yet on Windows.\r
1062 Need to see if 5.02 fixes it.\r
1063 \r
1064 493.  DAV suggests stripping off first arguments that are obviously\r
1065 not the name of the engine when trying to parse out the engine name\r
1066 from its command line -- things like nice, nohup, sh, csh, bash, etc.\r
1067 Ugh, but I suppose it would be helpful sometimes.\r
1068 \r
1069 494.  Internationalization.  A couple of people have done (or told me\r
1070 they were doing) partial conversions of WinBoard to German or Spanish\r
1071 by manually translating the messages.  I think it would be much better\r
1072 (but a big job) to use GNU gettext.  I haven't looked into the details\r
1073 of that at all.\r
1074 \r
1075 495. JamesBaud points out that FEN is not sufficient to correctly\r
1076 represent a crazyhouse position (or bughouse, for that matter),\r
1077 because it does not distinguish promoted pawns that will revert when\r
1078 captured from real pieces.  ICS style 12 also does not give us this\r
1079 information.  I really don't know what I could do about this -- take\r
1080 the lead in proposing an extension to FEN and to style 12 with new\r
1081 piece letters, I suppose.  I don't really have time or motivation for\r
1082 that.  If you always use PGN, not FEN, to save Crazyhouse, that works\r
1083 around the problem. [4.3 uses bFENs which fix this]\r
1084 \r
1085 **496. DAV sent some code to save a screen shot in xboard.  Look at\r
1086 merging this in.\r
1087 \r
1088 **497. Igor Eged reports: I make a move on opponents time using\r
1089 premove. Right in the time I am holding another piece in case of\r
1090 unexpected check that I can have other possibility. But then the piece\r
1091 hangs in the void and its invalid move, what means often loss in 1 0\r
1092 lightning.\r
1093 \r
1094 498. It would be nice for Zippy to be able to play ICC wild 20 and 21\r
1095 (the types where loadgame is allowed).  Presumably there would have to\r
1096 be an option to either send the loadgame command with a specified\r
1097 position, or to deal with an opponent sending it.  I'm not sure how\r
1098 this should work exactly, or how to prevent opponents from cheating in\r
1099 various ways.\r
1100 \r
1101 499. It would be nice for Zippy to be able to switch amongst several\r
1102 different engines depending on which variant type is being played.\r
1103 \r
1104 500. It would be nice if Zippy could have an option to accept\r
1105 takebacks.  Hmmm, also, the operator might want to manually offer a\r
1106 takeback; it would be good if that worked.\r
1107 \r
1108 501. People would like to be able to add more bot functionality to\r
1109 Zippy without C programming.  I don't have any ideas on how to do that.\r
1110 \r
1111 502. One user requests the ability to have a game list file open for\r
1112 more than one PGN file at a time.\r
1113 \r
1114 503. We don't do protover 2 feature negotiation properly when\r
1115 restarting an engine due to -xreuse mode.  The timeout and done=0/1\r
1116 features don't work on the restart; instead we basically assume that\r
1117 all the features will be the same as last time and that the engine\r
1118 will be ready to accept commands immediately.  This probably doesn't\r
1119 cause a lot of problems, but if you try to replace the engine with one\r
1120 that sets different features, the changes might not be noticed before\r
1121 the first move, and the defaults will be the values from the old\r
1122 engine, not the documented defaults.  Also, if the engine takes time\r
1123 to initialize and wants us to wait to send commands until it says\r
1124 done=1, we fail to wait.  However, we do send commands in the right\r
1125 order and use ping, so most engines should work fine.\r
1126 \r
1127 506. One user wants a board size even smaller than Tiny.\r
1128 \r
1129 507. Suggested: have the cursor change to a gripping hand while moving\r
1130 pieces.  Currently in WinBoard it's always an arrow, while in xboard\r
1131 it's always a hand with pointing finger while over the board and an\r
1132 arrow elsewhere.\r
1133 \r
1134 508. It would be nice to make -xclock work with -ics, just for\r
1135 orthogonality, though it's not terribly useful.\r
1136 \r
1137 509. It would be nice to make -clock work with -st.  Perhaps each\r
1138 player's clock should start with the specified time on each move and\r
1139 count down until he moves.\r
1140 \r
1141 **510. A FICS service rep tells me that many users expect an autologin\r
1142 feature in winboard (other than the non-user-friendly login.ini file).\r
1143 Seems easy enough to add such a thing.\r
1144 \r
1145 512. Some users dislike the clocks counting in tenths when below 10\r
1146 seconds, as it's distracting, and would like this to be configurable.\r
1147 (From the Debian bug tracking system.)\r
1148 \r
1149 513. Perhaps have Alt+P and Alt+C as synonyms for Pause in WinBoard,\r
1150 since the P or C on the button makes it look like that should be the\r
1151 shortcut.  I suppose Alt+< and Alt+>, and the same with Shift for <<\r
1152 and >>, would also be a good idea.  Oops, but Alt+C is already\r
1153 CopyGame, so maybe this is a bad idea.\r
1154 \r
1155 514. Gian-Carlo Pascutto reports: "when pasting a FEN/EPD position\r
1156 into WinBoard, and selecting analysis mode, the engine analyses the\r
1157 starting position instead of the pasted one. Re-pasting fixes this."\r
1158 \r
1159 515. Troy Edwards suggests: "It would be nice to have the option to\r
1160 'wrap text' in the comment window."\r
1161 \r
1162 516. DAV says: "FICS now supports the setting and the making clocks\r
1163 tick using unpause/pause in examine mode. It seems either the clocks\r
1164 don't tick or are not present when using xboard. Is it possible to\r
1165 change the policy and base things upon the clock is paused flag in\r
1166 style 12?"\r
1167 \r
1168 517. Clarify in engine-intf.html that "sd" is an extra dumbing-down\r
1169 feature, not a time control.  Some text:\r
1170 \r
1171 In the protocol, the "sd" command isn't a time control.  It doesn't\r
1172 say that your engine has unlimited time but must search to exactly the\r
1173 given depth.  It says that you should pay attention to the time\r
1174 control as normal, but cut off the search at the specified depth even\r
1175 if you have time to search deeper.  If you don't have time to search\r
1176 to the specified depth, given your normal time management algorithm,\r
1177 then you will want to stop sooner than the given depth.\r
1178 \r
1179 The "new" command should set the search depth back to unlimited.  This\r
1180 is already stated in the spec.  The "level" command should not affect\r
1181 the search depth.  As it happens, xboard/WinBoard currently always\r
1182 sends sd (if needed) right after level, but that isn't part of the\r
1183 spec.\r
1184 \r
1185 518. Warn in doc that -initString is a dangerous feature.  Also move\r
1186 doc of dalogs for sending commands directly to the engine out of the\r
1187 protocol spec and into the man page and help file, but warn they are\r
1188 dangerous too.\r
1189 \r
1190 519. In engine-intf.html, change "st" description to not use the word\r
1191 "exact", which is misleading.  Make sure it says this is the maximum\r
1192 time per move (and does not accumulate).\r
1193 \r
1194 520. Check whether Alt+C (CopyGame) works in XP.  One user says it\r
1195 gives an error message.\r
1196 \r
1197 522. engine-intf.html should really be rewritten to describe the\r
1198 protocol as a state machine (on each end), with every command\r
1199 precisely defined as to what it does in each state (including perhaps\r
1200 being illegal).\r
1201 \r
1202 523. Figure out what, if anything, to do with the FICS "iset singleboard".\r
1203 I lean toward not bothering to set it, as it only disables functionality,\r
1204 but maybe I'm confused.\r
1205 \r
1206 524. theblob at Mon Mar 4, 23:23 PST 2002: it'd be nice in the xboard\r
1207 interaction window if control-w and control-u respectively erased the\r
1208 line and word, even in a Windows environment.  At least, I think it'd\r
1209 be nice.\r
1210 \r
1211 525. Support a 64-bit node counter in analysis mode when compiled with\r
1212 something that has 64-bit integer support.  Both gcc and msvc++ have\r
1213 this, though under different names.\r
1214 \r
1215 526. "-initialMode analysis -lgf -" doesn't get the engine into\r
1216 analysis mode properly.  "-initialMode analyzeFile" is a workaround,\r
1217 but bug should be fixed.\r
1218 \r
1219 527. Clarify ICS.ini more in the doc, if possible.  Some sample words:\r
1220 > You should create this file in\r
1221 > WinBoard's directory (usually C:\Program Files\WinBoard) using a plain\r
1222 > text editor such as Notepad.  Make sure that Notepad doesn't decide to\r
1223 > call the file ICS.ini.txt for you -- you may have to select "All\r
1224 > Files" instead of "Text Files" in the Notepad save dialog.\r
1225 >\r
1226 > The file is simply sent to the chess server, just as if you had typed it.\r
1227 > So if your username is foo and password is bar, the file would look\r
1228 > like what is between ==== below, without the ===='s:\r
1229 >\r
1230 > ====\r
1231 > foo\r
1232 > bar\r
1233 > iset movecase 1\r
1234 > ====\r
1235 \r
1236 528. Check on updates/revisions to PGN from Steven Edwards and others.\r
1237 Any support needed?\r
1238 \r
1239 529. Protover 3 needs a prefix character that says "this is debug\r
1240 output" and prevents the GUI from parsing that line (say ";").\r
1241 \r
1242 530. The undocumented (?) checking for rsh error messages tripped up\r
1243 one engine author who had a "not found" in a message.  Tighten this\r
1244 up.\r
1245 \r
1246 531. Do we always wait for pongs to catch up with pings before\r
1247 starting the engine's clock?  I suppose we should.\r
1248 \r
1249 532. On FICS the clock does not start until after the first move has\r
1250 been made.  So perhaps we don't need the "not ready, try again soon"\r
1251 response from Zippy there.  What if Zippy is black, does black's clock\r
1252 also not start until he makes his first move?\r
1253 \r
1254 533. theblob at Mon Jun 24, 20:05 PDT 2002: here's a suggestion for\r
1255 xboard -- give priority to fitting in amounts of material in the title\r
1256 bar, and truncate names instead, e.g., use "tyrionsAp...(50) vs. woden\r
1257 (51)" rather than "TyrionsApprentice (50) vs. woden..." -- it's much\r
1258 more important to see the material than the full names, especially\r
1259 when you're playing.\r
1260 \r
1261 534. Steffen Jakob reports: "I use xboard 4.2.6. Yesterday I played\r
1262 some bullet games at ICC. In one game I lost on time. In the last move\r
1263 I already clicked on my queen and wanted it to move to its destination\r
1264 square when I forfeited on time.  After that my mouse pointer was the\r
1265 queen piece. I couldnt drop it to any square."\r
1266 \r
1267 535. For protover 3, the "st" command in the protocol could be\r
1268 extended to allow for smaller units, not just seconds.\r
1269 \r
1270 537. Clarify in the protocol that "force" while searching means you\r
1271 should stop the search as soon as you can.  (Isn't this clear\r
1272 already?)\r
1273 \r
1274 538. Need a way for the user to adjust the clocks.  This is important\r
1275 for WCCC and other computer competitions, where xboard/winboard's\r
1276 clock is not the master.  I was going to do it in time for the July\r
1277 2002 WCCC.  Oops.\r
1278 \r
1279 541. Related to #327, John Iverson says, "It would be nice to have the\r
1280 coordinates shown outside of the board along the edges, rather than in\r
1281 the squares where they are hard to see and give a cluttered\r
1282 appearance, especially on smaller board sizes.  (The coordinates can\r
1283 be handy in certain situations, such as posting a screenshot of xboard\r
1284 showing an email game in progress, with the view flipped.)"\r
1285 \r
1286 542. If you start xboard with the -geometry NxM option, it will\r
1287 dutifully make the window exactly that size, but it doesn't choose a\r
1288 -size option that fits into such a window size, so the board is cut\r
1289 off or has a lot of whitespace around it.  In fact, the layout is\r
1290 generally messed up because the code doesn't expect the window to be\r
1291 the wrong size for the layout.  We should at least ignore the size\r
1292 part of the -geometry option if we aren't going to do something\r
1293 sensible with it.  How is that done with Xt?\r
1294 \r
1295 543. See the patches and extensions on\r
1296 and integrate those\r
1297 that are worthwhile into the main code base.  (Some are also mentioned\r
1298 elsewhere in this ToDo list.)  They are pretty much all over 15 lines,\r
1299 so copyright assignment from their authors is needed.  Unfortunately\r
1300 some of the authors may be hard to reach.\r
1301 \r
1302 544. Possibly rework looking_at pattern matching to have a "match at\r
1303 beginning of line" character (perhaps ^).  It looks like this may\r
1304 actually be useful after all.  The historical cases where you could\r
1305 get a board or other output that needs parsing on the same line as a\r
1306 prompt *may* have been fixed.  Confirming this would need testing on\r
1307 all the ICSes that are in use.\r
1308 \r
1309 546. Odd bug reported by travelGirl.  The last line of a multi-line\r
1310 macro from the ICS context menu sometimes "sticks" at the bottom of\r
1311 the ICS interaction window.  New text gets inserted before instead of\r
1312 after it.  This started when she upgraded to win2k.  See mail.\r
1313 \r
1314 548. Guido Flohr reports:\r
1315 \r
1316 Another "not really a bug" problem: When xboard forks in order to\r
1317 start a second chess engine, it is only concerned about duplicating\r
1318 the descriptors for the standard channels in the child.  This is\r
1319 very interesting for the second chess engine, since it inherits the\r
1320 pipes to its opponent, and can use them for sending commands like\r
1321 "sd 2", "easy", or even for feeding a bogus FEN string into the\r
1322 first engine (exchanging the opponent's queen with a bishop looks\r
1323 really attractive to me).  A very interesting feature, but not exactly\r
1324 what you intended? ;-)\r
1325 \r
1326 Closing the other descriptors after the fork will not completely\r
1327 avoid the problem, since - at least under Solaris and Linux - it\r
1328 is still possible to peek and write into xboard's open descriptors via the\r
1329 /proc pseudo file system (unless you make xboard setuid root), but\r
1330 leaving them open, makes this cheat very obvious.\r
1331 \r
1332 549. "Ron" (no last name given) reports that when compiling WinBoard\r
1333 under VC++ 6.0, there are many warnings.  These ought to be looked at.\r
1334 \r
1335 551. "Miguel" (no last name given) reports "When you make a premove in\r
1336 Winboard 4.2.6, and then opponent move and premove is illegal, then\r
1337 and you try to make a legal move but you cannot, because piece are\r
1338 erased and you have to replace your move again, move twice... in\r
1339 lightining this is annoying."  I'm not really sure what that means or\r
1340 if it is the same bug as 497.\r
1341 \r
1342 552. Get rid of the need for proprietary tools to build WinBoard.\r
1343 It's already possible to compile winboard.exe using the Cygwin\r
1344 toolchain.  You can even compile it with -mno-cygwin to avoid the need\r
1345 for cygwin1.dll.  However:\r
1346 \r
1347 552a. The Help file needs Microsoft Word to edit the source file\r
1348 winboard.rtf and the Microsoft Help Compiler to compile it into\r
1349 winboard.hlp.  I tried using on the RTF file, but the\r
1350 result was missing some formatting that the help compiler needs.  The\r
1351 help compiler itself is a free-as-in-beer download, but it's still\r
1352 proprietary software.  Perhaps the help could be converted to vanilla\r
1353 HTML, at the cost of losing the index and search capability.\r
1354 \r
1355 552b. The WinBoard installer package is built with InstallShield.\r
1356   Possible replacements:\r
1357   Inno Setup ( - looks best\r
1358   NSIS (\r
1359   Cygwin setup ( - a long shot\r
1360 \r
1361 552c. Although the cygwin resource compiler works on winboard.rc, it's\r
1362 a pain to create new dialogs by editing the text file.  The original\r
1363 ones were all created using the graphical dialog editor in MSVC 5.\r
1364 \r
1365 * * *\r
1366 \r
1367 Before each release:\r
1368 - make sure both xboard and winboard build and are up to date with each other\r
1369 - run zippy with new version as a shakedown\r
1370 - be sure gnu5 binary is up to date in winboard, and gnu5 patch (if needed)\r
1371   is included in both xboard and winboard kits \r
1372 - recheck cygwin compiling winboard\r
1373 - make sure ChangeLog is complete\r
1374 - test changes\r
1375 \r
1376 *** up to date with mail received through 5 Nov 2003, except\r
1377 for the "protover 3" discussions on the chess-engines mailing list ***\r