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