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