Slimy things to do, and various notes ------------------------------------- Things to add or change before next release: * mouse-3 doesn't always work (if there's new mail?); don't use integer indexes into list? * error messages with popups, not pring * rescan the current folder as well, periodically * decrement_unread: only if message is in inbox folder; and other problems leading to -1 unread * put send and abort in compose window further away from each other * msgwin title: just name or addr, not both Later stuff: * Misc: * add X-Mailer header? * mark replied messages with special status * Copy, move should be done at commit time, and should update the folder window. Copied/moved should be marked with some other status character then D (C and M, perhaps). * allow editing of signature-file from within slime (new option to Config and ConfigEditor: CONFIG_STRING_LONG, which is same as CONFIG_STRING, but ConfigEditor gives a multiline editor) * speed up threading and other slow operations * _intern_string should make sure it doesn't grow too big * run PGP and other external program async. (allow using slime while they're running, e.g., to kill the external program); ditto for scanning inboxes; separate engine and ui to different processes? * implement locking: folder.open probably shouldn't lock folder (folder is kept open while viewed, so that would prevent new mail from arriving); instead, lock when operations on folder require it (rescan, commit, others?), and raise exception LockException if can't get lock - open imap folder locks it? - some lockfiles should be refreshed every N minutes; what if rescan/commit is slow? even just reading one message might be too slow! use separate thread? - after getting lock, make sure the folder is as we expect it to be * spool should be mailbox * automatic fcc to folder of replied-to message for replies? or always a given folder? or never? (settable) * quote: ignore signature (optional) * long references: remove from middle, not end * installation: ask for and set #!-headers in scripts * address parsing breaks if addresses have commas (and in other ways) * avoid using msg.getfulltext; implement msg.getfile instead; this should reduce memory usage * settable: ask whether to move read mail to received (default=no?) or have an MH-style inbox and an "inc"? * print letters in some nice way * Unix folders: * unix mailbox commit rewrites 'From ' lines (and wrongly!); when reading a mailbox, store the From_ lines; invent one for new messages (abstract class should have function to return it so it is kept when moving/copying messages from one mbox to another) * unix mailbox commit: use better filename and make sure it doesn't exist yet * unix mailboxes do not handle messages with identical headers; invent a better way to recognize new messages (just scan after last message? but that doesn't notice deleted ones); just use offset in file? * unix mailbox commit: should check that file hasn't been modified since last scan, to prevent losing stuff * MH: * MH copy_message, move_message: if source is also in MH folder, use MH routines (much faster); for other message types, add and use a msg.get_file that returns msg._fp; do _not_ read everything into memory * MH folders don't handle renumbering of folders while program is running; use inode numbers for message identity, not message numbers; this makes it robust against external folder packing * MH: should folder be packed? make it an option later? * MIME: * mimify at send: deduce and set character set correctly, and other MIME headers too * decode header mime encodings * handle uuencoded stuff * support other charsets than latin1/usascii * save part to file/pipe * PGP: * send pgp/mime signed messages: canonicalize message correctly * support application/pgp (read only), text/plain that begins with (empty lines) and ^---BEGIN PGP; showing and sending * learn about S/MIME * User interface: * move, copy message: select folder from menu (in absence of dnd) * keyboard controls should work in both windows * It should be possible to change folders without committing (i.e., to forget changes to folder). * Do cursor magic so that a suitable cursor is set everywhere, and so that a busy cursor is shown, when doing slow stuff. * selection list: move barcursor first * set mouse cursor to clock while busy * allow selecting multiple lines in ftoc, and only allow selecting lines * space should go to next new message, in any folder, if at end of one folder * there should be some key for "go to next new message, anywhere" * handle WM_DELETE_WINDOW protocol self.top.protocol("WM_DELETE_WINDOW", self.deleteWindow) * improve error messages (catch exceptions, popup error message box) * mime multiparts: toggle showing each part separately * horizontal scrollbars in selectionlists (put into ScrolledText) * configuration window: - show threaded or sort by date/subject/subject+date/from (should be settable per ftoc-window as well) - hide only headers known to be unimportant? settable! - have one "all options" window, and make cfgwins scrollable * make subwindows in main window resizable with mouse * make columns in ftoc resizeable by mouse and configurable * make dates in ftoc nicer and configurable * ftoc: more info per message (to, first N lines of message (after quotes)) * clone main window * msgwin: optionally do paste-source with quotes, and paste-sink as well * "catchup" * Documentation: * start a manual * write description of overall structure (for programmers) * find good specification for "Status:" and "X-Status:" headers * Python: * early "SeX" messages from da Silva have bad dates, but should be parseable; Python's getdate doesn't do it, though * pythons getdate doesn't do timezone? runtime patch? * python mailbox.py: of what use is _Mailbox.seek, and does it work at all? Text mode interface (someone else will have to write it): * text interface should have a `really terse' mode for slow modems (<=14k :) * text interface: two windows, one shows a letter, one writes reply Lunatic ideas for after 1.0: * simple inline-html support (incoming) * good printer support * mixmaster support (and other anon mail support) * internal editor should allow creation of MIME messages * picons * change pop/imap password securely from mailer (=> user does not need to manually log into server at all) * put ui and engine in different threads? * address book a la exmh (and Emacs bbdb?): grab addresses from every shown message, and have search tool (ctrl-tab) in mail editor; a trad. alias system as well; grab data to aliases from mail, including signature * have address book integrate into external (non-existing) database of contact info (names, phone numbers, e-mail addresses, etc); grab data from signature * folder specific signatures * grab url's from letters, store in suitable file * show text/html * netiquette stuff: check for too much quotes, etc * spam filter on inbox(es)? (move spam-looking stuff into separate folder, or something); generic filtering? * global operations (based on filters): set/reset flag, delete/copy/forward /whatever flagged mail * user defined shortcuts * reply to many letters at once (quote all of them) * interface for subscribing and unsubscribing to mailing lists * compress folders * killfile and scoring * remove duplicates based on message-id * mailing list (un)subscription tool * mark as read/deleted in all folders, when many inboxes for different lists have the same message