Up to i.Scribe...
About
Beta45:
- Changed the way HTML to Text works (mainly used when replying to HTML email). It now passes through the HTML rendering control and gets converted from a DOM tree down to text. This should mean better parsing in the long term at the expense of some weirdness in the short term while issues get sorted out. Initial testing has shown some promising results.
- Re-wrote the algorithm that wraps and quotes email when you reply or forward. The old code works ok, but is impossible to read or maintain. The wrapping also pulls the "wrap column" setting from the appearance page. Even if you don't use wrapping in the editor.
- Fixed window border drawing in the Windows7 classic mode.
- Fixed the folder unread count not updating if a parent folder is not expanded.
- Fixed a crash when using the -m or -t command line options. Bit rot from change the get option API and the compiler didn't catch it.
- Fixed a HTML rendering bug when images are marked as "display: block;".
- Fixed some flicker in list controls when re-sizing columns.
- [Mac] Fixed pasting multi-line text into non-multi-line edit controls showing a scrollbar.
- Fixed the create/load folder dialog's radio buttons to work correctly.
- [Mac/InScribe] Fixed the identity menu updating correctly after you delete an identity/account.
- Fixed the template menu to contain items linked to the the email in the templates folder.
- Fixed missing scroll bar in the HTML control when there is nested HTML documents followed by images.
- Fixed the Save Attachments filter action to save all files in the case where no file pattern is specified.
- Fixed printing plain text emails.
- [Win32] Fixed drawing the borders on Windows XP.
- Fixed the layout in the calendar window.
- Fixed blank start and end dates in the calendar window when loading an existing event.
- Added Ctrl+P shortcuts for printing from the main and email windows.
- HTML emails now print in HTML instead of being converted to text first. This feature is based on the existing HTML control rendering to a memory context (Screen DPI), which is then printed to the page. It's going to have the same limitations as the HTML control and won't be very high resolution. Certainly not "print" DPI, but its a whole lot better than HTML -> text printing. It's the best I can do at the moment.
- Added some new Scribe DOM fields to the mail object: selected, colour, label, read, and showimages.
- Fixed the mail3 back-end parsing and storing CC header details.
- Fixed "internal filtering" checkbox not being initialized when you open the Filter UI window.
- [Windows] Fixed mice with small wheel increments not scrolling in Lgi applications. (Integer rounding was causing the "amount" of scroll value to go to zero)
- Made the new filter condition item a bit darker. The medium dialog colour has got a lot lighter in Windows 7 (#f0f0f0) and it no longer very readable on the workspace background (#ffffff). So now I use a darker custom grey instead so at least you can read it.
- Fixed the layout in the folder select dialog. The table layout code now has some basic support for CSS, so I can man-handle difficult layouts into shape using a little CSS here and there.
- Fixed a bug in the .eml and .mbox export where a mail3 email would be missing the content-type header value. This mostly manifested when exporting mail from the Sent folder.
- Changed the default date field for a mail folder to "Date Sent".
- Fixed Bug #395: parsing of dates on new email when using mail2 folders.
- Fixed email losing attachments when copied from a mail3 to a mail2 folder.
- [Mail3] Moved the size cache into the database. It gets updated once after you open the folder containing email. Sizes now include all attachments and text data.
- Made the main window account status panel sensitive to font size. This involved removing the tab control and laying out the progress controls along size the log control.
- Improved performance of HTML layout with lots of table cells.
- Major rework of the message threading code. Its now far more correct. Supports Outlook's Thread-Index header.
- Fixed scribe to respond correctly to IMAP IDLE notifications for things like delete and mail is read.
- Fixed Scribe dropping BCC addresses from the email when sending.
- Fixed newly received email not sorting correctly by date when they are from different timezones.
- [Windows] Fixed the installer to detect a missing VS2005 runtime, download and then install it.
- OMG, if Scribe tries to encode a message with a multi-part alternative it uses the same MIME boundary. Epic breakage. (Fixed)
- Fixed IMAP mail returning HTML segments with a file name as possible content for the viewer.
- Fixed some HTML rendering issues, table layout, font size, and code optimizations.
- Changed the remove duplicates script to keep the oldest copy.
- Fixed a crash in the .gif decoder.
- Added support for HTTPS image loading, including proxy support.
- Updated version of Sqlite in use to the latest.
- Fixed logging SSL connections to a file.
- Fixed rare case of base LF's in outgoing email. This could happen when replying to email with base LF's in the source emails headers (e.g. Subject).
- Fixed not being able to scroll some HTML documents with the mouse wheel.
- Added better CSS support to the HTML control and fixed some layout issues. By this I mean Scribe now supports some complex CSS selectors (the more common cases). I will over time extend that to cover more of the obscure cases as well.
- Made the non-focus selection colours adhere to the prevailing windows standard. (Not 100% sure what value to use when calling GetSysColor for those cases).
- Speculative fix for crash in the .gif decoder.
- Removed command line option "-o" that specifies the options file. The options file is either in the same folder as Scribe.exe OR in the Application data folder (AppData tree on Windows, ~/Library/Scribe on mac). The application has to be able to find the options file with no command line arguments. This is because sometimes other applications call the software to send mail via the command line and won't pass Scribe the options path. So if it's not discoverable automatically then I had to pull it from the registry. That causes a problem when users install test builds, which then default to the live options file and nuke the live data if it all goes wrong.
- Enabled the context menu keyboard button for the text editor control. (So you don't have to use the mouse to correct spelling!!)
- Fixed size of outgoing email with attachments (Mail3).
- Added html mail preview "show images" button.
- Added support for alternate text on HTML images when the image hasn't loaded. Instead of a red 'X' in the image, the alternate text is shown, clipped to the image size.
- Added gzip support to HTTP images if you have the zlib DLL installed.
Beta40:
- Fixed a charset parsing error, where an extra space would cause quotes to be kept, instead of parsed. Which meant the charset wasn't used correctly.
- [Mac] Fixed hiding the application with Cmd+H.
- Fixed some memory leaks when copying data around and in the mail2 backend.
- Fixed a bug in the mail2 back end where the body of the email would be lost on newly created mail when copied to another mail3 folder. The mail2 back end creates a fake MIME tree for it's mail, which is needed by the other back ends when copying. This wasn't being built correctly in some cases.
- Fixed the folder selector to list all the open mail stores, not just the default.
- Fixed filters always being "incoming" after re-opening the application.
- Fixed password field not initially being disabled on the account receive tab.
- Fixed not being able to toggle the state of a checkbox with the space key.
- [InScribe] Fixed memory leaks if you create a new account but don't save it.
- Fixed mail losing it's body when being copied from one mail3 store to a another mail3 store.
- Fixed a bug that would delete the headers of an email when the charset is not supported.
- Fixed processing of white listed email so that it appears in the tray.
- Fixed a crash in the code that generates new mail growl notifications.
- Fixed an email losing it's body and attachments if you copy it from a mail3 folder to an IMAP folder.
- Fixed the SSL IMAP account not recovering from losing it's connection. This would happen say, when you put the computer to sleep and then wake it up again. Scribe was going into a 100% CPU loop and never attempt to reconnect. The UI however stayed responsive and you could quit the app, it was just the IMAP thread getting stuck.
- The mail's window closes when you open an email, then switch back to the main window and delete that email.
- Fixed an issue when creating a new IMAP folder and not being able to list email in that new folder without a restart.
- Fixed a display issue where an email with multiple HTML parts would show only some of the HTML.
- Started added some support for high DPI awareness:
- The To, From and Subject fields in the mail UI now resizes to the current font.
- Fields tab of mail UI is now a resizable table.
- The colour selector for an email now resizes to the current font size.
- The fonts/icons are no longer fuzzy on Vista/Win7 when you have medium or larger text selected in the control panel. (aka DPI virtualization)
- The positioning of icons in the tree and list views has been vertically centered when the line height is greater than the icon height.
- Radio buttons vertically center their icon.
- Most of the dialogs in the application now re-flow their components to the current font size. Some will also resize if you drag the edge of the dialog to resize the whole window.
- The status bar now puts their icons beside the text, instead of under.
- [Windows] Fixed very slow rendering of email that used glyph substitution. The code was constantly recreating fonts when it didn't need to.
- Fixed mail losing their body when copying mail from a mail3 folder to an IMAP folder.
- Added some basic install on demand functionality for various add-on libraries. If you click on an email that needs iconv or libjpeg to display correctly, a missing component bar appears between the header and the content, with a message stating the missing components and a button labelled "Install". When you click that button Scribe queries the memecode site for the download location of the required libraries and downloads them to the Scribe folder. Then it re-displays the email to show the content correctly. This also works with the SSL libraries as well. Currently working fine on Windows, but I haven't had time to test Mac support.
- Moved most of the HTTP related stuff to go through the proxy setting in the options, which also now defaults to the system HTTP proxy setting if there is no proxy specifically defined in Scribe's options.
- Fixed an important bug in the bayesian filtering backend. When using incremental word list updates small changes would go through an optimized code path that didn't write the changes to disk due to a dirty flag not being set. This caused the changes to remain only in memory and be lost on restart. Making the bayesian filter not work correctly, as the lists would rapidly get out of date. I noticed this because I kept getting the same spam over and over, and eventually thought "this can't be right". Sure enough it wasn't.
- Fixed and optimized outlook (MAPI) import.
- Fixed rebuilding the Bayesian word lists bumping into the 2gb memory ceiling (32bit windows build) if you had a large enough folder(s), by unloading folders after using them. I've also made it store in memory only the words referenced in each mail store. Originally it would store all the words from all the mail stores at once. Before writing them to disk at the very end. This was great for speed but used a lot of memory, now it's almost as fast, but uses less memory.
- [Mac] Fixed dropping files on to some windows not working.
- [Mac] Fixed the first tab of the Filter window not positioning itself correctly when first shown.
- [Mac] Increased the size of the filter condition boxes so that text isn't truncated at the bottom.
- Fixed the initial creation of the IMAP cache folders to not create child folders sometimes.
- IMAP cache folders are now automatically located in the right place according to Desktop/Portable installs.
- [Mac] Fixed occasional warning about LgiFactory file on exit.
- [Mac] Added normal Scribe menu items to the dock context menu. (i.e. same as the Windows tray icon context menu).
- Major re-write of the new mail handling. There is now a bunch of states (loading, filtering, bayes, growl notification, tray icon notification) that new mail passes through, and both synchronous and asynchronous events that push email through those states. The old code was too complicated to keep track of that well and I couldn't fix all the bugs. Hence the re-write.
- Fixed the filter delete action not marking the email as "not new".
- Fixed the delete duplicates script not working.
- Fixed memory leaks in the NewHashTable and NewList scripting calls.
- Fixed the path to the mail folders to be relative to the options file location when possible.
- Fixed imap BODYSTRUCTURE parsing to handle "{##}" style size prefixes. I still don't know where the BODYSTRUCTURE format is documented, so I just keep adding to the parser when it encounters stuff it can't handle :{
- .eml files now open the same as received email, rather than email you create yourself. This means the from and to fields look correct.
- [Vista/Windows7] Modifications to the build process to avoid side by side issues.
- Fixed importing .ics files with multiple VEVENT sections.
- Added support for reading iCal files with byte order marks.
- Changed the default behaviour of selecting an IMAP folder for the first time to only scan for UID's higher than the highest known existing UID. This cuts down on the response time for the command on large folders.
- Scribe now looks in parent MIME segments for a charset if the charset is missing. Lots of Chinese spam just has the charset in the top level multipart segment. Scribe was interpreting the text as us-ascii and that confused the spam filter. Getting the charset right means the bayes filter correctly classifies the message as spam. Nyuh nyuh.
- [Mac] Fixed support for charset conversions.
- [Mac] Added support for setting Scribe as the default email client. Can handle mailto: links but not open .eml files just yet. I hope to add that in the next release. The plist is there for it, but for some reason it's not picked up by Finder.
- Fixed a bunch of memory leaks in the filter UI.
- Fixed a memory corruption bug in LgiFindFile, which is used by a whole lot of stuff but I noticed it while rendering HTML.
- Fixed folder locations being stored using a relative path where possible. There was some confusion in the code as to which base path a relative folder path was referencing, so I've standardised on the options file path (as opposed to the exe's path)
- Added 24hr support to the week view of the calendar.
- Fixed deleting calendar entries via keyboard to prompt you if you have "confirm item delete" on.
- Fixed crash on compact mail3 (was a vc6 issue, doesn't happen on vs2005 i.e. compiler bug). Also made it threaded so the UI doesn't lock up.
- Removed the 2nd context menu appearing on an email when using the keyboard to open it.
- Added 32/64bit to the about box.
- Fixed the destination IMAP folder's unread count not updating when a filter moves an unread message.
- Rewrote the IMAP structure parser to fix bugs.
- Added up/down buttons for reordering filter actions.
- [Mac] Fixed crash when you Cmd+Q (quit) while accounts are still active sending or receiving email.
- [Mac] Fixed icons having a slightly different grey background.
- [Mac] Fixed the flashing new mail icon being upside down sometimes.
- Moved all bayesian filter functions into their own thread so that it doesn't lock the GUI up at any point. This improves the performance of the IMAP full mail store in particular.
- [Mac] Fixed being able to toggle checkboxes with the space bar.
- Made cancel in the find window work again.
- Fixed buffer overrun in the HtmlToText code.
- Bayesian analyser now displays unicode correctly by using the HTML control instead of a message box. The HTML control uses Lgi's own code to display text, which in turn has the ability to load in fonts that actually have the glyphs in question.
- Fixed recent mail not being filtered when you navigate to the IMAP inbox for the first time in the session.
- Unified the filtering of both IMAP and POP email. I didn't realise that the filter was all over the place and so I've moved all the filtering of incoming mail into one function. The take away bug fix is that now the IMAP mail gets filtered correctly by the Bayesian filter.
- Fixed "probably" spam being listed in the new mail list (i.e. flashing mail icon, and it's right click menu).
- Fixed moving messages from a mail3 folder into an imap folder. The append command wasn't reading the UID out of the IMAP servers response, amongst other issues.
- Emptying the IMAP trash now works for large amounts of mail, works faster than before and also expunges the messages afterwards.
- Fixed moving more than one email at a time using the find results window.
- Fixed some memory leaks.
- Added initial support for Growl notifications. At the moment this is just for new mail, but it will be extended to some other things in the future. Support is provided via direct socket implementation in Lgi rather than some 3rd party code. I had a look at the available libs and thought it was easier to write from scratch than integrate a library. For C++ it's about that bad. Growl support defaults to off, until I'm happy it doesn't make things worse. The option to turn it on is in the "Other" tab of the options, and the option only gets read on startup, so restart after changing it.
- Fixed a bunch of memory leaks in the spell checking engine.
- Revised the parsing of name/email pairs again to prefer parts inside angled brackets when both name and email are valid email addresses.
- Made the add contact window load the groups folder before scanning it.
- Fixed the add contact window putting the group name in the 'name' field of the recipient, instead of the 'address' field (i.e. with angle brackets around the name).
- Made contact groups use normal To/CC/Bcc header style.
- Fixed occasional crash in PNG filter.
- Fixed contact groups.
- Fixed the IMAP email's dates in the cache being sensitive to the current date format.
- Added RFC 2047 decoding for the name of IMAP attachments.
- Fixed some MBOX importing issues.
- Fixed not being able to enter email addresses in the Contact window.
- [Mac] Fixed a crash when attaching files with no apparent mime type.
- Fixed "(null)" dates in IMAP folders.
- Fixed incorrect processing of the IMAP "RECENT" untagged event for new email. The result of this is that when new mail arrives in the Inbox it now shows up correctly.
- Fixed the dialog closing when the focus is in the account dialog's signature entry editbox and you press Enter.
- Fixed the client causing IMAP email to be marked /Seen before it's actually marked read in the user interface.
- Imported a whole lot of punctuation, spelling and meaning fixes someone contributed to the help files. (Btw if you feel like contributing to the help files, just edit the HTML directly and send me the edited files, I'll merge them with the trunk).
- Added some basic search to the help browser.
- Fixed the NTLM implementation to work with Exchange 2010. This means bundling a heavily modified version of the LGPL libntlm. The modifications are available here, however I doubt the maintainers will be interested in them.
- Added support for the non-standard "Deleted Items" IMAP trash folder.
- Fixed processing of IMAP fetch responses to handle out of band command responses.
- Fixed detection of IMAP server's folder separator character.
- Tightened up the decoding of name/addr pairs a little more to handle the case where both the name and the address have '@' characters in them. Now it will guess the correct meaning in that case by doing fairly complete RFC validation of the email. (anything would be better than the strchr(possible_email, '@') that I was doing).
- Fixed parsing of quoted characters in IMAP FETCH responses.
- Fixed Scribe using 100% CPU when there is an idle IMAP SSL connection.
- [Mac] Fixed the plugin dialog not closing when you click "Close".
- [Mac] Fixed crash when compacting a mail store.
- [Mac] Fixed the standard progress dialog being too small.
- [Win32] Fixed creation of the default extension for common files types in the case that there is no attachment file name.
- [Win32] Fixed the client making itself the default even if you switch off the "check default client on startup" option. (No one complained - amazing! I found it myself)
- Fixed Bug #335: Relative dates in the title page are incorrect.
- Fixed not being able to import MBOX folders.
- Added character's below 0x20 (space) to the disallowed filename characters for saving attachments. I got an attachment with a '\n' in the middle of the filename.
- Fixed uuencoded attachments not being decoded. More like ported the code from v1.xx over to the new architecture.
- Fixed the calendar colour settings getting displayed incorrectly.
- Re-wrote the execute process filter action to use modern Scribe DOM fields.
- Added some documentation on Scribe specific scripting that covers all the methods you can call, how to setup callbacks, where to put files and how to do filter based scripting. This is in addition to the existing Lgi scripting docs that cover the basic syntax and system library methods. This is a work in progress.
- Fixed addressing of local variables in script functions.
- Added support for new methods in the scripting engine: BrowseFolder, GMenuAddItem, GMenuAddSubmenu and FilterDoActions.
- Added support for new DOM fields: Thing.Type, Filter.ActionsXml, Filter.ConditionsXml and Filter.Name.
- Created a new default script for creating filters based on messages. The initial entries are the "Create filter for mailing list" (which used to be C++) and a new one called "Filter email from [addr]'. Obviously now that this is a script, enterprising users can all lots of their own entries using the existing ones as templates.
- Rewrote the folder browser to a) resize to font sizes and b) have a "New Folder" button. It's now in the lr8 resource file.
- There have been some significant fixes to the GTableLayout object that does dynamic layout in dialogs.
- Fixed Bug #290: Some files and settings not cleaned up by the uninstaller, updated uninstaller for win7.
- Added support for decoding and showing emoji in the HTML control. Support for emoji already existed when viewing plain text emails in the previous build.
- Fixed the saving of message dates in the options file to be forced into y/m/d format. Previously they were saved in the currently selected date format, and if the user changed that date format (in the options) then all hell breaks loose when you try and receive mail. So the solution is to a) always save in y/m/d and b) "guess" the right format when loading them back in. y/m/d is always guessable... but there is some confusion with d/m/y and m/d/y if the day is less <= 12. So it's not perfect, but it's the best solution given the bad situation.
- Fixed Bug #315: Filtered mail don't arrive in the correct sort order.
- Fixed the colour of calendar items in the title page (i.e. when you select the root mailbox node).
- [Win32] Fixed Bug #216: Date formats don't support leading zeros as defined in the windows regional settings.
- Fixed spelling errors in the quoted text of compose control being painted in the default text colour instead of the quoted text colour.
- Fixed the default folder date fields being mixed up, i.e. the Inbox having "Date Sent" and the Sent folder having "Date Received".
- [Win32] Improved sending files from Office 2010 (via MAPI) in the following ways: doesn't crash, doesn't load the whole file into memory and it now supports more than one file. Slightly better.
- Fixed Bug #305: STARTTLS connections fail (for some users at least).
- [Mac] Made the spell checker use the native cocoa NSSpellChecker instead of the aspell library.
- [Mac] Fixed pasting text from other applications not having line breaks in the right place. (\r to \n conversion)
- Added iPhone/Softbank Emoji rendering support for plain text messages.
- Optimized the text composition control to only check changed regions of the text for style changes (e.g. URL detection). For large messages this should improve layout time.
- Factorized the URL detection code out of the text compose control so that I can use it in more places, for instance the code that converts plaintext/emoji into HTML.
- [Mac] Fixed imag