Possible improvements
-------------------------------------------------

5. gray background for dark squares in 1-bit mode.  Do this like
xchess does.

12b. scoresheet text widget.  Current move should be highlighted.
Scoresheet could include comments or just have moves; latter is easier
to fit on screen.

20. Some way to back up, explore variations, then return to the main
line and restore moves we backed out.  Should also support exploring
side branches while loading a game file.  Push/pop buttons?  Button to
fork another xboard in same state as current one?

20a. Allow side branches to be remembered in game files (and
understood on LoadGame).  Use PGN variation notation.

62a. Support series of time controls as in recent gnuchess versions
(and real tournaments!).

62b. Perhaps (with gnuchess mods or some external help from xboard)
gnuchess could also support the kind of clock where you get K seconds
per move, plus a reserve of J seconds per game that is used when a
move takes more than K seconds.  The degenerate form of this with J=0
is desirable in itself.

68. WinBoard has some features not in xboard.  Among others:
68a. LoadGameOptions dialog             (good to add)
68b. SaveGameOptions dialog             (good to add)
68c. TimeControl dialog                 (good to add)
68g. Font dialog.			(leave out)
68h. Colors dialog.			(leave out)
68i. Board size on Options menu         (good to add)
68j. Resize with mouse
68k. Highlight dragging
68l. Sound
68m. Move typein from keyboard.         (good to add)

69. xboard has some features not in WinBoard.  Among others:
69c. Font size selection by pattern fill-in. (leave out)
69d. Alternate bitmaps specified at runtime. (good to add, often requested)
69e. Flashing

71. Allow restart after ICS logout instead of exiting?  Many requests
for this.

72. Allow switching among ICS, NCP, GNU modes??

74. Observe/play multiple games, each with its own window.  Hard.

80. Clone command.  Saves current game to a file foo, then starts up
another copy of xboard with -lgf foo.  Should probably note current
state of some options and give command line flags to set them the same
way in child.  What about -ncp mode, though?  Might want that to be
different.  Would be nice to have a -moveNumber flag to position the
child to the same move number in the current game.

91. Would be nice to have an option to overwrite save file instead of
appending.

95. "Have the clock indicate how long the computer/player has been
thinking for when the -st option is used. This should be how long for
the current move only." (Dino Dini)

97. "Have the ability to change the level of the gnuchess during a
game. For analysis purposes, sometimes it is useful to have the
computer think really hard about certain positions." (Dino Dini)

98. Reorganize the source and split it into more files.

107. Changing time control during a game could be made to work.
Current (WinBoard only) way of changing at start is suboptimal.

108. Could add search depth and time per move to (WinBoard)
TimeControl dialog.

139. Be sure that "White's flag fell" and the like always go away when
they should; some gameMode changes may not be doing this.  (Is this
still true?)

140. LoadPosition needs better checking for invalid data.

142. xboard needs a real file chooser dialog.  Jeff Woolsey submitted
code to merge in the one from Ghostview, but said it works only on
X11R5 or later.  I have not yet tried his code or looked to see if it
could be made to work on X11R4.

145. eco popup, similar to book popup (Peter Chang).  Difficult due to
program-unfriendly format that gnuchess returns the eco info in (e.g.,
built-in pager even for gnuchessx), and bugs where too much info is
returned.

146. Bug: if you invoke EditTags and hit OK while a LoadGame is in
progress, the LoadGame stops with a bogus "end of game file".  This is
because the parser can only be working on one file or long string at a
time.  Similar problem if you try to build a game list while a game is
loading.  Could fix this (as well as 46 and 49) by having LoadGame
read in the whole game, then step through the in-memory movelist,
instead of calling the parser on each step.

147. Improve display of held pieces in bughouse mode, putting them
closer to the player's side of the board, and perhaps using icons (and
allowing dragging from the icons to drop a piece).  Actually, moving
the clocks would be beneficial too, so that it's easier to visually
associate the right clock with the right player when looking at two
boards during a bughouse match (with two copies of xboard running).
Maybe multiple window layouts should be user-selectable.

150. Keep track of castling availability, en-passant availability, and
FEN half-move clock (for 50-move rule), pass the availability
information to the move generator through the existing interface, and
load/save it in the FEN code.

150a. Note that not keeping track of ep creates a bug in mate
detection.  In certain positions, moving a pawn from the 3rd to 4th
rank gives mate, but it is not detected because if the pawn had moved
to the same position from the 2nd rank, ep capture would have been
legal and there would be no mate.

151. Keep better track of which set of variant rules is in force
during a game, provide a way to choose the ruleset in Edit Game mode,
and load/save it as a PGN tag.  This would let us deal better with
things like wild castling (in shuffle variants where the king started
on d1 or d8), piece drops, and contact vs. non-contact mate (in
bughouse).

151a. Note that FICS does not tell us anything is unusual when
examining a (scratch) suicide game.  Arrgh.

152. Generate the info file, man page, perhaps html, and perhaps even
the WinBoard help file from the same sources.  Right now,
substantially the same text is duplicated in three places.  This is
a huge pain in the neck.

157. Idea: if Zippy flags some number of times in a row and keeps
getting told the opponent is not out of time (presumably due to
timestamp/timeseal), he should issue an adjourn or abort.

160. The xboard CTRL key flashback feature is bad in Analysis mode.
Flashing back throws away the analysis.

161. SIGINT doesn't work for local programs on Win32.  There is an
equivalent, GenerateConsoleCtrlEvent(CTRL_C_EVENT), but I haven't
gotten it to work thus far.  It seems that WinBoard and the chess
engine don't "have the same console"; indeed, neither has a console.

162. Supply a non-X Zippy for Unix.  Perhaps use the code from Klaus
Knopper.

167. Alternative bitmaps loaded at runtime for WinBoard.  Bitmaps with
depth > 2 as in xboard xpm mode.

169. Upload Game on file menu?  This would upload the current game
moves into a scratch examined game on ICS.

170. Auto step every k seconds should be a general feature you can
turn on at any time, not just in LoadGame.  What should GUI be?

171. Displaying thinking in a separate window should be an option
available at all times when Show Thinking makes sense, not just in
analysis mode.  It should perhaps be orthogonal to analysis mode.

172. Should analysis window scroll instead of showing only the last
line?  There could be an extra checkbox to show all chess engine
output in it.

174. More move history in message line, and/or make it a popup menu
anchor with all the moves available [Alexander Swietlicki].

178. Need reliable kill for chess engine on Win32.  See also 161.

181. Some people want -sgf to save only played games, not observed and
examined games.  Others like it to save them all.  Make this an option?

182. Support FischeRandom.  See "help fr_rules" and "help fr" on FICS.
O-O is h-side castling, O-O-O is a-side.  (Differs from wild 1.)

182a. Maybe support Atomic.

183. Search feature in Game List dialog [Igor Eged].

187. "Log session" feature for ICS window.

191. Rubbish at Sat May 2, 14:21 CDT 1998: On your beta version, one
of my ptells ended up on the title bar of the winboard window! it said
"++++P" until it refreshed on the next move.

193. Some users have reported xboard redraw bugs, but I have not
been able to reproduce them on the Digital Unix, Linux, or eXcursion X
servers (xboard).

b. From Sandstrom: I have your beta version of xboard, compiled on
solaris. I have prolem with the iconifying. When its iconified, type
'obs <number>' and klicks on it, its totally white.  it shows the
moved pieces only. after 10 moves or so all pices will be showed.

c. From Hawk:  
Dragging in xboard does not work 100%.  
* The dragged piece may disappear (try some fast e2-d3 movements - 
  this is easy to reproduce).
* The dragged piece may be placed on an illegal position (this 
  happens less frequently, but it _can_ be reproduced by doing the same
  as above).
* In both of the above cases, the board is correct after forcing a 
  redraw (ie. minimizing/restoring the window)
I'm using eXodus - a win32 X server, perhaps it's buggy. [Seems that way,
or just possibly, these could be bugs that are fixed in 3.6.11beta or
3.6.12beta.]

d. One user reports: "If you are 'holding' a piece over the square you
want to go to and that move becomes illegal but you make it anyway,
the display sometimes corrupts and a partial piece appears..sometimes
a whole piece."  This was under RedHat 6.0.

194. A few users have reported drawing problems with WinBoard.
There may be some color map problem on certain displays.  I might
possibly have fixed this already; I cannot reproduce it.  The common
thing seems to be black pieces changing to white.  This may depend on
having customized the board colors.

a. From mulesmurf: if i log in and then move the board, it will happen
that the black [pieces] change to white.

c. People have sent pictures where the grid didn't get redrawn.  This
produces random bits in the grid area from uninitialized memory.
Could this be a resource leak?

d. From James Van Buskirk: I did notice one problem tonight playing
against Comet under FX!32 1.2 (Comet, not winboard ran under FX!32):
for a couple of moves winboard didn't turn off the highlighting of the
square I dropped the piece on until Comet had moved.  Later, the
problem fixed itself.  Have other users noticed this?  [No.]

e. One user reports: Lastly, there is some sort of slight bug in the
piece dragging code, but it comes up only very occasionally (once in
500 moves?)...basically, I'm dragging, change my mind, throw the piece
of the side of the board, and instead it gets stuck not inside a
square.  It's really disconcerting, this piece just sitting across
square boundaries.  When you make another move, it gets cleared up and
goes back where it's supposed to.  [Might be fixed in 4.0.6, but I
couldn't reproduce this, so I can't be sure.]

195. Flash Moves works at the end of every change to the board, using
some rather gross code in DrawPosition.  This code should perhaps be
ripped out and the flashing done from inside AnimateMove instead.

196. From Oscar Verzaal: Add dropbox (in winboard) for last tells and
stuff like that, so you can easily repeat commands.  [Similar to
current up-arrow feature but different UI.]

197. More color distinctions.  Maybe allow several user-selected channels
to have their own colors.

198. More sounds.  Some possiblities: distinguish White vs. Black move
or your move vs. opponents, checkmate, resignation, stalemate, other
draws, differentiate amongst requests (draw offer, etc.), check, got
new offboard piece (by piece type?), opp. got new offboard piece
(ditto), low on time (settable as to how low), arrival notification,
"* who has an adjourned game with you," draw declined, moretime received.

199. Maybe put user names instead of White and Black on clocks, or
user names above or below clocks in a smaller font.

200. I don't like these ideas, but some people do:
a. Highlight all of the squares that the piece you are moving can go to.
b. Clicking on the piece moves it immediately if it has only one legal move.
c. Allow clicking on the destination, then the source.
d. I guess highlight the pieces that can go to that destination.
e. Clicking on a destination that only one piece can go to moves it there.

201. mulesmurf: piece counter so we know exactly the score 

202. mulesmurf: ziics pieces, board along with color intensity

203. It's hard to change a lot of WinBoard settings in a row.  Would
be nice to go to dialog boxes at a lower level in the selection tree.
For sound and colors, could have a dropdown choice box to say which
one you are setting, instead of having to go back thru the menus over
and over.  Short of that, would be helpful for dialog box titles to
say which one you are setting.  An Apply button in the color chooser
would be nice too.

204. Hawk at Fri May 15, 12:58 CDT 1998: a minor thing with xboard:
the coords disappear while dragging from a square with coords on it.
[They come back when the drag is finished.]

205. Make an Alpha NT WinBoard binary and instructions for building it
available.  James Van Buskirk <torsop@ix.netcom.com> can help.

208. WinBoard sometimes comes up with one of the menu bar items grayed
out (one that should not be).  I've seen this on different entries at
different times.

213. Maybe add Silence to sound menu -- parallel to Monochrome on
color menus.

214. Maybe easier startup dialog customize:
a. Buttons to add/delete/move(?) current string to/from/within current list.
b. Or maybe auto-add newly typed/edited strings up to some limit.
c. Also a drop-down for Additional Options.

216. Maybe shorten menu names in WinBoard to one char if and only if
the menu bar would wrap with longer names.

217. Easier way to add engines to the WinBoard startup dialog.
Ideally, an engine author should be able to supply a simple
configuration file or script that installs his engine.  Short of
that, simplifying the quoting syntax in winboard.ini would ease doing
it manually, but not sure if this would help enough to be worthwhile.

218. Some folks would like Highlight Last Move to apply only to
opponent's moves.

219. From Jorge Monasterio: Support automatic game starts when in
tournament. In other words, do that "match bigolfish mann 5 0 black"
automatically based on the info sent from mamer.  [I would need to
play in some tournaments before I could evaluate this idea or fill in
the details.]

221. engine-intf document could specify and limit which commands can
be sent when the engine is on move.

222. Could support time handicaps.

223. Bug: very long comments cause buffer overflow.  Need to revamp
the way comments are parsed and returned from parser.l to fix this.

224. Larry Parrish requests: In an automated multi-games match I would
like to load the n-th game from the file for the n-th game of the
match.  [That is, when -mg and -lgf or -lpf are used together without
-lgi or -lpi.]

225. From pulp: another bug (maybe with the Microsoft RichEdit
control) I've observed is when you flood the edit control it loses the
bottom.  Eg. "games" will scroll along then start slipping until by
the end of the list you are really looking at the middle of the list
and have to manually scroll back to the bottom.  [May be fixed?]

225a. Resizing the WinBoard ICS interaction window can cause the cursor
to be off the screen, which stops scrolling.

226. From pulp: Clipboard persistence.  If I copy text, then the text
disappears when Winboard is closed.  Eg.: Log in, highlight and copy a
web page address, close, go to browser, paste *nothing*.  [How does
one do this in Windows?]

227. Illegal moves from buggy engine should probably stop the game.
Maybe we should also detect and stop the game on false mate or
stalemate claims, or missed claims of mate or stalemate.

228. RichEdit bug: sometimes a line gets indented as if it were
wrapped when it should be flush left.

229. Support for sending moves from the partner's game to a bughouse
engine.  Ben Dean-Kanemura submitted support that works without adding
general multi-game support, by relaying the moves without processing
them.  Should also send holding updates and clock times; not sure if
Ben's code does that.

230. Need to do something rational if user sets up a position that the
engine he is using can't grok (e.g., wrong number of kings with
Crafty).  There needs to be a standard way for the engine to report
the error, for starters.  Also, maybe xboard itself should forbid 
manifestly illegal positions if TestLegality is on (or maybe not).

231. See Ed Collins's WinBoard bug list on his pages:

231a. "I've discovered that if I reduce my default board size (which is
usually either AVERAGE or MODERATE) and then close the program, the
next time I start it up I see that the new board size has been
saved... but the ICS interaction font size has been reduced as
well. The opposite is also true. If I increase the board size and
close the program, the font size will increase. Somewhere this font
size is inadvertently being saved incorrectly, I think."  [I think this
one is not described quite right, but I suspect the solution is not to
have a separate ICS interaction font size for every board size, but
just one.  Changing the board size doesn't change the interaction
window size!]

231b. If you save an ICS examined game to disk as a PGN file, it
doesn't report the end-of-game result in both the header and at the
end of the notation.  [It doesn't get this info from the server, but
maybe there is a way it could.]

232. See Ed Collins's WinBoard wish list on his pages:

232a. Have the board window automatically become the active window
and come to the top each time a new game has begun.

232b. Multiple winboard.ini files for different moods, loadable from
inside the program.

232c. Fix bug where fics% prompt is not suppressed when using
timeseal.  This has something to do with a timeseal deficiency whose
details I've forgotten, but there must be some way to fix it.

232d. Pieces with outlines (i.e., tricolor: highlights, body color,
and transparent background).  XBoard can do this using the optional
ziics pieces, but WinBoard currently can't, and even in xboard it
would be better to make this the default.  It might work with Elmar's
outline pieces by flood-filling the outside with "transparent", except
if some have holes.  The original metafont output has versions with a
hatched background, so apparently *it* knows where the background is,
but has no way to output in tricolor.

232e. When using the servers "examine" mode to examine a previously
played game, have the game clocks display the time that each player
currently had after each move was made.

232f. [Not from Ed] Deal with ICC game relays where an "examined" game
is supposed to have running clocks.  Not sure if this is still an issue.

232g. Customizable on-screen buttons [i.e., toolbar or toolbox].

232h. Customizable function keys.  Currently xboard can bind a key to
any built-in xboard function.  Should extend this to WinBoard, and
also (in both programs) support sending an arbitrary ICS command when
button is pressed.

233. See if anything from LightningRulez should be added.  I don't
really like the premove feature, but maybe there are other useful
things, and/or maybe I'm wrong to object to premove.

234. Send "name" command to engine for engine/engine matches.
Maybe even human/engine matches too???

234a. A way for engine to tell xboard its preferred name?

234b. A command line argument to give the engine's preferred name (as
distinct from its filename)?

235. Strip .exe from engine names for "name" command, tags, etc.
(Don't I do that already?)

236. Protocol version number (negotiation) in engine protocol.
See my message "Protocol version negotiation" for a proposal.

237. Allow WinBoard input widget to hold more than one line.

238. Tell engine whether running on a chess server.

239. Maybe need a general way for the engine to tell the opponent
something that works regardless of whether it's a local human or an
ICS player.  Maybe rehabilitate say/tell/kibitz/whisper for this purpose?

240. Should maybe have a free-format "thinking" command from the
engine and get rid of the parsing that's done now -- just show
whatever the engine gave us.  Also, the engine could give us column
headers for the thinking window with another command.

241. There might still be bugs in xboard and/or winboard when moves
come in from ICS during drag animation, though I can't reproduce them.
DAV saw the opponent's piece fail to be erased from the source square, if
I understood his message right.  [Probably fixed in 4.0.6.]

242. User-defined "looking_at" patterns and actions.  This is hard to
bombproof.

243. "Rematch" shortcut in /cp mode.

244. Maybe automatically put user's side at the bottom in MachineWhite
or MachineBlack mode.

246. Maybe auto-close comment window when user goes to the next move.
Whether this is desirable really depends on the content of the
comment, but maybe it is rare to have a long comment that discusses
the plan several moves ahead and should be left up.

247. AnalyzeFile mode terminates at the end of the file, closing the
window, etc.  Should leave us in analysis mode.  Actually, AnalyzeFile
mode is a bit of a crock.  More useful would be to load the file
(without single-stepping), back up to the start, and enter plain
analysis mode.

247a. Make sure that entering analysis mode doesn't truncate the
stored game at the current position; this was reported.

248. Would be nice to support retract move after checkmate or draw (etc.).

250. Maybe nuke the use of SIGINT and SIGTERM.

254. Different tray icons for interaction window vs. board (suggestion
from FICS).

256. One user asked for "delete" option in game lists.  This requires
rewriting the file to close up the hole, so it's pretty heavyweight.
Next people will be asking for move, sort, search, and other game
database functionality; ugh.

257. Would be nice to find a way to safely implement "retract move"
when the engine is still on move.

258. "reload same game", "load next game", etc., in analyze file mode
could leave us in that mode.

259. Protocol would be clearer with "blacktime/whitetime" instead of
"time/otim".

260. General mechanism where engine can declare engine properties that
the user can frob and xboard/winboard will put up a simple dialog to
allow user to view and set them.  See email message "special engine
commands" from Steffen Jakob.

261. Check that "quit" is sent to engine properly if ICS connection
fails to open due to error from timestamp/timeseal.  "wzrdking" had a
case where it didn't.  Timetamp had failed with "Host name not found
by name server" (because in fact there was no internet connection, arrgh).

262. InstallShield has stupid error messages, like "An error occured
during the data move process: -623" when the user was denied
write permission to the destination directory.

263. Next protocol revision should set up positions using FEN, not
gnuchess's historical "edit" command.

264. Anti-cheating.

265. Kriegspiel seems to work partially, but some odd things happen;
see messages from Ed Collins.

266. auto232 support of some kind.  Chrilly may be doing this.

267. Need a way to tell the engine it's a good idea to start pondering
now.  Useful after restoring an adjourned game where it is the
opponent's turn.  Also, need to make sure we restore the moves
immediately in that case, not waiting until the opponent moves.

268. Need to fix the following race condition reliably: The game ends
while it's the engine's move (say, due to a flag or an out-of-turn
resignation).  The engine might move just as we are telling it to
stop, so we have to not be confused by that (I think this is OK).
Alternatively, the engine might not notice the request to stop for a
long time, and then might still make a move!  If this happens after
the next game starts, we are in trouble.  This really happens with
some existing engines that don't check for input (often enough) while
on move.

268a. There may be other race conditions too.  Need to think through
the whole protocol and look for them.  (E.g., see 354 and 257.)

269. The "white" and "black" commands in the engine protocol to change
the side to move aren't really needed, except that certain idioms use
them for gnuchess compatibility.  Supporting these commands in an
engine pretty much requires supporting a "pass" move in game
histories, which some engine authors would rather not bother with.
The hack of simply ignoring these commands works (I believe) with
xboard's current constrained usage of the protocol; maybe this could
be documented as an official OK thing to do (ugh), and maybe the
commands could be removed or made optional in the next protocol
revision.

272. Comment window should not get the focus when it pops up (only
EditComment).  Double check whether this is already fixed.  Check both
xboard and winboard.

273. Displaying the names of the players from a PGN file in the header
of the window does not work if there is only one game in the file.
The filename is shown instead.  (This was intentional, but maybe a
poor idea.)

274. Command to go to move number N, with entry box for N.

276. Make grid optional in winboard?

277. Flooding xboard -zt + timestamp with tells hangs timestamp after
a while.  xboard is blocked writing to the timestamp pipe.  timestamp
is in an unknown state, not reading from the pipe nor responding to
pings.  (Confirmed with the software running on milwaukee, Red Hat
5.2)

278. Flooding winboard -zt + timestamp with tells hangs winboard after
a while.  timestamp still responds to pings.  This reported by
nudnick; i haven't tried to reproduce it yet.  He also says that
windows explorer then crashed when he tried to close winboard.

279. Idea from an anonymous ICSer: piece drop menu could have images,
not words.  [Or maybe both?]  Also might be easier to select
accurately from it if horizontally arranged, or in a 3x2 grid.

280. Need a way to log raw ICS i/o in WinBoard.debug file, as xboard's
debug mode does.  Would help in finding bugs at times.

281. Optional engine console that lets user monitor engine output (and
send engine commands?).  However, this doesn't mesh very well with
xboard's style of hiding the ugly details of the engine protocol from
the user, and doesn't mesh with the protocol's style, where (unlike
with ICS output) xboard can't figure out what's going on if the user
types a command directly to the engine that changes the board
position, clocks, etc.

284. dxterm hangs when it receives the escape sequence that sets the
title bar on xterm.  I think some other xterm substitutes do too.

287. WinBoard can look funny if you are using themes because it
unconditionally uses white for certain colors instead of the default
background.

289. Merge WinBoard support for the Henter-Joyce JAWS screen reader,
when they supply the source code.

290. Could have limited voice output without JAWS by playing canned
wav files for piece names and square numbers.  Idea suggested by Hannu
Wegner.

291. Would be great to have DGT and Novag Universal chessboard support.
I'm not likely to fork out the cash to buy either for testing, however.
Note users have done various things along these lines.

292. When an engine is analyzing, it would be cool to have a way to
automatically play out its current PV (or even older ones) on a board.
These PVs could be saved as variations when we have variation support.

293. One user reported that his scroll wheel mouse doesn't scroll the
winboard ICS interaction window.  Sigh.

297. Windows users expect all programs to have a Print function, even
though there are other ways to print.  Useful items to make printable:
PGN game scores (which are plain text, of course), maybe FEN position
diagrams, maybe graphical position diagrams (i.e., same as pressing
the "Print Screen" function key and printing the clipboard).

298. One user suggests that automatic move stepping should not start
until you press OK in the tags window.  This could be a good idea, but
I think I'd rather have automatic stepping never start until you press
a "play" button on the main window, and have that button always
available, not just when loading a game from a file.

299. One user suggested being able to jump to a specific move by
typing its number (followed by ... if it's to be black's move).

300. Can I put a hyperlink (that will invoke a browser) directly onto
the WinBoard Help menu or in the Help file?  Useful to take users to
my chess page.

302. On NT, check if the board is redrawn properly when exiting from
the screen saver.

303. Have the board deiconize and pop to the top when a new game
starts.  Is this a good idea?

305. In Zippy mode, resuming an adjourned game where it is not the
engine's turn should stuff the moves in immediately, not waiting until
it is the engine's turn.  (Does it really wait? -- check this.)  Then
it needs to be able to give a command to tell the engine to ponder;
this would be an addition to the protocol.  Setting the color to move
would be sufficient on Crafty, but to be sure not to break other
engines we probably need to extend the protocol.

308. There is some tricky way to maximize the WinBoard board window,
although there isn't supposed to be.  Maybe prevent this, or else
legalize it and make sure something reasonable looking happens.
Note: the trick is to select one of the "tile" options on the Windows
task bar.  Not clear what should happen in this case.

309. Avoid endlessly flagging every second when opponent is lagged out
and autoflag is on.  Automatically courtesy-adjourn (or abort if
unrated) instead, at least if in zippy mode.

310. Weird bug: the last character of a FICS output can appear on the
next line, *after* the fics% prompt, according to one user.  I might
have seen something like this myself once too.

313. Be able to accept FEN and PGN paste from the clipboard.  Be able
to export FEN and PGN for a displayed game to the clipboard too.

314. One person wanted his engine to see tells when running in Zippy
mode.  I doubt this is generally useful, so I haven't added the code I
wrote for him.  (I can query for "tellfrom" in my mail file to find
it.)

315. WinBoard could strip all ICS highlighting escape sequences for
folks who (for some reason) leave highlight turned on when running it.
Requested by DAV.

318. Command line option to control the initial minor mode.  One user
asked to be able to start in Edit Position mode, someone else in
another mode, I think.  (Actually the suggestion was that using -lpf
should start you in Edit Position mode, but I dislike that idea, as I
think most users won't be expecting to be in that mode.)

319. One user would like to be able to reload a PGN file and resume a
game against an engine as if after an adjournment, with the clocks
(and moves to next time control) restored as they were when the game
was saved.

320. Display ratings of ICS players in the title bar (if there is room,
presumably), or somewhere, anyway.

321. Maybe refresh the EditTags window if the gameInfo changes and the
window is up.

322. One user requested that Zippy games use the engine name instead
of the ICS handle in the PGN tags, as he uses multiple engines on his
account.  (My response was "I'd say it should give both"; not sure just
how to do that, though.)

323. Make sure crazyhouse engines work.  Some problem was reported; need
to recheck my mail file for details.

324. I'm told that Blitzin supports animated dragging without holding
down the mouse button and that this is "much better" and I should try
it too.  As yet I haven't.

325. >> or ToEnd in LoadGame mode should go all the way to the end of
the game, loading the whole file.  This would be easiest if the whole
file were loaded into memory up front, even if we are slowly
auto-stepping the display.

326. Full support for variants and variant-capable engines in all
modes, not just Zippy mode.  See also 151.

327. Option to set the coord font color (or something) to make sure
there is always enough contrast with the square colors.

328. Show holdings for current move, not forward most move, in
bughouse/crazyhouse.  Means we need to keep a record of them, which we
currently don't.  

328a. Would then be nice to save bughouse holdings in the PGN file
too.  Look into the bughouse PGN extension some of the net buggers are
using.

329. Bernhard Maerz would like a command line option to choose the PGN
player name for an engine, overriding the default of generating the
name from the engine filename.  This is for his ChessCall program.

331. Maybe the local autoflag menu option should *also* turn
server-side autoflag on/off by sending an appropriate set command.

332. Bug: Autoflag for local engine/engine or engine/human matches
does not recognize that having your flag fall when your opponent has
insufficient mating material is a draw.  It counts the flag fall as a
loss.

333. Would be useful to make sure engines have time to initialize
before their clocks start, especially in engine/engine or ICS/engine
matches.  People running fast engine/engine matches are seeing losses
on time because of this.

336. Of course lots of people ask for a graphical seek window.

337. FICS has autologout when idle, with no way to turn it off.  This
is a problem for people who log in as a guest and follow their
bughouse partner.  It's been suggested that I put some automatic
periodic output into xboard to defeat the idle detection, though I
don't like the idea.

338. What determines the default directory when (for instance) saving
games in WinBoard?  Does it vary with different versions of Windows?
One person asked for a way to set the default.

339. There are probably some incompatibilities with chess.net, as they
have made a few gratuitous changes to message formats from the FICS
code base they started with, and perhaps they've added features since
without duplicating the syntax closely enough.  In particular it's
been reported that Zippy does not correctly send "partner" and
"variant" commands to bughouse engines on chess.net.  Also, I doubt
colorization works.  As a matter of personal choice I do not spend any
of my time supporting chess.net, but if others want to donate patches
that allow chess.net to be supported without breaking the support for
ICC and FICS, I am willing to install them.

340. Perhaps if there is a period in the chess engine filename (e.g.,
foo.bar.exe), WinBoard needs the .exe extension to be given explicitly
in the /fcp and /scp options.  Need to check on this and document or
fix if so.

342. Analysis mode automatically turns on the Show Thinking option;
the user must then turn it off manually after leaving analysis mode if
he doesn't want it.

343. Would be nice to change xboard keyboard shortcuts to not be plain
letters, make the new shortcuts work also in the ICS input box, and
make typing plain letters to the board redirect to the ICS input box
or the xterm.

344. One user suggested having a way to save a position as a character
string that would produce a board diagram when rendered in MS Word in
a chess font.  Perhaps there is already a nice standalone tool for
this, though?

346. Could use a better way to pick default size.  Now we choose the
largest that fits on the screen, which is typically too big.  Not too
bad for WinBoard, but painful for xboard since it can't be resized
after starting.

349. Check that "quit" definitely makes it to the engine before exit,
if you exit via the File menu while a match is running.  Uli Tuerke
reported that maybe it sometimes doesn't (in WinBoard 4.0.5).

351. Jason Williamson reports: "In Windows 2000 build 2195, after
about 1 hour and 45 minutes of being connected to the ICC, winboard
seems to decide to jump to the top of the scroll bar and stays there.
When you scroll down to the bottom, it will jump back to the top."

352. Perhaps recognize the ANSI escape sequence that FICS sends out
for the cls command and clear the ICS interaction window.

353. WinBoard can crash when the engine outputs very long lines of
debugging info.  In particular, lines that start with 4 or more blanks
following a "thinking" output line are treated as continuation lines,
and get concatenated into a 512-byte buffer with no checking for
overflow.  Generally we need a lot more care to avoid buffer overflows
inside both xboard and WinBoard.

354. We let the user go directly from TwoMachines mode to various
other modes like MachineWhite or MachineBlack.  This may confuse the
engine that was on move, since we don't have a way to force it to stop
before it makes the move it was thinking about.

** up to date with mail received through 3 Mar 2000 **

Old ideas I no longer think are so good:
---------------------------------------
3. human-human playing?  No, use ICS.

12a. analog clocks

12c. jail [well, but jail could share the bughouse piece holdings real
estate].

20b. Alternative: Have a set of memories accessable via the menus into
which you can store, say, up to 10 positions (with all moves to that
point and the clock times). (Dino Dini)

21. Maybe make LoadPosition parser smarter: able to skip arbitrary
garbage before the position, able to tell when file doesn't contain a
position, able to read positions in other common styles.  (Tricky if
some use the opposite case convention.)

23. Maybe allow LoadGame from SetupPosition mode, or even ForceMoves
mode?  No, I think it's better to reset the position first.  A game
file can now include a starting position, which seems better than
loading position and subsequent moves separately.

26. After sending move to machine, wait for positive acknowledgement
or error message before proceeding; don't allow other events first.
This will fix some race conditions and obscure bugs, and allow some
new features---e.g., selecting Machine White when white is not on
move.

42. Could generate ICS-style elapsed times on each move for games
played against gnuchess.  This should probably be optional.  The same
option could suppress the times on moves from ICS, maybe.  (See also 46.)

43. Strength numbers from ICS are bogus if you use Backward/Forward.
They are nice to have, though.  Maybe xboard should generate correct
ones itself.  This could be done in non-ICS mode too.

46. LoadGame doesn't display ICS-style elapsed times on moves.  To do
this would require look-ahead or a parser change.  Either is doable
but ugly.  A benefit of look-ahead is that one could use it to pop up
comments along with the move they follow instead of on the next
forward step.

49. It might be nicer to step slowly through movelists obtained from
the ICS oldmoves command, as with LoadGame, instead of jumping to the
end.

57. The move parser is slow on low-powered machines (e.g., VS2000).
This is annoying when parsing ICS "oldmoves" or "moves" output to
start observing a game.  Can it be speeded up?

63. Keyboard interface for moving pieces.  Ideas: Arrow keys move
selection highlight around.  Highlight not visible until first key is
pressed, then starts (where?).  <Enter> "picks up" piece, then arrow
keys again to select destination.  <Esc> aborts move (no touch move
here!).  <Enter> again to put down piece on new square.  Could maybe
have similar selection highlights on moves made with mouse.  In
EditPosition mode, <Insert> brings up piece menu and <Delete> empties
current square.  (These are PC keyboard keys.  What to use on vanilla
ASCII keyboard with X?)  Also, a-h keys could move highlight to a-h
file and 1-8 keys to 1-8th rank.

73. Rename noChessProgram mode?  Revamp command line options for 3
main modes.

81. Measure and warn of lag in ICS mode, or some other kind of
feedback to show the lag.

85. Rolling across menu bar with mouse button down should scan through
menus.  How to do this with Athena widgets?  (Not a problem on
WinBoard.)

87. Optional long notation, at least on screen (e.g., Bc1-b2). (user
request)

89. Notice when user has selected a large font in -titleInWindow mode,
and make sure the title line is wide enough for most messages; use
Small format with title on separate line if not.

96. "Have a menu option to give gnuchess the 'both' command to play
both sides. Useful for assessing which side is better off in a
position. I know that you can start another gnuchess, but that is very
wasteful of system resources." (Dino Dini) [may be hard; also, probably
few engines other than gnuchess 4.x support the "both" command]

117. Faster square drawing; precompute each piece/square color combo.
Mostly useful in WinBoard.

141. Merge Kevin Ziegler's term-ification code into xboard?

109. Could maybe add the rest of the init options to the option
dialogs: initString, whiteString, blackString, first/second
Host/ChessProgram, remoteShell, telnetProgram, ics Host/Port,
useTelnet, gateway, debugMode, clockMode, etc.

166. Stretching bitmaps in WinBoard, to allow resizing. (?)

177. Maybe send "easy" while playing Two Machines mode when firstHost
= secondHost.

