diff options
| author | John Wiegley <johnw@newartisans.com> | 2008-09-01 04:13:06 -0400 |
|---|---|---|
| committer | John Wiegley <johnw@newartisans.com> | 2008-09-01 05:05:20 -0400 |
| commit | c47696f9840fb99584db8410dd4779416e87a636 (patch) | |
| tree | 1e226eb1ac649ca6c6d4bb5cff238980ace7873a /TODO | |
| parent | 41da77873eeccaa3b7fce2e1b1b0e2420552ed5d (diff) | |
Updated the TODO file.
Diffstat (limited to 'TODO')
| -rw-r--r-- | TODO | 626 |
1 files changed, 376 insertions, 250 deletions
@@ -6,260 +6,386 @@ EMACS-CHESS -*- mode: org; fill-column: 78 -*- #+TAGS: FEATURE(f) DOCS(d) BUILD(b) #+CATEGORY: Chess -* TODO [#B] display: Make it possible to "highlight the last move" -* TODO [#B] display: Make highlight colors easily customizable -* TODO [#B] display: Draw move highlights as a border, not a background -* TODO [#B] display: Always validate the display before painting +* TODO Create a better error hierarchy :FEATURE: + Instead of using (error), we should be throwing specialized signals that + indicate whether it's a problem with a ply, a position, a move, etc. And + then this data object should be included with the error. + :PROPERTIES: + :UUID: 323563C6-2A99-4B01-A29B-BEB09166C103 + :END: + [2008-08-31 Sun] +* TODO chess-auto.el is not being built properly :BUILD: + :PROPERTIES: + :UUID: 184AF780-815B-43DB-87A4-0A81DE252AB0 + :END: + [2008-08-31 Sun] +* TODO Sometimes a chess-test run fails to recognize promotions + :PROPERTIES: + :UUID: 431304B0-E8B9-485E-82B5-D4DF900C27DF + :END: + [2008-09-01 Mon] +* TODO display: Make highlight colors easily customizable + :PROPERTIES: + :UUID: D0842841-9E89-49A3-9EEB-5FA4D251FE41 + :END: +* TODO display: Draw move highlights as a border, not a background + This should be optional, since backgrounds can look nice too. + :PROPERTIES: + :UUID: 5A7A3C73-5105-4BAB-A027-79310B9CD061 + :END: +* TODO display: Always validate the display before painting This will require adding a new text property to each square on the board, `chess-piece', so that the validator can walk through the displayed board and ensure that it matches the known position for that board. -* DONE [#B] ics: Make a refresh act like an assert - - State "DONE" [2008-08-29 Fri 06:28] - Compare with our current known board and trigger an error if it doesn't - match the refresh. - - -chess-autosave -- this module currently isn't working at all! -- doesn't support undoing of moves - -chess-clock -- sometimes, the clock gets shut off (while playing on ICS) for no - reason that I can determine - -chess-irc -- if I move before my opponent has connected, I get a symbol assertion - about "value" - -chess-network -- does not work at all! - -chess-gnuchess -- triggers a Lisp error when I resign - -chess-ics -- takebacks still aren't working 100%; when I submit a takeback - request manually, and the other side accepts, my client doesn't know - what to do with it -- accept of a match request doesn't seem to be working always -- resuming adjourned games does not work at all -- not detecting forfeit by disconnection at the moment - -chess-display -- although chess-display-side-to-move is using faces, the Black/White - text doesn't show the face in the modeline -- sometimes the final event of a game doesn't change the modeline, - like CHECKMATE, or FLAG FELL -- if I win a game, it still reports CHECKMATE incorrect; if I'm white, - it does so on the last ply (per display) -- need a "save this game to a PGN file/database" command - -chess-engine -- if I say "y" to accepting something from my opponent (new game, - takeback, etc), I get left with an hourglass cursor -- if no chess engine is available, there is no nice message being - printed - -chess-ply -- detect games drawn by three-fold repetition and the 50 move rule - (Note, FIDE rules define that a draw must be claimed by one - of the opponents, so we do not really need to do this on - every move, just when a draw is requested.) - -chess-pgn -- when saving a full game to the clipboard, it shouldn't need to save - the FEN if it's starting from a standard position (this doesn't - always happen) -- sometimes when clipping to the clipboard the final "*" is stuck to - the text of the last move - -chess-german -- complete translation - -general -- add an 'install' target to the Makefile -- use more asserts throughout the code -- profile and mem profile -- elint all files -- add docstrings/texi content -- use checkdoc on all files - -These are features scheduled for future 2.x releases. - ----------------------------------------------------------------------- - - General Features - -- Use TrueType or other chess fonts for displaying positions; this - might be the best way of displaying positions on Windows - -- Enable the chat module, and base its interface on what TNT does - -- Merge chess-announce and chess-sound, and use style modules on top - of the underlying module - -- Create a generic chess-output interface, for outputting games to a - particular format (PGN, HTML, LaTeX, etc) - -- Display in the modeline which game in the database we're in, and - what the positional evaluation is - -- Add a `force' event for forcing an engine to move, and a command - from chess-display to send this event - -- If you are playing a puzzle game, and the engine is thinking, and - you hit space to move to the next puzzle, then when the last move is + :PROPERTIES: + :UUID: 169EB9E9-ED82-4FA7-AE8A-129FFFE419F6 + :END: +* TODO autosave: This module currently isn't working at all! + :PROPERTIES: + :UUID: D31ED224-7C1E-4171-AE38-AE87D0032743 + :END: +* TODO autosave: Doesn't support undoing of moves + :PROPERTIES: + :UUID: 80E09658-6D7E-4DD5-A077-E3CDB80F6003 + :END: +* TODO clock: Sometimes, the clock gets shut off while playing on ICS + :PROPERTIES: + :UUID: 5130D83E-91A4-4FFD-B62F-DFD8345B06AC + :END: +* TODO irc: If move before opponent connects, symbol assertion "value" + :PROPERTIES: + :UUID: DCCEB9D3-0F5F-484C-9D4E-A0B7801F101D + :END: +* TODO network: Does not work at all! + :PROPERTIES: + :UUID: AC39392F-57EF-4D79-A718-DEB4B24DFC5D + :END: +* TODO gnuchess: Triggers a Lisp error when I resign + :PROPERTIES: + :UUID: 8ADABEB5-BF38-4A71-949F-074048AED7B0 + :END: +* TODO ics: Takebacks still aren't working 100% + When I submit a takeback request manually, and the other side accepts, my + client doesn't know what to do with it + :PROPERTIES: + :UUID: 67BF2EFF-66E6-4DE3-BCD1-D1743D8C7AC3 + :END: +* TODO ics: Accepting match request doesn't seem to be working always + :PROPERTIES: + :UUID: 296B2B3D-B4CF-418E-8FA6-36D301D09136 + :END: +* TODO ics: Resuming adjourned games does not work at all + :PROPERTIES: + :UUID: D2E35ADE-1CFF-4DB6-A910-DF3C886709B3 + :END: +* TODO ics: Not detecting forfeit by disconnection at the moment + :PROPERTIES: + :UUID: 0EDCC239-65B0-450F-82B9-12B1E96667D4 + :END: +* TODO If you are playing a puzzle game, and the engine is thinking + And you hit space to move to the next puzzle, then when the last move is finally received from the engine it causes an error. - -- Clean up chess.el, and let people override the chess-default-* lists - -- Write chess-descriptive.el, and have the code in general use + :PROPERTIES: + :UUID: 4583E224-B5A2-47D4-906E-6374AA7AB936 + :END: +* TODO Port the code to XEmacs + :PROPERTIES: + :UUID: A633A292-722C-4566-9F5D-807675DAB8DD + :END: +* TODO Find a way to display pieces on Windows platforms + Or at least document how to build XPM support into Emacs for Windows. + :PROPERTIES: + :UUID: D602699C-A340-41A4-BA94-876743D43F8C + :END: +* TODO Add chess-ucb to the list of modules created via M-x chess + Right now there is no facility for having two engines associated with a + single game (and chess-link is not what we want in this case). + :PROPERTIES: + :UUID: 8C355AA3-46DD-4261-BC7C-4028CDF42854 + :END: +* TODO display: Sometimes final event of game doesn't change modeline + Like CHECKMATE, or FLAG FELL + :PROPERTIES: + :UUID: 316BD168-29A8-4B54-830C-FA5CEA397518 + :END: +* TODO display: If I win, it still reports CHECKMATE incorrectly + If I'm white, it does so on the last ply (per display) + :PROPERTIES: + :UUID: 3F662E90-3F58-43E9-B59E-936F1EBC3953 + :END: +* TODO display: Need "save game to a PGN file/database" command + :PROPERTIES: + :UUID: 2BBA9120-1EE5-4623-9F52-DFB966EC3317 + :END: +* TODO engine: Answering "y" to opponent (takeback, etc) hangs + I get left with an hourglass cursor. + :PROPERTIES: + :UUID: 0F9290D9-90D6-48ED-9F13-EEDF42EA91F0 + :END: +* TODO engine: If no chess engine available, print a nice message + :PROPERTIES: + :UUID: E0889D90-33FD-426F-AC45-6221136162D8 + :END: +* TODO ply: detect games drawn by 3-fold repetition and 50 move rule + Note, FIDE rules define that a draw must be claimed by one of the opponents, + so we do not really need to do this on every move, just when a draw is + requested.) + :PROPERTIES: + :UUID: 4D3BBF63-A640-483A-ACF9-CC948AEAAAC7 + :END: +* TODO pgn: When saving game to clipboard, shouldn't need to save FEN + If it's starting from a standard position (this doesn't always happen) + :PROPERTIES: + :UUID: 7CB3441C-9398-42D7-A174-5F534ADA473B + :END: +* TODO pgn: Sometimes when clipping, "*" is stuck to last move's text + :PROPERTIES: + :UUID: 5B737ED4-F271-425E-9F1D-1DFA7834BAFF + :END: +* TODO german: Complete translation + :PROPERTIES: + :UUID: 937301D5-2C31-4F43-83B0-FB9A0CD5F138 + :END: +* TODO Profile and mem profile + Especially try to get the validation suite running faster! + :PROPERTIES: + :UUID: 4A08E03C-1AEA-4C14-951A-3F8DBB2E29E7 + :END: +* TODO Elint all files + :PROPERTIES: + :UUID: 7F56D199-279D-4DAD-AF4C-D612AFC803FA + :END: +* TODO Add docstrings/texi content + :PROPERTIES: + :UUID: 7BC85C08-7A3B-4A09-94C6-9AF10180924B + :END: +* TODO Use checkdoc on all files + :PROPERTIES: + :UUID: 8D30489F-9000-43C3-BCA6-0C14F0E5C831 + :END: +* TODO Clean up chess.el + :PROPERTIES: + :UUID: F2CC192E-8AD3-47BD-9A9F-3990BA1206A2 + :END: +* TODO ics: Add a completion function against logged in users :FEATURE: + :PROPERTIES: + :UUID: 1AFE6B32-7236-4E71-9CCC-21B797E67F08 + :END: +* TODO ics: Copy ics.el's nicer functionality into chess-ics.el :FEATURE: + :PROPERTIES: + :UUID: 05E523E9-38EC-4268-89B4-2A42409F9059 + :END: +* TODO Use TrueType or other chess fonts for displaying positions :FEATURE: + This might be the best way of displaying positions on Windows. + :PROPERTIES: + :UUID: 0387D818-3841-4BA1-A246-F48349F4A53F + :END: +* TODO Enable chat module, and base its interface on what TNT does :FEATURE: + :PROPERTIES: + :UUID: A5AC87EC-99B7-4522-9916-F97ED3EC5F78 + :END: +* TODO Merge chess-announce and chess-sound :FEATURE: + Use style modules on top of the underlying module. + :PROPERTIES: + :UUID: 87612913-B3AD-4329-892F-C156F88A358C + :END: +* TODO Create generic chess-output interface :FEATURE: + For outputting games to a particular format (PGN, HTML, LaTeX, etc). + :PROPERTIES: + :UUID: A7F64797-4827-4EF6-BFE4-075D6F430D4E + :END: +* TODO Display in modeline which game in the database we're in :FEATURE: + And what the positional evaluation is. + :PROPERTIES: + :UUID: 6144C07C-8F6B-46B8-80A8-C736E3C843F0 + :END: +* TODO Add `force' event for forcing an engine to move :FEATURE: + And a command from chess-display to send this event. + :PROPERTIES: + :UUID: E88AE290-D2DD-4445-942E-E9DE09596A1F + :END: +* TODO Let people override the chess-default-* lists :FEATURE: + :PROPERTIES: + :UUID: AEBED712-70F6-499B-A8D8-6A8632D9A7D1 + :END: +* TODO Write chess-descriptive.el, and have the code in general use :FEATURE: chess-ply-to-string and chess-string-to-ply, so that users can use descriptive notationas an alternative to algebraic. - (NOTE: this might proof problematic since descriptive move notation - is ambigious if we don't have the full game information, since - we need to destinguish between QR KR QN and KN. So chess-descriptive-to-ply - would need to use a game object as reference, rather than just a position.) - -- Change chess-announce/sound so that it reads from the text rendition - of the move; this way it will work with either descriptive or - algebraic notation. Also, chess-announce and chess-sound can be - collapsed into one module, with different "styles" of announcing. - -- Make ( create variations in a display, and keys to move into and out - of them. At the moment, variations are supported programmatically, - but not in the UI. - -- Make a display read-only mode, which allows people to view/browse - but not alter a game. This could be used for remoting displays in - order that people on other X servers might observe a game. - -- Implement the "50 moves after irreversible" draw rule in chess-ply - -- Port the code to XEmacs - -- Find a way to display pieces on Windows platforms, or at least - document how to build XPM support into Emacs for Windows - -- Add a way to include the chess-ucb module in the list of default - modules created via M-x chess. Right now there is no facility for - having two engines associated with a single game (and chess-link - is not what we want in this case). - ----------------------------------------------------------------------- - - ICS Client - -- Add a completion function against logged in users - -- Copy some of ics.el's nicer functionality into chess-ics.el ----------------------------------------------------------------------- - - PGN Mode - -Maybe pgn-mode could just allow normal editing, and bind some keys -to do special things. e.g., the mouse binding could work as normal, -SPC could update the display. So if you do - -1 e4 SPC -you get the move displayed. Some binding could do redisplay anyway, e.g. C-l? -Then, one could enter variations or such simply with ( or { and -the display would update automatically. -e.g., you do -( 15.e5 SPC Nf3 SPC ) -and you'd get three display updates, on e5 SPC, you get that -ply, then the second one, and on ) you get the position before the -variation. Move point into the variation again, and hit C-l and you -get the pos where point is on. - -There should be a forward-ply and backward-ply, maybe something like -M-f / M-b, and C-u M-f for two plies forward? - -Very nice would be a pcomplete-based completion fascility, so -simply hit TAB at any point, and you get the right completion. -Example: - -[Event ...] - -TAB 1.TAB ... - -On first tab, the move number is inserted. On second, you get -all possible moves in that position. - ----------------------------------------------------------------------- - - Chess by Mail - -- Add support for adjournments; also, implement this is such a way - that an e-mail or postal game is basically a game that's adjourned - after every move; use BBDB if available - -- Use MIME attachments (application/x-chess-pgn) for sending e-mail - chess games back and forth. - ----------------------------------------------------------------------- - - Database Interaction - -- Enable UI commands in chess-display to interact with databases. As - of 2.0, this support is programmatic only. - -- Follow what `edit-env' does, in order to make chess-query.el. - ----------------------------------------------------------------------- - - Training/Tutorials - -- Write a scripted chess-tutorial. - -- Allow the opponent to give hints. - -- Add a warning mode that will use the results of an analysis to warn - the user (and ask for confirmation) before doing something that - might lead to an inferior position. - -- Add a chess tutor program, to teach people how to play chess - ----------------------------------------------------------------------- - - Analysis features - -- Add slots to each position for keeping track of positional - evaluation (these values can be automatically determined when - parsing ICS12) - -- Add an engine function for obtaining an evaluation of the current - position. Then, allow M-x chess to startup a non-game oriented - engine, solely for the purpose of submitting position evaluations, - and displaying the result in the modeline. (Also, look at crafty's - kibitzing feature). - -- Add a Map command, that will colorize the squares depending on - whether they are reachable by either side. Green if reachable by - you, Red if by your opponent, and blue if by both. With a prefix - argument, colorize only the squares that have pieces on them. This - is a stable modes that remains in effect until turned off. It also - requires the ability to pass a color to the chessboard highlighting - routine. - -- Using gnuplot-mode, allow evaluation trends to be plotted - -- Add an analyze command that will indicate which pieces are defended, - how well, which are attacked, which moves would increase - defense/attack/both, etc. Basically, everything that can be known - about the current board, and one move ahead (on both sides). - ----------------------------------------------------------------------- - - Other variations - -- Need a way to play bughouse/crazyhouse games. - ----------------------------------------------------------------------- - - Other features - -- Keeping a player database in BBDB - -- Managing a tournament, setting up pairings, calculating ratings + (NOTE: this might proof problematic since descriptive move notation is + ambigious if we don't have the full game information, since we need to + destinguish between QR KR QN and KN. So chess-descriptive-to-ply would need + to use a game object as reference, rather than just a position.) + :PROPERTIES: + :UUID: 7C283CC8-450C-468C-93C3-C264CC8F536A + :END: +* TODO Change chess-announce/sound so it reads the text rendered move :FEATURE: + Such as "king's pawn to e4". + + This way it will work with either descriptive or algebraic notation. Also, + chess-announce and chess-sound can be collapsed into one module, with + different "styles" of announcing. + :PROPERTIES: + :UUID: B7090875-BB45-438D-B7C9-CC7A0524D98B + :END: +* TODO Make ( create variations in a display :FEATURE: + And keys to move into and out of them. At the moment, variations are + supported programmatically, but not in the UI. + :PROPERTIES: + :UUID: C7B9BEEE-5261-412C-8592-5E1EDEBC5544 + :END: +* TODO Make a read-only display mode :FEATURE: + Which allows people to view/browse but not alter a game. This could be used + for remoting displays in order that people on other X servers might observe + a game. + :PROPERTIES: + :UUID: 1968B422-B8D9-4493-9C90-401956C8CAE0 + :END: +* TODO Enhance PGN mode :FEATURE: + Maybe pgn-mode could just allow normal editing, and bind some keys + to do special things. e.g., the mouse binding could work as normal, + SPC could update the display. So if you do + + 1 e4 SPC + + you get the move displayed. Some binding could do redisplay anyway, e.g. C-l? + Then, one could enter variations or such simply with ( or { and + the display would update automatically. + e.g., you do + + ( 15.e5 SPC Nf3 SPC ) + + and you'd get three display updates, on e5 SPC, you get that + ply, then the second one, and on ) you get the position before the + variation. Move point into the variation again, and hit C-l and you + get the pos where point is on. + + There should be a forward-ply and backward-ply, maybe something like + M-f / M-b, and C-u M-f for two plies forward? + + Very nice would be a pcomplete-based completion fascility, so + simply hit TAB at any point, and you get the right completion. + + Example: + + [Event ...] + + TAB 1.TAB ... + + On first tab, the move number is inserted. On second, you get + all possible moves in that position. + :PROPERTIES: + :UUID: 7D4ACEDE-C9D9-49E1-883F-829DB80FC5E7 + :END: +* TODO Add support for adjournments :FEATURE: + Also, implement this is such a way that an e-mail or postal game is + basically a game that's adjourned after every move; use BBDB if available + :PROPERTIES: + :UUID: D41A3E75-04FB-4EC8-A64C-7BD54658AA78 + :END: +* TODO Use MIME attachments (application/x-chess-pgn) :FEATURE: + For sending e-mail chess games back and forth. + :PROPERTIES: + :UUID: B01A0B43-12F3-4978-A63A-01ADBA9BB78D + :END: +* TODO Enable UI commands in chess-display to interact with databases :FEATURE: + As of 2.0, this support is programmatic only. + :PROPERTIES: + :UUID: 8CA4762E-4665-433E-9538-994BEDCABE21 + :END: +* TODO Follow what `edit-env' does, in order to make chess-query.el :FEATURE: + :PROPERTIES: + :UUID: 48F2D4F3-8B1B-4196-BED0-1407239ADC4F + :END: +* TODO Allow the opponent to give hints :FEATURE: + :PROPERTIES: + :UUID: 068BE26D-4D81-44CD-A4EB-04F15D5064FB + :END: +* TODO Add warning mode that uses analysis results to warn the user :FEATURE: + And ask for confirmation before doing something that might lead to an + inferior position. + :PROPERTIES: + :UUID: 9EF1FA72-EDC9-4C97-B699-A0DF8EE1893B + :END: +* TODO Add a chess tutor program, to teach people how to play chess :FEATURE: + :PROPERTIES: + :UUID: 8AA53467-6D89-4C27-AF05-4AE793EA6A2E + :END: +* TODO Add slots to positions for tracking positional evaluation :FEATURE: + These values can be automatically determined when parsing ICS12. + :PROPERTIES: + :UUID: 608A74EE-9699-406B-B57A-08BFECBC9FEB + :END: +* TODO Add an engine function for obtaining a position evaluation :FEATURE: + Then, allow M-x chess to startup a non-game oriented engine, solely for the + purpose of submitting position evaluations, and displaying the result in the + modeline. (Also, look at crafty's kibitzing feature). + :PROPERTIES: + :UUID: BE3EAF49-622E-4300-9D63-CB00B5F738F7 + :END: +* TODO Add a Map command, that will colorize the squares :FEATURE: + Depending on whether they are reachable by either side. Green if reachable + by you, Red if by your opponent, and blue if by both. With a prefix + argument, colorize only the squares that have pieces on them. This is a + stable modes that remains in effect until turned off. It also requires the + ability to pass a color to the chessboard highlighting routine. + :PROPERTIES: + :UUID: B2012331-0F7F-488D-BFDC-2C08E2E018FB + :END: +* TODO Using gnuplot-mode, allow evaluation trends to be plotted :FEATURE: + :PROPERTIES: + :UUID: BC458171-65B7-4CAE-ACF5-9FD0E263F425 + :END: +* TODO Add an analyze command :FEATURE: + That will indicate which pieces are defended, how well, which are attacked, + which moves would increase defense/attack/both, etc. Basically, everything + that can be known about the current board, and one move ahead (on both + sides). + :PROPERTIES: + :UUID: 8439E0A2-6ED6-489D-94EF-9033F76210EE + :END: +* TODO Need a way to play bughouse/crazyhouse games. :FEATURE: + :PROPERTIES: + :UUID: 237BDAFD-0B92-4A06-AA25-D5568FF3DC4B + :END: +* TODO A way to keep a correspondence players database in BBDB :FEATURE: + :PROPERTIES: + :UUID: 8D40AD04-2392-410E-BDFE-AA80381E2BCB + :END: +* TODO Tools for managing a tournament :FEATURE: + Setting up pairings, calculating ratings. + :PROPERTIES: + :UUID: D53A7DA4-6940-4E0C-938E-08E12CC7EDEF + :END: +* STARTED display: Make it possible to "highlight the last move" :FEATURE: + - State "STARTED" [2008-09-01 Mon 03:59] \\ + This is mostly done. I'd like to make the highlight done for the + opponent's moves + :PROPERTIES: + :UUID: F55EAAA5-504E-44A5-AA1A-43516711F8DD + :END: +* DONE "End of file" error reading game 2008149 + - State "DONE" [2008-09-01 Mon 04:11] \\ + The problem was parsing [Event "Hello \"]. + :PROPERTIES: + :UUID: F994A8E9-5EDD-4681-863E-491806F0ED07 + :END: + [2008-09-01 Mon] +* DONE [#B] ics: A refresh directive should act as a position assert + - State "DONE" [2008-08-29 Fri 06:28] + Compare with our current known board and trigger an error if it doesn't + match the refresh. + :PROPERTIES: + :UUID: C0F3CD12-83C5-4970-AD27-8C4A4C447BC2 + :END: +* DONE display: Display problem with chess-display-side-to-move + The text doesn't show the face in the modeline + - State "DONE" [2008-09-01 Mon 03:55] + :PROPERTIES: + :UUID: 884690AC-C3BE-43D6-A600-48D221BD0FB0 + :END: +* DONE Add an 'install' target to the Makefile + - State "DONE" [2008-09-01 Mon 04:02] + :PROPERTIES: + :UUID: 7A27FDC0-0053-4656-9AC9-6D7BEECE6D4A + :END: |
