$Id: TODO,v 1.213 1999/08/26 02:06:46 jik Exp $ The Ever growing list of things that should be done and things that would be nice if they were done.... (and even worse, it's not up to date) - The "artPost" composition pane should have a button to switch to "Post and mail". - It should be possible to wrap included text, paying attention to the included text prefix when doing so. - Warn the user if a message being sent or posted contains long lines. - XRN should strip empty headers before sending messages. - By default, including article text in a followup or reply should not include the signature. To allow the signature to be included, two features should be available: - A modifier hey held down when the "Include article" button is pressed to tell XRN to include everything. - The user should be allowed to highlight the text he wants to include and then click on a button to include just that text. - In "all groups" mode, the "Post" and "Post & Mail" buttons post to whatever newsgroup the cursor is currently over. I'm not convinced this is correct behavior; I suspect that like Newsgroup mode, they should put up a blank template and let the user specify the group to which to post. - Need to support INN 2. - Allow various header fields (configurable) in a displayed message to be in a different font, different color, different size, etc. - Add an option to hide identical Subject lines in the article summary, so that users can scan the summary quickly to find the various Subject lines in a group. Suggested by Karl Kleinpaste <karl@justresearch.com>. - When a message is put in the info line while a dialog is popped up (e.g., the dialog with the "Cancel search" button in it), and then the dialog is popped down, if the mouse is over one of the buttons, the message in the info line will immediately disappear because of the enter event generated when the dialog goes away. Proposed fix: Keep track of the time at which messages are put into the info line, and require that a message remain in the info line for some number of seconds before allowing the button documentation strings to start appearing again. - Log the date in the Information window when it chanegs, so that it's possible to tell the dates as well as times of all messages in the window. Suggested by bri@whitestone.com (Brian Rice). - Allow Reply-To to be set differently for News and Mail messages. - Add a kill-file command for dynamically creating a new kill-file entry (e.g., "when you see a message by this author, kill its subthread," but more general than that). - Allow the user to retry after mistyping his NNTP password. - Allow users to Supersede their own articles, similar to their current ability to cancel their own articles. - Make XRN behave better in the face of groups in the active file which claim to have many more unread articles than they actually do because the active file hasn't been renumbered. - Make it possible to undo changes made to a newsgroup after exiting the group. - Make XRN display a list of valid distributions (or make the list available to the user in some other way) while composing a posting. - Support a separate colormap for XRN. - XRN should notice when the contents of a THRU line makes no sense, and ignore it if so. - XRN should include the NNTP server name on the THRU line, so that the same KILL file can be used with multiple servers. - Don't redraw the newsgroup list immediately upon rescan -- only redraw it if it changes. - For dialog boxes that prompt for file names, either (a) allow a "file selection widget" type of thing to be used, or (b) keep track of previously specified file names and allow them to be selected from a menu in addition to allowing a new filename to be specified, or (c) some combination of both of these. - There are various places where XRN notices that newsgroup which previously existed doesn't anymore, but then doesn't proceed to follow through on that and remove the newsgroup from the .newsrc, cache, newsgroup list, etc. These should be fixed. - Make the Makefile insert the version number into xrn.man and XRn.ad so that it only have to be hard-coded in one place -- patchlevel.h. - Document accelerators for the text window of article mode in the man page. - Add a facility to allow users to add customized headers to outgoing messages, in addition to the ones that XRN knows about (possibly, make them different for mail and news messages, with the same class so people who want them to be the same don't have to put them in their resources twice). - Add a "Save" button to the dialog that comes up after a composition is edited with an external editor, asking the user to send, abort or reedit. - GroupLens integration. - Display a netiquette message directing new users to news.announce.newusers when they read news for the first time (suppressable by an X resource). - When the user is posting, there are no postable groups in the Newsgroups line, and fullNewsrc is false, ask the user if he wants to fetch the full newsgroup list in case the group(s) he's trying to post to is/are ignored. - Support for scoring on both authors and threads? E.g., sort Subjects by their scores, only display articles above a certain score, don't display articles below a certain score, etc. - Fix server.c to recover properly if it loses the NNTP connection in the middle of a command (and to retry a limited number of times, instead of retrying forever and possibly going into a tight loop?). - add a "clear" button to the dialog boxes with persistent text entry fields. - why does updatenewsrc() mark all articles in an unsubscribed group as read when saving the .newsrc? There may be a reason for this, but on the other hand, it may be incorrect behavior. Need to try to figure out what's going on here, and fix it if it's wrong. (problem reported by Klaus Guntermann <guntermann@iti.informatik.th-darmstadt.de>) - support for a motd (suggested by dennett@image.Kodak.COM (Charles R. Dennett)). - Add minLines/maxLines support to newsgroup mode. I'll probably want different resources for article mode and newsgroup mode, with the same classes so that people can set them both to be the same thing if they want. The code for this in artMode.c should be generalized and moved into buttons.c so that it can be used both by article mode and newsgroup mode. - XOVER support? - Add support for displaying an article by message ID (suggested by Philippe Brieu <philippe@pablo.physics.LSA.UMich.EDU>). - Add confirmation-box support to more buttons (in particular, someone requested it for the kill buttons, but it would be useful for others as well). - WWW support. Either use an HTML widget for displaying articles, or make it possible to highlight a URL and send commands to display it to an externally running browser (e.g., Mosaic, Netscape), as suggested by burwell@parc.xerox.com (Becky Burwell). - Make some of the "gripe" information filled in automatically, or perhaps simplify the "gripe" screen so that it doesn't put off users who don't know most of the information. Or perhaps mention explicitly that it's all optional. - Remove most of the command-line options that are the same as X resources. They're unnecessary given that the X toolkit provides the '-xrm' option, and considering that most of them will be specified in X resources almost exclusively anyway. - Figure out why "Select widget in client" in editres on XRN causes it to crash with a "bad window" X error. - Replace all the messages of type "Can't open <foo> file `%s' for writing: %s." with a single message with a %s for the file type which is filled in by each of the callers. - Shouldn't warn about article being mailed to moderator when it includes an Approved line? - Make the attribution lines in followups and replies customizable. - Line-break attribution lines if they're too long. (suggested by Paul Menage <pbm1001@cam.ac.uk>). - Fix up the posting code so it only includes mail headers in the mail message and news headers in the posting, and comments out other headers with "X-" or removes some of them completely or something. - Is it really necessary to copy the .newsrc file instead of renaming it? Need to look into this, find out if renaming is sufficient, and if so, modify the code to rename instead of copying. - Good Net-Keeping Seal of Approval evaluation for XRN. - French support. - MH folderDir support. - MIME support. - When dialogs are popped up, make the default button centered under the cursor, instead of centering the entire dialog under the cursor. - Xaw3d support. - Allow different organizations for different newsgroups, just like there are different signatures for different newsgroups. - Make it possible to configure the composition pane buttons with a buttonlist resource. - Add allScrollBeginning, allScrollEnd, allScrollLine, allScrollLineBack buttons, actions, bindings. - Add a resource to specify the KILL-file directory, so that the user can store KILL files and save files in separate directories if he chooses to do so. - Make more of the stuff in the man page configurable based on what's in config.h. - Send a bug report to the X Consortium about TopPosition changes while redisplay is disabled not working. (i.e., disable redisplay, change insertion point to somewhere off screen, and the widget doesn't realize immediately that its top position has changed.) - Make ^S in newsgroup and all modes search through the newsgroup index and then move to the beginning of the line on which the match was found. - Send in bug report about how the Text widget drops a character when wrapping a word longer than the line length. - Break up internals.c into smaller files. - When I "Local Kill" a series of articles in succession when running XRN over a slow network (SLIP), when it's done KILLing and puts the cursor on the next unread article, the cursor flashes several times. I'm not sure, but it may flash as many times as articles I killed. I need to investigate this one further. I think this only happens when the article list scrolls while doing the killing. This is probably related to an Xaw Text widget bug that I can't fix (I've already sent in a bug report about it to the X Consortium). - Modularize all the other Xaw usages in the code into simplified interfaces. - Put back Motif support. - Investigate bug reported by uri@watson.ibm.com, that article mode exits to newsgroup mode if it encounters an unavailable article. - Send in a bug report about the fact that XawTextEnableRedisplay always redisplays the whole window, even if nothing has changed (I *think* -- need to confirm this). - Send in a bug report about the fact that XawTextSetInsertionPoint causes a full redisplay instead of just the cursor being erased and being redrawn (this may only happen when it is called when redisplay is disabled -- need to investigate more). - Optimize article mode so that it only redraws the upper text widget when it has to. - Send in a bug report and patch about the fact that the AsciiSrc widget doesn't always ignore XtNlength when useStringInPlace is false, even though it's supposed to. - Optimize all mode so that it only redraws the lower text widget when it has to. - Optimize add mode so that it only redraws the upper text widget when it has to. - The code in signatureFile() is unnecessarily obtuse and complex. For example, the "sigfile" variable doesn't need to be dynamically allocated *or* static. Clean this code up. - "When leaving article mode to return to all mode, the cursor should either remain on the previously read group (my favorite) or go to the next one. Instead, it always jumps to the very first group." Suggested by Michel Eyckmans (MCE) <eyckmans@imec.be>. More generally, keep track of where we are in the "all" list just like we keep track of where we are in the newsgroup index, using a global variable containing the group we're currently on, and finding it in the list whenever updating all mode. - Support WM_DELETE_WINDOW. Suggested by nissen@montefiore.ulg.ac.be (Alain Nissen). - Display newsgroup descriptions somehow in all mode and/or newsgroup mode. and/or add mode. - Allow subject index and article text fonts to be specified on a per-newsgroup basis in X resources. Suggested by uri@watson.ibm.com. - if you type a character in the save dialog while the save is happening (i.e., after you already typed the file name and hit return), the character makes it into the dialog before it gets popped down, and shows up the next time you go to save (if you save again while reading the group). Possibly true of all dialogs. - should be possible to highlight and kill a range of articles. - subscribeHandler doesn't display an error if "Last group" is selected and there is no last group. - subscribeHandler should put a message in the info line indicating what it did. - Fix this bug (reported by Reg Clemens <reg@dwf.com>): First bring up XRN, and select a group. I see 7 lines of buttons in the middle of the screen, ranging from Quit -> List_old. Now reach up to the upper Right Hand corner of the border and make the Widget TALLER or SHORTER. *DO NOT* change its width. The 7 lines of buttons will collapse to 3 lines from Quit->Goto_Article. If you then quit the group and (re)open it or another group you get back to the 7line display of buttons. Strange. Now go back to the corner and make the widget WIDER or Narrower, then change the height again, the above behaviour no longer occurs. Weird. - Add X resource to optionally process Xref headers in articles being caught up in a newsgroup. - I connected to an INN server that I wasn't allowed to use. Instead of getting a useful message from XRN, I got "Unexpected EOF on NNTP server socket -- server is probably malfunctioning". - Go through all of the X resources that are hard-coded as widget-creation arguments in the program and move as many of them as possible to the app-defaults file. - Go through all the uses of XtSetValues and XtGetValues and convert them to use XtVaSetValues and XtVaGetValues whereever possible, to eliminate unnecessary argument arrays. Same thing for the Create*Widget functions. - Make sure all temporary files are being deleted properly (I think there may be a temporary file leak somewhere). - Allow the number of articles to be retrieved to be specified upon entering the newsgroup, if the number of unread articles in the group exceeds a certain threshold, rather than making it only configurable via showOnly. - Facility for unpacking and decoding multi-part articles. - Fix stuff that uses MAXPATHLEN to use the correct POSIX call instead on POSIX systems. - PGP support? - Add a mode in which only the header of an article is fetched, unless the user tries to scroll down, in which case the rest of the article is fetched. - Make the program multithreaded, or use a subprocess for communication for the server, or something so that the UI and NNTP stuff can work independently of each other (the WorkProc stuff used now to do prefetching is a hack that approximates this, but it really isn't good enough splitting the NNTP stuff into a separate thread or process is the right way to do this, but it's a lot of work). Another option is to make all of the NNTP code event-driven, and to use XtAppAddInput to add the NNTP socket as an input source, so that input from the NNTP server gets processed whenever there are no other X events to be handled. - Add X resources (and command line options) corresponding to the USER, HIDDENHOST, HIDDENPATH and FULLNAME environment variables. - Add something to the buttonList X resource syntax to allow someone to say, "Put all buttons not listed explicitly here." It should obviously only be specifiable once in any particular button list. This will allow people to move specific buttons to the beginning or end of the list in the order they want, without having to update their resources for new buttons after every release. Suggested by phigro@phigro.rnd.symix.com (Phil Gross). - Should XRN try to connect to a news server with host name "news" by default if NNTPSERVER isn't set and SERVER_FILE doesn't exist (and the server name can't be determined from the INN configuration file)? - Make DO_NOT_EAT_TYPE_AHEAD work. - Merge DXRN into this version of XRN. - Figure out how to make the KILL file stuff support case-insensitive searches. The best way to do this is probably to add an option for XRN to use the GNU regexp routines, which I believe take options to tell them to do case-insensitive searches. Need to investigate further. - Turn info() and infoNow() into varargs functions like mesgPane(), and fix all calls to them -- calls with strings with % in them need to have the %'s escaped, and calls that use sprintf into a buffer first can get rid of the buffer. - Make the format in which files are saved in savePostings, in the current code and in any new code, dependent on saveMode. Also, make it possible to cause a different format to be used by specifying the same characters allowed in the "Save article" dialog at the beginning of file names. - Add a character prefix to the "Save article" code to allow a message to be saved in UNIX Mailbox format even when that's not the default save mode (or vice versa). - Wherever articles are saved to files named in X resources or in dialogs, allow all the prefix characters to be used to specify what format to save in. - getarticle return - read updated .newsrc file (XRN detects this, but should allow you to reread) - prefetch should occur at end of list, not largest number (sorted subject...) - clean up KILL file support - Including one KILL file inside another one. - handle '{' correctly The regular expression \{<m>,<n>\} is supposed to match between m and n occurences of the previous character. To kill an expression of the form "{foo}", xrn requires the braces to be quoted. Rn, on the other hand complains if the braces are quoted. Rn, on the other hand complains if the braces are quoted since the expression is not valid. Test: /{foo}/:j - prompt for KILL expression in article mode - edit kill file - closer to RN - Support KILLLOCAL and KILLGLOBAL environment variables a la trn. - "Author search". - replace popen of mailer with something better so status code can be checked - option to capitalize, not-cap the group name when saving. - XHDR message on server timeout - handle =ng in active file - command to skip quoted/included sections - user selectable cursors - text and reference based searching - strip leading and trailing spaces from newsgroup name in the Newsgroups field - control C to disconnect/reconnect and return to top level... - allow partial selection on subject line - partial selection determines what amount of the subject or author is to be killed.... - local server (clientlib.c replaced with something that accesses local files) - reading an MH folder as a newsgroup (suggested by Luigi Semenzato <luigi@CS.Berkeley.EDU>). - Allow arbitrary articles/newsgroups to be selected when it makes sense to do so, rather than only allowing selection of contiguous ranges.