2004 04 16 Released as 0.5.7 Now uses Python 2.4's POP SSL support. Now can do SMTP TLS and authentication. 2005 04 03 Code that calculates an email's relative date ("Sun, 19:30 here") was wrong and blew up during the start of daylight saving time. Fixed. 2004 12 15 Released as 0.5.6 2004 09 26 Made lax bas64 decoder a little laxer by stripping nulls from the end of a line. Fixes a problem with decoding a spam message seen in the wild. Made logging of problems encountered by the lax bas64 decoder a little more informative. 2004 07 16 Added preference messageParseFunction so as to be able to use FeedParser from next version of the email package. 2004 03 18 Fixed an error caused by yet another way for date parsing to go wrong. 2003 10 18 Fixed a cosmetic error in logging recipients' addresses when sending mail. 2003 10 16 Fixed an error that caused mail display in viewer to be truncated at the first zero byte. 2003 08 09 Returns now stripped out of base64-encoded text parts when displaying them. 2003 07 17 MIME-part filenames now gotten from Content-disposition header if they're not in the Content-type header. Tidy headers now don't show names for headers that are blank. 2003 05 30 Text that's pasted into the editor window now has returns replaced with newlines. 2003 05 14 Fixed code that highlights space runs when doing a spelling check. Would crash Python on Max OS X with a bus error. Previous code shouldn't have worked at all according to recent Tkinter docs. Now much cleaner too. 2003 04 28 Added withdraw(), deiconify() pair at startup. Now window doesn't sit blank for a while when starting. Fixed a bug that prevented swdb from updating correctly when it saw an address. 2003 04 01 Fixed the top-level sibling sorting code in the message-threading system to use average score. One message with score 10 now reliably sorts before two with score 5. 2003 03 31 Added ability to sort by received date rather than sent date. Useful for scanning auto-filed spam messages since you can now just look at the top of the mailbox rather than wading through mailbox sorted on spammers' random bad dates. 2003 03 29 Save and open file dialogs now start in last directory chosen during run rather than home always. Size of non-text MIME parts now reported in message window. Subject now logged when sending mail. 2003 03 21 Preference inboundFilerCaresOnlyAboutHeaders removed. Inbound filer gets standard Message object. 2003 03 16 Fixed a couple of bugs in the message-threading code that were exercised only in unusual circumstances. 2003 02 22 Some error conditions at startup were recorded only to the log, some of them before the log began to be written. That wasn't much help to people who encountered those conditions. Changed back to print statements. 2003 01 08 Released as 0.5.5 2003 01 06 Fixed an old bug that caused an error when re-wrapping text that had non-ASCII characters in it. Still assumes that all non-ASCII is Latin-1 for lack of data and expertise to work with any other character set. An oversight meant that a timeout connecting to a POP server wasn't logged as an error. Fixed. Fixed an old bug that caused scroll arrows not to work in mail search window. 2002 11 30 (swdb) Delete uninteresting function now cosmetically nicer. 2002 11 27 If preferences set to hide mouse pointer while typing when it's over a text or entry widget, it was sometimes hidden when over them during a spelling check. Fixed. 2002 11 26 When forwarding messages, lines beginning "From " were mangled to ">From ". Now not. 2002 11 23 In spelling checker's word-replace window, if Add or Replace chosen and then the same text in the same place clicked on again, error occurred. Fixed. Experiment in making addressbook available to score function in prefs showed that there wasn't much value. Code removed. 2002 11 20 Mailboxes now remember last sort order chosen. Saved in ~/.swallowstate.pickle. Mail editor now has "Re-wrap indented" menu choice. 2002 11 16 When progress indications are done, when to update is now determined by time expended, not work units (bytes, lines, etc) completed. Should make them look better since work units can take different amounts of time (faster machines, slower links, etc). 2002 11 14 Inbox browser responded to same keys as other mailbox browsers but some actions don't make sense for the inbox: forwarding, saving, etc. Inbox now handles some keys differently. 2002 11 06 MIME messages that included message/rfc822 parts were handled correctly but the headers for the included message weren't displayed. Since they may contain useful information, they now are. 2002 11 03 Fixed a bug that caused an error when moving or copying a message to an open mailbox that wasn't sorted by thread. Added persistent caching to mailboxes. Essentially Jamie Zawinski's mail summary files adapted to Python and Maildirs. 2002 10 27 Default mailbox sort made much cleaner. Prefs value defaultMailboxSort should be dict: {"thread": 1, "score": 1, "date": "ascending"}. Or func getDefaultMailboxSort() that takes mailbox name and returns dict. 2002 10 17 Menu labels for sorting in mailbox window changed slightly for clarity. Preference now sortOnScoreDefault. 2002 10 16 Headers containing non-ASCII characters now encoded properly. 2002 10 13 New checkbox in mailbox window allows turning off scoring in sort order. New preference: scoreMessagesDefault. Defaults to true if score function in preferences otherwise false. 2002 10 12 Mail that is replied to or forwarded now no longer marked as new. Swallow now shows "none" rather than 0 in overview of mailboxes. 2002 10 09 Fixed a race condition. Opening a mailbox browser and delivering to a mailbox couldn't happen at the same time and that was right. But it was possible for the delivery thread to queue an addition to a mailbox as a result of a delivery before the mailbox was open but which was executed after the mailbox was open. 2002 09 27 New preference getSaveFolderInboundAlt. Function just like getSaveFoldersInbound() but bound to A, a keys and listed as "(Alternate per prefs)" if defined. Preferences functions getSaveFoldersInbound(), getSaveFoldersInboundAlt(), getSaveFoldersOutbound() can now return either string or list of strings. 2002 09 22 Preferences' functions getSaveFoldersInbound(), getSaveFoldersOutbound(), and calculateScore() now called with email object's Message instance but one created by that module's HeaderParser and with the payload set to an empty string. Preference inboundMunger renamed inboundFiler. Can't think of a use for actually changing the message, only for auto-filing so that's what it can do. Added preference inboundFilerCaresOnlyAboutHeaders which causes Swallow to use the email module's HeaderParser rather than the full parser to create the Message object that the function is called with. Potentially much faster on large multipart MIME messages. 2002 09 20 (swdb) Edit view now shows times as well as dates. encode("rot-13") string method now used instead of rot13() function. Python 2.1 now required. 2002 09 16 Mail objects' getHeader() method renamed to get() to be more like email module's objects. 2002 09 15 New preference: inboundMunger. Function to modify inbound mail and/or specify mailbox(es) to deliver it to. Now more paranoid when writing changes out to outbox on account of one of my bugs. 2002 09 12 It was possible to get two mailbox sorter threads running at once if you worked at it. Fixed by improving mutual exclusion mechanism. 2002 09 11 Preference defaultReplyMunger renamed replyMunger. Similarly defaultForwardMunger, defaultNewMailMunger. Old names accurate in a way (they set up the default that the user then edits) but could cause confusion. Functions defaultReplyMunger, defaultForwardMunger, defaultNewMailMunger in preferences now take one argument which is a Message instance from the email module. Removed uses of apply() in favor of * and ** caling syntax. 2002 09 10 Swallow now complains if preferences defaultLocation or getDefaultLocation are specified other than at the top level of the file. 2002 09 05 Mail threader wanted to give progress reports if number of messages >= contstant but facility only set up if number of messages > constant. Fixed. 2002 09 01 Code that strips HTML tags would swallow instances of   now replaces them with spaces. 2002 08 27 In outbox, if a header was very long, it would be wrapped when the mail was saved. Resulting newlines and tabs weren't removed if it was opened for editing again. Fixed. 2002 08 24 Fixed race condition that could cause mailbox browser to see new mail as it was opening and have same mail added by delivery thread. 2002 08 21 (swdb) Fixed bad logic that over-wrote names the user had changed with name from email address. 2002 08 20 Mail checker thread now uses class from threading module. No immediate benefit but you can do more things to those objects. Fixed a bug in logging from the checker thread. Once argument that wasn't a tuple should have been. 2002 08 19 Mailbox sorters now run in separate threads only if there's enough mail in the mailbox to justify the overhead. The thread will stop if the window is closed or another sort order is chosen before the thread is done. 2002 08 18 Mailbox sorters now run in separate threads so GUI remains responsive. 2002 08 18 Released as 0.5.4 2002 08 17 Encoded headers ("=?ISO-8859-1?Q?...") that can be decoded to Latin-1 characters are. It seems that (at least with the fonts I have installed) Tkinter's Text widget automatically displays Latin-1 characters. That's not much in the way of i18n but it's all I have data to test and knowledge to implement at the moment. 2002 08 16 Old total score thing silly, now noisyScore from prefs compared to highest score retrieved. Re-sorting mailbox browser much faster, objects now re-used. 2002 08 15 Mail checking routine no longer cares whether it was invoked from a thread, uses queue to communicate regardless. 2002 08 14 Mail-checking thread and main thread now communicate only through thread-safe queues and checker never tries to update the GUI. Should avoid some rare but annoying hangs. 2002 08 11 Message sorting by date now saner. Previous sorting by received date changed to use sending date whenever possible. 2002 08 10 Added index to speed up working with threaded messages. 2002 08 09 Jamie Zawinski's algorithm to thread messages by references headers (and others when necessary) implemented. Responsiveness of GUI when viewing non-threaded messages improved by using index. Message sort orders cleaned up. Now only choices are date ascending and date descending. Score (if any) taken into account first. That should allow for flexibility and is much tidier than previous way of doing things. 2002 06 15 Ditto. 2002 07 14 Found another race-condition in which Swallow wants to change the contents of a window just as it's being closed and Tkinter complains. Fixed. 2002 07 01 Preferences checker now looks for autoStartCheckRegularly being set without a password stored and complains if that's the case. 2002 06 30 New preference: useAddressbookNameOnReply (default, no). Only has an effect when using Swdb. If set to true value, Swallow looks up person's name in Swdb from address and uses that instead of any in the original mail's header. 2002 06 27 Optional sanity-checker for outbound mail correctly identified mail that would be sent to the same address more than once but error message was incorrect. Fixed. 2002 06 25 Sanity-check of forwarding options prevented forwarding with a perfectly reasonable set of options. Fixed. 2002 06 23 Messages with iffy headers could cause a crash when being replied to. Fixed. Stupendously bogus messages could cause cause a crash when displayed in the overview. Fixed. 2002 06 21 Clicking on the text "Log" in the status indicator opens the log viewer window and clicking on the text "Checker" toggles the checker's status. Not really necessary, but they sort of looked like they'd do that. In an unlikely circumstance, a variable in the POP fetching code could be referenced without having been assigned a value. Fixed. 2002 06 19 Locations in Get&Send menu now sorted. 2002 06 18 Window could close just as blinky log indicator was being blinked, causing error. Fixed. 2002 06 07 Log widget can now turn yellow if a warning message has gone by and error and warning lines are highlighted in log viewer. 2002 05 30 Date now canonicalized when showing tidied headers in viewer. 2002 05 28 Fixed bug in more-elaborate addressbook code that caused error on saving address. Fixed bug that caused second and later lines of a wrapped BCC header to be sent. 2002 05 27 New preference: mailboxNamesSortFunc. Function to sort mailbox names for overview, etc. 2002 05 25 Sanity-checker was a little too strict. Didn't take into account legitimate folding of headers immediately after the colon. Fixed. 2002 05 24 (swdb) MetaKit lookups of nicknames speeded up. 2002 05 23 Forwarding now treats multipart MIME messages about the way viewing does: all text parts are shown. That's arguably wrong but I think doing in any other way produces more problems. 2002 05 22 Fixed a bug that caused an incorrect undo of a paste in the editor window. 2002 05 19 Released as 0.5.3 2002 05 16 (swdb) SWDB can now import and export records. (swdb) Fixed a bug that caused an error if a record was deleted while the end of the list was displayed. 2002 05 14 Removed a few more kinds of unnecessary 3-D effects and blinkyness. 2002 05 09 Minor cosmetic improvement: mail search window text entry now nicer. 2002 05 08 Minor cosmetic improvement: got rid of another annoying blink in the new mailbox dialog. Entry's border no longer disappears if dialog loses focus. 2002 05 04 (swdb) swdb internals re-done and appearance improved. Now uses MetaKit from Equi4 Software for database. 2002 05 03 If outbound message was single-part but encoded, the second time it was opened in the editor it wouldn't be decoded so the text to edit looked like a mess. Fixed. 2002 04 24 Was possible to paste newline (and tab and return) into editor's address lines. Now not. 2002 04 23 Right-mousing on an address in a viewer produces a menu from which the user can copy the address to the clipboard and edit the address in the (more complex) addressbook. 2002 04 19 Added ability to print outbound mail from editor. Address-tidier sometimes added an extra set of double quotes. Fixed. 2002 04 18 (swdb) Window no longer changes sizes when shifting between overview and editing. Comments can have more than one line. 2002 04 11 New preference: swdbShouldSaveFunc. If using swdb, determines whether addressbook record should be saved on quit. 2002 04 08 (swdb) Right-mouse on line in table now gives option to sort on column as well as new mail. Nicer to have that in body of table as well as when clicking on header. 2002 04 04 Testing with email module version 1.2. Compatibility seems fine and I think that there are some significant bugfixes in the newer versions. 2002 04 03 Small additional changes to UI of editor window. 2002 03 31 If user pasted text into subject entry of editor window, it was possible to paste in bad characters (newline, etc). Now text cleaned up after paste if necessary. Re-did user interface in editor window. Now nicer. 2002 03 17 When doing spelling check, possible to open two word-replacement windows for same word by clicking twice. Now second click raises original window. Spelling checker's word-replacement windows remained open if editor window closed while any were open. Now closed automatically. 2002 03 10 Trivial cosmetic change to spelling checker's word-chooser window. 2002 03 06 Changed logic that raised DeliveryError exceptions into assertions. The exceptions were never caught. Fixed a small bug that could introduce extra spaces into text when it was being re-wrapped in the editor. 2002 03 03 Preference mailSortKeyFunc removed and mailbox sorting made more configurable. New preference mailboxSortOptions. 2002 03 02 Fixed an off-by-one error that prevented the user from going back to the first mail in a mailbox in the viewer. 2002 02 28 If a message was open in a window and then it was saved from its current mailbox to another, going to the next or previous mail caused an error. Fixed. 2002 02 27 New preference: mailSortKeyFunc. User can now control mailbox sort order. 2002 02 22 When forwarding a message that had MIME parts without names, null names would confuse add/remove parts dialog. Now all parts get names. 2002 02 20 (swdb) swdb now treats an empty data file the same as one that doesn't exist instead of complaining about versions. 2002 02 20 Released as 0.5.2 2002 02 19 Tkinter's behavior under KDE differs slightly from its behavior under Gnome. (A widget's default black color is reported as its RGB value rather than the text color name.) Fixed code not to depend on Gnome's behavior. 2002 02 18 Released as 0.5.1 2002 02 15 (swdb) Generally absurd "squirt address in" functions in right mouse menu removed. Replaced with new mail to clicked-on address. Much more useful, I think. 2002 02 14 Vertical scrollbars in grid widgets didn't track scrolling very well. Improved. 2002 02 13 New preference mailQuoteColors; foreground color of mail text in viewer can be colored according to depth of quoting. 2002 02 10 Broken MIME encoding by InterScan E-Mail VirusWall NT could cause an error. Now only prevents MIME parsing. 2002 02 08 Error occurred if trash emptied while trash mailbox browser open. Fixed. 2002 02 07 Forward now puts tidied headers like in viewer at top of text. Problem occurred when fetcher tried to add mail to a partly-open mailbox window. Fixed. 2002 02 05 New preference autoStartCheckRegularly 2002 02 04 Code that strips HTML tags now also strips returns. 2002 02 03 Mouse-pointer hiding code broke undo in editor if turned on in preferences. Fixed. 2002 02 01 Depending on font chosen, overview could have rows narrower than window, which was ugly. Fixed. 2002 01 28 Released as 0.5.0 2002 01 21 New preference hideMousePointerWhileTyping. Controls whether wallow hides the mouse pointer if it's over an entry widget you're typing into. Makes it easier to see what you're typing. Default off. 2002 01 15 gridWithHeaders widget now no longer gets narrower than parent the grid was narrower than the parent to begin with and is shrunk further by narrowing a column. 2002 01 10 Once again, saving edited message to outbox didn't update overview. Fixed. (swdb) More-elaborate addressbook didn't add a new entry to the index of nicknames so it wouldn't be expanded until the program was quit and restarted. Fixed. 2002 01 03 Mail editor would distribute space oddly if expanded. Now does so slightly less oddly. 2002 01 02 Fixed bug that caused grid widget not to be able to scroll horizontally. (swdb) Up and down arrow keys now move selection and control-up and control-down arrow keys now scroll table. 2002 01 01 Now works to click on dividers of contents part of grid widget, not just labels. Dividers in headers of grid widget now give mouse pointer a cursor that suggests that they can be dragged. Fixed limitation: grid widget now scrolls back automatically to keep data in view if contents length shrinks. (swdb) Ability to paste address of selected row stopped working when changed to use grid widget. Restored. 2001 12 30 Mailbox overview now less blinky when opened. 2001 12 29 Main overview window now uses grid widget. Log no longer syncs to disk when written. Caused more problems than it solved. 2001 12 15 (swdb) More-elaborate addressbook overview now uses grid like mailboxes'. 2001 12 14 Outbox overview wasn't updated when mail re-saved to outbox. Fixed. 2001 12 11 Outbound mail sanity-checker now checks for address duplicated in To, CC, BCC headers. 2001 12 10 Mailbox overview now has headers and divider lines. Column widths can be changed by dragging on the dividers in the headers. 2001 12 07 Label that indicates viewer's position in mailbox (e.g. 2/4) now updated on new delivery, deletion, etc. 2001 12 04 Flattened out the over-squishy scrollbars. 2001 12 03 Released as 0.4.5 2001 12 02 Redid the mail searching code. Code now smaller and simpler, UI now cleaner and easier to use. Possibly some small performance improvement. 2001 11 21 Removed the add to user dictionary as lowercase option from the spelling checker's word chooser window when the original word is lowercase in the first place. 2001 11 08 User could open two instances of a mailbox browser by double-clicking rapidly twice in the overview. Fixed. 2001 11 07 Released as 0.4.4 2001 11 06 Fixed a bug that sometimes caused wrapping of text to create lines one character too long, correctly. 2001 11 05 Fixed a bug that sometimes caused wrapping of text to create lines one character too long. 2001 11 02 If a mail editor was opened on a message that had a value in one of the entry fields (To, CC, etc.) and the user cleared the value, the corresponding header was not removed from the message. Fixed. 2001 11 01 Fixed a bug in the code that generates RFC 2822 dates that omitted the plus-sign in timezone offsets for timezones east of the prime meridian. Thanks to Jason R. Mastaler for catching the bug. 2001 10 22 (swdb) Added last-mailed-to field to optional addressbook swdb. Fixed bugs in locking the inbox from the checker thread. 2001 10 21 When cleaned-up headers shown, cleaning now more thorough 2001 10 19 Added a sanity-checker for outbound email. Controlled by preference sanityCheckOutboundMail, on by default. 2001 10 19 Released as 0.4.3 Fixed some bugs that resulted from the change from the mimelib module to the email module. Thanks to Greg Green for the bug report. 2001 10 16 Released as 0.4.2 Fixed a bug that caused new mail not to have a From address. 2001 10 15 Released as 0.4.1 Bug that caused an error when sending mail caused the message to be filed in an open mailbox fixed. Thanks to Greg Green. Mail viewer can now do uudecoding. Errors in signature file reading and menu display if the user has only one location specified fixed thanks to Greg Green. Barry Warsaw's mimelib module now renamed email. The new version now required. 2001 10 07 Released as 0.4.0 Large internal mail handling changes rolled in. Now uses mimelib module and keeps mail in VM. That simplifies things a lot. Root window is now an overview of mailboxes and individual mailboxes are opened in their own windows. rootGeom, highlightOutboxCount preferences no longer used. 2001 07 16 signalChange code cleaned up some. Search window code cleaned up some. 2001 07 15 Various changes rolled in. Biggest is that root window now shows an overview of mailboxes from which individual mailbox browsers are opened. Makes sense to be able to open more than one mailbox browser at once. UI redone significantly to accommodate the change. Mail search window significantly less ugly. Code now uses features from Python 2.0. 2001 07 02 Added a base64 decoder. It's used if Python's base64 decoder raises an exception. Swallow's decoder isn't quite so strict about some MIME rules and so occasionally will succeed when Python's doesn't. It's not used all the time because Python's decoder is in C and therefore much faster. 2001 06 24 Changed timeoutsocket's default timeout to 30s. Seems to be necessary for bad modem links. 2001 06 21 Mail object file opening made slightly more rational. With luck a prelude to rationalizing the object some. 2001 06 19 Reply to all now available in reply menu and via cap-R key. 2001 06 17 New features: preferences defaultReplyMunger and defaultForwardMunger functions can fiddle with reply and forward before it's presented in the editor. 2001 06 15 Malformed MIME messages could cause a ValueError (as well as a multifile error) to be raised. Now caught. 2001 06 14 Reply-to now displayed and editable in mail editor. Window made a little prettier too. Fixed a bug that caused an error when undoing changes to the text in an editor if several changes had been grouped into one. 2001 06 12 (swdb) Swdb now uses the logger for information messages and raises exceptions in "can't happen" cases. Plus, another attempt to fix a rare bug that I haven't been able to reproduce consistently that causes the edit widgets to be added to the table occasionally instead of replacing them in the window. 2001 06 10 Undo in text are of editor window now moves cursor to where it was before the change that's being undone. 2001 06 08 Changed newlines in text to (constantized) os.linesep where appropriate. 2001 06 00 Message when search in viewer returns too many matches made clearer. Year now included in date shown in overview. 2001 05 31 Example prefs said that "" is an acceptable location and that it need not be set. Now that's actually true. Previously, code assumed that it existed and checked for "don't know" value of None. Added a couple of asserts that will bring things to a grinding halt if Swallow finds that it would overwrite a file when moving a message from a maildir's tmp directory to new. It's an unlikely scenario since it would require a bunch of coincidences and that the clock jump backwards. Actually, there's still a tiny race condition but I'm not going to lose sleep over it. 2001 05 30 Oops. Treating all parts as MIME parts meant that forward function tried to attach even ordinary text part. Fixed. Mail in outbox no longer bothers to display score. 2001 05 28 If a message had a duplicate header (e.g. two To headers) and that header was set set to be displayed in the viewer when only some headers were displayed and the message was MIME-encoded, the highlighting of the MIME part descriptions would get out of sync. Fixed. 2001 05 26 It is possible for a MIME part that's base64-encoded text to end without a newline. In that case, highlighting of commentary about MIME parts that followed would be out of sync because the next thing would start on the last line of the text part. Newline now added when necessary. 2001 05 25 Now possible to save all MIME parts, not just unshown. 2001 05 24 A tab typed at just the right moment during startup could give the Check Regularly checkbox the keyboard focus and thus an ugly border. Fixed. Messages logged while fetching now a hair more explicit. 2001 05 23 Text now wrapped to outbound warp length before printing. When showing percentage progress while fetching a large message, spots at which percentage displayed didn't necessarily include 100%. Now 100% always displayed at end. 2001 05 21 Fixed a bug that caused an error when adding words to user's dictionary from spelling checker window. (spamgrep) Now slightly smarter about correct domain to do whois, MX lookups on: considers "or" subdomain to be not given to individual group. Now works for, for example, "foo.or.kr". 2001 05 08 Improved logging when sending mail from outbox including filling in the number of messages there (previously printed "%i"). 2001 05 07 Released as 0.3.7 Fixed a bug that caused the Maildir scanner to report new mail when there wasn't any if the location had just been switched from one that didn't use the scanner to one that did. 2001 05 06 Fixed error in setting default prefs location statically. Thanks to Greg Green for the bug report. Error that occurred when the default location does POP retrieval changed to a location that does Maildir scanning fixed. Thanks to Greg Green for the bug report. Another error caused by dateless mail fixed. Thanks to Greg Green for the patch. Switched log window back to having blank line at end. Jump on opening is more distracting. If string search in viewer matches more than 100 times, viewer now doesn't bother to highlight more matches and shows "too many" instead of number of matches. User can type more characters to reduce the number of matches of course. 2001 05 05 Mail viewers now no longer depend on the overview that created them for functions of next, prev buttons, position in mailbox, size of mailbox. Those widgets now work even if the current overview is no longer the one from which the viewer was opened. Fixed a couple of bugs in the process including one that left unnecessary temp files around. Prev and next buttons now work in mail opened from mail search window. Cleaned up configuration of some Pmw widgets. Explicit calls to configure() replaced with keyword initialization arguments where practical. Added a class for Pmw to send tracebacks to from errors that occur in callbacks. Now tracebacks are sent to the log in addition to appearing in a popup window. Necessary to do my own popup since Pmw doesn't have the option to do the default thing in addition to sending the traceback to user code. 2001 05 04 Socket connection problems now handled better. 2001 05 02 Logger now used for all status messages. Messages that come before the logger can write to a file are printed to stdout. Logger writes them to the file once the file is available. Should simplify matters. Code to determine whether outbound mail was sendable refactored and rationalized slightly. If user opened a viewer, switched the overview to a different mailbox, and then clicked Prev or Next in the viewer window, error occurred. Fixed. If opened mail was saved or trashed from the overview, a bug prevented any other mail from being opened until Swallow was restarted. Fixed. 2001 05 01 (spamgrep) Made scrollbars in lookup window non-blinky. 2001 04 30 I had managed to screw up the startup on a new system again by getting the initialization order wrong. Fixed. "List reply" (i.e. reply to To address) and ordinary reply now on reply button menu. Buttons now created with a wrapper object so that we can specify dimensions exactly. For some reason they were of a slightly different size under IRIX. Fixed handling of forwarding unparseable MIME messages. 2001 04 27 Added l (ell) keyboard command to reply to the mail's To address. Good for replying to mailing lists. 2001 04 24 Changed routine that creates default reply to use mimeToText(). (spamgrep) Fixed the regular-expression that's used to identify a "don't know" answer from the RIPE whois server to match their new format. 2001 04 22 When forwarding mail, enclosures now forwarded by default. Thanks to Greg Green for the motivation. Numerous small changes related to getting that to work, among them that Swallow now keeps private copies of all enclosures in outbound mail until mail is sent or deleted. 2001 04 20 (spamgrep) Menu made non-blinky and used saner way to make scrollbars non-blinky. Function sendmail() made into class. Cleaner that way and since the object can retain state, sendReadyCB() can send one message at a time without wasteful opening and closing of SMTP connection. That way the outbox can count down its contents. Small thing but it bothered me that it would show all waiting until all were sent. Function hardWrap moved from method of mailEditor to utility function and fixed to always return text terminated by a newline. A header: From: "" caused Swallow to fail to display the message. Now fixed. 2001 04 19 Undo now works on rewrapping and quoting in mail editor. Rewrap function could occasionally eat newlines. Now doesn't, I think. Released as 0.3.6 Changed the nonViewablePartsInfo data structure from a dict to a tiny class. Added a missing "rb" and "wb" to routines that open files for MIME encoding and decoding. Should help with portability. Thanks to Greg Green. 2001 04 18 If user quit with viewer windows open, they didn't clean up their temp files. Now they do. 2001 04 17 Fixed a bunch of errors found by the cool new PyChecker utility. Only about a quarter of them were really embarrassing. Moved global declaration of timeoutsocket to quiet a warning from Python 2.1. 2001 04 16 When opening file for MIME encoding, binary mode now specified. Should help portability. Removed more blinky highlighting from menus, changed the multiple ways of getting the right normal background to assign to widgets' activebackground attributes to one more rational way. Added some random slightly more verbose logging. Refactored old goofy preferences loading code into much cleaner object. Now also compares user's settings against list of correct ones to catch typos. 2001 04 15 Fixed typo in setPrefsDefaults() found by new preferences-checking code that's almost ready to go in. 2001 04 13 Hadn't caught all the cases in the undo and redo code. Now handles undoing and redoing control-o, control-h, control-t correctly. That last one was a bugger. 2001 04 12 Released as 0.3.5 Added undo and redo to the text editor widget. No more swiping functionality from Idle. 2001 04 09 Outbound mail wrap length now settable in preferences. Program complains if value <60 or >80. Mail editor text pane now that width. Should minimize wrapping surprises. 2001 04 08 Fixed old mismatch between wrap length that rewrap button uses and one that is used when outbound mail is saved or sent. Former didn't count trailing newline and latter did. (spamgrep) Fixed decimal escape RE to ignore most values that are too big. Some tiny code cleanup and added locking on getting a new Maildir file name since it's run by different threads and has a class-level counter. 2001 04 07 Added explicit os.umask() calls before creating files. Don't think that there were any files created with bad permissions, but the calls are cheap. Temp file names now start SwallowTemp so it's obvious what program created them if there are any left around. 2001 04 06 MIME-handling code now decodes nested parts. 2001 04 05 Fixed an obscure situation in which an open viewer or editor window could lose track of the file underneath it. (spamgrep) Gave the windows titles. 2001 04 04 (spamgrep) Added a couple of missing parentheses that Python 2.0 requires but 1.5.2 didn't. 2001 04 03 Renamed more-complex.swallowprefs.py to more descriptive complete.swallowprefs.py Added checks to warn if preferences setting for location of ispell is not sane and immediate return in spelling check code if it's set to None. Added missing global statement in code that reloads prefs. Thanks to Greg Green for the bug report. 2001 04 02 Added check for socket timeout in POP operations. 2001 04 01 Trashing mail that's open in a viewer now informs the viewer window that its file has moved. When the trash is emptied, mail that's open in a viewer isn't deleted. Rewrap function didn't take into account space after quote characters so text properly wrapped by it sometimes ended up badly wrapped by save function. Fixed. Shift-tab in the mail editor could send the focus to the vertical scrollbar (!). Vertical scrollbar now told that it shouldn't take focus. 2001 03 31 Changed getUnixPrefsFile() to return only filename, not name and permissions. Means doing another stat once it's open to see if it's readable by someone else if it has passwords in it. But a second stat should be cheap and I don't mind slowing startup a hair for cleaner code. When user moves a message in the overview that's also being shown in a viewer window, the viewer now keeps track of where its file has gone. Made gMailOpen list of open viewer and editor windows into an object. Turns out that it wasn't necessary for the reason I was thinking but it cleans the code up some so I'll leave it in. More code toward Windows support courtesy of Greg Green. Better way of setting default temp directory also courtesy of Greg Green. Added warning if old preference popDelay is in user's prefs file. Old name still works but will eventually go away. Bare email addresses ("matt@mondoinfo.com") were canonicalized oddly. Fixed. 2001 03 30 (spamgrep) Added regular expression for URLs that don't start "http://" but do start with a "www.". 2001 03 29 Released as 0.3.4 The beginnings of changes necessary to run under Windows, courtesy of Greg Green. Since some folks have mail delivered directly to their Maildirs, added pref mailCheckAction. Set to "pop" (default), behavior is as before, set to "scan", mail fetching buttons and routines now scan inbox for new mail. Since those buttons and routines now don't necessarily do any fetching, "fetch" changed to "check" in names. Feature suggested by Greg Green. 2001 03 28 Better handling of getSaveFoldersInbound() and getSaveFoldersOutbound() defaults. Two new prefs items: mimeCommentaryFG, mimeCommentaryBG. They control the colors of the text of the lines used to describe MIME parts in the viewer. Tiny improvement to myPathSplit(). Renamed kQuoteCharsRE to kMailQuoteCharsRE. Generally rationalized the code that canonicalizes addresses and made the code that ought to use it, use it more consistently. Improvements courtesy of Greg Green: typo fixed and hard-coded slants used as path separators replaced with proper use of os.sep. 2001 03 27 Trivial cosmetic changes to lines that describe decoded MIME parts in viewer: removed the square brackets and now always show character set in lowercase. (spamgrep) When given an FQDN to do an MX lookup or whois on, spamgrep now slightly smarter at guessing the relevant domain. 2001 03 26 Code that deals with errors in MIME decoding dumps text version of message to viewing file after error occurs. Prollem is, decoding routine could have gotten partway through writing the decoded version before running into the error. Now routine backs up in case of error and overwrites output that was partly done. 2001 03 24 Logic to require cap-D to trash unread mail also applied to outbox and resulted in cap-D required to trash unaddressed mail. That's silly so outbox now never requires cap-D. Improvements to code used by Send Now button. While sending, button background changed to lighter gray, text changed to "Sending...". Previously user got no feedback in editor window that send was underway, which was bad if send took a while. Button now also disabled at that time so user should be protected from an inadvertently clicking twice. Code to remove editor from global list of open mail moved to end of routine. Tiny cleanup of qtyToReadable() code. 2001 03 23 Released as 0.3.3 Removed some unnecessary code from routine that removes mailbox's contents. (swdb) Cosmetic fix: if a search shortens the table so that a row that was selected is now empty, highlight is turned off. Removed an unnecessary level of indirection in opening an item from the outbox. The name part of an email address (e.g. the "Matthew Dixon Cowles" in "Matthew Dixon Cowles ") now gets double-quotes when necessary. MIME encoding redone. No longer requires non-standard mimecntl module. 2001 03 21 MIME decoding redone. Now much simpler and feels faster. Numerous improvements and bugfixes from Greg Green: Improved error message that checks for mailbox named "inbox". Fixed error in startup check. Fixed two errors in prefs initialization. Open mail can now be moved between mailboxes. If a new mailbox is created while mail viewers are open, their Copy-to and Move-to menus are updated. (swdb) Fixed off-by one error in logic of "Put addresses in mail field" function. (swdb) "Put address in mail field" menu item disabled if user clicks on empty row. 2001 03 20 Moved text wrap length to constant. Moved quote characters regular expression to constant. If quote button in mail editor clicked while cursor on a blank line, it caused an error. Now just does nothing. 2001 03 19 New prefs item askBeforeFetchingMailThisBig. If a message on the POP server is larger than the value set, it's not fetched but a summary is shown in a new window when the fetch session is done. In the new window, user may explicitly approve fetch. Defaults to zero meaning fetch regardless of size. Last log line widget now doesn't run hard up against the right margin. Looks a little better. (spamgrep) Now unobfuscates decimal escapes (like A) as well as hex escapes. 2001 03 18 Mail search system now unwraps multi-line headers. Previously highlighting could get out of sync. 2001 03 14 Released as 0.3.2 Version number now logged on quit. Last log line widget in overview now uses more of the screen. Fixed an old bug that prevented the mail search from ever searching email headers. Took the colons out of the field labels in the mail editor window. I've decided that it looks better without them. 2001 03 10 Add/remove enclosures dialog now has a status indicator label. Sticking "(No enclosures)" in the listbox looked ugly. Much better to have it outside. A few trivial changes to the wording of some log messages. 2001 03 08 Add/remove enclosures dialog now shows "(No enclosures)" if there aren't any rather than just a blank box. Improved algorithm of whichOfThreeDirs(), another painless optimization. Caching will be more work if it's necessary. 2001 03 07 Ran Python's profiler on the code and found a couple of hotspots that were worth optimizing. Replaced os.path.join() and os.path.split() with my own functions that do less but run faster. Found and fixed a bug in the object that handles Maildir file names that was hidden by the extra stuff that os.path.join does. Changed algorithm of getMailboxName() to a faster one and moved calls to checkMaildir() from code that instantiates a Maildir object to program startup code. It doesn't need to be called every time the program wants a mailbox. The speedup is not amazing but is noticeable. 2001 03 06 (swdb) Fixed an old bug that caused errors if user scrolled an empty table and another cosmetic but that caused the vertical scrollbar not to be resized if table changed to showing no rows. (swdb) Database now considers that a (smashed-case) email address identifies a person uniquely. Previously name had to match too. Case smashing may be questionable but I expect it to solve more problems than it creates. (swdb) If the window was showing a filtered subset of rows and the window was closed and re-opened, it would still show the filtered subset but the search entry box would be empty. Now string put back into entry box. Swallow now uses timeoutsocket.py if it's available. 2001 03 05 Reply-to headers now snarfed too. 2001 03 04 (swdb) Swdb now records the date mail arrived with a given address on it (called "last heard from"). Window now smarter about shrinking when editing a record. Columns now have header labels. Mail search now searches mailboxes in reverse date-modified order (which should be newest mail first under normal circumstances). Made mail search window a little prettier. 2001 03 03 Dollar-signs changed to spaces before feeding a line to ispell since it seems not to like them. Earlier plan of escaping them with backslats didn't do what I wanted. 2001 03 02 Small thing: The slider in horizontal overview would stop moving if the pointer slid off it while dragging. Now it continues moving. Fixed spacing in overview buttons. Fixed an annoying bug in sending MIME-encoded mail. 2001 03 01 Combined Move-to and Copy-to buttons in overview into one button with cascading menus. I don't normally like cascading menus but it seemed worth it to save space. Swallow will fit on a 640x480 screen. Removed Test button from overview. Fixed an old bug that prevented mail from retaining its unread state as it was moved from mailbox to mailbox. Removed colons from tidied header display. I think it looks a little better that way. Refactored code that cleans old files out of maildir tmp directories. Maildir objects now know how to do that themselves. 2001 02 28 Various things to tidy up startup on a new installation: Logger object could use the temp dir and the temp dir check could use the logger. Oops. Now the temp dir check just prints to stdout. Maildir check now prints to stdout when creating top-level directories in addition to logging. May be less surprising for new user. cleanupMaildirTempDirs() now moved later in startup so that it doesn't complain about lack of tmp dirs on first run. Rewrote history: 2000 11 08 entry about logfile rotation should have pointed out that they're stored in user's temp directory by default and Swallow will delete them from there in a week. 2001 02 27 When retrieving long emails (>50K), percentage received is now shown every 5K. 2001 02 22 Found another kind of bad MIME brokenness that has to be guarded against: no content-type header. Moved the ugly overview sorting and searching code into a helper object. At worst the ugliness is localized and at best it may be easier to speed up the code with it all in one object. 2001 02 21 (swdb) Snarf routine rebuilt its database index when it didn't need to. Now much faster. Tiny improvement in code that sends addresses to the addressbook. 2001 02 19 Now cap S in overview necessary to save unread mail and cap D to move unread mail to trash. Refactored SMTP sending code: moved from mail object to independent routine. I think that's cleaner and it allows one connection to be used to send a batch. New mail searching code didn't display mailbox being searched. Now does. Fixed old cosmetic bug that caused background of lower part of mail search window to turn from white to gray if Clear button clicked or new search started. New mail searching code didn't close mail files after searching them and so ran out of FDs. Now fixed. 2001 02 18 In process of refactoring SMTP sending code, fixed a bug that would have caused an error if MIME-encoded message had BCC recipients. 2001 02 17 Mail search code now much cleaner, uses mail and maildir objects as it should rather than going directly to files. 2001 02 16 (swdb) If a search reduced the number of addresses being shown and the user was scrolled past the (new) bottom, it looked funny. Now user is automatically scrolled up to the bottom. (swdb) Scrollbars now don't blink when mouse passes over them. 2001 02 15 It's now possible to limit the search of saved mail to particular mailboxes. 2001 02 14 Fixed an old bug that caused highlighting to get out of sync with text when results of search of archived mail were displayed. 2001 02 12 Program now refers to itself as Swallow, not swallow.py. 2001 02 12 Released as 0.3.1 (swdb) Smash case on reverse address lookup. Technically questionable but unlikely to be a problem in real life. 2001 02 10 (spamgrep) Small changes to a couple of regular expressions to make them match better. Set the the enclosures listbox to use the appropriate font from prefs rather than the default font. 2001 02 08 Fixed an error that caused Swallow to be unable to send enclosures that it couldn't guess the MIME type for. 2001 02 07 Fixed an error that caused the horizontal scrollbar in the main display to move too fast when it was being dragged. 2001 01 22 Now checks for a timeout on the connection to the POP server and reports an error in that case. 2001 01 19 Fixed a bug that caused a problem when replying to messages that had no Subject header. 2001 01 16 If the last line in the overview was only partially shown and the user clicked on it and then used the down-arrow to move the selection down, the overview didn't scroll to keep the selection in view. Now it does. 2001 01 14 (swdb) New row created as a result of Swallow's seeing a new address now has all fields initialized to "". I think not doing that could cause a crash if the user did a search after a new item had been added during the same run. 2001 01 10 (spamgrep) Added code so that a traceroute to a site that blocks traceroutes (all star output past a certain router) doesn't go on forever. Now three lines of all stars causes it to stop. 2001 01 09 Released as 0.3.0 Added code to the pop3 client to catch situations in which the connection is refused or immediately closed by the server. Those conditions now logged cleanly as errors and no longer pop up Tkinter's exception dialog. 2001 01 08 Added more-complex addressbook (swdb) and spamgrep helper as official optional parts of swallow. 2001 01 05 Changed the interface to the (as yet unreleased) more complex addressbook code a bit. 2000 12 23 cleanUpForQuit method added to addressbook to support optional, more-complex addressbook. Can now specify alternate config file on the command line. Handy for testing, prolly useless in practice. 2000 12 12 Any search in progress is now reset when the contents of a mail viewer is switched to the previous or next mail. 2000 12 11 If the user tries to open a second instance of the same editor or viewer window from the overview, the original window is raised instead. 2000 11 27 Tiny cleanup of addressbook clipboard handling code. 2000 11 24 Added code to pipe mail to an external program. Key "|" in mail viewer pipes whole mail to pipeCommand specified in prefs. 2000 11 21 Moved some of the less used viewer controls from buttons to a menu bar to reduce screen clutter. 2000 11 15 Fixed a bug that caused an error if the user clicked the Quote button in the mail editor while a blank line was selected. 2000 11 14 Shift-tab in BCC entry in mail editor window didn't work right. Now it does. 2000 11 13 Replaced uses of my thingWithReadline class with StringIO module. 2000 11 08 Log now saved by default to ~/swallow/temp/swallowlog-YYYYMMDD-HHMMSS. The timestamp is the time the program started. A new file is created at each run. By default they're stored in the program's temp directory. Swallow removes files from there that haven't been modified in a week. If you store your logs somewhere else, you'll need to rotate the logs yourself. 2000 11 06 Fixed a bug that caused mail displayer to die if an address header line had no address in it (i.e. To: <>). 2000 11 04 Tiny cleanup of whitespace run eating code. 2000 10 22 Released as 0.2.8 Found a new way in which date parsing could return an error and added a check for it. 2000 10 20 Added quotes around human names that have commas in them when they're displayed. Fixed a bug that could cause problems when automatically filing mail after sending it. 2000 10 19 Released as 0.2.7 Fixed a bug that caused the highlight in the overview to stay in place if new mail was retrieved that ended up above the highlighted item. The highlight now moves down so that the same item stays highlighted. Going to previous and next mails in a mail viewer no longer moves highlight in overview. Silly to have it move it in the first place, if there were two viewers open, it would be easy to get the mail being viewed out of sync with the highlight. 2000 10 18 Cleaned up a few words in the README. 2000 09 28 Fixed a string format typo ("%i" instead of "%s") that caused problems if the user tried to save an open mail from the overview to a different mailbox. 2000 09 26 Fixed another bug that caused problems if the user moved mail to the mailbox being viewed and then opened it. 2000 09 25 Fixed a bug that caused problems if the user opened a message from the outbox that was marked as a draft, unchecked the "Draft, don't send yet" checkbox, and then sent it without saving it first. Fixed a bug that caused outbox colors not to be updated when sendable status changed. Fixed a bug that caused mailbox counts not to be updated when moving mail from one mailbox to another. 2000 09 24 Cleaned up code that moves and copies mail from overview and new code that does that from viewer. Also better "can't happen" handling. 2000 09 22 New feature: now possible to save or move mail to another mailbox from the mail viewer window. Seems like a lot of controls in viewer window but the new buttons are helpful in re-filing mail found by search window. 2000 09 12 Scrollbars in mail search window now no longer change color when the mouse pointer is over them. 2000 09 06 Released as 0.2.6 Fixed important bug: send ready routine didn't check success of send and so would file mail (if user had set preferences to file sent mail) or discard it (if user hadn't set that preferences that way) even if it hadn't been sent. 2000 09 05 Added Reply-to to default list of shown headers. Fixed a bug that caused the current location to be reset to the default if preferences reloaded. Fixed a bug that caused swallow.py not to start up if it couldn't determine the correct set of location prefs to use. 2000 09 04 Released as 0.2.5 2000 09 03 Spacebar (in addition to return) in overview now opens selected mail. 2000 08 31 Code now checks mailbox name user asks to create and refuses if name contains any but alphanumeric plus a few others. 2000 08 30 For some reason, a $ in the text causes ispell to stop checking its input. Doesn't seem to be mentioned in the man page. In any case, $s in the text are now escaped with backslats before the text is fed to ispell. 2000 08 29 The program now refuses to run if you have passwords in the preferences file and it is group- or world-readable. 2000 08 27 Fixed a bug that caused very odd scrolling behavior when scrolling the overview with the vertical scrollbar. Maildir flags (really only S here) now preserved when mail moved from inbox to another mailbox. No improvement in utility from doing that but it's the right thing to do. 2000 08 26 The mail search window progress indicator now displays the number of mails searched in addition to the number found. 2000 08 23 Fixed a bug that caused mailbox counts display to get out of sync with actual contents if mail that had been in the outbox was opened for editing and then sent. 2000 08 22 New feature: In counts of mail in inbox, outbox, etc. at bottom of overview, number in outbox can now be highlighted in red if >0. Prefs item highlightOutboxCount. Default is 0 (turned off). Added because I sometimes forget that there are drafts waiting there. 2000 08 21 Setting MIME type of an enclosure now done with mimetypes standard module, not with goofy thing from preferences file. Silly of me not to have noticed that module before. 2000 08 19 Fixed a bug that could cause an error if mail was opened from the search mail window if the mailbox that the mail was in wasn't the one being viewed in the overview. 2000 08 17 Fixed yet another bug that caused highlighting of MIME part divisions to get out of sync with the divisions. 2000 08 16 Fixed a bug that caused the highlighting of MIME part divisions in the mail viewer to become off by one if a MIME part didn't end with a newline. Fixed a bug that caused the reverse lookup of nicknames in the overview to fail sometimes. Fixed a bug that caused one mail to show up multiple times in the outbox overview if it was edited and re-saved. 2000 08 13 Made the default (tidied-up) headers in a mail viewer a little tidier: put an ellipsis at the end of truncated ones and made sure that headers containing addresses actually were shortened when necessary. Added constant to tie their width to the width of the text widget that the mail is viewed in. 2000 08 12 Refactored the addressbook code so that it makes more sense and to make it easier to plug in a more sophisticated (or at least more elaborate) addressbook that I've been fiddling with. 2000 08 10 Overview "to" address list now looks at CC header too. Fixed a bug that caused the summary at the bottom of the overview to be off after Send Ready removed items from the outbox. 2000 08 08 Fixed a bug that caused the highlighted line in the overview to move off the screen if the last mail displayed was deleted from the overview and others were above the area visible. 2000 08 06 Various small changes to the MIME display code so that it works properly with mimecntl.py version 1.5.1. I think it's now depending only on behavior that it's supposed to. 2000 08 03 Added a viewer button to toggle MIME decoding on and off. 2000 08 02 Found a new way in which MIME decoding could blow up, added that exception to the try/except wrapper that displays "error in decoding, unable to show" if there's an error. Fixed a bug that caused two "(no unshown MIME parts)" items rather than one to appear in the menu under the Save unshown MIME parts menu button sometimes. Signatures now available, prefs item sigFile. Now complains at startup if prefs file group- or world-readable. 2000 08 01 Released as 0.2.4 Added the ability to search the text of mail in a viewer. 2000 07 31 Fixed a bug that caused mail that was open in a viewer to be removed from the overview but not actually moved to a new mailbox if Save button clicked. Location names from prefs now come from locationPrefs keys, removed redundant tuple. Changed Delete button text to Trash. More descriptive. Fixed a bug that caused an error if Trash or Save buttons clicked when displaying an empty mailbox. 2000 07 29 Improved the overview sorting code. 2000 07 28 All references to ill-conceived gMailboxChanged code gone. 2000 07 27 More cleanup of the overview notification code. 2000 07 26 Reloading prefs now redoes items in overview's location-chooser option menu: if location names are changed, new items show in menu. More changes to clean up overview notification code. 2000 07 25 When mail fetched, additions to the overview don't require completely redoing the contents. Fixed a bug introduced on 2000 07 23 that caused the mailbox summary at the bottom of the overview not to be updated sometimes when it should be. 2000 07 24 Sending mail to trash is now logged. 2000 07 23 Removing the N from the overview line of a mail as it's read is now done in (I think) a smarter manner. Prelude to getting rid of gMailboxChanged global function. It was ill-conceived in the first place. 2000 07 21 Released as version 0.2.3 Added a new item (SMTP AUTH) to the To Not Do section of the readme. Fixed a bug that could cause crashes when rewrapping text in a mail editor if the cursor was on a blank line. 2000 07 18 Fixed a bug that sometimes caused the highlighting of MIME descriptions in the mail viewer to be below the lines that should have been highlighted. Headers shown in mail viewer when showing abbreviated headers are now trimmed to 80 characters. The word chooser window that opens when the user right-mouses on a highlighted word after a spelling check is now a proper class. Right-mousing on an unrecognized word for which ispell has no suggestions opens a window similar to the word-replacement window (the one that's opened for a word for which ispell does have suggestions) except the only options are to add it to the user's dictionary. 2000 07 17 Print function now logs its activity. Fixed a bug that caused crashes when replying to non-MIME mail. 2000 07 16 Version 0.22 released In mail editor, tab from BCC field now always goes to beginning of subject field. Don't know what perversity of Tkinter caused that not to happen previously. 2000 07 15 Fixed a bug in the overview scrolling code that made the highlight line unable to move to the top of the overview sometimes. Maildir file objects now cache their overview text for speedier overview redraws. More of long subjects now shown in overview. 2000 07 14 Changed update_idletasks() in overview's keyCB to update() to deliberately let events through. That way we can discard queued up keystrokes and avoid getting into a massive typeahead situation. Made scroll keys (up arrow, down arrow, space, dash, u) work when viewing log window. Made header names in shortened header view in mail viewer always initial cap, then lowercase. Fixed bug that could cause crash while drawing overview if some headers were missing. Fixed bug that could put blank line in headers of outbound mail, effectively terminating headers early and so sending mail without some headers. 2000 07 13 Found another possible exception raised by bad date headers and added that to the list. 2000 07 13 Version 0.21 released Reply now puts a MIME-decoded version in the outbound-mail editor. Quickstart section of the README updated to indicate that. Fixed a bug that prevented new words with apostrophes in them from being added to ispell's dictionary. Now new words with double-quotes in them won't work . Spelling check now also checks Subject line. Spelling check now distinguishes between words that ispell has suggestions for and words it doesn't have suggestions for. Spelling check highlight colors now configurable by pref spellingCheckColors. It's a 3-tuple specifying the colors for: unrecognized words for which ispell has suggestions, unrecognized words for which ispell doesn't have any suggestions, and space runs. 2000 07 12 First bug report. Fix from Tim Everett for error in rot13 code. Fixed a couple of bugs in the code that creates new mailboxes at user request. 2000 07 11 Version 0.2, first public release