Hastymail2 is an Open Source IMAP webmail client written in PHP. Our focus is compliance, usability, security, and speed.

Code Updates for April 21

    It was another good week for Hastymail development, logging 23 individual commits since last Monday's update. Much of the past week's work was to address the changes required to make Hastymail work with the application/xhtml-xml content type header. While these changes are staying in the code, the application/xhtml-xml header is not being sent unless we can resolve some additional issues. Other changes and fixes are spread all over the place, so read on for the full details.

- Clean up for application/xhtml-xml compliance. The difference between serving text/html and application/xhtml-xml is significant for a reasonably complex web application. Even while validating at the w3c many things were broken by the addition  of this content-type header. Most of these issues are resolved, but for now we are still not sending the header.  One major hurdle yet to be addressed is HTML message display. This would have to be pushed to an iframe or reformatted as valid XML, neither of which I am too fond of. Another big issue for me is that while I appreciate the strictness of xhtml-xml I am concerned by the fact that upon finding a single problem a browser could fail to parse the page completely and leave the user with only a parse error rather than a broken page that might still be usable. So the jury is still out on whether or not it's worth it to trigger this functionality in browsers with the correct content-type header, but for now Hastymail2 is 99% xhtml-xml compliant and as we move forward if we can properly address the remaining concerns we can easily reinstate this content-type header.

- I noticed that having 2 tabs open to the same hastymail login was causing some problems, specifically with the new mail page updates and the total unread count for all folders. Both have been addressed.

- Export all for contacts. This new option allows a user to download their contact list as vcard data in one text file. This is similar and will hopefully be compatible with many other import/export routines in software that supports vcard. There is no mass import yet but should be by next week.

- Viewing vcard attachments has been improved. Now these are formatted a bit rather than just displaying the raw text. Included in this is an "import" link that will allow a user to review then import a vcard attachment into their contact list.

- The start to an INSTALL document. Needs work and as we finalize the install process will surely need updating but it's the basics and with some head scratching might even be enough to help get Hastymail installed :)

- Fixed a serious header wrapping bug in which the required leading whitespace on a wrapped header line was missing. This pretty much broke the heck out of some outgoing messages so glad it's resolved :)

- Added an option to view HTML message parts first rather than the default of finding and displaying the first text/plain part in the message.

- Added an option to the new page so that any folder selected for display will be completely hidden from the page when it has no unread mail. Currently all folders selected for the new mail page are displayed, those without any unread included. It's a small change that mimics the behavior of hastymail1 and if you had a lot of folders on the new mail page it does reduce the overall size of the page.

- Added a "toggle all per folder" to the new mail page. Between the "toggle all in all folders" ability and this it is easy to quickly select a large group of messages. For now the new toogle all per folder links work only with javascript support.

- Added a "freeze mailbox state" option. This is sort of an unusual option that requires some explanation. Because of this it is not visible by default and needs to be enabled on the options page (under the mailbox options section). Hastymail uses different levels of caching to improve performance, it also uses a system to maintain the size of the cache, since not doing so can result in session bloat that inadvertently hurts performance rather than helping it. When dealing with a large mailbox the most important information to cache is the list of message ids (called UIDs) after they have been sorted.  What the freeze mailbox option does is forces Hastymail to ignore new incoming messages or mailbox state changes, and forces the UID list for the frozen folder to stay in the cache. While frozen the IMAP connection is put in "read only" mode and no changes to the folder can occur. Now one can browse the folder without having to worry about the sort order becoming invalid and needing to be resorted. This is very useful for large folders that receive frequent new messages. My LKML folder is current at 25K messages, and it takes courier about 6 seconds to sort it by arrival date. Once I open the folder and freeze it I can browse any message or folder page with ~1 second load time even if the mailbox state changes while doing so. Unfreezing the folder will force a cache refresh and mailbox resort, assuming the state actually changed since the folder was frozen.


No Images with this post
No comments posted yet

Add a comment

Security Image:
security image
Enter the letters you see above.
Get Hastymail at SourceForge.net. Fast, secure and Free Open Source software downloads