Up to i.Scribe...
- Fixed forwarding email while using the rich text control.
- Added some image support to the rich text control. You can add images via drag and drop. The right click menu has options to resize, rotate and flip the image. Editing around the image is still not fully implemented. So while I work on that I'd suggest adding images after doing all the editing of text.
- Fixed progress dialogs (potentially) not working properly.
- Fixed attaching files to new email that hasn't been saved yet.
- Fixed the image resizing on attachment option leaving 0 byte files when the images dimensions or size are under the threshold.
- Fixed folders with unread items not updating the screen when renaming.
- Html viewer: fixed words that are longer than the space available leaving a blank line in the layout.
- Html viewer: fixed table space allocation to account for borders and padding in more block level elements in sub-tables.
- Fixed the HTML portion of the message being overwritten when in edit mode and the message has both text and HTML data.
- Fixed "BCC" addressed ending up in the Cc field.
- Expanded the rich text control's Emoji palette to include all the characters. Not grouped particularly nicely but at least all available characters are there.
- Rich Text control: Added some very minor undo functionality. Basically you can add characters and then undo/redo the typing. The architecture I'm using should allow for full undo/redo but there is a lot more implementation to go.
- Implemented conversion between text and HTML while editing email. The way this works is, the user starts off editing the email in the default control (according to Edit -> Use HTML Editor) with the reply content or signature for the current identity loaded into the control. If the user decides they want to switch controls (Text->HTML or HTML->Text) then the current content is converted to the other control when you switch tabs. If the user switches back to the original tab without touching the content, everything is still the same. But as soon as the user EDITS the content in the new tab, they lose the original in the other tab (it's stale anyway). E.g. the user has HTML editing on, they create a reply to an email, the mail window shows the HTML tab/editor, the user clicks the text tab, the HTML is converted to text and loaded into the text tab/control. The user can click back to the HTML tab without losing the formatting, but if they start editing in the text tab the HTML formatting is lost and the email becomes plain/text. At that point if they switch to HTML again the formatting is gone, but they can still edit the text and add styles. The email has become text/html again. When the user sends the email the control that was last edited becomes the content of the outgoing rfc822 message.
- Email address list parsing fix.
- [Linux/Gtk] Fixed crash when drag and dropping for the 2nd time.
- Tweaked some layout issues in the Contact window.
- Fixed local variables being incorrect when calling script functions.
- Added MessageDlg to the scripting system functions.
- Added break points to the scripting debugger window. They don't persist between sessions thought.
- Changed the available commands in the scripting debugger to "Next Instruction", "Next Line", and "Step out of function" which more closely follows the available debugging actions.
- Added support for dropping into the script debugger on a script run time error. Also created a new option in File->Options->Other->Debugging to turn on the script debugger. This means when a script has an exception the debugger is shown. Otherwise an error is printed to the console, or the script error bar appears on the main window. The default is "off".
- Rich Text: Added support for Emoji. There is a basic palette of faces available but I haven't had time to extend the UI to encompass all available Emoji yet. However you should be able to paste them in from elsewhere ok, and edit them in place.
- Rich Text: [Windows] Fixed handling of characters >= 0x10000 in the rich text editor.
- Rich Text: Fixed the selection extending to the end of the document when the selection edge coincides with the end of a line.
- Rich Text: [Mac] Fixed the cursor disappearing when not at column 0.
- Fixed resetting the HTML reply/forward formats.
- Fixed the scripts/Dom.txt being empty (artifact from moving to Python3 recently).
- Minor improvement to the look of rich text toolbar.
- Fixed more crash bugs in the parsing of email name/address pairs.
- Changed the HTML format controls in File -> Options-> General -> Reply/Forward format and File -> Options -> Accounts -> Identity -> Signature to the new Rich Text control. The escape characters for fields are and ?>.
- Implemented code to convert the HTML reply/forward format during reply/forwarding while in rich text mode. The plain text handler would mangle all the SGML elements.
- [Windows] Fixed out of buffer (and similar) errors causing a CRT exception which would quit the process. This looks like a "crash" but in realty the software could continue and keep working if there was an exception handler set. (This is bad design on Microsoft's part, by making the default behaviour fatal rather than benign).
- Added a lot of rich text editing implementation. Replaced the plain text controls in the signature and reply/forward formats with the rich text control. It's not there yet, but it's on the way.
- Fixed the parsing of the "To" field not to get hung up about single quotes.
- Added code to combine CSS font sizes (XXSmall, XSmall, etc) with a percentage when resolving cascading styles.
- Fixed email replies having a "multipart/mixed" root MIME Content-Type even for simple one segment "text/plain" messages. I really don't know how that bug persisted for so long without someone complaining.
- Refactored the code to save the mail meta data fields "Colour" and "Label" so they don't cause existing IMAP mail to be saved from the UI layer (possibly damaging them).
- Added code to copy the label when moving mail between different mail stores. (This change also fixes IMAP mail being corrupted by changing the label)
- Re-wrote the code that loads and saves the options file to be more resilient to corrupt data and crashes. It aims to do 2 things: 1) When loading the options file, it actually scans the whole folder for potential backups, and attempts to load "ScribeOptions.xml" first. When loading any given file it checks for the "accounts" and "mailstores" elements which should exist in any valid options file. In the next release I'll make it save to a temp file first, then moves the existing file to a backup name, and then the temp file is renamed to the actual options file name. This means if the save crashes it doesn't leave an empty or corrupt file for the next session to find.
- Removed © and ® from the emoji list. They now render in the normal font of the email.
- Fixed a memory corruption bug in the mail3 back-end when storing new mail (and possibly other places). It would manifest as a crash during POP3 downloads.
- Fixed an issue passing arguments to iconv. Probably only affects the Linux build.
- Fixed setting the colour in an IMAP mail window's fields tab changing the message content. It now behaves the same way as the context menu way of doing it.
- Fixed the fetching of IMAP mail that includes NULL characters in the body. e.g. flate encoded attachments. Previously it would hang the IMAP thread (not the whole app).
- Fixed moving email between separate mail3 stores. The reference to the email is now removed from the source folder correctly.
- Made a cross mail store "move" operation (which is really a copy + delete) to delete the old object completely instead of moving it to the trash. This makes for a more logical user experience. The software does allow for errors in the "copy" part of the operation to block the "delete" part (so worst case you end up with 2 copies). Even if the "copy" is delayed (like when writing to an IMAP store)
- Replies to email now get saved to the Outbox of the mail store attached to the "From" address.
- Email sent from the Outbox of the non-default folder now gets moved to the local Sent folder.
- Fixed a crash in the display of the "To" field in the main window mail list when there are lots of addresses (and just the right number of bytes).
- [Windows] Fixed Sent To Recipient context menu giving the error: No valid 'From' email address in parameters or options file.
- [Windows] Fixed setting the client as the default so that Firefox will use Scribe in Windows XP.
- [Windows 10] Fixed flickering cursor over edit boxes.
- Made the IMAP logging only log if File -> Options -> Other -> Debug Options -> Connection Log Format is set to something other than "None". *slow clap*
- Fixed a crash in the Bayesian filtering interacting with new POP mail.
- Fixed email with emoji in their text (and no HTML) showing up blank when you open them in their own mail window.
- [Windows] Fixed dragging email and contacts to an explorer folder.
- Fixed not being able to delete attachments from an email.
- Fixed the missing "..." button to set the image for a contact.
- Made the focus return to the list of emails after editing or adding an email address in the contact window.
- Fixed processing of some IMAP flags so that new email that is fetched from the server has the right read/unread status.
- Fixed setting an IMAP email to unread so that the server is aware of the state change.
- Added a "refresh" command to all IMAP folder's context menu. This updates the contents according to whats currently on the server. Sometimes things can get out of sync if more than one client is accessing the folder.
- Imported updated German translation.
- Added all the UI strings and error messages to Scribe.lr8 so they can be translated.
- Added export menu items to the contact menu of email, calendar events, contacts, filters and folders. This allows the user to export any objects to the file system without resorting to drag and drop. Which isn't working very well on Mac or Linux at the moment. At least there is a workable option now. Multi-select of any list item works by selecting an output folder.
- Added the ability to drag and drop filter condition nodes around. Previously you had to recreate them by hand in a different location.
- Fixed the reply/forward flags not getting set sometimes. The IMAP backend would lose the flags not support by the IMAP protocol. However now I store non-server flags in the local metadata.
- Moved the Thunderbird import search folder up one level to capture other mailboxes.
- Fixed Aspell dictionaries not being usable right after installation. Previously you had to restart the software for them to work. Internally to Aspell there is a list of lists, including a list of dictionaries. The empty list of dictionaries from before the installation was cached so I had to come up with a way to clear the cached list and get it to rescan the disk.
- SSL connections might be a little more robust now. I changed the way that non-blocking connections are created because old method was a bit flaky, especially in release mode. Personally I think the issue is a bug in OpenSSL but I'm not about to start bug fixing OpenSSL. I just want Scribe to work with vanilla builds.
- Fixed enter key now starting a search in the find dialog.
- Fixed the find dialog progress text being clipped (layout issue).
- Fixed the potential for a hang in the static text layout code. It could happen if it encounters certain badly encoded UTF-8.
- A more specific SSL error from within OpenSSL now bubbles up to the console or account log if a connection can't be made. I noticed this when certain remote images weren't loading that should be loading. The exact error is:
SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:.\ssl\s23_clnt.c:762:Splendid.
- Now the actual fix for the previous item's error message is to use SNI. So I've added that to the OpenSSL client implementation in Scribe. This should resolve failed connections to servers that require SNI.
- Fixed the size of images in the HTML control that are "inline block".
- Fixed the calendar recur button crashing the application.
- Fixed not being able to click items in the calendar view.
- Fixed the folder properties dialog disappearing immediately.
- Fixed the MBOX export via drag and drop to work correctly on XP. It no longer supports showing the progress (the total size is unknown at the start) as it runs but it does export the right data from a Mail3 folder. What was required was creating a file drop of unknown size. If you try it from an IMAP folder, make sure all the email is downloaded first (scroll through the whole folder, and then wait for the account to be idle). This limitation should be removed in a later build.
- Fixed the positioning of text in the calendar view. It now detects how much space is available and insets the text appropriately. So the year, month and week views all look good.
- Made the Aspell dictionary path generation a little more robust.
- Fixed black mail composition window when replying to emails that include Emoji.
- Fixed the Aspell data path to point to the right location ([ScribeInstall]/Aspell/data) for desktop installs.
- If an Aspell dictionary fails to install Scribe now deletes the partially created dictionary folder. This allows for a clean re-install of the dictionary later. Better to either have a complete install or none, rather than leave it half finished.
- Fixed an error in decompressing bz2 archives that would cause some dictionaries to error out during installation.
- Fairly major rewrite of the replication engine to not use a separate thread. The backend and UI API's aren't particularly thread safe, so it was a recipe for crashes. The implementation now uses messages and a stack of outstanding operations than need completing. This cause the UI to lag a bit while the copy is running but it hopefully will be more stable in the long run.
- Tree control rendering now uses iterators which will hopefully make it more resilient to crashes.
- The on drop folder code now uses the correct verb (move/copy) in the dialog asking whether the user wants a sub-folder or not.
- Made the replication (folder copy) progress dialog always on top.
- Fixed a crash when deleting an IMAP folder.
- Fixed sub-folders missing in the folder tree after a folder copy between different mail stores. They would appear after a restart of the software previously.
- Changed the way mail/calendar/etc windows are closed before shutdown. Made it much simpler and hopefully less likely to crash.
- Fixed a crash when re-sending an email.
- Fixed email with blank bodies display the previous email's content in the preview pane.
- IMAP accounts are now available as source and destinations in the replication dialog.
- Fixed the import of an MBOX file to a folders. Previously it would create a single blank email.
- [Windows] converted the export of a folder to an MBOX file to a more standard file copy from the view point of the user. (There was a reason I didn't do this earlier, it's much harder than it looks)
- Re-implemented the way images are resized when attached to email to avoid crashes. If there are still images being resized when the user closes the window, tries to send the email or save and close a warning message appears in list of panels with a Cancel button. Once the images are resized the original request action is taken. I've also added a right click menu to the attachment itself to manually kick off a resize.
- Fixed IMAP root folders not remembering their expanded setting from the last session.
- Aspell language installs now work even if a dictionary was previously selected in the options. For the install to function correctly the "lang" config in Aspell needs to be an actual language (e.g. "en" for english) rather than a dictionary (e.g. "en_GB"). The install now explicitly sets "lang" to the base language.
- GnuPG: Added implementation for the "Attach my public key" option.
- Fixed some table layout issues.
- Fixed the behaviour of moving objects between different backend stores. The old behaviour wrote the object to the new mail store, and immediately deleted the old object. If the write failed you'd lose the object altogether. Now it writes the object to the new store, waits for the successful "OnNew" event to come back and THEN deletes the old object. The worst case is you have 2 copies of the object instead of none.
- The mail window now has tabs for both plain text and HTML. You can switch back and forth to see the different versions of the body. It will obviously select the default alternative according to the appearance option. The tab's text will bold when there is content on that tab. Just like the Attachments tab. If the mail window is opened in edit mode the default tab is the selected editor. At the moment there isn't a functional rich edit control, so there is a message to that effect on the HTML tab in edit mode.
- Added user submitted Ukrainian translation.
- Fixed renaming system folders (Inbox/Outbox etc) causing lots of "(MailStoreName)/(FolderName)" appearing on each the software is started.
- [Linux] Added auto-creation of scribe.desktop file to allow the application icon to show up in the window manager. This may not show the icon until the 2nd time you start Scribe.
- [Linux] Added support for loading shared objects that only exist with the ".0" post-fix. This fixes loading PNG toolbars in Ubuntu16. Is it just me or should dlopen("libpng12.so") just work? Obviously not *sigh*.
- [Windows] Fixed the elevated permissions updater failing to install files the install folder due to random unicode characters on the end of the file names.
- Restored the lost code that set the reply/bounce flag after sending an email, that broke in Beta13.
- Fixed 2 emails appearing in the sent folder after sending. (Pre-conditions: user hasn't clicked on Send folder in this session, Send folder is initially empty).
- [Linux] Added the call to create dom.txt to the installer generation script.
- [Mac] Fixed controls showing in the closed panels on the mail window.
- [Mac] Fixed the buttons being bold, and thus not matching the system look.
- Rewrote the GnuPG support for v2.1. The user interface code is entirely new and much easier to use. The back end now support proper MIME trees in both IMAP and Mail3 storage. So the client now creates correct MIME messages that include the right root node MIME type. The whole message including attachments is encrypted as a RFC822 stream rather than just the body in v2.0. The feature has meant removing the flat format mail envelope used to pass data to the SMTP library. This is a fairly significant change and I except some things might break temporarily. The new code uses the existing GMime library (used elsewhere, like the IMAP back end) to encode the object tree into a RFC822 message which is then passed to the SMTP code.
- The Mail3 back end now only stores the internet headers of a mail message in the root MIME segment instead of duplicating it in the mail object itself. This reduces the storage overhead of a message. I won't remove the DB field in the mail table just yet, I'll wait to piggy back that on some other schema change. The field will just be saved as empty for the moment. The IMAP back end already does this so I felt it was a fairly safe change.
- I re-did the layout of the mail properties window. Moving the check boxes into 2 columns. I've also added an inspect button which opens an inspection window that has 3 columns. The first shows the tree of objects in the back end (A Mail root node, and then a hierarchy of MIME segments under that). Clicking on any of the nodes in the tree shows a list of fields in the middle column, and clicking on those fields shows the actual value in the 3rd column. I don't know why I didn't do this earlier, saves me guessing what data is in the mail object tree. Might be useful for script writers or debugging in general.
- Added the inspect option to the context menu of an email.
- Removed the File -> Plugins window, which is no longer needed for anything. Also some behind the scenes threading for loading the plugins in the background.
- Implemented special case lossless storage of RFC822 messages in the mail3 back end for signed messages. Currently the MIME segments are decoded and stored in binary blobs per attachment. Because the original MIME encoding is lost in that process any attached signature can't be checked. So I have created a special case for signed messages where they are stored in a single record, the headers and the original RFC822 body are untouched. Then at run time, when the message is loaded, an extra step to parse the MIME into the normal tree of segments is added. So it appears to the UI levels as if nothing has changed. However it is a little slower for signed messages, and takes a bit more memory. Such is life.
- Fixed the mail headers display getting smaller vertically than it should when resizing the preview panel in the main window.
- Fixed HTML elements with "display: none" contributing to table layout in the HTML control. This fixes the "To:" addresses getting all squished up in a thin column in the mail preview headers when there are large (hidden) mime types to display in the right hand column.
- Fixed the scripting engine not compiling the correct byte code for various l-value situations.
- Implemented support for calling custom script object member functions.
- Fixed display of some PNG's with an alpha channel.
- [Windows] Fixed the display of Unicode in the native controls. This was only a problem in v2.1.10 because of the move to native controls for Button, Checkbox, Radio groups and Combo box. The fix was moving the whole build to using UNICODE. Which might break Win9x support. We'll see.
- Fixed positioning of Combo boxes in the advanced options.
- [Windows] Fixed the layout and initialization of the font selection dialog.
- [Windows] Fixed saving of enum values in the advanced options.
- Added code to display "(no value)" when an enum field in the advanced options is not set to a valid value.
- Updates to the help files.
- [Windows] Fixed the toggle buttons in the Contact window to open and close the address fields.
- Fixed the listing of dictionaries in the spell check options. The list of dictionaries is only available AFTER setting the language and allowing the dictionaries to install.
- The Aspell data and dictionaries folder is now relative to the location of the ScribeOptions.xml file.
- Spell dictionary installation is now triggered via the capability install bar appearing on the main window. This allows the user to confirm they have an internet connection before proceeding.
- Changing the spelling language and/or dictionary in the options now closes the spell thread and re-initializes it with the new settings. If the language isn't installed at that point it will throw up a capability install bar. If the user selects to download, they can see the progress of that by opening the console. For example:
.\Code\SpellCheckAspell.cpp:777 - Dictionary for 'es' install attempt 1 .\Code\SpellCheckAspell.cpp:589 - Downloading 'ftp://ftp.gnu.org/gnu/aspell/dict/es/aspell6-es-1.11-2.tar.bz2' to 'C:/Users/Matthew/AppData/Roaming/Scribe/Aspell/dict/es\aspell6-es-1.11-2.tar.bz2' .\Code\SpellCheckAspell.cpp:684 - Decompressing 'C:/Users/Matthew/AppData/Roaming/Scribe/Aspell/dict/es\aspell6-es-1.11-2.tar.bz2' .\Code\SpellCheckAspell.cpp:684 - Decompressing 'C:/Users/Matthew/AppData/Roaming/Scribe/Aspell/dict/es\aspell6-es-1.11-2.tar' .\Code\SpellCheckAspell.cpp:684 - Decompressing 'C:\Users\Matthew\AppData\Roaming\Scribe\Aspell\dict\es\es.cwl' .\Code\SpellCheckAspell.cpp:854 - Aspell: Dictionary for 'es' installed OK. .\Code\SpellCheckAspell.cpp:509 - Aspell initialized for language 'Spanish' (Dictionary: (null))
- Reduced the latency of the spell thread responding to requests from the GUI thread.
- Added new script hooks called "OnBeforeInstallBar" and "OnInstallComponent". These allows scripts to hook the capability install process, both at the red capabilities bar level and when actually doing the install of a component. The OnBeforeInstallBar callback can modify the actions and message presented to the user. The OnInstallComponent callback can do the install itself, or pass the responsibility back to the system installation mehods.
- Fixed the mark unread (ctrl+space) function not working on some email stored in a Mail3 folder.
- Fixed some issues with the initial syncing of local and IMAP folders.
- Implemented renamed IMAP folders.
- Added a process to the installer creation script to generate DOM object field and method documentation directly from the source code. So it's always up to date with the actual binary that is currently installed. This is opposed to the horribly out of date web version. I will gradually grow the generated doc to include more verbose descriptions of things.
- Removed/updated links as necessary in the About dialog. A lot of the plugins are not built in directly to Scribe and thus don't need installing or their own link.
- Changed the plugins link in the Help menu to a link to the tutorials.
- Added normal all the normal email addresses to the list in the "Reply To" combo box. Seems useful.
- Fixed the Reply-To header being added even when the check box is not set.
- [Windows] Fixed the Error: couldn't create system font. message on start for Windows XP.
- [Windows] Re-implemented some of the controls using native common controls: Buttons, Check boxes, Radio groups + buttons and Combo boxes. This makes the app feel more like it belongs on windows. However in the short term it might break some functionality.
- Replaced the app icon and toolbar icon scheme with a new set designed to match XGate (which bundles i.Scribe).
- Fixed a crash when scripts write to the console. Basically I had to make sure the text insert is only done in the GUI thread. I had a class for that set ready to go, just had to use it.
- Added DOM access to the accounts list. You can enumerate all the accounts, access the individual fields, create new accounts etc.
- Added OAUTH2 to the authentication options in the Account receive user interface. This allows you to force OAUTH2 as the authentication method if supported.
- Added OAUTH2 support to IMAP4 when connecting to imap-mail.outlook.com.
- [Windows] Fixed 3rd party applications not being able to load the Scribe MAPI DLL.
- [Windows] Fixed handling of MAPI recipients passed to the MAPI DLL where the address is in the Name field instead of the Address field.
- [Windows] Fixed the MAPI DLL logging to fall back to the AddData Scribe location for logging if the install folder is read-only.
- [Windows] The uninstaller now removes the entries to itself in the registry.
- [Windows] Fixed the "remove email and settings" uninstall option to actually delete the right folder: ~\AppData\Roaming\Scribe.
- [Windows] Fixed a file copy bug in the Updater component that would elevate Admin permissions to install files to normally read-only locations such as the "C:\Program Files (x86)\Memecode\Scribe" install location. The problem would appear as some random characters at the end of the file name string when the error was report via a dialog box.
- Fixed the Options -> Appearance -> Load HTML Images option to actually block network requests when switched off.
- Re-wrote the support for showing remote content in emails. The show images button in the mail preview headers has been deleted and replaced with a "To protect your privacy Scribe has blocked the remote content in this message." bar that appears between the headers and the content. It give the user the ability to show the content by clicking a button. If the user clicks that button the message has a flag set that will always show the remote content regardless of system appearance settings. There is still an option in Options->Appearance->Reading Email called "Automatically load remote content" that sets the default behaviour for email without the show remote content flag set. With that setting there is now also a whitelist and blacklist of senders that can be accessed via the "..." button next to show remote content setting.
- Fixed the hiding of the folder tree when sending an email on the same account that also has an IMAP(full) connection.
- [Mac] Fixed 24 bit images that are resized not displaying in the HTML control (and most likely other places as well).
- [Mac] Fixed the display of controls in the Contact window. Showing and hiding the addresses now works without corrupting the display. Also the "..." button to select an image is painted correctly.
- Fixed some HTTPS images not displaying.
- [Mac] Added support for responding to GURL AppleEvents coming from application like a web browser when the user clicks a link. This allows Scribe to be the default email client and respond to mailto links throughout the system. There was a 4 year old stack overflow question about this.
- Fixed Bug #545: Unable to add recurring calendar events.
- [Mac] Implemented some basic printing support. In 2016. Yes I know :(
- Fixed a layout bug when the HTML defines a table cell as display: inline-block;
- Added search fields to the find window for "Attachment Names" and "Member Of Group". These work the same way they do in the filters.
- Fixed the "install" button for libpng/libjpeg etc doing nothing.
- Fixed the "..." button in the Contact window not opening a file browsing dialog.
- Moved all the code from the Internet Explorer plugin into the main executable (Windows only obviously). The way to activate that is to change File -> Options -> Appearence -> Reading -> Default Alternative to "application/internet-explorer". Then IE will render HTML email instead of the internal HTML control.
- Implemented better charset handling for the IE control.
- Implemented new scripting methods on the Filter object: Filter.DoActions(mail) and Filter.StopFiltering().
- Significantly improved the speed of XML parsing. In my test cases around 300% faster. This means the step of loading a large tree of IMAP folders is significantly faster. As the IMAP folders use XML as a meta data store. The main issue was moving the decoding of strings with entities into a common buffer and then copying to a string pool to avoid lots of small allocs for each string (which are really slow). However there are lots of other places that use XML as well. Happy times. The excellent tool that I used during this optimization step is called Very Sleepy.
- Fixed saving of the column widths on the current folder if you exit without changing to a different folder.
- Fixed dropping an email onto an IMAP folder that wasn't loaded yet. This used to create a duplicate item and then assert on shutdown.
- The scripting error bar now has a "Open Source" button as well, that opens the script file or filter that caused the error. Helpful if you want to edit the source to fix the issue.
- Compile errors in Filters now report their location as "[filter_name].filter" rather than just a generic "filter.script".
- Script compilation now errors out if a variable is being used without being defined first. Variables must either be defined by the code calling the script or created by being assigned a value in the script itself.
- Added an "App" variable defined for Filter scripts. Useful for assigned to the parent of message dialogs.
- Custom types in the scripting language now support member functions.
- [Linux] Fixed a crash when dragging a list column to a new position. Also fixed the mouse starting to resize the split between the folder and list view while dragging a column.
- Fixed 2nd IMAP account crashing Scribe on exit.
- Fixed various crashes when trying to exit while loading and unloading folders.
- Made some of the system mail3 sub-folders optional. There are check boxes in the subfolder dialog to turn them off. If a system folder is turned off it won't be auto-created when loading folders. Also the right click context menu of the folder will allow deletion. There will no doubt be some other parts of the software that will break if given system folders are missing. But at least the core functionality is there, and I'll fix what needs fixing in future releases. The current "optional" folders are Calendar, Groups, Filters, Templates and Spam. Oh yeah, the spam path is not path of the system sub folders dialog as well.
- Fixed Bug # 535: Crash when creating recurring Calendar events.
- Added support for importing and exporting vCard photos. I've tested the inter-operability with Outlook.
- Updated the Help -> Version History link to point to the history for v2.1 rather than v2.0.
- Added new sub menu item to the mail right click menu to add the sender address to an existing filter.
- Added a mail context sub menu to add the sender's address to a contact group.
- Fixed a hang in the IMAP over SSL fetch code where select() would return "no data to read" but there was actually OpenSSL data available. This would manifest as the IMAP connection being unresponsive. I've reimplemented it using non-blocking IO instead of select() which apparently doesn't play well with OpenSSL's internal buffers.
- Fixed the Mail -> Select Marked -> None/All/Colours menu.
- Fixed the POP3 preview toolbar button using the first available account even if it was like IMAP or something. Now it iterates over the account list till it finds a POP3 account to preview.
- Changed the MIME tree in the mail preview headers to be hidden by default. There is now a little [+] sign to expand it out.
- Fixed handling of POP3 preview commands like download and delete when the full listing of email is not retrieved. E.g. if you cancel out of the download and then ask it to download and/or delete, that now works correctly.
- Added more information to the "Upgrade Mail3 Folders" dialog, showing which table and field(s) require modification. (I got sick of wondering, and there has been a bunch of schema changes recently)
- [Win32] If the XPS printer is selected the file name is auto-generated and an explorer window is opened to browse to that file after printing.
- Fixed re-ordering of Mail3 folders with drag and drop. Particularly system folders like the Inbox and Outbox etc.
- Added some very basic support for printing Contacts and Calendar Events. Basically just a list of fields. But it's better than nothing. There will be more advanced support for "pretty printing" later.
- New scripting methods available:
- On a List object: list.Sort([ObjectFieldName]). Lists of strings and integers don't need any parameter. But if you have objects, you need to provide a field name for the objects to be sorted on.
- On a Filter object: filter.AddCondition(Field, Op, Value). The new condition is inserted in the list under the root "And" or "Or" node.
- On a Contact Group object: group.AddAddress(Email). The new address is inserted in the contact group if not already present.
- Fixed Bug #525: Can't save Calendar events.
- Calendar events can now be created in the non-default mail store. Assuming there is more than one mail3 back-end loaded.
- Calendar events now by default have a length of one hour and the end date/time is populated as well.
- Added a "Show" button next to the location field in the Calendar event window that opens the location in Google maps browser window.
- The "Save" button in the Calendar event window is now disabled until the user enters a Subject for the event.
- Fixed not being able to re-open Calendar events after the first time.
- Made the "Save" button the default on the Calendar event window.
- Dragging events around in the week calendar view now snaps to every 30 minutes rather than every hour.
- Specific calendar event colours now persist between sessions. This required a Database schema change.
- To create new events you now drag over a region to select a time range for the event.
- You can drag multiple events to move them as a group. Ctrl+LeftClick to select multiple items.
- Ctrl+W now closes the calendar view.
- New context menu on areas without events allows the user to create a new event or change the snap time. The default snap time is now 30 mins instead of 1 hour. However 15 minutes is also available.
- The user can now drag the top of bottom edge of an event to edit the start and end times.
- Fixed the crash when hitting "Ok" or "Cancel" on the POP account preview window.
- Fixed the use of freed memory in the code that opens a socket. This is a potential crash.
- Fixed the POP3 account viewer taking 30 seconds to timeout when clicking "Cancel" on the download of headers. Linux's "select()" doesn't return immediately when the socket is closed in another thread. (Which works fine on Windows)
- Implemented some basic printing support on Linux/GTK. This entailed a large rewrite of the printing support in LGI as GTK is more event driven, rather than procedural.
- Fixed the Contact preview panel. It was blank before because the template wasn't added to the resources.
- Fixed the Contact images loading with weird colours. The image API returned "RGB" + skip 8 bits... so that's exactly what I did... however it then went and used those 8 bits as alpha. Stupid kCGImageAlphaNoneSkipLast.
- Fixed the path to the Contact .png so it shows up in the preview panes of email and contacts.
- Fixed IMAP OAUTH2 requesting authentication through the web interface every time it connects. It now will do that on the first time, or if the access token is rejected (e.g. expired).
- Fixed inline elements in the HTML control painting over other inline elements. This would manifest as missing text mostly.
- Fixed the handling of the universal selector '*' in the CSS engine. This would effect the display of HTML documents.
- Added a "Repair" button to the mail store management dialog. Specifically for the mail3 backend which now can dump out the whole database to SQL and reload it into a new sqlite3 database. This is the official way to fix corrupt databases.
- Improved the download of IMAP messages. Both the speed of the network read and the display of progress in the user interface. Now it doesn't slow down during larger email downloads.
- Linux: fixed the contact browser window stealing focus from the recipient entry on the mail window. Also it's size is now correct.
- Linux: fixed entry of email addresses in the Contact window.
- Added more debug logging to the Aspell glue code. It will now spit out more errors and status to the console during dictionary install. The coverage of all the error cases should now be complete, so that if something goes wrong at least there is some message to track the problem with.
- Linux: Fixed the Aspell support to work. This required lots of changes to the project that builds the Linux Aspell shared object and build fixes for the aspell glue code.
- Fixed styles loaded mid HTML document not being applied to existing elements.
- Improved the painting of rounded corners in the HTML control.
- [Mac] Fixed the icons in the Filter conditions user interface. (Needed to used pre-multiplied alpha)
- [Mac] Fixed the layout and painting of checkboxes and radio buttons inside radio groups. The spacing was weird and the text alignment off.
- Fixed the emoji support putting lots of <br> tags into the HTML when viewing email.
- Fixed some HTML image scaling issues.
- Increased the max size of the mail preview text/HTML from 64KiB to 512KiB.
- Fixed the ReplyTo header not being saved if the first entry is selected in the mail window.
- [Linux/GTK] Fixed dragging and dropping email from the list view to a folder.
- Fixed Bug #465: Cannot save message after adding a Label or Colour.
- Added support for Emoji in the preview panel header (e.g. Email subject).
- There is now a some progress reported during Mail3 compaction and it runs a lot faster than it used to.
- Renewed the user interface for Contacts to a more modern layout. There is now an image associated with each contact. And that image can be displayed in the mail preview header when you receive email from that Contact. I'm hoping to also add some more Contact syncing with online services in the next 6 months. The addition of an image field in the Contact table requires a database schema update when you install this build.
- Fixed stray single quotes messing up saving of email recipients in the mail3 database.
- Fixed Bug #515: Crash after moving email with attachments from IMAP to Mail3.
- Fixed Bug #505: Out of bound memory READ in IMAP fetch parser.
- [Linux] Fixed resolving of domain names. Sometimes gethostbyname_r would fail with ERANGE (i.e. ask for more memory). So I added code to increase the buffer size and try again.
- [Windows] Fixed the Aspell support by adding required files to the installer. Also making some changes to the code to handle portable/desktop install paths and a whole range of error reporting (via the console).
- Fixed the capability bar buttons being all red. Now they are back to the normal grey colour. The CSS properties changed for the background colour.
- [Windows] Fixed incorrect link dependency on the NTLM library.
- Rewriting the plugins to use simpler APIs that remove their dependency on the Lgi DLL. So they can work with multiple versions of Scribe and not need updating all the time.
- Changed the store3 API to support int64 for date / time stamps.
- Removed support for the old mail2 database format. Its time to migrate everyone to mail3. If you have a mail2 database still, you'll have to migrate that to mail3 using a v2.0 build... then upgrade to v2.1.
- Fixed loading of 16 colour PNG files.
- Fixed the aspect ratio of images in the HTML control that only specify one dimension (width or height).
- Fixed removal of multi-byte UTF-8 characters in attachment file names when using the Save As dialog.
- Fixed some regions in the HTML control not being painted in subsequent updates.
- [Mac] Fixed the application behaving as if the mouse was still clicked after the up click occurs off the main window.
- Normalized the window position/zoom option file settings between the Win32Native and GTK code. I was doing some testing with the Gtk build using Visual C++ on windows (easier to debug that gdb) and the two builds stored different things in the options file.
- Added some basic progress to the IMAP full implemenation. When you open the status panel and click on the IMAP account it'll show you how many commands it has to process. Also it now shows the KB/s data rate.
- The IMAP accounts now support basic UI priority, so if you are downloading a large folder of mail and you click on a message, it loads almost immediately. Previously it would only show the message after it had downloaded the rest of the folder. By inserting download commands at the start of the job que instead of the end the code is more responsive to the user.
- [Gtk] Added support for truncating strings with "...".
- [Gtk] Fixed text drawing in the non-client area of windows (i.e. the borders).
- [Gtk] Updated the window borders to a more modern look, including some focus effects for controls.
- [Gtk] Fixed scroll bars not updating in controls when they are used as part of dialogs.
- [Gtk] Fixed the font enumeration so that selecting a font using the dialog works.
- [Linux] Fixed the edit boxes having no font to draw with. At least now they fall back to the system font and draw with that.
- Fixed LDAP thread consumming 100% CPU on a core when it fails to connect to a server.
- Added progress control to the component downloader.
- [Gtk] Made the scrollbar button and slider border 1px wide instead of 2px. Looks more modern.
- [Windows] Fixed the MAPI implementation to send a basic email. The build broke when I went to vs2008 and it's been broken ever since. None of the functions were exported correctly and the initialization didn't take into account portable/desktop mode. Now it should be fairly robust. And it even has proper logging of errors to 'ScribeMapiLog.txt' in the same folder as the exe/dll.
- Fixed the options file getting deleted when Scribe hasn't fully started and needs to quit. This can occur during the MAPI send mail function. And probably other cases as well.
- [Mac] Added native look and feel for the scroll bars.
- [Mac+Linux] Fixed loading of auto-installed SSL libraries.
- Increased size of HTML image URL buffer to 1k. Apparently 512 bytes is not enough for ebay image URLs. *sigh*
- [Linux] Fixed reading apps associated with a MIME type.
- [Gtk] Fixed fonts to render with the right font face.
- Help now appears on the same monitor as the main window by default. Also fixed the clicking on the search results resulting in unstyled pages.
- Rewrote the logging system. Instead of silently logging warnings and errors to 'Scribe.txt' the scripting console now functions as a easy to access way of seeing all logging (except SSL stuff). There is a new toolbar button that opens the console. This new button also changes it's look when there is no messages in the console. This hopefully means that relevant messages can be found be the user more easily. The location of the Scribe.txt file can actually be different depending on the write permissions in the Scribe executable folder.
- [Mac] Fixed images attached to the cursor during drag and drop. Also added little icons to the drag operation (for Mail, Contacts, Filters and Calendar Events thus far).
- [Mac] Fixes a crash when displaying HTML with very long URL images.
- Fixed labels not being saved between sessions when set with a filter.
- Fixed the leave on server setting defaulting to false when opening the UI.
- Find window now defaults to using the "and" operator between each search term. Which is more useful.
- Find window now defaults to opening over the main window.
- Fixed CSS parsing to put all @media rules in their own silo and not randomly use those rules at the wrong time.
- Added options to bayesian spam filter to "delete attachment" and "delete spam from server", defaulting to Off. These were previously on by default and not adjustable.
- Fixed the SMTP port setting not being used.
- Fixed a hang in the selection of HTML font sizes by pixel height for larger sizes.
- Fixed HTML table cell calculation to put the border and padding outside the content size.
- Refactored the async image loading to not crash when the HTML control is closed.
- [Mac] Fixed the item filter to work correctly.
- [Max] Fixed tab characters not rendering correctly.
- Re-enabled the HTML edit control in release build.
- Fixed the positioning on the cursor in the HTML control to prefer the text on the same line as the click. Before it was trying to find the nearest text, which could sometimes be on the next or previous line.
- Added menu item under the 'edit' menu to switch between the HTML and plain text editor.
- Fixed extraction of HTML from source email during the creation of the HTML reply body`.
- Changed the size limit of the email preview headers to be implemented via a 'max-height' CSS style in the HTML template instead of hard coded into the exe. This allows users to customize the height of the headers if need be.
- Fixed the attachment save code to strip out new line and tab characters as well.
- Fixed dragging items from the Find results window to an email (to attach as files).
- [Mac] Fixed dragging multiple items as files.
- [Win] Fixed implementation of MAPISendMail to create new email with the UI enabled to send.
- Fixed the list view sometimes scrolling all the way to the bottom when selecting a folder in the main window.
- Fixed Reply-To header not being used in mail3 folders.
- [Mac] Fixed crash when right clicking on dock icon with new mail that uses unicode in it's subject.
- [Mac] Fixed unicode text not being displayed in the HTML control.
- [Windows] Fixed the iconv self install capability.
- Fixed text only messages having some text hidden by the scroll bar on the right edge during the initial layout.
- Fixed a crash when sending mail offline, then going online, and deleting the mail from the outbox before it had been sent by the SMTP thread.
- Fixed the screen DPI to be "96" across all the Font, HTML and CSS libraries. This results in fonts looking smaller on windows than before but they now match Firefox exactly. I had been using 72 as the screen DPI when creating fonts on windows.
- Changed the scales used to calculate CSS absolute font sizes for: xx-small, x-small, small, large, x-large, xx-large to more closely match firefox's behaviour.
- Improved the charset handling of the HTML "view in default browser" function.
- [Mac] Fixed the editor backend used for edit controls and message composition to use sub-pixel text positioning. This fixes the text wobbling in the x direction when selecting part of a line. It won't be perfect immediately as some subpixel glyph parts maybe overwritten by background drawing but I think it's a good improvement.
- The IMAP backend now downloads the whole message immediately. This means less complexity between having just the headers vs the whole message. It might be faster overall as well.
- Added Korean translation.
- Fixed handling of HTML images with CSS for min/max width and height.
- Made the creation of the MIME segment tree for Mail3 mail far more robust. Able to handle mixtures of attachments, HTML alternatives with related images, etc.
- [Windows] Made the installer create an uninstaller entry in the Control Panel.
- [Windows] The installer now groups the uninstall and start menu items into the "Desktop Mode" section. Meaning if you de-select Desktop Mode you'll get a clean portable install.
- Fixed some HTML layout issues related to tables with spanned cells that specify non-dynamic widths wider than the available layout space.
- The IMAP folders now use a more efficient method of reading and writing their meta data. The write also is now threaded which gives control back to the UI thread quickly resulting in less UI pauses during IMAP usage.
- Added UI for the ReplyTo header in the main window.
- Fixed the behavior of HTML image loading to load images if the default is on in the appearance options OR the mail is set to load images manually. Previously the per mail setting had little effect.
- Fixed email with multiple HTML non-utf8 mime segments rendering with the wrong charset. There is now code to explicitly convert all segments to utf-8 before display.
- [Mac] Fixed buttons getting clicked even if you drag the mouse off the button before releasing the button.
- [Win] Improved the handling of tips displaying the URL of multiple links.
- Fixed dropping contacts on to a group window.
- Fixed the missing margin and vertical label layout of the group window.
- Updated the emoji support to handle a much larger range of icons. There is also now am internal tool for updating the supported character table. So hopefully that means more regular updates.
- Fixed the POP3 account preview window to save it's position and columns in a less buggy way.